Skip to content

Conversation

@PeterDaveHello
Copy link
Contributor

@PeterDaveHello PeterDaveHello commented Apr 2, 2025

Improve the zh-TW (Traditional Chinese) locale. The original translations included some Simplified Chinese terms and lacked natural fluency, which did not meet the expectations of Taiwanese users and Traditional Chinese readers. After many hours of careful adjustments and partial retranslation, the locale file has been significantly improved to better serve the needs of the Taiwan market and Traditional Chinese users, achieving a relatively high level of quality.


Summary from GitHub Copilot just for your reference:

This pull request includes updates to the Traditional Chinese localization files, improving the clarity and consistency of the language used across various documentation and UI elements. The most important changes include revisions to the CODE_OF_CONDUCT.md, CONTRIBUTING.md, README.md, and chat.json files.

Documentation updates:

README updates:

UI text updates:


Important

Improves the Traditional Chinese locale by updating documentation and UI text for better clarity and consistency, replacing Simplified Chinese terms with Traditional Chinese.

  • Documentation Updates:
    • Improved language in CODE_OF_CONDUCT.md for better readability and consistency.
    • Enhanced clarity in CONTRIBUTING.md, including terminology updates.
    • Updated terminology and language in README.md for better readability.
  • UI Text Updates:
    • Revised UI text in chat.json for better clarity and consistency, including task-related terminology changes.
    • Updated history.json to reflect changes in task terminology.
    • Adjusted humanRelay.json for improved instructions.
    • Enhanced mcp.json to better describe server interactions.
    • Improved prompts.json for better user guidance.
    • Updated settings.json to reflect changes in configuration descriptions.
    • Revised welcome.json for a more engaging introduction.

This description was created by Ellipsis for 9edec1687fa39053644ce42e57e4e66b6ee8300d. It will automatically update as commits are pushed.

@changeset-bot
Copy link

changeset-bot bot commented Apr 2, 2025

⚠️ No Changeset found

Latest commit: df34ce3

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@dosubot dosubot bot added size:XL This PR changes 500-999 lines, ignoring generated files. documentation Improvements or additions to documentation labels Apr 2, 2025
@PeterDaveHello
Copy link
Contributor Author

@CodiumAI-Agent /review

@QodoAI-Agent
Copy link

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ Recommended focus areas for review

Terminology Consistency

