diff --git a/static/i18n.js b/static/i18n.js index 9ad3f2ed..9b29b26e 100644 --- a/static/i18n.js +++ b/static/i18n.js @@ -3028,7 +3028,7 @@ const LOCALES = { diff_too_large: 'Patch 文件过大,无法内联显示', tree_view: '树形', raw_view: '原始', - parse_failed_note: '\u89e3\u6790\u5931\u8d25', + parse_failed_note: '解析失败', you: '\u4f60', mcp_servers_title: 'MCP 服务器', mcp_servers_desc: '管理 config.yaml 中配置的 MCP 服务器。', @@ -3756,32 +3756,32 @@ const LOCALES = { diff_loading: '載入 diff', diff_error: '無法載入 patch 檔案', diff_too_large: 'Patch 檔案過大,無法內聯顯示', - tree_view: 'Дерево', - raw_view: 'Исходный', - parse_failed_note: '\u89e3\u6790\u5931\u8d25', + tree_view: '樹狀', + raw_view: '原始', + parse_failed_note: '解析失敗', you: '\u4f60', - mcp_servers_title: 'MCP Серверы', - mcp_servers_desc: 'Управление серверами Model Context Protocol в config.yaml.', - mcp_no_servers: 'MCP серверы не настроены.', - mcp_add_server: '+ Добавить сервер', - mcp_field_name: 'Имя сервера', - mcp_transport_label: 'Тип транспорта', - mcp_field_command: 'Команда', - mcp_field_args: 'Аргументы (через запятую)', + mcp_servers_title: 'MCP 伺服器', + mcp_servers_desc: '管理 config.yaml 中設定的 MCP 伺服器。', + mcp_no_servers: '未設定 MCP 伺服器。', + mcp_add_server: '+ 新增伺服器', + mcp_field_name: '伺服器名稱', + mcp_transport_label: '傳輸類型', + mcp_field_command: '命令', + mcp_field_args: '參數(以逗號分隔)', mcp_field_url: 'URL', - mcp_field_timeout: 'Таймаут (секунды)', - mcp_save: 'Сохранить', - mcp_cancel: 'Отмена', - mcp_name_required: 'Требуется имя сервера.', - mcp_url_required: 'URL обязателен для HTTP.', - mcp_command_required: 'Команда обязательна для stdio.', - mcp_saved: 'MCP сервер сохранён.', - mcp_save_failed: 'Не удалось сохранить.', - mcp_delete_confirm_title: 'Удалить MCP сервер', - mcp_delete_confirm_message: 'Удалить MCP сервер «{0}»? Это необратимо.', - mcp_deleted: 'MCP сервер удалён.', - mcp_delete_failed: 'Не удалось удалить.', - mcp_load_failed: 'Не удалось загрузить MCP серверы.', + mcp_field_timeout: '逾時(秒)', + mcp_save: '儲存', + mcp_cancel: '取消', + mcp_name_required: '伺服器名稱為必填。', + mcp_url_required: 'HTTP 傳輸需要 URL。', + mcp_command_required: 'stdio 傳輸需要命令。', + mcp_saved: 'MCP 伺服器已儲存。', + mcp_save_failed: '儲存 MCP 伺服器失敗。', + mcp_delete_confirm_title: '刪除 MCP 伺服器', + mcp_delete_confirm_message: '刪除 MCP 伺服器「{0}」?此操作無法復原。', + mcp_deleted: 'MCP 伺服器已刪除。', + mcp_delete_failed: '刪除 MCP 伺服器失敗。', + mcp_load_failed: '載入 MCP 伺服器失敗。', thinking: '\u601d\u8003\u904e\u7a0b', expand_all: '\u5168\u90e8\u5c55\u958b', collapse_all: '\u5168\u90e8\u6298\u758a', diff --git a/tests/test_chinese_locale.py b/tests/test_chinese_locale.py index e27561d2..cac42178 100644 --- a/tests/test_chinese_locale.py +++ b/tests/test_chinese_locale.py @@ -109,3 +109,29 @@ def test_chinese_locale_has_no_duplicate_keys(): keys = key_pattern.findall(extract_locale_block(src, "zh")) duplicates = sorted(k for k, count in Counter(keys).items() if count > 1) assert not duplicates, f"Chinese locale has duplicate keys: {duplicates}" + + +def test_traditional_chinese_mcp_and_tree_labels_are_not_cyrillic(): + """Regression for PR #1254/#1274 locale cross-paste fallout. + + zh-Hant inherited Russian MCP/tree-view labels such as "MCP Серверы", + "Дерево", and "Исходный". Those labels show up under JSON/YAML code + block tree toggles and Settings → System → MCP Servers for zh-TW users. + """ + src = read(REPO / "static" / "i18n.js") + start = src.index(" 'zh-Hant': {") + end = src.index("\n pt:", start) + block = src[start:end] + + expected = [ + "tree_view: '樹狀'", + "raw_view: '原始'", + "parse_failed_note: '解析失敗'", + "mcp_servers_title: 'MCP 伺服器'", + "mcp_no_servers: '未設定 MCP 伺服器。'", + "mcp_add_server: '+ 新增伺服器'", + ] + for entry in expected: + assert entry in block + + assert not re.search(r"[\u0400-\u04FF]", block), "zh-Hant locale contains Cyrillic text"