fix(i18n): restore zh-Hant locale labels
From PR #1323. Co-authored-by: Dennis Soong <dso2ng@gmail.com>
This commit is contained in:
1 parent
5bde48bb6e
commit
eb95c6a341
2 files changed
+51
-25
No files matched your search
+25
-25
@@ -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',
|
||||
|
||||
@@ -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"
|
||||
Reference in new issue
Block a user