Ensure that updated phrases and terminology are consistent throughout the settings. Some keys have been reworded (e.g. differences in terms like "核准" versus alternatives) so a review of uniformity is advised.

	"title": "設定",
	"saveButtonTooltip": "儲存變更",
	"nothingChangedTooltip": "無任何變更",
	"doneButtonTooltip": "捨棄未儲存的變更並關閉設定面板"
},
"unsavedChangesDialog": {
	"title": "未儲存的變更",
	"description": "是否要取消變更並繼續?",
	"cancelButton": "取消",
	"discardButton": "取消變更"
},
"sections": {
	"providers": "供應商",
	"autoApprove": "自動核准",
	"browser": "瀏覽器/電腦使用",
	"checkpoints": "檢查點",
	"notifications": "通知",
	"contextManagement": "上下文管理",
	"terminal": "終端機",
	"advanced": "進階",
	"experimental": "實驗性功能",
	"language": "語言",
	"about": "關於 Roo Code"
},
"autoApprove": {
	"description": "允許 Roo 無需核准即執行操作。僅在您完全信任 AI 並了解相關安全風險時啟用這些設定。",
	"readOnly": {
		"label": "始終核准唯讀操作",
		"description": "啟用後,Roo 將自動檢視目錄內容並讀取檔案,無需點選核准按鈕。",
		"outsideWorkspace": {
			"label": "包含工作區外的檔案",
			"description": "允許 Roo 讀取目前工作區外的檔案,無需核准。"
		}
	},
	"write": {
		"label": "始終核准寫入操作",
		"description": "自動建立和編輯文件而無需核准",
		"delayLabel": "寫入後延遲以允許診斷偵測潛在問題",
		"outsideWorkspace": {
			"label": "包含工作區外的檔案",
			"description": "允許 Roo 在目前工作區外建立和編輯檔案,無需核准。"
		}
	},
	"browser": {
		"label": "始終核准瀏覽器操作",
		"description": "自動執行瀏覽器操作而無需核准",
		"note": "注意:僅適用於模型支援電腦使用時"
	},
	"retry": {
		"label": "始終重試失敗的 API 請求",
		"description": "當伺服器回傳錯誤回應時自動重試失敗的 API 請求",
		"delayLabel": "重試請求前的延遲"
	},
	"mcp": {
		"label": "始終核准 MCP 工具",
		"description": "在 MCP 伺服器檢視中啟用個別 MCP 工具的自動核准(需要此設定和工具的「始終允許」核取方塊)"
	},
	"modeSwitch": {
		"label": "始終核准模式切換",
		"description": "自動在不同模式之間切換而無需核准"
	},
	"subtasks": {
		"label": "始終核准子工作的建立和完成",
		"description": "允許建立和完成子工作而無需核准"
	},
	"execute": {
		"label": "始終核准允許的執行操作",
		"description": "自動執行允許的終端機命令而無需核准",
		"allowedCommands": "允許自動執行的命令",
		"allowedCommandsDescription": "當「始終核准執行操作」啟用時可以自動執行的命令前綴。新增 * 以允許所有命令(請謹慎使用)。",
		"commandPlaceholder": "輸入命令前綴(例如 'git ')",
		"addButton": "新增"
	}
},
"providers": {
	"configProfile": "配置設定檔",
	"providerDocumentation": "{{provider}} 文件",
	"description": "儲存不同的 API 設定以快速切換供應商和設定。",
	"apiProvider": "API 供應商",
	"model": "模型",
	"nameEmpty": "名稱不能為空",
	"nameExists": "已存在同名的設定檔",
	"deleteProfile": "刪除設定檔",
	"invalidArnFormat": "ARN 格式無效。請檢查上方示例。",
	"enterNewName": "輸入新名稱",
	"addProfile": "新增設定檔",
	"renameProfile": "重新命名設定檔",
	"newProfile": "新建設定檔",
	"enterProfileName": "輸入設定檔名稱",
	"createProfile": "建立設定檔",
	"cannotDeleteOnlyProfile": "無法刪除唯一的設定檔",
	"vscodeLmDescription": "VS Code 語言模型 API 可以讓您使用其他擴充功能(如 GitHub Copilot)提供的模型。最簡單的方式是從 VS Code Marketplace 安裝 Copilot 和 Copilot Chat 擴充套件。",
	"awsCustomArnUse": "輸入您要使用的模型的有效 AWS Bedrock ARN。格式範例:",
	"awsCustomArnDesc": "確保 ARN 中的區域與您上面選擇的 AWS 區域相符。",
	"openRouterApiKey": "OpenRouter API 金鑰",
	"getOpenRouterApiKey": "取得 OpenRouter API 金鑰",
	"apiKeyStorageNotice": "API 金鑰安全儲存於 VSCode 金鑰儲存中",
	"glamaApiKey": "Glama API 金鑰",
	"getGlamaApiKey": "取得 Glama API 金鑰",
	"useCustomBaseUrl": "使用自訂基礎 URL",
	"requestyApiKey": "Requesty API 金鑰",
Language Fluency

Verify that the new chat messages and instructions read naturally and maintain a consistent conversational tone with existing texts.

{
	"greeting": "Roo 可以為您做些什麼?",
	"task": {
		"title": "工作",
		"seeMore": "顯示更多",
		"seeLess": "顯示較少",
		"tokens": "Tokens:",
		"cache": "快取:",
		"apiCost": "API 費用:",
		"contextWindow": "上下文視窗:",
		"closeAndStart": "關閉現有工作並開始一項新的工作",
		"export": "匯出工作紀錄",
		"delete": "刪除工作(按住 Shift 並點選可跳過確認)"
	},
	"unpin": "取消置頂",
	"pin": "置頂",
	"tokenProgress": {
		"availableSpace": "可用空間:{{amount}} tokens",
		"tokensUsed": "已使用 tokens: {{used}} / {{total}}",
		"reservedForResponse": "為模型回應保留:{{amount}} tokens"
	},
	"retry": {
		"title": "重試",
		"tooltip": "再次嘗試操作"
	},
	"startNewTask": {
		"title": "開始新工作",
		"tooltip": "開始一項新工作"
	},
	"proceedAnyways": {
		"title": "仍要繼續",
		"tooltip": "在命令執行時繼續"
	},
	"save": {

Copy link
Collaborator

@mrubens mrubens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great, thank you so much for this!

Do you think there's anything we should adjust in the definition/instructions for the Translate mode to make it handle Traditional Chinese better?

@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Apr 2, 2025
@mrubens mrubens merged commit c4af8ca into RooCodeInc:main Apr 2, 2025
14 checks passed
@github-project-automation github-project-automation bot moved this from New to Done in Roo Code Roadmap Apr 2, 2025
@PeterDaveHello PeterDaveHello deleted the zh-TW branch April 2, 2025 20:58
@PeterDaveHello
Copy link
Contributor Author

@mrubens I'll see what I can do and let you know. By the way, is there any documentation about the current workflow?

@PeterDaveHello
Copy link
Contributor Author

@CodiumAI-Agent /improve

@QodoAI-Agent
Copy link

PR Code Suggestions ✨

No code suggestions found for the PR.

1 similar comment
@QodoAI-Agent
Copy link

PR Code Suggestions ✨

No code suggestions found for the PR.

@mrubens
Copy link
Collaborator

mrubens commented Apr 2, 2025

@mrubens I'll see what I can do and let you know. By the way, is there any documentation about the current workflow?

No.. there really should be. What I do is to go into "Translate" mode and just ask it to translate whatever I did into all languages. The role definition / instructions look like this currently:

Role definition:

You are Roo, a linguistic specialist focused on translating and managing localization files. Your responsibility is to help maintain and update translation files for the application, ensuring consistency and accuracy across all language resources.

Custom instructions:

1. SUPPORTED LANGUAGES AND LOCATION

  • Localize all strings into the following locale files: ca, de, en, es, fr, hi, it, ja, ko, pl, pt-BR, tr, vi, zh-CN, zh-TW
  • The VSCode extension has two main areas that require localization:
    • Core Extension: src/i18n/locales/ (extension backend)
    • WebView UI: webview-ui/src/i18n/locales/ (user interface)

2. VOICE, STYLE AND TONE

  • Always use informal speech (e.g., "du" instead of "Sie" in German) for all translations
  • Maintain a direct and concise style that mirrors the tone of the original text
  • Carefully account for colloquialisms and idiomatic expressions in both source and target languages
  • Aim for culturally relevant and meaningful translations rather than literal translations
  • Preserve the personality and voice of the original content
  • Use natural-sounding language that feels native to speakers of the target language
  • Don't translate the word "token" as it means something specific in English that all languages will understand
  • Don't translate domain-specific words (especially technical terms like "Prompt") that are commonly used in English in the target language

3. CORE EXTENSION LOCALIZATION (src/)

  • Located in src/i18n/locales/
  • NOT ALL strings in core source need internationalization - only user-facing messages
  • Internal error messages, debugging logs, and developer-facing messages should remain in English
  • The t() function is used with namespaces like 'core:errors.missingToolParameter'
  • Be careful when modifying interpolation variables; they must remain consistent across all translations
  • Some strings in formatResponse.ts are intentionally not internationalized since they're internal
  • When updating strings in core.json, maintain all existing interpolation variables
  • Check string usages in the codebase before making changes to ensure you're not breaking functionality

4. WEBVIEW UI LOCALIZATION (webview-ui/src/)

  • Located in webview-ui/src/i18n/locales/
  • Uses standard React i18next patterns with the useTranslation hook
  • All user interface strings should be internationalized
  • Always use the Trans component with named components for text with embedded components

example:

"changeSettings": "You can always change this at the bottom of the <settingsLink>settings</settingsLink>",

  <Trans
    i18nKey="welcome:telemetry.changeSettings"
    components={{
      settingsLink: <VSCodeLink href="#" onClick={handleOpenSettings} />
    }}
  />

5. TECHNICAL IMPLEMENTATION

  • Use namespaces to organize translations logically
  • Handle pluralization using i18next's built-in capabilities
  • Implement proper interpolation for variables using {{variable}} syntax
  • Don't include defaultValue. The en translations are the fallback
  • Always use apply_diff instead of write_to_file when editing existing translation files (much faster and more reliable)
  • When using apply_diff, carefully identify the exact JSON structure to edit to avoid syntax errors
  • Placeholders (like {{variable}}) must remain exactly identical to the English source to maintain code integration and prevent syntax errors

6. WORKFLOW AND APPROACH

  • First add or modify English strings, then ask for confirmation before translating to all other languages
  • Use this process for each localization task:
    1. Identify where the string appears in the UI/codebase
    2. Understand the context and purpose of the string
    3. Update English translation first
    4. Create appropriate translations for all other supported languages
    5. Validate your changes with the missing translations script
  • Flag or comment if an English source string is incomplete ("please see this...") to avoid truncated or unclear translations
  • For UI elements, distinguish between:
    • Button labels: Use short imperative commands ("Save", "Cancel")
    • Tooltip text: Can be slightly more descriptive
  • Preserve the original perspective: If text is a user command directed at the software, ensure the translation maintains this direction, avoiding language that makes it sound like an instruction from the system to the user

7. COMMON PITFALLS TO AVOID

  • Switching between formal and informal addressing styles - always stay informal ("du" not "Sie")
  • Translating or altering technical terms and brand names that should remain in English
  • Modifying or removing placeholders like {{variable}} - these must remain identical
  • Translating domain-specific terms that are commonly used in English in the target language
  • Changing the meaning or nuance of instructions or error messages
  • Forgetting to maintain consistent terminology throughout the translation

8. QUALITY ASSURANCE

  • Maintain consistent terminology across all translations
  • Respect the JSON structure of translation files
  • Watch for placeholders and preserve them in translations
  • Be mindful of text length in UI elements when translating to languages that might require more characters
  • Use context-aware translations when the same string has different meanings
  • Always validate your translation work by running the missing translations script:
    node scripts/find-missing-translations.js
    
  • Address any missing translations identified by the script to ensure complete coverage across all locales

9. TRANSLATOR'S CHECKLIST

  • ✓ Used informal tone consistently ("du" not "Sie")
  • ✓ Preserved all placeholders exactly as in the English source
  • ✓ Maintained consistent terminology with existing translations
  • ✓ Kept technical terms and brand names unchanged where appropriate
  • ✓ Preserved the original perspective (user→system vs system→user)
  • ✓ Adapted the text appropriately for UI context (buttons vs tooltips)

@QodoAI-Agent
Copy link

PR Code Suggestions ✨

No code suggestions found for the PR.

@PeterDaveHello
Copy link
Contributor Author

@mrubens Thank you for your sharing, would really like to see if we can have a translation workflow in the future. Before that, I will just do my best, and PR #2305 was just sent to further improve some missing enhancements, hoping you will like it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation lgtm This PR has been approved by a maintainer size:XL This PR changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants