i18ntk 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -1
- package/README.md +28 -15
- package/SECURITY.md +19 -5
- package/main/i18ntk-complete.js +120 -49
- package/main/i18ntk-translate.js +25 -1
- package/package.json +3 -3
- package/ui-locales/de.json +1389 -1359
- package/ui-locales/es.json +1503 -1473
- package/ui-locales/fr.json +1626 -1596
- package/ui-locales/ja.json +1595 -1565
- package/ui-locales/ru.json +1638 -1608
- package/ui-locales/zh.json +1613 -1583
- package/utils/translate/api.js +164 -41
- package/utils/translate/safe-network.js +280 -0
package/ui-locales/zh.json
CHANGED
|
@@ -7,1235 +7,1235 @@
|
|
|
7
7
|
"welcome": "欢迎",
|
|
8
8
|
"hello": "你好",
|
|
9
9
|
"goodbye": "再见",
|
|
10
|
-
"yes": "
|
|
11
|
-
"no": "
|
|
12
|
-
"save": "
|
|
10
|
+
"yes": "是的",
|
|
11
|
+
"no": "不",
|
|
12
|
+
"save": "节省",
|
|
13
13
|
"cancel": "取消",
|
|
14
14
|
"delete": "删除",
|
|
15
15
|
"edit": "编辑",
|
|
16
16
|
"loading": "加载中...",
|
|
17
|
-
"offlineTitle": "
|
|
18
|
-
"offlineMessage": "
|
|
17
|
+
"offlineTitle": "您离线",
|
|
18
|
+
"offlineMessage": "请检查您的互联网连接",
|
|
19
19
|
"tryReconnect": "尝试重新连接",
|
|
20
|
-
"logout": "
|
|
20
|
+
"logout": "退出",
|
|
21
21
|
"login": "登录",
|
|
22
|
-
"amount": "
|
|
22
|
+
"amount": "数量",
|
|
23
23
|
"success": "成功",
|
|
24
24
|
"error": "错误",
|
|
25
25
|
"warning": "警告",
|
|
26
26
|
"info": "信息:",
|
|
27
27
|
"debug": "调试",
|
|
28
|
-
"progress": "
|
|
29
|
-
"remaining": "
|
|
30
|
-
"total": "
|
|
28
|
+
"progress": "进步:",
|
|
29
|
+
"remaining": "其余的:",
|
|
30
|
+
"total": "全部的:",
|
|
31
31
|
"completed": "7. 成功完成!",
|
|
32
|
-
"missing": "
|
|
33
|
-
"partial": "
|
|
34
|
-
"sameAsSource": "
|
|
32
|
+
"missing": "丢失的",
|
|
33
|
+
"partial": "部分的",
|
|
34
|
+
"sameAsSource": "与来源相同:",
|
|
35
35
|
"formatMismatch": "格式不匹配:",
|
|
36
36
|
"typeMismatch": "类型不匹配:",
|
|
37
37
|
"structureMismatch": "结构不匹配:",
|
|
38
38
|
"invalidOption": "无效选项",
|
|
39
|
-
"separator": "
|
|
40
|
-
"initializationFailed": "❌ 初始化失败:{error}",
|
|
41
|
-
"stackTrace": "堆栈跟踪:{stack}",
|
|
42
|
-
"pressEnterToContinue": "按Enter
|
|
43
|
-
"pressEnterToReturn": "按Enter返回主菜单...",
|
|
44
|
-
"stepCompleted": "
|
|
45
|
-
"stepFailed": "
|
|
46
|
-
"runningStep": "
|
|
47
|
-
"command": "命令:{command}",
|
|
48
|
-
"startingWorkflow": "
|
|
49
|
-
"workflowCompleted": "
|
|
50
|
-
"checkReports": "
|
|
51
|
-
"errorExecutingCommand": "
|
|
52
|
-
"genericError": "❌
|
|
39
|
+
"separator": "===================================================",
|
|
40
|
+
"initializationFailed": "❌ 初始化失败: {error}",
|
|
41
|
+
"stackTrace": "堆栈跟踪: {stack}",
|
|
42
|
+
"pressEnterToContinue": "按 Enter 键继续...",
|
|
43
|
+
"pressEnterToReturn": "按 Enter 返回主菜单...",
|
|
44
|
+
"stepCompleted": "步 '{stepName}' 完全的。",
|
|
45
|
+
"stepFailed": "步 '{stepName}' 失败的。",
|
|
46
|
+
"runningStep": "运行步骤: {stepName}",
|
|
47
|
+
"command": "命令: {command}",
|
|
48
|
+
"startingWorkflow": "开始工作流程...",
|
|
49
|
+
"workflowCompleted": "工作流程完成。",
|
|
50
|
+
"checkReports": "检查报告以了解详细信息。",
|
|
51
|
+
"errorExecutingCommand": "执行命令时出错: {error}",
|
|
52
|
+
"genericError": "❌ 错误: {error}",
|
|
53
53
|
"errors": {
|
|
54
54
|
"errors": "错误:",
|
|
55
|
-
"genericError": "❌
|
|
56
|
-
"initializationFailed": "❌
|
|
55
|
+
"genericError": "❌ 错误: {error}",
|
|
56
|
+
"initializationFailed": "❌ 初始化失败: {error}",
|
|
57
57
|
"initializationCancelled": "❌ 初始化被用户取消。",
|
|
58
|
-
"translationKeyNotFound": "
|
|
59
|
-
"sourceDirectoryNotFound": "
|
|
58
|
+
"translationKeyNotFound": "未找到翻译键: {key}",
|
|
59
|
+
"sourceDirectoryNotFound": "未找到源目录: {directory}",
|
|
60
60
|
"configLoadingFailed": "配置加载失败",
|
|
61
|
-
"invalidSourceDirectory": "
|
|
62
|
-
"securityViolation": "
|
|
63
|
-
"authenticationFailed": "
|
|
64
|
-
"sourceEqualsI18nWarn": "⚠️
|
|
61
|
+
"invalidSourceDirectory": "无效的源目录: {directory}",
|
|
62
|
+
"securityViolation": "检测到安全违规",
|
|
63
|
+
"authenticationFailed": "认证失败",
|
|
64
|
+
"sourceEqualsI18nWarn": "⚠️ sourceDir 等于 i18nDir ({sourceDir})。跌回至 {fallback} 用于源扫描。"
|
|
65
65
|
},
|
|
66
|
-
"errorGeneratingStatusSummary": "
|
|
67
|
-
"errorRunningDebugTool": "
|
|
68
|
-
"errorReadingDebugLogs": "
|
|
69
|
-
"errorAnalyzingLogFile": "
|
|
70
|
-
"errorAnalyzingTranslationKeys": "
|
|
71
|
-
"errorAnalyzingTranslationCompleteness": "
|
|
72
|
-
"analyzingTranslationCompleteness": "
|
|
73
|
-
"i18nDirectoryNotFound": "⚠️
|
|
74
|
-
"translationCompletenessAnalysisFailed": "
|
|
75
|
-
"failedToAnalyzeLanguage": "❌
|
|
76
|
-
"errorReadingI18nDirectory": "❌
|
|
77
|
-
"languageCompletenessTitle": "📈
|
|
78
|
-
"errorAnalyzingTranslationFormat": "
|
|
79
|
-
"errorAnalyzingTranslationType": "
|
|
80
|
-
"errorAnalyzingTranslationStructure": "
|
|
81
|
-
"errorAnalyzingTranslationFormatMismatch": "
|
|
82
|
-
"errorAnalyzingTranslationTypeMismatch": "
|
|
83
|
-
"errorAnalyzingTranslationStructureMismatch": "
|
|
84
|
-
"errorAnalyzingTranslationSameAsSource": "
|
|
85
|
-
"title": "
|
|
86
|
-
"nextStep1": "1
|
|
66
|
+
"errorGeneratingStatusSummary": "生成状态摘要时出错: {error}",
|
|
67
|
+
"errorRunningDebugTool": "运行调试工具时出错'{displayName}': {error}",
|
|
68
|
+
"errorReadingDebugLogs": "读取调试日志时出错: {error}",
|
|
69
|
+
"errorAnalyzingLogFile": "分析日志文件时出错: {error}",
|
|
70
|
+
"errorAnalyzingTranslationKeys": "分析翻译键时出错: {error}",
|
|
71
|
+
"errorAnalyzingTranslationCompleteness": "分析翻译完整性时出错: {error}",
|
|
72
|
+
"analyzingTranslationCompleteness": "分析所有语言的翻译完整性...",
|
|
73
|
+
"i18nDirectoryNotFound": "⚠️ 找不到 i18n 目录: {i18nDir}",
|
|
74
|
+
"translationCompletenessAnalysisFailed": "⚠️翻译完整性分析失败: {error}",
|
|
75
|
+
"failedToAnalyzeLanguage": "❌ 无法分析语言 {language}: {error}",
|
|
76
|
+
"errorReadingI18nDirectory": "❌ 读取 i18n 目录时出错:",
|
|
77
|
+
"languageCompletenessTitle": "📈 不同语言的翻译完整性",
|
|
78
|
+
"errorAnalyzingTranslationFormat": "分析翻译格式时出错: {error}",
|
|
79
|
+
"errorAnalyzingTranslationType": "分析翻译类型时出错: {error}",
|
|
80
|
+
"errorAnalyzingTranslationStructure": "分析翻译结构时出错: {error}",
|
|
81
|
+
"errorAnalyzingTranslationFormatMismatch": "分析翻译格式不匹配时出错: {error}",
|
|
82
|
+
"errorAnalyzingTranslationTypeMismatch": "分析翻译类型不匹配时出错: {error}",
|
|
83
|
+
"errorAnalyzingTranslationStructureMismatch": "分析翻译结构不匹配时出错: {error}",
|
|
84
|
+
"errorAnalyzingTranslationSameAsSource": "分析翻译与源相同时出错: {error}",
|
|
85
|
+
"title": "地位",
|
|
86
|
+
"nextStep1": "1.查看使用情况分析:",
|
|
87
87
|
"nextStep2": "2. 验证翻译:",
|
|
88
|
-
"nextStep3": "3
|
|
89
|
-
"nextStep4": "4.
|
|
90
|
-
"nextStep5": "5.
|
|
88
|
+
"nextStep3": "3.分析完整性:",
|
|
89
|
+
"nextStep4": "4. 补全缺失的翻译:",
|
|
90
|
+
"nextStep5": "5. 生成总结报告:",
|
|
91
91
|
"nextStep6": "6. 审核并完成翻译:",
|
|
92
92
|
"generating": "正在生成摘要报告...",
|
|
93
|
-
"review": "
|
|
93
|
+
"review": "正在审核翻译...",
|
|
94
94
|
"finalizing": "正在完成翻译...",
|
|
95
|
-
"finalized": "
|
|
95
|
+
"finalized": "最终顺利完成!",
|
|
96
96
|
"warnings": "警告:",
|
|
97
|
-
"completedKeys": "
|
|
98
|
-
"missingKeys": "
|
|
99
|
-
"partialKeys": "
|
|
100
|
-
"home": "
|
|
97
|
+
"completedKeys": "完成的钥匙:",
|
|
98
|
+
"missingKeys": "缺少钥匙:",
|
|
99
|
+
"partialKeys": "部分按键:",
|
|
100
|
+
"home": "家",
|
|
101
101
|
"settings": "设置",
|
|
102
|
-
"startingSettings": "🎛️
|
|
102
|
+
"startingSettings": "🎛️ 启动设置 CLI...",
|
|
103
103
|
"confirm": "确认",
|
|
104
104
|
"errorExiting": "退出时出错。"
|
|
105
105
|
},
|
|
106
106
|
"errors": {
|
|
107
|
-
"invalidOption": "❌
|
|
108
|
-
"readlineClosed": "
|
|
109
|
-
"noPackageJson": "未找到 package.json
|
|
110
|
-
"noI18nDir": "
|
|
111
|
-
"noI18nConfig": "
|
|
112
|
-
"errorReadingDebugLogs": "读取调试日志时出错:{error}"
|
|
107
|
+
"invalidOption": "❌ 无效选项: {option}。请再试一次。",
|
|
108
|
+
"readlineClosed": "输入流已关闭;以非交互模式运行。",
|
|
109
|
+
"noPackageJson": "未找到 package.json。无法自动检测 i18n 框架。",
|
|
110
|
+
"noI18nDir": "在项目根目录中找不到 i18n 目录。",
|
|
111
|
+
"noI18nConfig": "在项目根目录中找不到 i18n 配置文件。",
|
|
112
|
+
"errorReadingDebugLogs": "读取调试日志时出错: {error}"
|
|
113
113
|
},
|
|
114
114
|
"scanner": {
|
|
115
|
-
"help_message": "
|
|
115
|
+
"help_message": "I18n 文本扫描仪用法:node i18ntk-scanner.js [选项] 选项:--source-dir <dir> 要扫描的源目录(默认:./src)--output <file> 扫描结果的输出文件(默认:./i18ntk-scanner-report.json)--framework <name> 目标框架(react、vue、Angular、vanilla)--patterns <patterns> 自定义正则表达式模式(逗号分隔) --include-tests 在扫描中包含测试文件 --exclude-dirs <dirs> 要排除的目录(逗号分隔) --help 显示此帮助示例:node i18ntk-scanner.js --source-dir=./src --framework=react node i18ntk-scanner.js --patterns 'console.log\\((.*?)\\)' --include-tests node i18ntk-scanner.js --output=./scan-results.json",
|
|
116
116
|
"help_options": {
|
|
117
|
-
"source_dir": "
|
|
118
|
-
"output_dir": "
|
|
119
|
-
"framework": "
|
|
120
|
-
"patterns": "
|
|
121
|
-
"exclude": "
|
|
122
|
-
"output_report": "
|
|
123
|
-
"min_length": "
|
|
124
|
-
"max_length": "
|
|
125
|
-
"include_tests": "
|
|
117
|
+
"source_dir": "用于扫描 i18n 问题的源目录",
|
|
118
|
+
"output_dir": "扫描报告和结果目录",
|
|
119
|
+
"framework": "目标框架(React、Vue、Angular、Vanilla)",
|
|
120
|
+
"patterns": "用于文本检测的自定义正则表达式模式",
|
|
121
|
+
"exclude": "要从扫描中排除的文件模式",
|
|
122
|
+
"output_report": "生成详细的扫描报告",
|
|
123
|
+
"min_length": "翻译时考虑的最小文本长度",
|
|
124
|
+
"max_length": "翻译时考虑的最大文本长度",
|
|
125
|
+
"include_tests": "在扫描过程中包含测试文件"
|
|
126
126
|
},
|
|
127
|
-
"starting": "🔍
|
|
128
|
-
"sourceDirectory": "📁
|
|
129
|
-
"frameworkDetected": "🎯
|
|
130
|
-
"scanningFiles": "📊
|
|
131
|
-
"foundTexts": "
|
|
132
|
-
"generatingReport": "📊
|
|
133
|
-
"reportSaved": "💾
|
|
127
|
+
"starting": "🔍 启动框架的文本扫描器: {framework}",
|
|
128
|
+
"sourceDirectory": "📁 扫描目录: {sourceDir}",
|
|
129
|
+
"frameworkDetected": "🎯 检测到的框架: {framework}",
|
|
130
|
+
"scanningFiles": "📊 扫描 {fileCount} 文件...",
|
|
131
|
+
"foundTexts": "📝找到了 {textCount} 需要翻译的文本",
|
|
132
|
+
"generatingReport": "📊 生成详细报告...",
|
|
133
|
+
"reportSaved": "💾 扫描报告保存至: {reportPath}",
|
|
134
134
|
"noTextsFound": "✅ 未找到硬编码的英文文本",
|
|
135
|
-
"scanComplete": "🎉
|
|
136
|
-
"analysisTitle": "🔍
|
|
137
|
-
"fileSummary": "📄 {file}:
|
|
138
|
-
"textLocation": "
|
|
139
|
-
"foundText": "
|
|
140
|
-
"context": "📝
|
|
141
|
-
"severity": "
|
|
142
|
-
"recommendation": "
|
|
135
|
+
"scanComplete": "🎉 扫描成功完成!",
|
|
136
|
+
"analysisTitle": "🔍 翻译扫描分析",
|
|
137
|
+
"fileSummary": "📄 {file}: {count} 找到文本",
|
|
138
|
+
"textLocation": "📍线 {line}: {text}",
|
|
139
|
+
"foundText": "成立 {count} 潜在的硬编码文本实例",
|
|
140
|
+
"context": "📝 背景: {context}",
|
|
141
|
+
"severity": "⚠️严重性: {severity}",
|
|
142
|
+
"recommendation": "💡推荐: {recommendation}",
|
|
143
143
|
"welcome": {
|
|
144
|
-
"title": "🎯
|
|
145
|
-
"description": "
|
|
144
|
+
"title": "🎯 欢迎使用文本扫描仪!",
|
|
145
|
+
"description": "该工具会扫描您的源代码以查找可能需要翻译的硬编码英文文本。"
|
|
146
146
|
},
|
|
147
147
|
"frameworkPrompt": {
|
|
148
148
|
"title": "🎯 选择框架",
|
|
149
|
-
"available": "
|
|
150
|
-
"description": "
|
|
151
|
-
"input": "
|
|
149
|
+
"available": "可用框架:react、vue、Angular、vanilla",
|
|
150
|
+
"description": "输入框架类型(或按 Enter 键自动检测):",
|
|
151
|
+
"input": "框架:"
|
|
152
152
|
},
|
|
153
153
|
"directoryPrompt": {
|
|
154
154
|
"title": "📁 选择源目录",
|
|
155
|
-
"current": "
|
|
156
|
-
"description": "
|
|
157
|
-
"input": "
|
|
155
|
+
"current": "当前目录: {dir}",
|
|
156
|
+
"description": "输入要扫描的目录(或按 Enter 键选择当前目录):",
|
|
157
|
+
"input": "目录:"
|
|
158
158
|
},
|
|
159
159
|
"options": {
|
|
160
|
-
"includeTests": "
|
|
161
|
-
"excludeDirs": "
|
|
162
|
-
"customPatterns": "
|
|
160
|
+
"includeTests": "包括测试文件?",
|
|
161
|
+
"excludeDirs": "要排除的目录(以逗号分隔):",
|
|
162
|
+
"customPatterns": "要扫描的自定义模式(正则表达式):"
|
|
163
163
|
},
|
|
164
|
-
"reportGenerated": "生成的扫描报告:{path}"
|
|
164
|
+
"reportGenerated": "生成的扫描报告: {path}"
|
|
165
165
|
},
|
|
166
166
|
"fixer": {
|
|
167
|
-
"help_message": "I18n
|
|
168
|
-
"starting": "🚀
|
|
169
|
-
"sourceDirectory": "📁
|
|
170
|
-
"sourceLanguage": "🔤
|
|
171
|
-
"markers": "🏷️
|
|
172
|
-
"scanningLanguage": "📊
|
|
173
|
-
"noLanguages": "❌
|
|
167
|
+
"help_message": "I18n Translation Fixer 用法:node i18ntk-fixer.js [options] 选项:--source-dir <dir> 要扫描的源目录(默认:./locales)--languages <langs> 要修复的逗号分隔语言列表 --markers <markers> 逗号分隔标记视为未翻译 --no-backup 跳过自动备份创建 --help 显示此帮助 示例:node i18ntk-fixer.js --languages de,fr node i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED node i18ntk-fixer.js --no-backup",
|
|
168
|
+
"starting": "🚀 开始修复语言翻译: {languages}",
|
|
169
|
+
"sourceDirectory": "📁 源码目录: {sourceDir}",
|
|
170
|
+
"sourceLanguage": "🔤 源语言: {sourceLanguage}",
|
|
171
|
+
"markers": "🏷️ 要修复的标记: {markers}",
|
|
172
|
+
"scanningLanguage": "📊 扫描 {language}...",
|
|
173
|
+
"noLanguages": "❌ 没有指定修复语言。",
|
|
174
174
|
"allComplete": "🎉 所有翻译已经完成!",
|
|
175
|
-
"fullReportSaved": "📊
|
|
176
|
-
"reviewReport": "
|
|
177
|
-
"backupCreated": "💾
|
|
175
|
+
"fullReportSaved": "📊 完整报告保存至: {reportPath}",
|
|
176
|
+
"reviewReport": "请在继续之前查看该报告。",
|
|
177
|
+
"backupCreated": "💾 备份创建成功。",
|
|
178
178
|
"applyingFixes": "🔄 正在应用修复...",
|
|
179
179
|
"fixingComplete": "✅ 翻译修复完成!",
|
|
180
|
-
"operationCancelled": "❌
|
|
181
|
-
"analysisTitle": "🔍
|
|
182
|
-
"analysisSeparator": "
|
|
183
|
-
"totalIssues": "
|
|
184
|
-
"missingTranslations": "
|
|
185
|
-
"placeholderTranslations": "
|
|
186
|
-
"noIssues": "✅
|
|
187
|
-
"detailedIssues": "
|
|
180
|
+
"operationCancelled": "❌ 用户取消操作。",
|
|
181
|
+
"analysisTitle": "🔍 翻译固定分析",
|
|
182
|
+
"analysisSeparator": "===================================================",
|
|
183
|
+
"totalIssues": "发现问题总数: {totalIssues}",
|
|
184
|
+
"missingTranslations": "缺少翻译: {missing}",
|
|
185
|
+
"placeholderTranslations": "占位符翻译: {placeholder}",
|
|
186
|
+
"noIssues": "✅ 没有发现问题。 All translations are complete.",
|
|
187
|
+
"detailedIssues": "📋详细问题:",
|
|
188
188
|
"detailedSeparator": "--------------------------------------------------",
|
|
189
189
|
"filePath": "📄 {file} → {path}",
|
|
190
|
-
"missingKey": "❌
|
|
191
|
-
"placeholderKey": "
|
|
192
|
-
"moreIssues": "...
|
|
193
|
-
"confirmationTitle": "🤔
|
|
194
|
-
"confirmationOptions": "
|
|
190
|
+
"missingKey": "❌ 缺失: {source} → {new}",
|
|
191
|
+
"placeholderKey": "⚠️占位符:“{target}\" → \"{new}\"",
|
|
192
|
+
"moreIssues": "... 和 {count} 更多问题。检查报告文件以获取完整的详细信息。",
|
|
193
|
+
"confirmationTitle": "🤔 您想继续进行这些修复吗?",
|
|
194
|
+
"confirmationOptions": "选项:",
|
|
195
195
|
"optionYes": "y - 是,应用所有修复",
|
|
196
196
|
"optionNo": "n - 否,取消操作",
|
|
197
197
|
"optionShow": "s - 显示详细问题",
|
|
198
|
-
"choicePrompt": "
|
|
198
|
+
"choicePrompt": "您的选择(是/否):",
|
|
199
199
|
"nonInteractiveMode": "⚡ 检测到非交互模式 - 自动应用修复...",
|
|
200
|
-
"reportGenerated": "📊
|
|
200
|
+
"reportGenerated": "📊 生成的修复程序报告: {path}",
|
|
201
201
|
"summary": "固定器总结:",
|
|
202
202
|
"welcome": {
|
|
203
|
-
"title": "🎯
|
|
204
|
-
"description": "
|
|
203
|
+
"title": "🎯 欢迎使用翻译修复器!",
|
|
204
|
+
"description": "该工具将帮助您修复区域设置文件中损坏的翻译和占位符。"
|
|
205
205
|
},
|
|
206
206
|
"markerPrompt": {
|
|
207
207
|
"title": "🏷️ 配置占位符标记",
|
|
208
|
-
"description": "
|
|
209
|
-
"currentDefaults": "默认标记:{markers}",
|
|
210
|
-
"input": "标记(或按Enter
|
|
208
|
+
"description": "输入指示未翻译文本的标记(以逗号分隔):",
|
|
209
|
+
"currentDefaults": "默认标记: {markers}",
|
|
210
|
+
"input": "标记(或按 Enter 键获取默认值):"
|
|
211
211
|
},
|
|
212
212
|
"languagePrompt": {
|
|
213
213
|
"title": "🌍 选择要修复的语言",
|
|
214
|
-
"available": "可用语言:{languages}",
|
|
215
|
-
"description": "
|
|
214
|
+
"available": "可用语言: {languages}",
|
|
215
|
+
"description": "输入要修复的语言(以逗号分隔)或按 Enter 键修复所有语言:",
|
|
216
216
|
"input": "语言:",
|
|
217
|
-
"noLanguages": "
|
|
217
|
+
"noLanguages": "找不到可修复的语言。"
|
|
218
218
|
},
|
|
219
219
|
"directoryPrompt": {
|
|
220
220
|
"title": "📁 选择目录",
|
|
221
|
-
"current": "当前目录:{dir}",
|
|
222
|
-
"description": "
|
|
221
|
+
"current": "当前目录: {dir}",
|
|
222
|
+
"description": "输入包含您的语言环境文件的目录(或按 Enter 键选择当前目录):",
|
|
223
223
|
"input": "目录:"
|
|
224
224
|
},
|
|
225
|
-
"backupLocation": "备份位置:{dir}",
|
|
225
|
+
"backupLocation": "备份位置: {dir}",
|
|
226
226
|
"completed": "修复完成。",
|
|
227
|
-
"creatingBackup": "
|
|
228
|
-
"dryRunMode": "试运行模式:{mode}",
|
|
229
|
-
"error": "修复程序失败:{error}",
|
|
230
|
-
"fixing": "
|
|
231
|
-
"foundLanguages": "
|
|
232
|
-
"languageFixed": "{language}
|
|
227
|
+
"creatingBackup": "创建备份于 {dir}...",
|
|
228
|
+
"dryRunMode": "试运行模式: {mode}",
|
|
229
|
+
"error": "修复程序失败: {error}",
|
|
230
|
+
"fixing": "定影 {language}...",
|
|
231
|
+
"foundLanguages": "成立 {count} 语言: {languages}",
|
|
232
|
+
"languageFixed": "{language}: 固定的 {fixed} 键,已跳过 {skipped}.",
|
|
233
233
|
"running": "运行翻译修复程序...",
|
|
234
|
-
"totalFixed": "
|
|
234
|
+
"totalFixed": "总固定: {count}"
|
|
235
235
|
},
|
|
236
236
|
"autorun": {
|
|
237
237
|
"stepAnalyzeTranslations": "分析翻译",
|
|
238
|
-
"stepCompletedWithIcon": "✅
|
|
238
|
+
"stepCompletedWithIcon": "✅ 已完成: {stepName}",
|
|
239
239
|
"stepValidateTranslations": "验证翻译",
|
|
240
|
-
"stepRunning": "
|
|
241
|
-
"separator": "
|
|
242
|
-
"stepFailed": "
|
|
243
|
-
"errorLabel": "
|
|
244
|
-
"autoRunScriptTitle": "
|
|
245
|
-
"usageTitle": "
|
|
246
|
-
"runAllSteps": "node i18ntk-autorun.js
|
|
247
|
-
"configureSettingsFirst": "
|
|
248
|
-
"runSpecificSteps": "
|
|
249
|
-
"showHelp": "
|
|
250
|
-
"examplesTitle": "
|
|
251
|
-
"configExample": "
|
|
252
|
-
"stepsExample1": "
|
|
253
|
-
"stepsExample2": "
|
|
254
|
-
"customSettingsConfiguration": "
|
|
255
|
-
"availableSteps": "
|
|
256
|
-
"startingAutoRunWorkflow": "
|
|
257
|
-
"workflowIncludesSteps": "
|
|
258
|
-
"missingRequiredFile": "
|
|
259
|
-
"workflowStopped": "
|
|
260
|
-
"workflowCompleted": "
|
|
261
|
-
"successfulSteps": "
|
|
262
|
-
"failedSteps": "
|
|
240
|
+
"stepRunning": "▶️步骤 {stepNumber}/{totalSteps}: {stepName}",
|
|
241
|
+
"separator": "===================================================",
|
|
242
|
+
"stepFailed": "❌失败: {stepName}",
|
|
243
|
+
"errorLabel": "错误",
|
|
244
|
+
"autoRunScriptTitle": "🧪 自动运行工作流程",
|
|
245
|
+
"usageTitle": "用法",
|
|
246
|
+
"runAllSteps": "运行:node i18ntk-autorun.js",
|
|
247
|
+
"configureSettingsFirst": "配置:i18ntk-config.json 或 CLI 标志",
|
|
248
|
+
"runSpecificSteps": "使用 --steps=1,3 或 --list 显示步骤",
|
|
249
|
+
"showHelp": "--帮助获取更多信息",
|
|
250
|
+
"examplesTitle": "示例",
|
|
251
|
+
"configExample": "节点 i18ntk-autorun.js --ui-language=zh",
|
|
252
|
+
"stepsExample1": "节点 i18ntk-autorun.js --steps=分析,验证",
|
|
253
|
+
"stepsExample2": "节点 i18ntk-autorun.js --list",
|
|
254
|
+
"customSettingsConfiguration": "自定义自动运行设置",
|
|
255
|
+
"availableSteps": "可用步骤",
|
|
256
|
+
"startingAutoRunWorkflow": "🚀 开始自动运行工作流程...",
|
|
257
|
+
"workflowIncludesSteps": "工作流程包括 {count} 步骤:",
|
|
258
|
+
"missingRequiredFile": "缺少所需文件: {file}",
|
|
259
|
+
"workflowStopped": "工作流程因故障而停止。",
|
|
260
|
+
"workflowCompleted": "🎉 工作流程完成!",
|
|
261
|
+
"successfulSteps": "成功步骤: {count}",
|
|
262
|
+
"failedSteps": "失败的步骤: {count}",
|
|
263
263
|
"stepInitializeProject": "初始化项目",
|
|
264
|
-
"stepCheckUsage": "
|
|
265
|
-
"stepGenerateSummary": "
|
|
264
|
+
"stepCheckUsage": "检查密钥使用情况",
|
|
265
|
+
"stepGenerateSummary": "生成总结报告",
|
|
266
266
|
"runInitializationFirst": "请先运行初始化。",
|
|
267
267
|
"initializationCheckPassed": "初始化检查通过。",
|
|
268
|
-
"runningStep": "
|
|
269
|
-
"commandLabel": "命令:{command}",
|
|
270
|
-
"stepCompletedWithTime": "
|
|
271
|
-
"stepCompleted": "
|
|
272
|
-
"stepFailedWithError": "
|
|
273
|
-
"requiredStepFailed": "
|
|
274
|
-
"optionalStepFailed": "
|
|
275
|
-
"stepRequired": "
|
|
276
|
-
"stepOptional": "
|
|
277
|
-
"startingExecution": "
|
|
278
|
-
"pressEnterToContinue": "按 Enter
|
|
279
|
-
"runningSelectedSteps": "
|
|
280
|
-
"invalidStepNumber": "
|
|
268
|
+
"runningStep": "运行步骤: {stepName}",
|
|
269
|
+
"commandLabel": "命令: {command}",
|
|
270
|
+
"stepCompletedWithTime": "步 '{stepName}' 完成于 {duration}多发性硬化症。",
|
|
271
|
+
"stepCompleted": "步 '{stepName}' 完全的。",
|
|
272
|
+
"stepFailedWithError": "步 '{stepName}' 失败并出现错误: {error}",
|
|
273
|
+
"requiredStepFailed": "所需步骤失败。停止工作流程。",
|
|
274
|
+
"optionalStepFailed": "可选步骤失败。继续工作流程。",
|
|
275
|
+
"stepRequired": "(必需的)",
|
|
276
|
+
"stepOptional": "(选修的)",
|
|
277
|
+
"startingExecution": "开始执行...",
|
|
278
|
+
"pressEnterToContinue": "按 Enter 键继续...",
|
|
279
|
+
"runningSelectedSteps": "运行选定的步骤...",
|
|
280
|
+
"invalidStepNumber": "无效步骤号: {stepNum}",
|
|
281
281
|
"executionReport": "执行报告:",
|
|
282
|
-
"requiredFailedSteps": "
|
|
282
|
+
"requiredFailedSteps": "所需步骤失败: {count}",
|
|
283
283
|
"stepDetails": "步骤详情:",
|
|
284
|
-
"reportSavedTo": "
|
|
284
|
+
"reportSavedTo": "报告保存至: {path}",
|
|
285
285
|
"overallStatusSuccess": "成功",
|
|
286
|
-
"overallStatusFailed": "
|
|
287
|
-
"overallStatus": "
|
|
288
|
-
"pressEnterForDefaults": "按 Enter
|
|
289
|
-
"sourceDirPrompt": "
|
|
290
|
-
"sourceLangPrompt": "
|
|
291
|
-
"targetLangsPrompt": "
|
|
292
|
-
"translationMarkerPrompt": "
|
|
293
|
-
"outputDirPrompt": "
|
|
286
|
+
"overallStatusFailed": "失败的",
|
|
287
|
+
"overallStatus": "总体状况: {status}",
|
|
288
|
+
"pressEnterForDefaults": "按 Enter 键可对任何提示使用默认设置。",
|
|
289
|
+
"sourceDirPrompt": "输入源目录(默认: {default}):",
|
|
290
|
+
"sourceLangPrompt": "输入源语言(默认: {default}):",
|
|
291
|
+
"targetLangsPrompt": "输入目标语言(以逗号分隔,默认: {default}):",
|
|
292
|
+
"translationMarkerPrompt": "输入翻译标记(默认: {default}):",
|
|
293
|
+
"outputDirPrompt": "输入报告的输出目录(默认: {default}):",
|
|
294
294
|
"settingsUpdatedSuccessfully": "设置更新成功!",
|
|
295
|
-
"errorConfiguringSettings": "配置设置时出错:{error}",
|
|
295
|
+
"errorConfiguringSettings": "配置设置时出错: {error}",
|
|
296
296
|
"configurationComplete": "配置完成。",
|
|
297
|
-
"runAutoRunCommand": "
|
|
298
|
-
"configurationFailed": "配置失败:{error}",
|
|
299
|
-
"noValidStepNumbers": "
|
|
300
|
-
"autoRunFailed": "自动运行失败:{error}",
|
|
301
|
-
"stepCompleteTranslations": "
|
|
302
|
-
"stepAnalyzeSizing": "
|
|
297
|
+
"runAutoRunCommand": "现在您可以运行自动运行命令。",
|
|
298
|
+
"configurationFailed": "配置失败: {error}",
|
|
299
|
+
"noValidStepNumbers": "未提供有效的步骤号。",
|
|
300
|
+
"autoRunFailed": "自动运行失败: {error}",
|
|
301
|
+
"stepCompleteTranslations": "完整翻译",
|
|
302
|
+
"stepAnalyzeSizing": "分析尺码",
|
|
303
303
|
"stepCompletedIcon": "✅",
|
|
304
|
-
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}]
|
|
304
|
+
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] 步 '{stepName}' 跑步...",
|
|
305
305
|
"stepFailedIcon": "❌",
|
|
306
306
|
"translationLoadWarning": "警告:无法加载 {lang} 翻译",
|
|
307
|
-
"configReadError": "
|
|
307
|
+
"configReadError": "读取错误 {file}"
|
|
308
308
|
},
|
|
309
309
|
"analyze": {
|
|
310
|
-
"help_message": "
|
|
311
|
-
"source_directory": "📁
|
|
312
|
-
"i18n_directory": "🌐
|
|
310
|
+
"help_message": "国际化翻译分析器用法:node i18ntk-analyze.js [选项] 选项:--source-dir <dir> 要扫描的源目录(默认:./src)--i18n-dir <dir> I18n 目录(默认:./src/locales) --output-report 生成详细报告 --output-dir <dir> 报告的输出目录(默认:./reports) --help 显示此帮助 示例:node i18ntk-analyze.js --output-report node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales node i18ntk-analyze.js --output-dir=./analysis --output-report",
|
|
311
|
+
"source_directory": "📁 源码目录: {sourceDir}",
|
|
312
|
+
"i18n_directory": "🌐I18n 目录: {i18nDir}",
|
|
313
313
|
"loading_translation_files": "📋 正在加载翻译文件...",
|
|
314
|
-
"sourceDirectoryLabel": "📁
|
|
315
|
-
"sourceLanguageLabel": "🌍
|
|
316
|
-
"strictModeLabel": "
|
|
317
|
-
"found_translation_files_count": "✅
|
|
314
|
+
"sourceDirectoryLabel": "📁 源目录: {sourceDir}",
|
|
315
|
+
"sourceLanguageLabel": "🌍 源语言: {sourceLanguage}",
|
|
316
|
+
"strictModeLabel": "⚙️严格模式: {mode}",
|
|
317
|
+
"found_translation_files_count": "✅ 找到了 {count} 翻译文件",
|
|
318
318
|
"analyzing_translations": "🔍 正在分析翻译...",
|
|
319
319
|
"analysis_completed_successfully": "🎉 分析成功完成!",
|
|
320
320
|
"analysis_results": "📊 分析结果",
|
|
321
|
-
"language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}
|
|
322
|
-
"sample_missing_keys": "
|
|
321
|
+
"language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}翻译百分比)",
|
|
322
|
+
"sample_missing_keys": "缺失键示例:",
|
|
323
323
|
"missing_key": "- {key}",
|
|
324
|
-
"and_more_missing": "
|
|
325
|
-
"sample_unused_keys": "
|
|
324
|
+
"and_more_missing": "...和 {count} 更多的。",
|
|
325
|
+
"sample_unused_keys": "未使用的键示例:",
|
|
326
326
|
"unused_key": "- {key}",
|
|
327
|
-
"and_more_unused": "
|
|
328
|
-
"recommendations": "
|
|
329
|
-
"add_missing_translations": "💡
|
|
330
|
-
"remove_unused_translations": "💡
|
|
331
|
-
"next_steps": "📋
|
|
332
|
-
"review_analysis_results": "1.
|
|
333
|
-
"run_with_output_report": "2. 使用 --output-report
|
|
334
|
-
"add_or_remove_translations": "3.
|
|
335
|
-
"rerun_analysis": "4.
|
|
336
|
-
"analysis_summary": "📊
|
|
337
|
-
"source_files_scanned": "
|
|
338
|
-
"translation_files_checked": "
|
|
339
|
-
"total_keys": "
|
|
340
|
-
"translated_keys": "
|
|
341
|
-
"missing_keys": "
|
|
342
|
-
"unused_keys": "
|
|
343
|
-
"translation_coverage": "
|
|
344
|
-
"analysis_passed_for_language": "✅ {language}
|
|
345
|
-
"analysis_failed_for_language": "❌ {language}
|
|
327
|
+
"and_more_unused": "...和 {count} 更多的。",
|
|
328
|
+
"recommendations": "📋推荐",
|
|
329
|
+
"add_missing_translations": "💡 添加缺失的翻译以提高覆盖范围。",
|
|
330
|
+
"remove_unused_translations": "💡 删除未使用的翻译以保持项目干净。",
|
|
331
|
+
"next_steps": "📋 下一步",
|
|
332
|
+
"review_analysis_results": "1. 在控制台或生成的报告中查看分析结果。",
|
|
333
|
+
"run_with_output_report": "2. 使用 --output-report 运行以获得详细报告。",
|
|
334
|
+
"add_or_remove_translations": "3. 添加缺失的翻译或删除未使用的翻译。",
|
|
335
|
+
"rerun_analysis": "4. 重新运行分析以验证改进。",
|
|
336
|
+
"analysis_summary": "📊 分析总结",
|
|
337
|
+
"source_files_scanned": "扫描的源文件: {fileCount}",
|
|
338
|
+
"translation_files_checked": "检查的翻译文件: {translationFileCount}",
|
|
339
|
+
"total_keys": "总键数: {totalKeys}",
|
|
340
|
+
"translated_keys": "翻译后的按键: {translatedKeys}",
|
|
341
|
+
"missing_keys": "缺少钥匙: {missingKeys}",
|
|
342
|
+
"unused_keys": "未使用的键: {unusedKeys}",
|
|
343
|
+
"translation_coverage": "翻译范围: {coverage}%",
|
|
344
|
+
"analysis_passed_for_language": "✅ 分析通过 {language}",
|
|
345
|
+
"analysis_failed_for_language": "❌ 分析失败 {language} ({missingKeys} 丢失的, {unusedKeys} 未使用)",
|
|
346
346
|
"starting": "🔍 开始翻译分析...",
|
|
347
|
-
"foundLanguages": "
|
|
348
|
-
"analyzing": "🔄
|
|
347
|
+
"foundLanguages": "📋发现 {count} 要分析的语言: {languages}",
|
|
348
|
+
"analyzing": "🔄 分析中 {language}...",
|
|
349
349
|
"reportTitle": "📊 翻译分析报告",
|
|
350
|
-
"generated": "
|
|
351
|
-
"status": "
|
|
352
|
-
"filesAnalyzed": "
|
|
353
|
-
"keysNeedingTranslation": "
|
|
354
|
-
"fileBreakdown": "📋
|
|
350
|
+
"generated": "生成: {timestamp}",
|
|
351
|
+
"status": "地位: {translated}/{total} 键({percentage}翻译百分比)",
|
|
352
|
+
"filesAnalyzed": "分析的文件: {analyzed}/{total}",
|
|
353
|
+
"keysNeedingTranslation": "需要翻译的按键: {count}",
|
|
354
|
+
"fileBreakdown": "📋 文件分解",
|
|
355
355
|
"error": "错误",
|
|
356
|
-
"completed": "✅ {language}
|
|
357
|
-
"progress": "📊
|
|
358
|
-
"reportSaved": "
|
|
359
|
-
"summary": "📊
|
|
356
|
+
"completed": "✅ 分析已完成 {language}",
|
|
357
|
+
"progress": "📊 总体进展: {translated}/{total} 处理的语言",
|
|
358
|
+
"reportSaved": "报告已保存: {reportPath}",
|
|
359
|
+
"summary": "📊 分析总结",
|
|
360
360
|
"finished": "✅ 分析成功完成!",
|
|
361
|
-
"statusFileMissing": "❌
|
|
362
|
-
"sourceKeys": "📊
|
|
363
|
-
"translation": "📊
|
|
364
|
-
"structure": "
|
|
365
|
-
"consistent": "
|
|
361
|
+
"statusFileMissing": "❌ 翻译文件丢失",
|
|
362
|
+
"sourceKeys": "📊 源代码: {count}",
|
|
363
|
+
"translation": "📊 翻译: {translated}/{total} ({percentage}%)",
|
|
364
|
+
"structure": "🗂️结构: {status}",
|
|
365
|
+
"consistent": "持续的",
|
|
366
366
|
"inconsistent": "不一致",
|
|
367
|
-
"missingKeys": "
|
|
368
|
-
"extraKeys": "
|
|
369
|
-
"issues": "
|
|
367
|
+
"missingKeys": "缺少钥匙: {count}",
|
|
368
|
+
"extraKeys": "额外按键: {count}",
|
|
369
|
+
"issues": "⚠️发现问题: {count}",
|
|
370
370
|
"issueType": {
|
|
371
|
-
"not_translated": "
|
|
372
|
-
"empty_value": "
|
|
373
|
-
"partial_translation": "
|
|
374
|
-
"format_mismatch": "
|
|
375
|
-
"type_mismatch": "
|
|
376
|
-
"structure_mismatch": "
|
|
377
|
-
"same_as_source": "
|
|
371
|
+
"not_translated": "未翻译: {count}",
|
|
372
|
+
"empty_value": "空值: {count}",
|
|
373
|
+
"partial_translation": "部分翻译: {count}",
|
|
374
|
+
"format_mismatch": "格式不匹配: {count}",
|
|
375
|
+
"type_mismatch": "类型不匹配: {count}",
|
|
376
|
+
"structure_mismatch": "结构不匹配: {count}",
|
|
377
|
+
"same_as_source": "与来源相同: {count}"
|
|
378
378
|
},
|
|
379
|
-
"keysToTranslate": "📋
|
|
380
|
-
"key": "
|
|
379
|
+
"keysToTranslate": "📋 翻译键",
|
|
380
|
+
"key": "钥匙",
|
|
381
381
|
"english": "英语",
|
|
382
382
|
"needsTranslation": "需要翻译",
|
|
383
|
-
"andMoreKeys": "
|
|
383
|
+
"andMoreKeys": "...和 {count} 更多钥匙。",
|
|
384
384
|
"noLanguages": "⚠️ 未找到目标语言。",
|
|
385
|
-
"languageStats": "{language}: {percentage}
|
|
386
|
-
"invalidReportFilePath": "
|
|
387
|
-
"failedToWriteReportFile": "
|
|
385
|
+
"languageStats": "{language}: {percentage}% 完全的 ({translated}/{total} 键)",
|
|
386
|
+
"invalidReportFilePath": "报告文件路径无效",
|
|
387
|
+
"failedToWriteReportFile": "无法安全写入报告文件"
|
|
388
388
|
},
|
|
389
389
|
"complete": {
|
|
390
390
|
"configLoadedSuccessfully": "配置加载成功",
|
|
391
391
|
"configLoadingFailed": "配置加载失败",
|
|
392
|
-
"sourceLanguageNotFound": "
|
|
393
|
-
"couldNotParseTarget": "
|
|
394
|
-
"couldNotParseSource": "
|
|
395
|
-
"reportGenerated": "
|
|
396
|
-
"generateReportPrompt": "
|
|
392
|
+
"sourceLanguageNotFound": "未找到源语言目录: {sourceLanguage}",
|
|
393
|
+
"couldNotParseTarget": "无法解析目标文件: {file}",
|
|
394
|
+
"couldNotParseSource": "无法解析源文件: {file}",
|
|
395
|
+
"reportGenerated": "生成的报告: {path}",
|
|
396
|
+
"generateReportPrompt": "您想要生成一份报告吗?",
|
|
397
397
|
"title": "🌍 I18NTK 翻译完成",
|
|
398
|
-
"separator": "
|
|
399
|
-
"sourceDir": "📁
|
|
400
|
-
"sourceLanguage": "
|
|
398
|
+
"separator": "===============================================================",
|
|
399
|
+
"sourceDir": "📁 源码目录: {sourceDir}",
|
|
400
|
+
"sourceLanguage": "🌐源语言: {sourceLanguage}",
|
|
401
401
|
"dryRunMode": "🧪 试运行模式 - 不会进行任何更改",
|
|
402
|
-
"languages": "🌍 可用语言:{languages}",
|
|
403
|
-
"addingMissingKeys": "➕
|
|
404
|
-
"processing": "🔄
|
|
405
|
-
"addedKeys": "✅
|
|
406
|
-
"noChangesNeeded": "✅ {language}
|
|
407
|
-
"summaryTitle": "📊
|
|
408
|
-
"totalChanges": "📝
|
|
409
|
-
"languagesProcessed": "🌍 处理的语言:{languagesProcessed}",
|
|
410
|
-
"missingKeysAdded": "➕
|
|
411
|
-
"nextStepsTitle": "📋
|
|
402
|
+
"languages": "🌍 可用语言: {languages}",
|
|
403
|
+
"addingMissingKeys": "➕ 将缺失的键添加到翻译文件中...",
|
|
404
|
+
"processing": "🔄 加工中 {language}...",
|
|
405
|
+
"addedKeys": "✅ 添加了 {count} 钥匙丢失",
|
|
406
|
+
"noChangesNeeded": "✅ 无需更改 {language}",
|
|
407
|
+
"summaryTitle": "📊 完成总结",
|
|
408
|
+
"totalChanges": "📝 总变化: {totalChanges}",
|
|
409
|
+
"languagesProcessed": "🌍 处理的语言: {languagesProcessed}",
|
|
410
|
+
"missingKeysAdded": "➕ 添加了缺失的按键: {missingKeysAdded}",
|
|
411
|
+
"nextStepsTitle": "📋 下一步",
|
|
412
412
|
"nextStep1": "1. 运行使用情况分析:",
|
|
413
|
-
"nextStep2": "
|
|
413
|
+
"nextStep2": "节点 i18ntk-usage.js --输出报告",
|
|
414
414
|
"nextStep3": "2. 验证翻译:",
|
|
415
|
-
"nextStep4": "
|
|
415
|
+
"nextStep4": "节点 i18ntk-validate.js",
|
|
416
416
|
"nextStep5": "3. 分析模式:",
|
|
417
|
-
"nextStep6": "
|
|
418
|
-
"allKeysAvailable": "🎉
|
|
419
|
-
"runWithoutDryRun": "💡
|
|
420
|
-
"deletingOldReport": "🗑️
|
|
421
|
-
"generatingFreshAnalysis": "📊
|
|
417
|
+
"nextStep6": "节点 i18ntk-analyze.js",
|
|
418
|
+
"allKeysAvailable": "🎉 所有翻译键现已可用!",
|
|
419
|
+
"runWithoutDryRun": "💡 在没有 --dry-run 的情况下运行来应用更改",
|
|
420
|
+
"deletingOldReport": "🗑️ 正在删除旧报告...",
|
|
421
|
+
"generatingFreshAnalysis": "📊 生成新的使用情况分析...",
|
|
422
422
|
"couldNotGenerate": "❌ 无法生成使用情况分析",
|
|
423
|
-
"reportNotFound": "📋
|
|
424
|
-
"foundMissingKeys": "
|
|
425
|
-
"couldNotParse": "❌
|
|
426
|
-
"errorDuringCompletion": "❌
|
|
427
|
-
"fatalError": "❌
|
|
428
|
-
"configurationValidationFailed": "
|
|
423
|
+
"reportNotFound": "📋 未找到使用报告。使用通用键...",
|
|
424
|
+
"foundMissingKeys": "📋发现 {count} 使用分析中缺少密钥",
|
|
425
|
+
"couldNotParse": "❌ 无法解析使用情况报告。使用通用键...",
|
|
426
|
+
"errorDuringCompletion": "❌ 完成时出错: {error}",
|
|
427
|
+
"fatalError": "❌ 致命错误: {error}",
|
|
428
|
+
"configurationValidationFailed": "配置验证失败:缺少必填字段"
|
|
429
429
|
},
|
|
430
430
|
"sizing": {
|
|
431
|
-
"separator": "
|
|
432
|
-
"lineSeparator": "
|
|
433
|
-
"analysisStats": "
|
|
434
|
-
"sourceDirectoryLabel": "📁
|
|
435
|
-
"sourceLanguageLabel": "
|
|
436
|
-
"strictModeLabel": "
|
|
437
|
-
"invalidSourceDirectoryError": "
|
|
438
|
-
"sourceDirectoryNotFoundError": "
|
|
439
|
-
"invalidOutputDirectoryError": "
|
|
440
|
-
"invalidReportFileError": "
|
|
441
|
-
"problematic_keys": "
|
|
442
|
-
"problematicKeysLabel": "
|
|
443
|
-
"long_translations": "
|
|
431
|
+
"separator": "=====================================================================================",
|
|
432
|
+
"lineSeparator": "------------------------------------------------------------------------------------------------",
|
|
433
|
+
"analysisStats": "{stats}",
|
|
434
|
+
"sourceDirectoryLabel": "📁 源码目录: {sourceDir}",
|
|
435
|
+
"sourceLanguageLabel": "🌍源语言: {sourceLanguage}",
|
|
436
|
+
"strictModeLabel": "⚙️严格模式: {mode}",
|
|
437
|
+
"invalidSourceDirectoryError": "无效的源目录路径: {sourceDir}",
|
|
438
|
+
"sourceDirectoryNotFoundError": "未找到源目录: {sourceDir}",
|
|
439
|
+
"invalidOutputDirectoryError": "无效的输出目录路径: {outputDir}",
|
|
440
|
+
"invalidReportFileError": "报告文件路径无效",
|
|
441
|
+
"problematic_keys": "有问题的按键: {problematicKeys}",
|
|
442
|
+
"problematicKeysLabel": "有问题的按键: {problematicKeys}",
|
|
443
|
+
"long_translations": "长翻译: {longTranslations}",
|
|
444
444
|
"failedToSaveReportError": "无法安全保存报告",
|
|
445
|
-
"invalidCsvFileError": "
|
|
446
|
-
"failedToSaveCsvError": "无法安全保存CSV报告",
|
|
447
|
-
"fatalError": "❌
|
|
448
|
-
"starting_i18n_sizing_analysis": "
|
|
449
|
-
"source_directory": "
|
|
450
|
-
"found_languages": "
|
|
445
|
+
"invalidCsvFileError": "CSV 文件路径无效",
|
|
446
|
+
"failedToSaveCsvError": "无法安全保存 CSV 报告",
|
|
447
|
+
"fatalError": "❌ 尺寸分析失败: {error}",
|
|
448
|
+
"starting_i18n_sizing_analysis": "开始 i18n 大小分析...",
|
|
449
|
+
"source_directory": "源码目录: {sourceDir}",
|
|
450
|
+
"found_languages": "找到的语言: {languages}",
|
|
451
451
|
"analyzing_file_sizes": "正在分析文件大小...",
|
|
452
452
|
"analyzing_translation_content": "正在分析翻译内容...",
|
|
453
|
-
"generating_size_comparisons": "
|
|
454
|
-
"no_languages_found_for_comparison": "
|
|
455
|
-
"sizing_analysis_results": "
|
|
453
|
+
"generating_size_comparisons": "正在生成尺寸比较...",
|
|
454
|
+
"no_languages_found_for_comparison": "找不到可供比较的语言",
|
|
455
|
+
"sizing_analysis_results": "I18n 尺寸分析结果",
|
|
456
456
|
"file_sizes_title": "文件大小",
|
|
457
|
-
"file_sizes_header": "
|
|
458
|
-
"file_size_row": "
|
|
457
|
+
"file_sizes_header": "语言大小(KB) 行数 字符",
|
|
458
|
+
"file_size_row": "{lang} {sizeKB} {lines} {characters}",
|
|
459
459
|
"language_statistics_title": "语言统计",
|
|
460
|
-
"language_stats_header": "
|
|
461
|
-
"language_stats_row": "
|
|
462
|
-
"size_variations_title": "
|
|
463
|
-
"size_variations_header": "语言
|
|
464
|
-
"size_variation_row": "
|
|
465
|
-
"problematic_yes": "
|
|
466
|
-
"problematic_no": "
|
|
460
|
+
"language_stats_header": "语言键 字符 平均长度 最大长度 空长",
|
|
461
|
+
"language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
|
|
462
|
+
"size_variations_title": "尺寸变化",
|
|
463
|
+
"size_variations_header": "语言 Char Diff % Diff 有问题",
|
|
464
|
+
"size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
|
|
465
|
+
"problematic_yes": "是的",
|
|
466
|
+
"problematic_no": "不",
|
|
467
467
|
"recommendations_title": "建议",
|
|
468
|
-
"recommendation_item": "
|
|
469
|
-
"problematic_key_detail": "
|
|
468
|
+
"recommendation_item": "{index}. {recommendation}",
|
|
469
|
+
"problematic_key_detail": "{index}。钥匙: '{key}' - 变化: {variations}",
|
|
470
470
|
"generating_detailed_report": "正在生成详细报告...",
|
|
471
|
-
"keysHaveSignificantSizeVariations": "
|
|
472
|
-
"longTranslationsDetected": "${lang}
|
|
471
|
+
"keysHaveSignificantSizeVariations": "按键的尺寸差异很大",
|
|
472
|
+
"longTranslationsDetected": "${lang} ${data.longKeys} 翻译长度超过 100 个字符 - 考虑将它们分解",
|
|
473
473
|
"longer": "更长",
|
|
474
474
|
"shorter": "更短",
|
|
475
|
-
"review_translations": "
|
|
476
|
-
"report_saved_to": "
|
|
477
|
-
"considerReviewingTranslations": "
|
|
478
|
-
"csv_report_saved_to": "CSV
|
|
479
|
-
"human_report_saved": "
|
|
475
|
+
"review_translations": "考虑审查 {lang} 翻译 - 他们是 {percentageDifference}% {comparison} 比基线",
|
|
476
|
+
"report_saved_to": "报告保存至: {reportPath}",
|
|
477
|
+
"considerReviewingTranslations": "考虑审查 ${lang} 翻译 - 比基线长 ${data.percentageDifference}%",
|
|
478
|
+
"csv_report_saved_to": "CSV 报告保存到: {csvPath}",
|
|
479
|
+
"human_report_saved": "已保存的可读报告: {reportPath}",
|
|
480
480
|
"folder_summary_title": "文件夹摘要",
|
|
481
|
-
"folder_summary_table_header": "
|
|
482
|
-
"folder_summary_row": "
|
|
481
|
+
"folder_summary_table_header": "语言大小 (KB) 键 平均长度 总字符数",
|
|
482
|
+
"folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
|
|
483
483
|
"language_comparison_title": "语言比较",
|
|
484
|
-
"language_comparison_row": "
|
|
485
|
-
"summary_stats": "
|
|
486
|
-
"detailedKeysDescription": "
|
|
487
|
-
"too_many_keys_warning": "⚠️
|
|
484
|
+
"language_comparison_row": "{lang}: {diff} 字符({percent}%) {status}",
|
|
485
|
+
"summary_stats": "📊总结: {totalLanguages} 语言, {totalKeys} 键 - 报告保存到 {reportPath}",
|
|
486
|
+
"detailedKeysDescription": "在控制台中显示详细的关键级别分析",
|
|
487
|
+
"too_many_keys_warning": "⚠️ 控制台中显示的按键太多 - 检查详细报告文件以进行完整分析",
|
|
488
488
|
"no_translation_files_found": "未找到翻译文件",
|
|
489
|
-
"analysis_completed": "
|
|
490
|
-
"analysis_failed": "
|
|
491
|
-
"starting_analysis": "
|
|
492
|
-
"found_files": "
|
|
493
|
-
"failed_to_parse_language_error": "
|
|
489
|
+
"analysis_completed": "分析完成于 {duration}多发性硬化症",
|
|
490
|
+
"analysis_failed": "分析失败: {errorMessage}",
|
|
491
|
+
"starting_analysis": "开始分析...",
|
|
492
|
+
"found_files": "成立 {count} 文件",
|
|
493
|
+
"failed_to_parse_language_error": "解析失败 {language} 翻译: {errorMessage}",
|
|
494
494
|
"recommendations": {
|
|
495
|
-
"keys_have_significant_size_variations": "
|
|
496
|
-
"consider_reviewing_translations": "
|
|
497
|
-
"long_translations_detected": "
|
|
495
|
+
"keys_have_significant_size_variations": "按键的尺寸差异很大",
|
|
496
|
+
"consider_reviewing_translations": "考虑审查 {lang} 翻译 - 他们是 {percentageDifference}% {comparison} 比基线",
|
|
497
|
+
"long_translations_detected": "{lang} 有 {longKeys} 翻译长度超过 {threshold} 角色 - 考虑将它们分解"
|
|
498
498
|
},
|
|
499
499
|
"detailed_key_analysis_title": "详细的关键分析",
|
|
500
|
-
"key_analysis_detail": "{lang}
|
|
501
|
-
"key_analysis_header": "
|
|
500
|
+
"key_analysis_detail": "{lang}: {length} 字符({status}) - {translation}",
|
|
501
|
+
"key_analysis_header": "钥匙: {key}",
|
|
502
502
|
"status_empty": "空的",
|
|
503
503
|
"status_long": "长的",
|
|
504
504
|
"status_ok": "好的"
|
|
505
505
|
},
|
|
506
506
|
"usage": {
|
|
507
|
-
"help_message": "
|
|
508
|
-
"source_directory_thissourcedir": "📁
|
|
509
|
-
"translationCompletenessTitle": "🌍
|
|
510
|
-
"i18n_directory_thisi18ndir": "🌐
|
|
511
|
-
"failed_to_parse_filename_error": "
|
|
507
|
+
"help_message": "I18n 使用分析器用法:node i18ntk-usage.js [选项] 选项:--source-dir <dir> 要扫描的源目录(默认:./src)--i18n-dir <dir> I18n 目录(默认:./src/locales) --output-report 生成详细报告 --output-dir <dir> 报告的输出目录(默认:./reports) --help 显示此帮助 示例:node i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./analysis --output-report",
|
|
508
|
+
"source_directory_thissourcedir": "📁 源码目录: {sourceDir}",
|
|
509
|
+
"translationCompletenessTitle": "🌍 翻译完整性:",
|
|
510
|
+
"i18n_directory_thisi18ndir": "🌐I18n 目录: {i18nDir}",
|
|
511
|
+
"failed_to_parse_filename_error": "⚠️解析失败 {fileName}: {errorMessage}",
|
|
512
512
|
"analyzing_source_files": "🔍 正在分析源文件...",
|
|
513
|
-
"found_files_in_source": "📂
|
|
514
|
-
"found_thisusedkeyssize_unique_": "🎯
|
|
515
|
-
"total_key_usages_totalkeysfoun": "📊
|
|
516
|
-
"loading_available_translation_": "📋
|
|
517
|
-
"found_thisavailablekeyssize_av": "✅
|
|
518
|
-
"foundTranslationFiles": "✅
|
|
519
|
-
"errorReadingI18nDirectory": "⚠️
|
|
513
|
+
"found_files_in_source": "📂 找到了 {numFiles} 源目录中的文件",
|
|
514
|
+
"found_thisusedkeyssize_unique_": "🎯 找到了 {usedKeysSize} 唯一使用过的钥匙",
|
|
515
|
+
"total_key_usages_totalkeysfoun": "📊 总按键用法: {totalKeysFound}",
|
|
516
|
+
"loading_available_translation_": "📋 正在加载可用的翻译键...",
|
|
517
|
+
"found_thisavailablekeyssize_av": "✅ 找到了 {availableKeysSize} 可用键",
|
|
518
|
+
"foundTranslationFiles": "✅ 找到了 {count} 翻译文件",
|
|
519
|
+
"errorReadingI18nDirectory": "⚠️ 读取 i18n 目录时出错: {error}",
|
|
520
520
|
"pressEnterToReturnToMenu": "📝 按 Enter 键返回主菜单...",
|
|
521
|
-
"notTranslatedKeysTotal": "⚠️
|
|
522
|
-
"noSourceFilesFound": "
|
|
523
|
-
"reviewNotTranslatedKeys": "💡
|
|
521
|
+
"notTranslatedKeysTotal": "⚠️ 未翻译的按键: {total}",
|
|
522
|
+
"noSourceFilesFound": "⚠️在源目录中找不到源文件。",
|
|
523
|
+
"reviewNotTranslatedKeys": "💡 检查未翻译的按键",
|
|
524
524
|
"analysisCompletedSuccessfully": "🎉 分析成功完成!",
|
|
525
|
-
"detectedSourceDirectory": "
|
|
526
|
-
"detectedI18nDirectory": "检测到
|
|
527
|
-
"fileInfo": "📄 {namespace}: {keys}
|
|
528
|
-
"failedToAnalyzeUsage": "❌
|
|
529
|
-
"failedToAnalyzeFile": "❌
|
|
530
|
-
"failedToExtractKeys": "
|
|
531
|
-
"analysisFailedError": "❌
|
|
532
|
-
"analyzerInitialized": "
|
|
533
|
-
"analyzerInitFailed": "
|
|
534
|
-
"argsParsed": "
|
|
535
|
-
"processedFiles": "
|
|
536
|
-
"argsParseFailed": "
|
|
537
|
-
"translationDiscoveryError": "
|
|
538
|
-
"fileTraversalError": "
|
|
539
|
-
"sourceEqualsI18nWarn": "
|
|
540
|
-
"i18nEqualsSourceWarn": "⚠️
|
|
541
|
-
"usageAnalysisFailed": "
|
|
542
|
-
"translationFileParseError": "
|
|
543
|
-
"translationKeysLoadError": "
|
|
544
|
-
"languageCompletenessStats": "
|
|
545
|
-
"missingKeysCount": "
|
|
525
|
+
"detectedSourceDirectory": "检测到的源目录: {sourceDir}",
|
|
526
|
+
"detectedI18nDirectory": "检测到 i18n 目录: {i18nDir}",
|
|
527
|
+
"fileInfo": "📄 {namespace}: {keys} 键",
|
|
528
|
+
"failedToAnalyzeUsage": "❌ 无法分析使用情况: {error}",
|
|
529
|
+
"failedToAnalyzeFile": "❌ 分析文件失败: {error}",
|
|
530
|
+
"failedToExtractKeys": "❌ 无法从中提取密钥 {filePath}: {error}",
|
|
531
|
+
"analysisFailedError": "❌ 分析失败: {error}",
|
|
532
|
+
"analyzerInitialized": "分析仪已初始化",
|
|
533
|
+
"analyzerInitFailed": "分析仪初始化失败: {error}",
|
|
534
|
+
"argsParsed": "参数解析",
|
|
535
|
+
"processedFiles": "已加工 {processedFiles} 的 {totalFiles} 文件。",
|
|
536
|
+
"argsParseFailed": "参数解析失败: {error}",
|
|
537
|
+
"translationDiscoveryError": "翻译发现错误: {error}",
|
|
538
|
+
"fileTraversalError": "文件遍历错误: {error}",
|
|
539
|
+
"sourceEqualsI18nWarn": "⚠️源码目录和i18n目录是一样的。这可能会导致分析出现问题。",
|
|
540
|
+
"i18nEqualsSourceWarn": "⚠️ I18n目录和源码目录是一样的。这可能会导致分析出现问题。",
|
|
541
|
+
"usageAnalysisFailed": "⚠️ 使用情况分析失败: {error}",
|
|
542
|
+
"translationFileParseError": "⚠️翻译文件解析错误: {error}",
|
|
543
|
+
"translationKeysLoadError": "⚠️翻译键加载错误: {error}",
|
|
544
|
+
"languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}翻译百分比)",
|
|
545
|
+
"missingKeysCount": "⚠️丢失钥匙: {count}",
|
|
546
546
|
"analyzingTranslationCompleteness": "正在分析翻译完整性...",
|
|
547
|
-
"unusedKeysCount": "
|
|
548
|
-
"usedKeysCount": "
|
|
549
|
-
"availableKeysCount": "
|
|
550
|
-
"analysisResults": "
|
|
551
|
-
"i18nDirectoryNotFound": "⚠️ 未找到
|
|
552
|
-
"sourceDirectoryNotFound": "
|
|
547
|
+
"unusedKeysCount": "未使用的键: {count}",
|
|
548
|
+
"usedKeysCount": "使用过的按键: {count}",
|
|
549
|
+
"availableKeysCount": "可用键: {count}",
|
|
550
|
+
"analysisResults": "分析结果:",
|
|
551
|
+
"i18nDirectoryNotFound": "⚠️ 未找到 I18n 目录。请检查路径。",
|
|
552
|
+
"sourceDirectoryNotFound": "⚠️找不到源目录: {dir}",
|
|
553
553
|
"checkUsage": {
|
|
554
|
-
"title": "🔍
|
|
554
|
+
"title": "🔍I18NTK 使用分析",
|
|
555
555
|
"analyzing_source_files": "🔍 正在分析源文件...",
|
|
556
|
-
"source_directory_thissourcedir": "📁
|
|
557
|
-
"i18n_directory_thisi18ndir": "
|
|
558
|
-
"found_files_in_source": "
|
|
559
|
-
"no_source_files_found": "
|
|
560
|
-
"processedFiles": "
|
|
561
|
-
"failedToProcessFile": "❌
|
|
562
|
-
"found_thisusedkeyssize_unique_": "
|
|
563
|
-
"total_key_usages_totalkeysfoun": "📊
|
|
564
|
-
"loading_available_translation_": "
|
|
565
|
-
"found_thisavailablekeyssize_av": "✅
|
|
566
|
-
"message": "
|
|
556
|
+
"source_directory_thissourcedir": "📁 源码目录: {sourceDir}",
|
|
557
|
+
"i18n_directory_thisi18ndir": "📁 i18n 目录: {i18nDir}",
|
|
558
|
+
"found_files_in_source": "✅ 找到了 {numFiles} 源目录中的文件",
|
|
559
|
+
"no_source_files_found": "⚠️指定目录下没有找到源文件",
|
|
560
|
+
"processedFiles": "📊已处理 {processedFiles} 的 {totalFiles} 文件",
|
|
561
|
+
"failedToProcessFile": "❌ 处理失败",
|
|
562
|
+
"found_thisusedkeyssize_unique_": "🔍发现 {usedKeysSize} 唯一使用过的钥匙",
|
|
563
|
+
"total_key_usages_totalkeysfoun": "📊 总按键用法: {totalKeysFound}",
|
|
564
|
+
"loading_available_translation_": "📂 正在加载可用的翻译键...",
|
|
565
|
+
"found_thisavailablekeyssize_av": "✅ 找到了 {availableKeysSize} 可用键",
|
|
566
|
+
"message": "正在分析整个项目中的翻译密钥使用情况...",
|
|
567
567
|
"usage_analysis_results": "📊 使用分析结果",
|
|
568
|
-
"source_files_scanned_thisfileu": "
|
|
569
|
-
"available_translation_keys_thi": "
|
|
570
|
-
"used_translation_keys_thisused": "
|
|
571
|
-
"dynamic_keys_detected_dynamick": "
|
|
572
|
-
"unused_keys_unusedkeyslength": "
|
|
573
|
-
"missing_keys_missingkeyslength": "
|
|
574
|
-
"translation_completeness_title": "
|
|
575
|
-
"language_completeness_stats": "{language}: {translated}/{total}
|
|
576
|
-
"n_sample_unused_keys": "
|
|
577
|
-
"key": "
|
|
578
|
-
"and_unusedkeyslength_5_more": "
|
|
579
|
-
"n_sample_missing_keys": "❌
|
|
580
|
-
"and_missingkeyslength_5_more": "
|
|
581
|
-
"n_generating_detailed_report": "📊
|
|
582
|
-
"report_saved_reportpath": "📄
|
|
583
|
-
"n_recommendations": "
|
|
584
|
-
"consider_removing_unused_trans": "
|
|
585
|
-
"add_missing_translation_keys_t": "➕
|
|
586
|
-
"review_dynamic_keys_manually_t": "
|
|
587
|
-
"all_translation_keys_are_prope": "✅
|
|
588
|
-
"n_next_steps": "
|
|
589
|
-
"2_check_the_detailed_report_fo": "2
|
|
590
|
-
"help_message": "
|
|
568
|
+
"source_files_scanned_thisfileu": "📁 扫描的源文件: {fileUsageSize}",
|
|
569
|
+
"available_translation_keys_thi": "✅ 可用的翻译键: {availableKeysSize}",
|
|
570
|
+
"used_translation_keys_thisused": "🔍 使用的翻译键: {usedKeysSize}",
|
|
571
|
+
"dynamic_keys_detected_dynamick": "⚡ 检测到动态键: {dynamicKeysLength}",
|
|
572
|
+
"unused_keys_unusedkeyslength": "🗑️未使用的键: {unusedKeysLength}",
|
|
573
|
+
"missing_keys_missingkeyslength": "❌ 丢失钥匙: {missingKeysLength}",
|
|
574
|
+
"translation_completeness_title": "📈 翻译完整性",
|
|
575
|
+
"language_completeness_stats": "{language}: {translated}/{total} 键({percentage}%)",
|
|
576
|
+
"n_sample_unused_keys": "🗑️ 未使用的密钥示例(前 5 个):",
|
|
577
|
+
"key": "🔑 {key}",
|
|
578
|
+
"and_unusedkeyslength_5_more": "... 和 {count} 更多未使用的键",
|
|
579
|
+
"n_sample_missing_keys": "❌ 缺失钥匙示例(前 5 个):",
|
|
580
|
+
"and_missingkeyslength_5_more": "... 和 {count} 更多丢失的钥匙",
|
|
581
|
+
"n_generating_detailed_report": "📊 生成详细报告...",
|
|
582
|
+
"report_saved_reportpath": "📄 报告已保存: {reportPath}",
|
|
583
|
+
"n_recommendations": "💡建议:",
|
|
584
|
+
"consider_removing_unused_trans": "🗑️ 考虑删除未使用的翻译以减少包大小",
|
|
585
|
+
"add_missing_translation_keys_t": "➕ 添加缺失的翻译键以保持一致性",
|
|
586
|
+
"review_dynamic_keys_manually_t": "🔍手动检查动态键(它们可能是有效的)",
|
|
587
|
+
"all_translation_keys_are_prope": "✅ 所有翻译键都正确使用!",
|
|
588
|
+
"n_next_steps": "🎯 下一步:",
|
|
589
|
+
"2_check_the_detailed_report_fo": "2、具体问题查看详细报告",
|
|
590
|
+
"help_message": "I18n 使用分析器用法:node i18ntk-usage.js [选项] 选项:--source-dir <dir> 要扫描的源目录(默认:./src)--i18n-dir <dir> I18n 目录(默认:./src/locales) --output-report 生成详细报告 --output-dir <dir> 报告的输出目录(默认:./reports) --help 显示此帮助 示例:node i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./analysis --output-report",
|
|
591
591
|
"1_review_the_analysis_results": "1. 在控制台或生成的报告中查看分析结果。",
|
|
592
|
-
"2_run_with_outputreport_for_de": "2. 使用 --output-report
|
|
593
|
-
"3_remove_unused_keys_or_add_mi": "3.
|
|
592
|
+
"2_run_with_outputreport_for_de": "2. 使用 --output-report 运行以获得详细报告。",
|
|
593
|
+
"3_remove_unused_keys_or_add_mi": "3. 删除未使用的密钥或将丢失的密钥添加到源代码中。",
|
|
594
594
|
"4_rerun_analysis_to_verify_imp": "4. 重新运行分析以验证改进。",
|
|
595
|
-
"noSourceFilesFound": "
|
|
596
|
-
"i18nDirectoryNotFound": "未找到 I18n
|
|
595
|
+
"noSourceFilesFound": "未找到可分析的源文件。",
|
|
596
|
+
"i18nDirectoryNotFound": "未找到 I18n 目录: {i18nDir}",
|
|
597
597
|
"noTranslationLanguagesFound": "未找到翻译语言。",
|
|
598
|
-
"failedToAnalyzeFile": "
|
|
599
|
-
"failedToAnalyzeLanguage": "
|
|
600
|
-
"translationCompletenessAnalysisFailed": "
|
|
598
|
+
"failedToAnalyzeFile": "无法分析文件 {filePath}: {error}",
|
|
599
|
+
"failedToAnalyzeLanguage": "无法分析语言 {language}: {error}",
|
|
600
|
+
"translationCompletenessAnalysisFailed": "翻译完整性分析失败: {error}",
|
|
601
601
|
"n": "\\n"
|
|
602
602
|
},
|
|
603
603
|
"complete": {
|
|
604
604
|
"configLoadedSuccessfully": "配置加载成功",
|
|
605
605
|
"configLoadingFailed": "配置加载失败",
|
|
606
|
-
"title": "🌍
|
|
607
|
-
"separator": "
|
|
608
|
-
"sourceDir": "📁
|
|
609
|
-
"sourceLanguage": "
|
|
606
|
+
"title": "🌍 I18NTK 翻译完成",
|
|
607
|
+
"separator": "===============================================================",
|
|
608
|
+
"sourceDir": "📁 源码目录: {sourceDir}",
|
|
609
|
+
"sourceLanguage": "🌐源语言: {sourceLanguage}",
|
|
610
610
|
"dryRunMode": "🧪 试运行模式 - 不会进行任何更改",
|
|
611
|
-
"languages": "🌍
|
|
612
|
-
"addingMissingKeys": "➕
|
|
613
|
-
"processing": "🔄
|
|
614
|
-
"addedKeys": "✅
|
|
615
|
-
"changeDetails": "📝 {file}
|
|
616
|
-
"andMore": "
|
|
617
|
-
"noChangesNeeded": "✅ {language}
|
|
618
|
-
"summaryTitle": "📊
|
|
619
|
-
"totalChanges": "📝
|
|
620
|
-
"languagesProcessed": "🌍
|
|
621
|
-
"missingKeysAdded": "➕
|
|
611
|
+
"languages": "🌍 可用语言: {languages}",
|
|
612
|
+
"addingMissingKeys": "➕ 将缺失的键添加到翻译文件中...",
|
|
613
|
+
"processing": "🔄 加工中 {language}...",
|
|
614
|
+
"addedKeys": "✅ 添加了 {count} 钥匙丢失",
|
|
615
|
+
"changeDetails": "📝 {file}: {key}",
|
|
616
|
+
"andMore": "...和 {count} 更多的",
|
|
617
|
+
"noChangesNeeded": "✅ 无需更改 {language}",
|
|
618
|
+
"summaryTitle": "📊 完成总结",
|
|
619
|
+
"totalChanges": "📝 总变化: {totalChanges}",
|
|
620
|
+
"languagesProcessed": "🌍 处理的语言: {languagesProcessed}",
|
|
621
|
+
"missingKeysAdded": "➕ 添加了缺失的按键: {missingKeysAdded}",
|
|
622
622
|
"nextStepsTitle": "📋 下一步",
|
|
623
|
-
"nextStep1": "1.
|
|
624
|
-
"nextStep2": "
|
|
625
|
-
"nextStep3": "2.
|
|
626
|
-
"nextStep4": "
|
|
627
|
-
"nextStep5": "3.
|
|
628
|
-
"nextStep6": "
|
|
629
|
-
"allKeysAvailable": "🎉
|
|
630
|
-
"runWithoutDryRun": "💡
|
|
631
|
-
"deletingOldReport": "🗑️
|
|
632
|
-
"generatingFreshAnalysis": "📊
|
|
633
|
-
"couldNotGenerate": "❌
|
|
634
|
-
"reportNotFound": "📋
|
|
635
|
-
"foundMissingKeys": "
|
|
636
|
-
"couldNotParse": "❌
|
|
623
|
+
"nextStep1": "1. 运行使用情况分析:",
|
|
624
|
+
"nextStep2": "节点 i18ntk-usage.js --输出报告",
|
|
625
|
+
"nextStep3": "2. 验证翻译:",
|
|
626
|
+
"nextStep4": "节点 i18ntk-validate.js",
|
|
627
|
+
"nextStep5": "3. 分析模式:",
|
|
628
|
+
"nextStep6": "节点 i18ntk-analyze.js",
|
|
629
|
+
"allKeysAvailable": "🎉 所有翻译键现已可用!",
|
|
630
|
+
"runWithoutDryRun": "💡 在没有 --dry-run 的情况下运行来应用更改",
|
|
631
|
+
"deletingOldReport": "🗑️ 正在删除旧报告...",
|
|
632
|
+
"generatingFreshAnalysis": "📊 生成新的使用情况分析...",
|
|
633
|
+
"couldNotGenerate": "❌ 无法生成使用情况分析",
|
|
634
|
+
"reportNotFound": "📋 未找到使用报告。使用通用键...",
|
|
635
|
+
"foundMissingKeys": "📋发现 {count} 使用分析中缺少密钥",
|
|
636
|
+
"couldNotParse": "❌ 无法解析使用情况报告。使用通用键..."
|
|
637
637
|
},
|
|
638
|
-
"noTranslationLanguagesFound": "
|
|
639
|
-
"failedToAnalyzeLanguage": "
|
|
640
|
-
"translationCompletenessAnalysisFailed": "
|
|
638
|
+
"noTranslationLanguagesFound": "未找到翻译语言",
|
|
639
|
+
"failedToAnalyzeLanguage": "无法分析语言",
|
|
640
|
+
"translationCompletenessAnalysisFailed": "翻译完整性分析失败",
|
|
641
641
|
"failedToProcessFile": "处理文件失败:",
|
|
642
|
-
"failedToSaveReport": "无法保存使用报告:{error}",
|
|
643
|
-
"i18nDirectoryDoesNotExist": "
|
|
644
|
-
"reportSavedTo": "
|
|
645
|
-
"sourceDirectoryDoesNotExist": "源目录不存在:{dir}"
|
|
642
|
+
"failedToSaveReport": "无法保存使用报告: {error}",
|
|
643
|
+
"i18nDirectoryDoesNotExist": "I18n 目录不存在: {dir}",
|
|
644
|
+
"reportSavedTo": "使用情况报告保存到: {reportPath}",
|
|
645
|
+
"sourceDirectoryDoesNotExist": "源目录不存在: {dir}"
|
|
646
646
|
},
|
|
647
647
|
"validate": {
|
|
648
|
-
"help_message": "
|
|
649
|
-
"title": "🔍
|
|
650
|
-
"message": "
|
|
651
|
-
"sourceDirectory": "📁
|
|
652
|
-
"sourceLanguage": "
|
|
653
|
-
"strictMode": "
|
|
654
|
-
"noTargetLanguages": "
|
|
655
|
-
"validatingLanguages": "🌍
|
|
656
|
-
"validatingLanguage": "🔍
|
|
657
|
-
"filesCount": "📄
|
|
658
|
-
"keysCount": "🔑
|
|
659
|
-
"missingFilesCount": "📁
|
|
660
|
-
"syntaxErrorsCount": "❌
|
|
661
|
-
"translationPercentage": "
|
|
648
|
+
"help_message": "国际化翻译验证器用法:node i18ntk-validate.js [options] 选项:--source-dir <dir> 要扫描的源目录(默认:./src)--i18n-dir <dir> I18n 目录(默认:./src/locales) --output-report 生成详细报告 --output-dir <dir> 报告的输出目录(默认:./reports) --help 显示此帮助示例:node i18ntk-validate.js --output-report node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales node i18ntk-validate.js --output-dir=./analysis --output-report",
|
|
649
|
+
"title": "🔍 国际化翻译验证器",
|
|
650
|
+
"message": "开始验证过程...",
|
|
651
|
+
"sourceDirectory": "📁 源码目录: {dir}",
|
|
652
|
+
"sourceLanguage": "🌍源语言: {sourceLanguage}",
|
|
653
|
+
"strictMode": "⚙️严格模式: {mode}",
|
|
654
|
+
"noTargetLanguages": "未配置目标语言;跳过目标验证。通过“i18ntk init --languages=de,fr”添加语言。",
|
|
655
|
+
"validatingLanguages": "🌍 验证语言: {langs}",
|
|
656
|
+
"validatingLanguage": "🔍 验证语言: {lang}",
|
|
657
|
+
"filesCount": "📄 文件: {count}",
|
|
658
|
+
"keysCount": "🔑 按键: {count}",
|
|
659
|
+
"missingFilesCount": "📁 丢失文件: {count}",
|
|
660
|
+
"syntaxErrorsCount": "❌ 语法错误: {count}",
|
|
661
|
+
"translationPercentage": "🎯翻译: {percentage}% ({translated}/{total} 键)",
|
|
662
662
|
"validationSummary": "📊 验证摘要",
|
|
663
|
-
"validation_failed": "❌
|
|
664
|
-
"totalErrors": "❌
|
|
665
|
-
"totalWarnings": "
|
|
663
|
+
"validation_failed": "❌ 验证失败: {error}",
|
|
664
|
+
"totalErrors": "❌ 总错误数: {count}",
|
|
665
|
+
"totalWarnings": "⚠️警告总数: {count}",
|
|
666
666
|
"errorsSection": "❌ 错误",
|
|
667
|
-
"warningsSection": "
|
|
668
|
-
"recommendationsSection": "
|
|
669
|
-
"fixErrorsFirst": "1
|
|
670
|
-
"resolveMissingFilesAndSyntaxErrors": "1
|
|
671
|
-
"fixStructuralInconsistencies": "2.
|
|
667
|
+
"warningsSection": "⚠️警告",
|
|
668
|
+
"recommendationsSection": "💡推荐",
|
|
669
|
+
"fixErrorsFirst": "1.首先修复所有错误",
|
|
670
|
+
"resolveMissingFilesAndSyntaxErrors": "1.解决丢失文件和语法错误",
|
|
671
|
+
"fixStructuralInconsistencies": "2. 修复结构不一致的问题",
|
|
672
672
|
"completeMissingTranslations": "3. 完成缺失的翻译",
|
|
673
|
-
"rerunValidation": "4.
|
|
674
|
-
"addressWarnings": "
|
|
675
|
-
"reviewWarnings": "
|
|
676
|
-
"considerRunningWithStrict": "2
|
|
673
|
+
"rerunValidation": "4. 重新运行验证以验证修复",
|
|
674
|
+
"addressWarnings": "解决警告以提高质量",
|
|
675
|
+
"reviewWarnings": "查看警告并在适当的情况下进行修复",
|
|
676
|
+
"considerRunningWithStrict": "2.考虑使用 --strict 标志运行以进行更严格的验证",
|
|
677
677
|
"allValidationsPassed": "🎉 所有验证均已通过!",
|
|
678
|
-
"considerRunningUsageAnalysis": "
|
|
679
|
-
"deletedOldReport": "
|
|
680
|
-
"sourceDir": "📁
|
|
681
|
-
"i18nDir": "🌐
|
|
678
|
+
"considerRunningUsageAnalysis": "考虑运行使用情况分析:node i18ntk-usage.js",
|
|
679
|
+
"deletedOldReport": "🗑️删除了旧的验证报告",
|
|
680
|
+
"sourceDir": "📁 源码目录: {sourceDir}",
|
|
681
|
+
"i18nDir": "🌐I18n 目录: {i18nDir}",
|
|
682
682
|
"loadingTranslationFiles": "📋 正在加载翻译文件...",
|
|
683
|
-
"foundTranslationFilesCount": "✅
|
|
683
|
+
"foundTranslationFilesCount": "✅ 找到了 {count} 翻译文件",
|
|
684
684
|
"analyzingTranslations": "🔍 正在分析翻译...",
|
|
685
685
|
"validationCompletedSuccessfully": "🎉 验证成功完成!",
|
|
686
|
-
"validationErrorsFound": "
|
|
687
|
-
"validationWarningsFound": "
|
|
688
|
-
"validationPassed": "✅
|
|
689
|
-
"validationFailed": "
|
|
690
|
-
"startingValidationProcess": "🔍
|
|
691
|
-
"validationProcessCompletedSuccessfully": "✅
|
|
692
|
-
"stackTrace": "
|
|
693
|
-
"authenticationFailed": "❌
|
|
694
|
-
"fatalValidationError": "❌
|
|
695
|
-
"configAccess": "
|
|
686
|
+
"validationErrorsFound": "⚠️发现验证错误: {count}",
|
|
687
|
+
"validationWarningsFound": "⚠️发现验证警告: {count}",
|
|
688
|
+
"validationPassed": "✅ 验证已通过,没有错误",
|
|
689
|
+
"validationFailed": "验证失败: {error}",
|
|
690
|
+
"startingValidationProcess": "🔍 开始验证过程...",
|
|
691
|
+
"validationProcessCompletedSuccessfully": "✅ 验证过程已成功完成",
|
|
692
|
+
"stackTrace": "堆栈跟踪: {stack}",
|
|
693
|
+
"authenticationFailed": "❌ 验证失败。拒绝访问。",
|
|
694
|
+
"fatalValidationError": "❌ 致命验证错误: {error}",
|
|
695
|
+
"configAccess": "访问配置以进行验证",
|
|
696
696
|
"configValidated": "配置验证成功",
|
|
697
|
-
"configError": "
|
|
698
|
-
"validatorInit": "
|
|
699
|
-
"validatorInitialized": "I18n验证器初始化成功",
|
|
700
|
-
"validatorInitError": "
|
|
701
|
-
"argsParsing": "
|
|
697
|
+
"configError": "配置错误: {error}",
|
|
698
|
+
"validatorInit": "初始化 I18n 验证器",
|
|
699
|
+
"validatorInitialized": "I18n 验证器初始化成功",
|
|
700
|
+
"validatorInitError": "验证器初始化错误: {error}",
|
|
701
|
+
"argsParsing": "解析命令行参数",
|
|
702
702
|
"argsParsed": "命令行参数解析成功",
|
|
703
|
-
"argsParseError": "
|
|
704
|
-
"languagesScan": "
|
|
705
|
-
"languagesFound": "
|
|
706
|
-
"languagesScanError": "
|
|
707
|
-
"filesScan": "
|
|
708
|
-
"filesScanError": "
|
|
709
|
-
"jsonValidated": "JSON
|
|
710
|
-
"jsonValidationError": "JSON
|
|
711
|
-
"languageValidation": "
|
|
712
|
-
"languageValidationError": "
|
|
703
|
+
"argsParseError": "参数解析错误: {error}",
|
|
704
|
+
"languagesScan": "扫描可用语言",
|
|
705
|
+
"languagesFound": "成立 {count} 语言",
|
|
706
|
+
"languagesScanError": "语言扫描错误: {error}",
|
|
707
|
+
"filesScan": "成立 {count} 文件在 {language}",
|
|
708
|
+
"filesScanError": "文件扫描错误: {error}",
|
|
709
|
+
"jsonValidated": "JSON 语法已验证: {filePath}",
|
|
710
|
+
"jsonValidationError": "JSON 验证错误: {error}",
|
|
711
|
+
"languageValidation": "验证语言: {language}",
|
|
712
|
+
"languageValidationError": "语言验证错误: {error}",
|
|
713
713
|
"fileDeleted": "文件已删除",
|
|
714
|
-
"runStarted": "
|
|
715
|
-
"runCompleted": "
|
|
716
|
-
"runError": "
|
|
714
|
+
"runStarted": "开始验证运行",
|
|
715
|
+
"runCompleted": "验证运行已成功完成",
|
|
716
|
+
"runError": "验证运行失败: {error}",
|
|
717
717
|
"scriptExecution": "脚本执行",
|
|
718
718
|
"validationCompleted": "验证完成",
|
|
719
|
-
"validationError": "
|
|
720
|
-
"separator": "
|
|
721
|
-
"languageHeader": "
|
|
719
|
+
"validationError": "验证错误: {error}",
|
|
720
|
+
"separator": "──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────",
|
|
721
|
+
"languageHeader": "🌐语言: {language}",
|
|
722
722
|
"validationResults": "📊 验证结果",
|
|
723
|
-
"noErrors": "✅
|
|
724
|
-
"noWarnings": "✅
|
|
725
|
-
"summaryHeader": "📋
|
|
723
|
+
"noErrors": "✅ 没有发现错误",
|
|
724
|
+
"noWarnings": "✅ 没有发现任何警告",
|
|
725
|
+
"summaryHeader": "📋 总体总结",
|
|
726
726
|
"progressIndicator": "⏳ 处理中...",
|
|
727
727
|
"completedIndicator": "✅ 已完成",
|
|
728
728
|
"errorIndicator": "❌ 错误",
|
|
729
|
-
"warningIndicator": "
|
|
730
|
-
"infoIndicator": "
|
|
729
|
+
"warningIndicator": "⚠️警告",
|
|
730
|
+
"infoIndicator": "ℹ️信息",
|
|
731
731
|
"sourceDirNotConfigured": "源目录未配置",
|
|
732
|
-
"sourceLanguageNotConfigured": "
|
|
733
|
-
"translationFunctionNotInitialized": "
|
|
732
|
+
"sourceLanguageNotConfigured": "未配置源语言",
|
|
733
|
+
"translationFunctionNotInitialized": "翻译功能未正确初始化",
|
|
734
734
|
"sourceLanguageDirectoryNotFound": "未找到源语言目录",
|
|
735
|
-
"specifiedLanguageNotFound": "
|
|
736
|
-
"noJsonFilesFound": "
|
|
737
|
-
"i18nDirectoryNotFound": "未找到I18n
|
|
735
|
+
"specifiedLanguageNotFound": "找不到指定的语言",
|
|
736
|
+
"noJsonFilesFound": "在源目录中找不到 JSON 文件: {sourceDir}",
|
|
737
|
+
"i18nDirectoryNotFound": "未找到 I18n 目录: {i18nDir}",
|
|
738
738
|
"invalidDirectoryPaths": "检测到无效的目录路径",
|
|
739
|
-
"invalidSampleFilePath": "
|
|
740
|
-
"failedToCreateSampleTranslationFile": "
|
|
739
|
+
"invalidSampleFilePath": "示例文件路径无效",
|
|
740
|
+
"failedToCreateSampleTranslationFile": "无法创建示例翻译文件",
|
|
741
741
|
"invalidFilePathDetected": "检测到无效的文件路径",
|
|
742
|
-
"failedToWriteFile": "
|
|
743
|
-
"invalidSourceDirectory": "无效的源目录:{sourceDir}",
|
|
744
|
-
"invalidSourceLanguageDirectory": "无效的源语言目录:{sourceDir}"
|
|
742
|
+
"failedToWriteFile": "写入文件失败: {filePath}",
|
|
743
|
+
"invalidSourceDirectory": "无效的源目录: {sourceDir}",
|
|
744
|
+
"invalidSourceLanguageDirectory": "无效的源语言目录: {sourceDir}"
|
|
745
745
|
},
|
|
746
746
|
"adminCli": {
|
|
747
|
-
"setupPinProtectionTitle": "🔐 设置管理员PIN
|
|
748
|
-
"setupPinProtectionDescription": "
|
|
749
|
-
"enablePinProtectionPrompt": "
|
|
750
|
-
"setupCancelled": "管理员PIN保护设置已取消。",
|
|
751
|
-
"enterPinPrompt": "
|
|
752
|
-
"pinFormatError": "❌ PIN
|
|
753
|
-
"confirmPinPrompt": "
|
|
754
|
-
"pinMismatchError": "❌ PIN
|
|
755
|
-
"pinProtectionEnabledSuccess": "✅ 管理员PIN
|
|
756
|
-
"pinRecoveryWarning": "
|
|
757
|
-
"setupPinProtectionFailed": "❌
|
|
758
|
-
"errorSettingUpPin": "❌ 设置管理员PIN
|
|
759
|
-
"authRequiredForOperation": "🔐
|
|
760
|
-
"invalidPinFormat": "❌
|
|
761
|
-
"authenticationSuccess": "✅
|
|
762
|
-
"invalidPinAttemptsRemaining": "❌
|
|
763
|
-
"authenticationFailedAccessDenied": "❌
|
|
764
|
-
"authenticationError": "❌
|
|
765
|
-
"pinProtectionNotEnabled": "
|
|
766
|
-
"disablingPinProtectionTitle": "🔓 禁用管理员PIN
|
|
767
|
-
"confirmDisablePinProtection": "您确定要禁用管理员PIN
|
|
747
|
+
"setupPinProtectionTitle": "🔐 设置管理员 PIN 码保护",
|
|
748
|
+
"setupPinProtectionDescription": "这将需要 4-6 位 PIN 码才能进行管理操作。",
|
|
749
|
+
"enablePinProtectionPrompt": "您想启用管理员 PIN 码保护吗?",
|
|
750
|
+
"setupCancelled": "管理员 PIN 保护设置已取消。",
|
|
751
|
+
"enterPinPrompt": "输入 4-6 位 PIN 码:",
|
|
752
|
+
"pinFormatError": "❌ PIN 码必须为 4-6 位数字。请再试一次。",
|
|
753
|
+
"confirmPinPrompt": "确认密码:",
|
|
754
|
+
"pinMismatchError": "❌ PIN 码不匹配。请再试一次。",
|
|
755
|
+
"pinProtectionEnabledSuccess": "✅ 管理员 PIN 码保护已成功启用!",
|
|
756
|
+
"pinRecoveryWarning": "⚠️记住您的 PIN 码 - 如果丢失将无法恢复。",
|
|
757
|
+
"setupPinProtectionFailed": "❌ 无法设置管理员 PIN 码保护。",
|
|
758
|
+
"errorSettingUpPin": "❌ 设置管理员 PIN 码时出错: {message}",
|
|
759
|
+
"authRequiredForOperation": "🔐 需要管理员身份验证: {operation}",
|
|
760
|
+
"invalidPinFormat": "❌ PIN 码格式无效。 PIN 码必须为 4-6 位数字。",
|
|
761
|
+
"authenticationSuccess": "✅ 认证成功!",
|
|
762
|
+
"invalidPinAttemptsRemaining": "❌ PIN 码无效。 {remaining} 剩余尝试次数。",
|
|
763
|
+
"authenticationFailedAccessDenied": "❌ 验证失败。拒绝访问。",
|
|
764
|
+
"authenticationError": "❌ 认证错误: {message}",
|
|
765
|
+
"pinProtectionNotEnabled": "当前未启用管理员 PIN 保护。",
|
|
766
|
+
"disablingPinProtectionTitle": "🔓 禁用管理员 PIN 码保护",
|
|
767
|
+
"confirmDisablePinProtection": "您确定要禁用管理员 PIN 码保护吗?",
|
|
768
768
|
"operationCancelled": "操作已取消。",
|
|
769
|
-
"pinProtectionDisabledSuccess": "✅
|
|
770
|
-
"disablePinProtectionFailed": "❌
|
|
771
|
-
"errorDisablingPinProtection": "❌ 禁用管理员保护时出错:{message}",
|
|
769
|
+
"pinProtectionDisabledSuccess": "✅ 禁用管理员 PIN 码保护。",
|
|
770
|
+
"disablePinProtectionFailed": "❌ 无法禁用管理员 PIN 码保护。",
|
|
771
|
+
"errorDisablingPinProtection": "❌ 禁用管理员保护时出错: {message}",
|
|
772
772
|
"adminProtectionStatusTitle": "🔐 管理员保护状态",
|
|
773
|
-
"statusEnabled": "
|
|
774
|
-
"protectionDetails": "
|
|
775
|
-
"lockoutDetails": "锁定:3
|
|
776
|
-
"statusDisabled": "
|
|
773
|
+
"statusEnabled": "状态: ✅ 已启用",
|
|
774
|
+
"protectionDetails": "保护:管理操作需要 4-6 位 PIN",
|
|
775
|
+
"lockoutDetails": "锁定:3 次失败尝试 = 15 分钟锁定",
|
|
776
|
+
"statusDisabled": "状态: ❌ 已禁用",
|
|
777
777
|
"noAuthRequired": "保护:无需身份验证",
|
|
778
|
-
"unprotectedRisk": "
|
|
779
|
-
"errorCheckingAdminStatus": "❌ 检查管理员状态时出错:{message}",
|
|
778
|
+
"unprotectedRisk": "风险:行政操作不受保护",
|
|
779
|
+
"errorCheckingAdminStatus": "❌ 检查管理员状态时出错: {message}",
|
|
780
780
|
"authRequired": "🔐 需要管理员身份验证。",
|
|
781
|
-
"invalidPin": "❌
|
|
782
|
-
"authSuccess": "✅
|
|
781
|
+
"invalidPin": "❌ PIN 码无效。",
|
|
782
|
+
"authSuccess": "✅ 认证成功!",
|
|
783
783
|
"adminPinSetupCli": "admin_pin_setup_cli",
|
|
784
784
|
"adminAuthFailedCli": "admin_auth_failed_cli",
|
|
785
785
|
"adminAuthDisabledCli": "admin_auth_disabled_cli",
|
|
786
|
-
"protectedAccess": "
|
|
787
|
-
"enterPin": "
|
|
788
|
-
"accessGranted": "
|
|
786
|
+
"protectedAccess": "受保护的访问:敏感操作需要管理员身份验证。",
|
|
787
|
+
"enterPin": "输入管理员 PIN 码:",
|
|
788
|
+
"accessGranted": "已授予访问权限。"
|
|
789
789
|
},
|
|
790
790
|
"adminPin": {
|
|
791
|
-
"setup_title": "🔐 管理员PIN
|
|
792
|
-
"setup_separator": "
|
|
793
|
-
"setup_description": "
|
|
794
|
-
"required_for_title": "
|
|
791
|
+
"setup_title": "🔐 管理员 PIN 码设置",
|
|
792
|
+
"setup_separator": "===============================================================",
|
|
793
|
+
"setup_description": "创建 4-6 位 PIN 码,以便管理员访问敏感设置。",
|
|
794
|
+
"required_for_title": "以下情况需要此 PIN 码:",
|
|
795
795
|
"required_for_1": "• 更改安全设置",
|
|
796
796
|
"required_for_2": "• 修改高级配置",
|
|
797
797
|
"required_for_3": "• 访问调试工具",
|
|
798
798
|
"required_for_4": "• 重置设置",
|
|
799
|
-
"setup_note": "💡
|
|
800
|
-
"setup_digits_only": "仅接受数字0-9作为PIN
|
|
801
|
-
"invalid_pin_length": "❌
|
|
802
|
-
"invalid_pin_example": "示例:1234或567890",
|
|
803
|
-
"pins_do_not_match": "❌ PIN码不匹配。",
|
|
804
|
-
"setup_success": "✅ 管理员PIN
|
|
805
|
-
"setup_warning": "⚠️
|
|
806
|
-
"setup_error": "❌ 设置PIN码时出错:",
|
|
807
|
-
"session_expired": "⏰
|
|
808
|
-
"no_pin_set_setting_up": "⚠️
|
|
809
|
-
"no_pin_configured_access_denied": "⚠️
|
|
810
|
-
"use_admin_settings_to_set_pin": "💡
|
|
811
|
-
"locked_out": "🔒
|
|
812
|
-
"wait_before_retry": "
|
|
813
|
-
"access_granted": "✅
|
|
814
|
-
"incorrect_pin": "❌
|
|
815
|
-
"verify_pin_error": "❌ 验证PIN码时出错:",
|
|
816
|
-
"already_configured": "✅ 管理员PIN码已配置。",
|
|
817
|
-
"optional_setup_title": "🔐 管理员PIN设置(可选)",
|
|
818
|
-
"optional_setup_description": "管理员PIN
|
|
819
|
-
"setup_prompt": "
|
|
820
|
-
"skipping_setup": "⏭️
|
|
821
|
-
"setup_prompt_error": "❌ PIN
|
|
822
|
-
"protectedAccess": "
|
|
823
|
-
"enterPin": "
|
|
824
|
-
"accessGranted": "
|
|
825
|
-
"invalidPin": "❌
|
|
826
|
-
"weak_pin_warning": "
|
|
827
|
-
"weak_pin_suggestion": "💡
|
|
828
|
-
"use_anyway_prompt": "
|
|
829
|
-
"enter_new_pin": "
|
|
830
|
-
"confirm_pin": "确认管理员PIN码:",
|
|
799
|
+
"setup_note": "💡 注意:您在键入时会看到星号 (*) - 这些只是屏蔽字符。",
|
|
800
|
+
"setup_digits_only": "仅接受数字 0-9 作为 PIN 数字。",
|
|
801
|
+
"invalid_pin_length": "❌ PIN 码无效。必须为 4-6 位数字(仅限数字 0-9)。",
|
|
802
|
+
"invalid_pin_example": "示例:1234 或 567890",
|
|
803
|
+
"pins_do_not_match": "❌ PIN 码不匹配。",
|
|
804
|
+
"setup_success": "✅ 管理员 PIN 码已成功设置!",
|
|
805
|
+
"setup_warning": "⚠️ 确保此 PIN 码安全。如果丢失则无法恢复。",
|
|
806
|
+
"setup_error": "❌ 设置 PIN 码时出错:",
|
|
807
|
+
"session_expired": "⏰ 管理会话由于不活动而过期。",
|
|
808
|
+
"no_pin_set_setting_up": "⚠️ 未设置管理员 PIN 码。正在设置 PIN...",
|
|
809
|
+
"no_pin_configured_access_denied": "⚠️ 未配置管理员 PIN。拒绝访问。",
|
|
810
|
+
"use_admin_settings_to_set_pin": "💡 首先使用管理设置设置 PIN。",
|
|
811
|
+
"locked_out": "🔒 由于尝试失败次数过多,管理员访问权限被锁定。",
|
|
812
|
+
"wait_before_retry": "请等待 5 分钟,然后重试。",
|
|
813
|
+
"access_granted": "✅ 已授予管理员访问权限。",
|
|
814
|
+
"incorrect_pin": "❌ PIN 码不正确。 {attempts} 剩余尝试次数。",
|
|
815
|
+
"verify_pin_error": "❌ 验证 PIN 码时出错:",
|
|
816
|
+
"already_configured": "✅ 管理员 PIN 码已配置。",
|
|
817
|
+
"optional_setup_title": "🔐 管理员 PIN 设置(可选)",
|
|
818
|
+
"optional_setup_description": "管理员 PIN 保护增加了敏感操作的安全性,例如:",
|
|
819
|
+
"setup_prompt": "您想设置管理员 PIN 码吗? (是/否):",
|
|
820
|
+
"skipping_setup": "⏭️ 跳过管理员 PIN 设置。您可以稍后在设置中进行设置。",
|
|
821
|
+
"setup_prompt_error": "❌ PIN 设置提示错误:",
|
|
822
|
+
"protectedAccess": "受保护的访问:敏感操作需要管理员身份验证。",
|
|
823
|
+
"enterPin": "输入管理员 PIN 码:",
|
|
824
|
+
"accessGranted": "已授予访问权限。",
|
|
825
|
+
"invalidPin": "❌ PIN 码无效。请再试一次。",
|
|
826
|
+
"weak_pin_warning": "⚠️警告:此 PIN 码似乎较弱或常见。",
|
|
827
|
+
"weak_pin_suggestion": "💡 考虑使用具有不同数字的更强的 PIN 码。",
|
|
828
|
+
"use_anyway_prompt": "键入“yes”仍可使用,或按 Enter 键选择不同的 PIN:",
|
|
829
|
+
"enter_new_pin": "输入新的管理员 PIN 码(4-6 位数字):",
|
|
830
|
+
"confirm_pin": "确认管理员 PIN 码:",
|
|
831
831
|
"not_set": "未设置",
|
|
832
832
|
"pin_display_mask": "####"
|
|
833
833
|
},
|
|
834
834
|
"debug": {
|
|
835
835
|
"title": "🔧 调试工具",
|
|
836
|
-
"separator": "
|
|
836
|
+
"separator": "===============================================================",
|
|
837
837
|
"mainDebuggerSystemDiagnostics": "1. 系统诊断",
|
|
838
838
|
"_consoleTranslationsCheck": "// 2. 控制台翻译检查",
|
|
839
839
|
"_exportMissingKeys": "// 3. 导出缺失的翻译键",
|
|
840
|
-
"_replaceHardcodedConsole": "// 4.
|
|
841
|
-
"_consoleKeyChecker": "// 5.
|
|
840
|
+
"_replaceHardcodedConsole": "// 4. 替换硬编码的控制台字符串",
|
|
841
|
+
"_consoleKeyChecker": "// 5. 控制台按键检查器",
|
|
842
842
|
"debugLogs": "2. 调试日志",
|
|
843
843
|
"backToMainMenu": "0. 返回主菜单",
|
|
844
|
-
"selectOption": "
|
|
845
|
-
"runningDebugTool": "
|
|
846
|
-
"debugToolNotFound": "❌ 未找到调试工具:{toolName}",
|
|
847
|
-
"errorRunningDebugTool": "
|
|
844
|
+
"selectOption": "选择调试工具:",
|
|
845
|
+
"runningDebugTool": "跑步 {displayName}...",
|
|
846
|
+
"debugToolNotFound": "❌ 未找到调试工具: {toolName}",
|
|
847
|
+
"errorRunningDebugTool": "运行调试工具时出错'{displayName}': {error}",
|
|
848
848
|
"recentDebugLogs": "📄 最近的调试日志",
|
|
849
849
|
"noDebugLogsFound": "❌ 未找到调试日志。",
|
|
850
|
-
"debugLogsDirectoryNotFound": "❌
|
|
851
|
-
"selectLogPrompt": "选择要查看的日志文件(1-{count}
|
|
852
|
-
"invalidChoiceSelectRange": "
|
|
853
|
-
"contentOf": "📄 {filename}
|
|
854
|
-
"pressEnterToContinue": "按 Enter
|
|
850
|
+
"debugLogsDirectoryNotFound": "❌ 找不到调试日志目录。",
|
|
851
|
+
"selectLogPrompt": "选择要查看的日志文件(1-{count}):",
|
|
852
|
+
"invalidChoiceSelectRange": "无效选择。请从可用范围中选择。",
|
|
853
|
+
"contentOf": "📄 内容 {filename}:",
|
|
854
|
+
"pressEnterToContinue": "按 Enter 键继续..."
|
|
855
855
|
},
|
|
856
856
|
"detect_language_mismatches": {
|
|
857
857
|
"tool_title": "🔍 语言不匹配检测工具",
|
|
858
|
-
"separator": "
|
|
859
|
-
"analyzing_file": "📄
|
|
860
|
-
"error_analyzing_file": "❌
|
|
858
|
+
"separator": "=======================================",
|
|
859
|
+
"analyzing_file": "📄 分析中 {language}.json...",
|
|
860
|
+
"error_analyzing_file": "❌ 错误分析 {filename}: {errorMessage}",
|
|
861
861
|
"results_title": "📊 语言不匹配检测结果",
|
|
862
|
-
"results_separator": "
|
|
863
|
-
"summary_title": "
|
|
864
|
-
"total_files_analyzed": "
|
|
865
|
-
"files_with_mismatches": "
|
|
866
|
-
"total_mismatches_found": "
|
|
867
|
-
"no_mismatches_found": "✅
|
|
868
|
-
"detailed_results_title": "
|
|
869
|
-
"file_mismatch_header": "📄 {filename}
|
|
870
|
-
"mismatches_count": "
|
|
871
|
-
"mismatch_details": "{index}
|
|
872
|
-
"mismatch_value": "
|
|
873
|
-
"mismatch_issue": "问题:{description}",
|
|
874
|
-
"recommendations_title": "
|
|
875
|
-
"recommendation_1": "1.
|
|
876
|
-
"recommendation_2": "2.
|
|
877
|
-
"recommendation_3": "3.
|
|
878
|
-
"recommendation_4": "4.
|
|
879
|
-
"recommendation_5": "5.
|
|
880
|
-
"detailed_report_saved": "📄
|
|
881
|
-
"error_saving_report": "❌ 保存报告时出错:{errorMessage}",
|
|
862
|
+
"results_separator": "=========================================",
|
|
863
|
+
"summary_title": "📋总结:",
|
|
864
|
+
"total_files_analyzed": "分析的总文件数: {totalFiles}",
|
|
865
|
+
"files_with_mismatches": "不匹配的文件: {filesWithMismatches}",
|
|
866
|
+
"total_mismatches_found": "发现的不匹配总数: {totalMismatches}",
|
|
867
|
+
"no_mismatches_found": "✅ 未发现语言不匹配!所有翻译似乎都是正确的语言。",
|
|
868
|
+
"detailed_results_title": "🔍详细结果:",
|
|
869
|
+
"file_mismatch_header": "📄 {filename} ({language})",
|
|
870
|
+
"mismatches_count": "成立 {count} 不匹配:",
|
|
871
|
+
"mismatch_details": "{index}。钥匙: {key}",
|
|
872
|
+
"mismatch_value": "价值: ”{value}\"",
|
|
873
|
+
"mismatch_issue": "问题: {description}",
|
|
874
|
+
"recommendations_title": "💡建议:",
|
|
875
|
+
"recommendation_1": "1. 审核并翻译所有标有 [翻译] 的条目",
|
|
876
|
+
"recommendation_2": "2. 用正确的翻译替换语言前缀(例如,[DE]、[FR])",
|
|
877
|
+
"recommendation_3": "3. 将英文文本翻译成适当的目标语言",
|
|
878
|
+
"recommendation_4": "4. 对所有面向用户的文本使用母语等效内容",
|
|
879
|
+
"recommendation_5": "5. 进行更正后再次运行此工具以验证修复",
|
|
880
|
+
"detailed_report_saved": "📄 详细报告保存至: {reportPath}",
|
|
881
|
+
"error_saving_report": "❌ 保存报告时出错: {errorMessage}",
|
|
882
882
|
"auto_fix_mode": "🔧 自动修复模式 {dryRun}",
|
|
883
|
-
"auto_fix_separator": "
|
|
884
|
-
"fixed_file": "✅
|
|
883
|
+
"auto_fix_separator": "=======================================",
|
|
884
|
+
"fixed_file": "✅ 固定 {filename}",
|
|
885
885
|
"auto_fix_summary_title": "📊 自动修复摘要:",
|
|
886
|
-
"total_fixes_applied": "应用的修复总数:{count}",
|
|
887
|
-
"preview_fixes_title": "
|
|
888
|
-
"fix_details": "{file}
|
|
889
|
-
"more_fixes": "
|
|
890
|
-
"run_with_apply_fixes": "💡 使用 --apply
|
|
886
|
+
"total_fixes_applied": "应用的修复总数: {count}",
|
|
887
|
+
"preview_fixes_title": "🔍修复预览:",
|
|
888
|
+
"fix_details": "{file}: {key} 老的: ”{old}“ 新的: ”{new}\"",
|
|
889
|
+
"more_fixes": "... 和 {count} 更多修复",
|
|
890
|
+
"run_with_apply_fixes": "💡 使用 --apply 运行以应用这些修复",
|
|
891
891
|
"error_general": "❌ 错误:",
|
|
892
|
-
"mainDebuggerSystemDiagnostics": "
|
|
893
|
-
"exportMissingKeys": "
|
|
892
|
+
"mainDebuggerSystemDiagnostics": "主调试器/系统诊断",
|
|
893
|
+
"exportMissingKeys": "导出丢失的密钥",
|
|
894
894
|
"replaceHardcodedConsole": "替换硬编码控制台",
|
|
895
|
-
"consoleKeyChecker": "
|
|
895
|
+
"consoleKeyChecker": "控制台按键检查器",
|
|
896
896
|
"debugLogs": "调试日志",
|
|
897
897
|
"backToMainMenu": "返回主菜单",
|
|
898
898
|
"invalidChoiceSelectRange": "❌ 无效选择。请选择显示范围内的数字。",
|
|
899
|
-
"runningDebugTool": "
|
|
900
|
-
"debugToolNotFound": "
|
|
899
|
+
"runningDebugTool": "运行调试工具: {displayName}",
|
|
900
|
+
"debugToolNotFound": "调试工具'{toolName}' 未找到。",
|
|
901
901
|
"recentDebugLogs": "最近的调试日志",
|
|
902
902
|
"noDebugLogsFound": "未找到调试日志。",
|
|
903
|
-
"logEntry": "日志条目:{timestamp} - {message}",
|
|
904
|
-
"debugLogsDirectoryNotFound": "
|
|
903
|
+
"logEntry": "日志条目: {timestamp} - {message}",
|
|
904
|
+
"debugLogsDirectoryNotFound": "找不到调试日志目录。"
|
|
905
905
|
},
|
|
906
906
|
"help": {
|
|
907
|
-
"title": "📊
|
|
908
|
-
"usage": "用法:node
|
|
909
|
-
"interactiveMode": "
|
|
910
|
-
"showHelp": "📖 使用:node
|
|
907
|
+
"title": "📊 I18NTK 管理帮助",
|
|
908
|
+
"usage": "用法:node main/manage/index.js [选项]",
|
|
909
|
+
"interactiveMode": "💡使用:node main/manage/index.js --command=<command> 用于直接执行",
|
|
910
|
+
"showHelp": "📖 使用:node main/manage/index.js --help 查看可用命令",
|
|
911
911
|
"availableCommands": "📖 可用命令:",
|
|
912
912
|
"initProject": "🚀 初始化新语言",
|
|
913
913
|
"analyzeTranslations": "🔍 分析翻译",
|
|
914
914
|
"validateTranslations": "✅ 验证翻译",
|
|
915
|
-
"checkUsage": "📊
|
|
916
|
-
"initCommand": "init
|
|
917
|
-
"analyzeCommand": "
|
|
918
|
-
"validateCommand": "validate
|
|
919
|
-
"usageCommand": "
|
|
920
|
-
"sizingCommand": "
|
|
921
|
-
"completeCommand": "
|
|
922
|
-
"summaryCommand": "
|
|
923
|
-
"debugCommand": "debug
|
|
924
|
-
"scannerCommand": "
|
|
925
|
-
"translateCommand": "
|
|
915
|
+
"checkUsage": "📊 检查密钥使用情况",
|
|
916
|
+
"initCommand": "init - 初始化新语言",
|
|
917
|
+
"analyzeCommand": "分析 - 分析翻译",
|
|
918
|
+
"validateCommand": "validate - 验证翻译",
|
|
919
|
+
"usageCommand": "使用情况 - 检查密钥使用情况",
|
|
920
|
+
"sizingCommand": "尺寸调整 - 分析尺寸",
|
|
921
|
+
"completeCommand": "完整 - 完整翻译(100% 覆盖率)",
|
|
922
|
+
"summaryCommand": "摘要 - 显示项目状态",
|
|
923
|
+
"debugCommand": "debug - 调试翻译问题",
|
|
924
|
+
"scannerCommand": "扫描仪 - 扫描钥匙",
|
|
925
|
+
"translateCommand": "翻译 - 自动翻译语言环境文件(测试版)",
|
|
926
926
|
"menu": {
|
|
927
|
-
"pressEnterToContinue": "按 Enter
|
|
928
|
-
"title": "🌐
|
|
927
|
+
"pressEnterToContinue": "按 Enter 键继续...",
|
|
928
|
+
"title": "🌐I18NTK 管理菜单",
|
|
929
929
|
"description": "用于管理国际化的交互式菜单",
|
|
930
930
|
"exit": "🚪 退出"
|
|
931
931
|
},
|
|
932
932
|
"commands": {
|
|
933
|
-
"init": "init
|
|
934
|
-
"analyze": "
|
|
935
|
-
"validate": "validate
|
|
936
|
-
"usage": "
|
|
937
|
-
"sizing": "
|
|
938
|
-
"complete": "
|
|
939
|
-
"summary": "
|
|
940
|
-
"debug": "debug
|
|
933
|
+
"init": "init - 初始化新语言",
|
|
934
|
+
"analyze": "分析 - 分析翻译",
|
|
935
|
+
"validate": "validate - 验证翻译",
|
|
936
|
+
"usage": "使用情况 - 检查密钥使用情况",
|
|
937
|
+
"sizing": "尺寸调整 - 分析尺寸",
|
|
938
|
+
"complete": "完整 - 完整翻译(100% 覆盖率)",
|
|
939
|
+
"summary": "摘要 - 显示项目状态",
|
|
940
|
+
"debug": "debug - 调试翻译问题"
|
|
941
941
|
},
|
|
942
942
|
"options": {
|
|
943
|
-
"sourceDir": "
|
|
944
|
-
"output": "
|
|
945
|
-
"verbose": "--verbose, -v
|
|
946
|
-
"keepReports": "--keep-reports
|
|
947
|
-
"deleteReports": "--delete-reports
|
|
948
|
-
"help": "--help, -h
|
|
943
|
+
"sourceDir": "--源目录 <dir> 要分析的源目录",
|
|
944
|
+
"output": "- 输出 <file> 报告的输出文件",
|
|
945
|
+
"verbose": "--verbose, -v 显示详细信息",
|
|
946
|
+
"keepReports": "--keep-reports 保留现有报告",
|
|
947
|
+
"deleteReports": "--delete-reports 删除现有报告",
|
|
948
|
+
"help": "--help, -h 显示此帮助"
|
|
949
949
|
},
|
|
950
950
|
"examples": {
|
|
951
951
|
"title": "示例:",
|
|
952
|
-
"example1": "
|
|
953
|
-
"example2": "
|
|
954
|
-
"example3": "
|
|
955
|
-
"example4": "
|
|
956
|
-
"example5": "
|
|
952
|
+
"example1": "节点 i18ntk-manage.js",
|
|
953
|
+
"example2": "节点 i18ntk-manage.js --source-dir ./locales",
|
|
954
|
+
"example3": "节点 i18ntk-manage.js --输出摘要报告.txt",
|
|
955
|
+
"example4": "节点 i18ntk-manage.js --verbose",
|
|
956
|
+
"example5": "节点 i18ntk-manage.js --source-dir ./locales --output report.json"
|
|
957
957
|
},
|
|
958
958
|
"features": {
|
|
959
959
|
"initProject": "🚀 初始化新语言",
|
|
960
960
|
"analyzeTranslations": "🔍 分析翻译",
|
|
961
961
|
"validateTranslations": "✅ 验证翻译",
|
|
962
|
-
"checkUsage": "📊
|
|
963
|
-
"completeTranslations": "🎯
|
|
964
|
-
"showSizing": "📏
|
|
965
|
-
"runWorkflow": "🔄
|
|
962
|
+
"checkUsage": "📊 检查密钥使用情况",
|
|
963
|
+
"completeTranslations": "🎯 完整翻译(100%覆盖)",
|
|
964
|
+
"showSizing": "📏 分析尺码",
|
|
965
|
+
"runWorkflow": "🔄 运行完整的工作流程",
|
|
966
966
|
"showStatus": "📋 显示项目状态",
|
|
967
|
-
"deleteReports": "
|
|
968
|
-
"changeLanguage": "
|
|
969
|
-
"settings": "⚙️
|
|
967
|
+
"deleteReports": "🗑️删除所有报告",
|
|
968
|
+
"changeLanguage": "🌍更改用户界面语言",
|
|
969
|
+
"settings": "⚙️ 设置",
|
|
970
970
|
"showHelp": "❓ 帮助",
|
|
971
971
|
"debugTools": "🔧 调试工具"
|
|
972
972
|
},
|
|
973
973
|
"messages": {
|
|
974
|
-
"selectOption": "
|
|
975
|
-
"invalidOption": "
|
|
974
|
+
"selectOption": "选择一个选项:",
|
|
975
|
+
"invalidOption": "无效选项。请再试一次。",
|
|
976
976
|
"operationCompleted": "✅ 操作成功完成!",
|
|
977
|
-
"pressEnter": "按 Enter
|
|
978
|
-
"goodbye": "
|
|
979
|
-
"unknownCommand": "未知命令:{command}",
|
|
980
|
-
"nonInteractive": "⚠️
|
|
977
|
+
"pressEnter": "按 Enter 键继续...",
|
|
978
|
+
"goodbye": "👋再见!",
|
|
979
|
+
"unknownCommand": "未知命令: {command}",
|
|
980
|
+
"nonInteractive": "⚠️ 检测到非交互模式。显示的菜单仅供参考。"
|
|
981
981
|
},
|
|
982
982
|
"i18n_helper": {
|
|
983
|
-
"translation_file_not_found": "未找到翻译文件:{translationFile}",
|
|
984
|
-
"error_loading_translations": "加载翻译时出错:{errorMessage}",
|
|
985
|
-
"translation_not_found": "
|
|
986
|
-
"translation_key_not_string": "
|
|
987
|
-
"error_reading_locales_directory": "
|
|
983
|
+
"translation_file_not_found": "未找到翻译文件: {translationFile}",
|
|
984
|
+
"error_loading_translations": "加载翻译时出错: {errorMessage}",
|
|
985
|
+
"translation_not_found": "未找到密钥的翻译: {key}",
|
|
986
|
+
"translation_key_not_string": "翻译键无法解析为字符串: {key}",
|
|
987
|
+
"error_reading_locales_directory": "读取语言环境目录时出错: {errorMessage}"
|
|
988
988
|
}
|
|
989
989
|
},
|
|
990
990
|
"init": {
|
|
991
|
-
"initializationTitle": "🚀 i18n
|
|
992
|
-
"initializationCancelled": "🚫
|
|
993
|
-
"sourceDirectoryLabel": "📁 源目录:{dir}",
|
|
991
|
+
"initializationTitle": "🚀 i18n 管理工具包 - 项目初始化",
|
|
992
|
+
"initializationCancelled": "🚫 初始化被用户取消。",
|
|
993
|
+
"sourceDirectoryLabel": "📁 源目录: {dir}",
|
|
994
994
|
"requiredTitle": "需要初始化",
|
|
995
|
-
"requiredBody": "
|
|
996
|
-
"promptRunNow": "
|
|
997
|
-
"sourceLanguageLabel": "🌍 源语言:{language}",
|
|
998
|
-
"detectedI18nFrameworks": "🔍 检测到的 i18n 框架:{frameworks}",
|
|
999
|
-
"pinMustBe4Digits": "🔐 PIN
|
|
1000
|
-
"existingDirectoriesFound": "📁
|
|
1001
|
-
"useExistingDirectoryPrompt": "
|
|
1002
|
-
"selectDirectoryPrompt": "
|
|
1003
|
-
"enterNewDirectoryName": "
|
|
1004
|
-
"createdNewDirectory": "✅
|
|
1005
|
-
"directoryAlreadyExists": "
|
|
1006
|
-
"invalidDirectoryName": "❌
|
|
1007
|
-
"usingExistingDirectory": "
|
|
1008
|
-
"adminPinSetupOptional": "🔐 管理员 PIN
|
|
1009
|
-
"adminPinSeparator": "
|
|
1010
|
-
"adminPinDescription1": "管理员 PIN
|
|
995
|
+
"requiredBody": "在运行此命令之前必须初始化该项目。",
|
|
996
|
+
"promptRunNow": "您想现在运行初始化吗? (是/否):",
|
|
997
|
+
"sourceLanguageLabel": "🌍 源语言: {language}",
|
|
998
|
+
"detectedI18nFrameworks": "🔍 检测到的 i18n 框架: {frameworks}",
|
|
999
|
+
"pinMustBe4Digits": "🔐 PIN 码必须为 4 位数字。",
|
|
1000
|
+
"existingDirectoriesFound": "📁 找到现有的翻译目录:",
|
|
1001
|
+
"useExistingDirectoryPrompt": "您想使用现有目录吗? (是/否)",
|
|
1002
|
+
"selectDirectoryPrompt": "通过输入号码选择目录(或选择“创建新目录”)",
|
|
1003
|
+
"enterNewDirectoryName": "输入新翻译目录的名称",
|
|
1004
|
+
"createdNewDirectory": "✅ 创建新目录: {dir}",
|
|
1005
|
+
"directoryAlreadyExists": "⚠️目录已存在: {dir}",
|
|
1006
|
+
"invalidDirectoryName": "❌ 提供的目录名称无效。",
|
|
1007
|
+
"usingExistingDirectory": "使用现有目录: {dir}",
|
|
1008
|
+
"adminPinSetupOptional": "🔐 管理员 PIN 设置可选(出于安全考虑,推荐)",
|
|
1009
|
+
"adminPinSeparator": "------------------------------------------",
|
|
1010
|
+
"adminPinDescription1": "管理员 PIN:用于安全访问的 4 位数字",
|
|
1011
1011
|
"adminPinDescription2": "留空以跳过 PIN 设置",
|
|
1012
|
-
"adminPinDescription3": "PIN
|
|
1013
|
-
"adminPinDescription4": "PIN
|
|
1014
|
-
"adminPinSetupPrompt": "输入管理员 PIN(4
|
|
1015
|
-
"skippingAdminPinSetup": "
|
|
1016
|
-
"settingUpAdminPin": "🔐
|
|
1017
|
-
"enterAdminPin": "
|
|
1018
|
-
"confirmAdminPin": "
|
|
1019
|
-
"pinMismatch": "PIN
|
|
1012
|
+
"adminPinDescription3": "如果您设置了 PIN,则将来的所有安全操作都需要它。",
|
|
1013
|
+
"adminPinDescription4": "用于安全存储 PIN 的 AES-256-GCM 加密。",
|
|
1014
|
+
"adminPinSetupPrompt": "输入管理员 PIN(4 位数字)或留空以跳过:",
|
|
1015
|
+
"skippingAdminPinSetup": "正在跳过管理员 PIN 设置...",
|
|
1016
|
+
"settingUpAdminPin": "🔐 设置管理员 PIN...",
|
|
1017
|
+
"enterAdminPin": "输入管理员 PIN 码:",
|
|
1018
|
+
"confirmAdminPin": "确认管理员 PIN 码:",
|
|
1019
|
+
"pinMismatch": "PIN 码不匹配。请再试一次。",
|
|
1020
1020
|
"adminPinSetupSuccess": "🔐 管理员 PIN 设置成功!",
|
|
1021
|
-
"adminPinSetupFailure": "🔐 管理员 PIN
|
|
1022
|
-
"adminProtectionEnabled": "🔐
|
|
1023
|
-
"adminProtectionDisabled": "🔐
|
|
1024
|
-
"autoDetectedI18nDirectory": "
|
|
1025
|
-
"initializingProject": "⚙️
|
|
1026
|
-
"createdSampleTranslationFile": "✅
|
|
1021
|
+
"adminPinSetupFailure": "🔐 管理员 PIN 设置失败。请再试一次。",
|
|
1022
|
+
"adminProtectionEnabled": "🔐 启用管理员保护。所有操作都需要 PIN 身份验证。",
|
|
1023
|
+
"adminProtectionDisabled": "🔐 管理员保护已禁用。现在无需 PIN 码即可执行所有操作。",
|
|
1024
|
+
"autoDetectedI18nDirectory": "自动检测 i18n 目录: {directory}",
|
|
1025
|
+
"initializingProject": "⚙️ 正在初始化项目配置...",
|
|
1026
|
+
"createdSampleTranslationFile": "✅ 创建示例翻译文件: {file}",
|
|
1027
1027
|
"languageSelectionTitle": "🌐 语言配置",
|
|
1028
|
-
"available": "
|
|
1029
|
-
"defaultLanguages": "📝 默认语言:{languages}",
|
|
1030
|
-
"enterLanguageCodes": "🎯
|
|
1028
|
+
"available": "可用的",
|
|
1029
|
+
"defaultLanguages": "📝 默认语言: {languages}",
|
|
1030
|
+
"enterLanguageCodes": "🎯 输入目标语言代码(以逗号分隔,例如 de、es、fr、ru):",
|
|
1031
1031
|
"targetLanguages": "🌍 目标语言",
|
|
1032
|
-
"foundSourceFiles": "📄
|
|
1033
|
-
"processingLanguage": "🔄
|
|
1034
|
-
"fileProcessingResult": "✅
|
|
1035
|
-
"overallProgress": "📊
|
|
1036
|
-
"initializationSummaryTitle": "📋
|
|
1037
|
-
"languageSummary": "{icon} {name}
|
|
1038
|
-
"languageFiles": "📄
|
|
1039
|
-
"languageKeys": "🔤
|
|
1040
|
-
"languageMissing": "
|
|
1032
|
+
"foundSourceFiles": "📄 找到了 {count} 要分析的源文件",
|
|
1033
|
+
"processingLanguage": "🔄 处理语言: {language}",
|
|
1034
|
+
"fileProcessingResult": "✅ 已处理 {file}: {translated}/{total} 键({percentage}%)",
|
|
1035
|
+
"overallProgress": "📊 总体进展: {translated}/{total} 已处理的密钥({percentage}%)",
|
|
1036
|
+
"initializationSummaryTitle": "📋 初始化总结",
|
|
1037
|
+
"languageSummary": "{icon} {name} ({code}): {percentage}% 完全的",
|
|
1038
|
+
"languageFiles": "📄 文件: {count}",
|
|
1039
|
+
"languageKeys": "🔤 按键: {translated}/{total}",
|
|
1040
|
+
"languageMissing": "⚠️缺少: {count}",
|
|
1041
1041
|
"initializationCompletedSuccessfully": "🎉 项目初始化成功完成!",
|
|
1042
|
-
"nextStepsTitle": "🚀
|
|
1042
|
+
"nextStepsTitle": "🚀 后续步骤",
|
|
1043
1043
|
"nextStep1": "1. 在 locales/ 目录中查看生成的翻译文件",
|
|
1044
|
-
"nextStep2": "2.
|
|
1045
|
-
"nextStep3": "3.
|
|
1046
|
-
"detectedFrameworks": "✅ 检测到的 i18n 框架:{frameworks}",
|
|
1044
|
+
"nextStep2": "2. 添加每种目标语言的翻译",
|
|
1045
|
+
"nextStep3": "3. 再次运行“npm run i18ntk”以验证翻译",
|
|
1046
|
+
"detectedFrameworks": "✅ 检测到的 i18n 框架: {frameworks}",
|
|
1047
1047
|
"setup": {
|
|
1048
1048
|
"title": "设置",
|
|
1049
1049
|
"question": "设置问题",
|
|
1050
|
-
"opt_single": "
|
|
1051
|
-
"opt_modular": "
|
|
1052
|
-
"opt_existing": "
|
|
1053
|
-
"choice_prompt": "
|
|
1050
|
+
"opt_single": "单文件",
|
|
1051
|
+
"opt_modular": "模块化的",
|
|
1052
|
+
"opt_existing": "现存的",
|
|
1053
|
+
"choice_prompt": "选择一个选项:",
|
|
1054
1054
|
"opt_confirm": "确认",
|
|
1055
1055
|
"opt_cancel": "取消",
|
|
1056
|
-
"apply_all_prompt": "
|
|
1057
|
-
"per_language_intro": "
|
|
1058
|
-
"available_languages": "可用语言:{languages}",
|
|
1059
|
-
"include_prompt": "
|
|
1056
|
+
"apply_all_prompt": "将这个结构应用于所有语言? (是/否):",
|
|
1057
|
+
"per_language_intro": "您已选择单独配置语言。以下是可用的语言:",
|
|
1058
|
+
"available_languages": "可用语言: {languages}",
|
|
1059
|
+
"include_prompt": "输入要包含的以逗号分隔的语言代码(例如“de,fr,es”):"
|
|
1060
1060
|
},
|
|
1061
1061
|
"warnings": {
|
|
1062
|
-
"noPackageJson": "未找到 package.json
|
|
1062
|
+
"noPackageJson": "未找到 package.json。无法自动检测 i18n 框架。"
|
|
1063
1063
|
},
|
|
1064
|
-
"errorsPackageJsonRead": "读取 package.json 时出错:{error}",
|
|
1065
|
-
"errorsNoFramework": "未检测到 i18n
|
|
1064
|
+
"errorsPackageJsonRead": "读取 package.json 时出错: {error}",
|
|
1065
|
+
"errorsNoFramework": "未检测到 i18n 框架。请安装一个或手动指定。",
|
|
1066
1066
|
"suggestions": {
|
|
1067
|
-
"noFramework": "未检测到 i18n
|
|
1068
|
-
"installFramework": "要安装框架,请运行:npm install
|
|
1067
|
+
"noFramework": "未检测到 i18n 框架。考虑使用以下其中一项:",
|
|
1068
|
+
"installFramework": "要安装框架,请运行: npm install <package-name>"
|
|
1069
1069
|
},
|
|
1070
1070
|
"frameworks": {
|
|
1071
1071
|
"react": "- 反应 i18next (react-i18next)",
|
|
1072
1072
|
"vue": "-Vue i18n (vue-i18n)",
|
|
1073
1073
|
"i18next": "- i18next (i18next)",
|
|
1074
|
-
"nuxt": "- Nuxt
|
|
1074
|
+
"nuxt": "- Nuxt i18n (@nuxtjs/i18n)",
|
|
1075
1075
|
"svelte": "- Svelte i18n (svelte-i18n)"
|
|
1076
1076
|
},
|
|
1077
|
-
"continueWithoutI18nPrompt": "未检测到 i18n
|
|
1078
|
-
"detectedI18nFramework": "
|
|
1079
|
-
"existingDirectoryItem": "{index}
|
|
1080
|
-
"usingExistingStructure": "
|
|
1081
|
-
"creatingSourceDirectory": "创建源目录:{dir}",
|
|
1082
|
-
"creatingSourceLanguageDirectory": "创建源语言目录:{dir}",
|
|
1077
|
+
"continueWithoutI18nPrompt": "未检测到 i18n 框架。您想在没有人的情况下继续吗? (是/否):",
|
|
1078
|
+
"detectedI18nFramework": "检测到的 i18n 框架: {frameworks}",
|
|
1079
|
+
"existingDirectoryItem": "{index}. {location}",
|
|
1080
|
+
"usingExistingStructure": "使用现有结构: {dir}",
|
|
1081
|
+
"creatingSourceDirectory": "创建源目录: {dir}",
|
|
1082
|
+
"creatingSourceLanguageDirectory": "创建源语言目录: {dir}",
|
|
1083
1083
|
"errors": {
|
|
1084
|
-
"errorExecutingCommand": "执行命令时出错:{error}",
|
|
1085
|
-
"sourceDirectoryNotFound": "未找到源目录:{dir}",
|
|
1086
|
-
"sourceLanguageDirectoryNotFound": "未找到源语言目录:{dir}",
|
|
1087
|
-
"noJsonFilesInSourceDirectory": "
|
|
1084
|
+
"errorExecutingCommand": "执行命令时出错: {error}",
|
|
1085
|
+
"sourceDirectoryNotFound": "未找到源目录: {dir}",
|
|
1086
|
+
"sourceLanguageDirectoryNotFound": "未找到源语言目录: {dir}",
|
|
1087
|
+
"noJsonFilesInSourceDirectory": "在源目录中找不到 JSON 文件: {dir}",
|
|
1088
1088
|
"invalidFilePathDetected": "检测到无效的文件路径",
|
|
1089
|
-
"initializationFailed": "初始化失败:{error}",
|
|
1089
|
+
"initializationFailed": "初始化失败: {error}",
|
|
1090
1090
|
"noFramework": "未检测到 i18n 框架。继续通用模式。",
|
|
1091
1091
|
"packageJsonRead": "读取 package.json 时出错。"
|
|
1092
1092
|
},
|
|
1093
|
-
"processingFile": "
|
|
1094
|
-
"fileAlreadyExistsMerging": "文件 {file}
|
|
1095
|
-
"createdNewFile": "
|
|
1096
|
-
"updatedFile": "
|
|
1097
|
-
"skippingExcludedFile": "
|
|
1093
|
+
"processingFile": "加工 {file} 为了 {language}...",
|
|
1094
|
+
"fileAlreadyExistsMerging": "文件 {file} 已经存在。合并新密钥。",
|
|
1095
|
+
"createdNewFile": "创建了新文件: {file}",
|
|
1096
|
+
"updatedFile": "更新的文件: {file}",
|
|
1097
|
+
"skippingExcludedFile": "跳绳 {file} 为了 {language} 因为它被排除在外。",
|
|
1098
1098
|
"continuingWithoutAdminPin": "无需设置管理员 PIN 码即可继续。",
|
|
1099
|
-
"createdSourceLanguageDirectory": "
|
|
1100
|
-
"errorSettingUpAdminPin": "设置管理员 PIN 码时出错:{error}",
|
|
1099
|
+
"createdSourceLanguageDirectory": "创建源语言目录: {dir}",
|
|
1100
|
+
"errorSettingUpAdminPin": "设置管理员 PIN 码时出错: {error}",
|
|
1101
1101
|
"noTargetLanguagesSpecified": "未指定目标语言。",
|
|
1102
1102
|
"translationFilesCreatedWarning": "翻译文件是使用占位符创建的;生产使用前进行审查。",
|
|
1103
|
-
"warningCannotReadSourceDir": "警告:无法读取源目录 {dir}
|
|
1104
|
-
"warningInvalidLanguageCodes": "警告:忽略无效的语言代码:{languages}",
|
|
1103
|
+
"warningCannotReadSourceDir": "警告:无法读取源目录 {dir}: {error}",
|
|
1104
|
+
"warningInvalidLanguageCodes": "警告:忽略无效的语言代码: {languages}",
|
|
1105
1105
|
"warningProceedingWithoutFramework": "未检测到 i18n 框架即可继续。"
|
|
1106
1106
|
},
|
|
1107
1107
|
"language": {
|
|
1108
|
-
"title": "🌍
|
|
1109
|
-
"separator": "
|
|
1110
|
-
"current": "当前语言:{language}",
|
|
1108
|
+
"title": "🌍 更改语言",
|
|
1109
|
+
"separator": "===============================================================",
|
|
1110
|
+
"current": "当前语言: {language}",
|
|
1111
1111
|
"available": "可用语言:",
|
|
1112
|
-
"languageOption": "{index}
|
|
1112
|
+
"languageOption": "{index}. {displayName}{current}",
|
|
1113
1113
|
"backToMainMenu": "返回主菜单",
|
|
1114
|
-
"prompt": "
|
|
1115
|
-
"cancelled": "
|
|
1116
|
-
"invalid": "
|
|
1117
|
-
"changed": "
|
|
1118
|
-
"changeFailed": "
|
|
1119
|
-
"pressEnterToContinue": "按 Enter
|
|
1114
|
+
"prompt": "选择语言 (0-8):",
|
|
1115
|
+
"cancelled": "语言更改已取消。",
|
|
1116
|
+
"invalid": "无效选择。请再试一次。",
|
|
1117
|
+
"changed": "语言更改为: {language}",
|
|
1118
|
+
"changeFailed": "更改语言失败: {error}",
|
|
1119
|
+
"pressEnterToContinue": "按 Enter 键继续..."
|
|
1120
1120
|
},
|
|
1121
1121
|
"maintainLanguagePurity": {
|
|
1122
|
-
"workflow_title": "🚀
|
|
1123
|
-
"step1_title": "📊 第1
|
|
1124
|
-
"step2_title": "🔧 第2步:检测并自动修复语言不匹配",
|
|
1125
|
-
"step3_title": "🌐 第3步:应用自动翻译",
|
|
1126
|
-
"step4_title": "✅ 第4
|
|
1127
|
-
"workflow_error": "❌
|
|
1128
|
-
"running_initial_validation": "
|
|
1129
|
-
"initial_assessment_complete": "✅
|
|
1130
|
-
"initial_assessment_warnings": "⚠️
|
|
1131
|
-
"detecting_fixing_mismatches": "
|
|
1132
|
-
"detection_complete_applying_fixes": "
|
|
1133
|
-
"mismatch_fixes_complete": "✅
|
|
1134
|
-
"mismatch_fixes_warnings": "⚠️
|
|
1135
|
-
"applying_automatic_translations": "
|
|
1136
|
-
"translation_preview_complete": "
|
|
1122
|
+
"workflow_title": "🚀 语言纯度维护工作流程",
|
|
1123
|
+
"step1_title": "📊 第 1 步:初始语言纯度评估",
|
|
1124
|
+
"step2_title": "🔧 第 2 步:检测并自动修复语言不匹配",
|
|
1125
|
+
"step3_title": "🌐 第 3 步:应用自动翻译",
|
|
1126
|
+
"step4_title": "✅ 第 4 步:最终语言纯度评估",
|
|
1127
|
+
"workflow_error": "❌ 工作流程错误: {errorMessage}",
|
|
1128
|
+
"running_initial_validation": "运行初始语言纯度验证...",
|
|
1129
|
+
"initial_assessment_complete": "✅ 初步评估完成: {count} 发现违规行为",
|
|
1130
|
+
"initial_assessment_warnings": "⚠️ 初步评估已完成,但有警告",
|
|
1131
|
+
"detecting_fixing_mismatches": "检测并修复语言不匹配...",
|
|
1132
|
+
"detection_complete_applying_fixes": "检测完成。正在应用自动修复...",
|
|
1133
|
+
"mismatch_fixes_complete": "✅ 语言不匹配修复完成: {count} 已应用修复",
|
|
1134
|
+
"mismatch_fixes_warnings": "⚠️ 语言不匹配修复已完成,但有警告",
|
|
1135
|
+
"applying_automatic_translations": "应用自动翻译...",
|
|
1136
|
+
"translation_preview_complete": "翻译预览完成。正在应用翻译..."
|
|
1137
1137
|
},
|
|
1138
1138
|
"menu": {
|
|
1139
|
-
"title": "🌐
|
|
1140
|
-
"separator": "
|
|
1139
|
+
"title": "🌐I18NTK 管理菜单",
|
|
1140
|
+
"separator": "===============================================================",
|
|
1141
1141
|
"options": {
|
|
1142
1142
|
"init": "🚀 初始化新语言",
|
|
1143
1143
|
"analyze": "🔍 分析翻译",
|
|
1144
1144
|
"validate": "✅ 验证翻译",
|
|
1145
|
-
"usage": "📊
|
|
1146
|
-
"complete": "🎯
|
|
1147
|
-
"sizing": "📏
|
|
1148
|
-
"fix": "🛠️
|
|
1149
|
-
"scanner": "🔍 扫描i18n问题",
|
|
1150
|
-
"translate": "🌐
|
|
1151
|
-
"workflow": "🔄
|
|
1145
|
+
"usage": "📊 检查密钥使用情况",
|
|
1146
|
+
"complete": "🎯 完整翻译(100%覆盖)",
|
|
1147
|
+
"sizing": "📏 分析尺码",
|
|
1148
|
+
"fix": "🛠️ 修复占位符翻译",
|
|
1149
|
+
"scanner": "🔍 扫描 i18n 问题",
|
|
1150
|
+
"translate": "🌐 自动翻译(测试版)",
|
|
1151
|
+
"workflow": "🔄 运行完整的工作流程",
|
|
1152
1152
|
"status": "📋 显示项目状态",
|
|
1153
|
-
"delete": "
|
|
1154
|
-
"language": "
|
|
1155
|
-
"settings": "⚙️
|
|
1153
|
+
"delete": "🗑️删除所有报告",
|
|
1154
|
+
"language": "🌍更改用户界面语言",
|
|
1155
|
+
"settings": "⚙️ 设置",
|
|
1156
1156
|
"help": "❓ 帮助",
|
|
1157
1157
|
"debug": "🔧 调试工具",
|
|
1158
1158
|
"exit": "🚪 退出"
|
|
1159
1159
|
},
|
|
1160
|
-
"update": "📦
|
|
1161
|
-
"goodbye": "
|
|
1162
|
-
"invalidChoice": "
|
|
1163
|
-
"returning": "
|
|
1164
|
-
"invalidOption": "
|
|
1165
|
-
"nonInteractiveModeWarning": "
|
|
1166
|
-
"useDirectExecution": "
|
|
1167
|
-
"useHelpForCommands": "
|
|
1160
|
+
"update": "📦 更新包",
|
|
1161
|
+
"goodbye": "👋再见!",
|
|
1162
|
+
"invalidChoice": "无效选择。请选择0-15。",
|
|
1163
|
+
"returning": "返回主菜单...",
|
|
1164
|
+
"invalidOption": "无效选项。请再试一次。",
|
|
1165
|
+
"nonInteractiveModeWarning": "检测到非交互模式。显示的菜单仅供参考。",
|
|
1166
|
+
"useDirectExecution": "使用:node main/manage/index.js --command=<command> 用于直接执行。",
|
|
1167
|
+
"useHelpForCommands": "使用:node main/manage/index.js --help 了解可用命令。",
|
|
1168
1168
|
"returnToMainMenu": "按 Enter 返回主菜单。",
|
|
1169
|
-
"pressEnterToContinue": "按 Enter
|
|
1170
|
-
"selectOptionPrompt": "
|
|
1171
|
-
"selectDebugToolPrompt": "
|
|
1172
|
-
"selectLogPrompt": "
|
|
1173
|
-
"autoDetectedI18nDirectory": "
|
|
1174
|
-
"executingCommand": "
|
|
1175
|
-
"unknownCommand": "未知命令:{command}",
|
|
1176
|
-
"languageOption": "{index}
|
|
1169
|
+
"pressEnterToContinue": "按 Enter 键继续...",
|
|
1170
|
+
"selectOptionPrompt": "选择一个选项:",
|
|
1171
|
+
"selectDebugToolPrompt": "选择调试工具:",
|
|
1172
|
+
"selectLogPrompt": "选择日志文件 (1-{count}):",
|
|
1173
|
+
"autoDetectedI18nDirectory": "自动检测 i18n 目录: {directory}",
|
|
1174
|
+
"executingCommand": "执行命令: {command}",
|
|
1175
|
+
"unknownCommand": "未知命令: {command}",
|
|
1176
|
+
"languageOption": "{index}. {displayName}{current}",
|
|
1177
1177
|
"debugTools": {
|
|
1178
1178
|
"1": "日志文件分析",
|
|
1179
|
-
"2": "
|
|
1179
|
+
"2": "翻译关键用法分析",
|
|
1180
1180
|
"3": "翻译完整性分析",
|
|
1181
1181
|
"4": "翻译格式分析",
|
|
1182
1182
|
"5": "翻译类型分析",
|
|
1183
1183
|
"6": "翻译结构分析"
|
|
1184
1184
|
},
|
|
1185
1185
|
"native_translations": {
|
|
1186
|
-
"exact_translation_found": "✅ {keyPath}
|
|
1187
|
-
"no_exact_translation": "⚠️
|
|
1188
|
-
"similar_key": "- {key}
|
|
1189
|
-
"processing_language_files": "🔄
|
|
1190
|
-
"file_not_found": "⚠️
|
|
1191
|
-
"processing_translations": "
|
|
1192
|
-
"backup_created": "📋 已创建备份:{filename}",
|
|
1193
|
-
"error_parsing_json": "❌
|
|
1194
|
-
"existing_keys_found": "📊 {code}
|
|
1195
|
-
"error_writing_json": "❌
|
|
1196
|
-
"translations_replaced": "📊 {code}
|
|
1186
|
+
"exact_translation_found": "✅ {keyPath}: {value}",
|
|
1187
|
+
"no_exact_translation": "⚠️ 没有准确的翻译 '{keyPath}',找到类似的键:",
|
|
1188
|
+
"similar_key": "- {key} ({similarity}% 匹配)",
|
|
1189
|
+
"processing_language_files": "🔄 加工中 {count} 语言文件...",
|
|
1190
|
+
"file_not_found": "⚠️ 找不到文件: {file}",
|
|
1191
|
+
"processing_translations": "🌍加工 {code} 翻译...",
|
|
1192
|
+
"backup_created": "📋 已创建备份: {filename}",
|
|
1193
|
+
"error_parsing_json": "❌ 解析错误 {code}.json: {errorMessage}",
|
|
1194
|
+
"existing_keys_found": "📊 {code}: 成立 {count} 现有钥匙",
|
|
1195
|
+
"error_writing_json": "❌ 写入错误 {code}.json: {errorMessage}",
|
|
1196
|
+
"translations_replaced": "📊 {code}: {count} 翻译被替换",
|
|
1197
1197
|
"translation_replacement_complete": "✅ 翻译替换完成!",
|
|
1198
|
-
"total_replacements": "📊
|
|
1198
|
+
"total_replacements": "📊 总替换数: {count}",
|
|
1199
1199
|
"dry_run_mode": "⚠️ 试运行模式 - 未修改任何文件",
|
|
1200
|
-
"tool_title": "🌍
|
|
1201
|
-
"tool_separator": "
|
|
1202
|
-
"dry_run_warning": "⚠️
|
|
1203
|
-
"error_during_replacement": "❌
|
|
1200
|
+
"tool_title": "🌍 原生翻译替换器 v1.9.1",
|
|
1201
|
+
"tool_separator": "=======================================",
|
|
1202
|
+
"dry_run_warning": "⚠️ 在 DRY RUN 模式下运行 - 不会修改任何文件",
|
|
1203
|
+
"error_during_replacement": "❌ 翻译替换时出错:"
|
|
1204
1204
|
}
|
|
1205
1205
|
},
|
|
1206
1206
|
"config": {
|
|
1207
|
-
"dirFallbackWarning": "
|
|
1208
|
-
"dirInvalidError": "❌
|
|
1207
|
+
"dirFallbackWarning": "⚠️目录 {dir} 未找到。使用 {fallback}.",
|
|
1208
|
+
"dirInvalidError": "❌ 无效目录: {dir}"
|
|
1209
1209
|
},
|
|
1210
1210
|
"operations": {
|
|
1211
1211
|
"completed": "✅ 操作成功完成!",
|
|
1212
|
-
"deleteReportsTitle": "
|
|
1213
|
-
"scanningForFiles": "🔍
|
|
1214
|
-
"noFilesFoundToDelete": "✅
|
|
1212
|
+
"deleteReportsTitle": "🗑️删除报告和日志",
|
|
1213
|
+
"scanningForFiles": "🔍 正在扫描要删除的文件...",
|
|
1214
|
+
"noFilesFoundToDelete": "✅ 没有找到要删除的文件。",
|
|
1215
1215
|
"availableDirectories": "📁 可用目录:",
|
|
1216
1216
|
"allDirectories": "所有目录",
|
|
1217
|
-
"andMore": "
|
|
1217
|
+
"andMore": "还有更多...",
|
|
1218
1218
|
"cancelOption": "取消",
|
|
1219
|
-
"cancelReportOption": "
|
|
1220
|
-
"invalidSelection": "❌
|
|
1221
|
-
"foundFilesInSelectedDirectories": "📊
|
|
1222
|
-
"deletionOptions": "
|
|
1219
|
+
"cancelReportOption": "取消/返回菜单",
|
|
1220
|
+
"invalidSelection": "❌ 选择无效。",
|
|
1221
|
+
"foundFilesInSelectedDirectories": "📊 找到了 {count} 选定目录中的文件:",
|
|
1222
|
+
"deletionOptions": "🗑️删除选项:",
|
|
1223
1223
|
"deleteAllFiles": "删除所有文件",
|
|
1224
|
-
"keepLast3Files": "
|
|
1225
|
-
"keepLast5Files": "
|
|
1226
|
-
"noFilesToDelete": "✅
|
|
1227
|
-
"filesToDeleteCount": "📋
|
|
1228
|
-
"filesToKeepCount": "📋
|
|
1229
|
-
"confirmDeletion": "
|
|
1230
|
-
"deletedFile": "✅
|
|
1231
|
-
"failedToDeleteFile": "❌
|
|
1232
|
-
"cancelled": "❌
|
|
1224
|
+
"keepLast3Files": "保留最后 3 个文件(按日期)",
|
|
1225
|
+
"keepLast5Files": "保留最后 5 个文件(按日期)",
|
|
1226
|
+
"noFilesToDelete": "✅ 没有要删除的文件。",
|
|
1227
|
+
"filesToDeleteCount": "📋 要删除的文件: {count}",
|
|
1228
|
+
"filesToKeepCount": "📋 要保留的文件: {count}",
|
|
1229
|
+
"confirmDeletion": "⚠️您确定要删除这些文件吗? (是/否):",
|
|
1230
|
+
"deletedFile": "✅ 删除: {filename}",
|
|
1231
|
+
"failedToDeleteFile": "❌ 删除失败 {filename}: {error}",
|
|
1232
|
+
"cancelled": "❌ 操作被取消。",
|
|
1233
1233
|
"init": {
|
|
1234
1234
|
"title": "🚀 初始化新语言"
|
|
1235
1235
|
},
|
|
1236
1236
|
"usage": {
|
|
1237
|
-
"title": "📊
|
|
1238
|
-
"noUsedKeysHint": "
|
|
1237
|
+
"title": "📊 检查密钥使用情况",
|
|
1238
|
+
"noUsedKeysHint": "找到了翻译,但在源代码中没有使用。检查 --source-dir 和 TranslationPatterns。"
|
|
1239
1239
|
},
|
|
1240
1240
|
"analyze": {
|
|
1241
1241
|
"title": "🔍 分析翻译"
|
|
@@ -1245,44 +1245,44 @@
|
|
|
1245
1245
|
},
|
|
1246
1246
|
"settings": {
|
|
1247
1247
|
"title": "⚙️ 设置管理",
|
|
1248
|
-
"separator": "
|
|
1248
|
+
"separator": "==============================================================="
|
|
1249
1249
|
},
|
|
1250
1250
|
"complete": {
|
|
1251
|
-
"deletingOldReport": "🗑️
|
|
1252
|
-
"generatingFreshAnalysis": "🔄
|
|
1253
|
-
"couldNotGenerate": "⚠️
|
|
1254
|
-
"reportNotFound": "⚠️
|
|
1255
|
-
"foundMissingKeys": "
|
|
1256
|
-
"couldNotParse": "⚠️
|
|
1251
|
+
"deletingOldReport": "🗑️ 删除旧的使用报告以进行新的分析",
|
|
1252
|
+
"generatingFreshAnalysis": "🔄 生成新的使用情况分析...",
|
|
1253
|
+
"couldNotGenerate": "⚠️ 无法生成使用情况分析。使用常见的缺失键。",
|
|
1254
|
+
"reportNotFound": "⚠️ 未找到使用报告。正在生成新的分析...",
|
|
1255
|
+
"foundMissingKeys": "🔍发现 {count} 使用分析中缺少密钥",
|
|
1256
|
+
"couldNotParse": "⚠️ 无法解析使用报告。使用常见的缺失键。",
|
|
1257
1257
|
"title": "🎯 完成翻译",
|
|
1258
|
-
"separator": "
|
|
1259
|
-
"sourceDir": "📁
|
|
1260
|
-
"sourceLanguage": "🔤 源语言:{sourceLanguage}",
|
|
1258
|
+
"separator": "===============================================================",
|
|
1259
|
+
"sourceDir": "📁 源码目录: {sourceDir}",
|
|
1260
|
+
"sourceLanguage": "🔤 源语言: {sourceLanguage}",
|
|
1261
1261
|
"dryRunMode": "🧪 试运行模式 - 不会修改任何文件",
|
|
1262
|
-
"languages": "🎯 目标语言:{languages}",
|
|
1263
|
-
"addingMissingKeys": "➕
|
|
1264
|
-
"processing": "🔄
|
|
1265
|
-
"addedKeys": "✅
|
|
1266
|
-
"changeDetails": "📝 {file}
|
|
1267
|
-
"noChangesNeeded": "✅ {language}
|
|
1268
|
-
"summaryTitle": "📊
|
|
1269
|
-
"totalChanges": "📝
|
|
1270
|
-
"languagesProcessed": "🌐
|
|
1271
|
-
"missingKeysAdded": "➕
|
|
1272
|
-
"nextStepsTitle": "📋
|
|
1273
|
-
"nextStep1": "1.
|
|
1262
|
+
"languages": "🎯 目标语言: {languages}",
|
|
1263
|
+
"addingMissingKeys": "➕ 将缺失的键添加到翻译文件中...",
|
|
1264
|
+
"processing": "🔄 加工中 {language}...",
|
|
1265
|
+
"addedKeys": "✅ 添加了 {count} 键",
|
|
1266
|
+
"changeDetails": "📝 {file}: {key}",
|
|
1267
|
+
"noChangesNeeded": "✅ 无需更改 {language}",
|
|
1268
|
+
"summaryTitle": "📊 完成总结",
|
|
1269
|
+
"totalChanges": "📝 总变化: {totalChanges}",
|
|
1270
|
+
"languagesProcessed": "🌐 处理的语言: {languagesProcessed}",
|
|
1271
|
+
"missingKeysAdded": "➕ 添加了缺失的按键: {missingKeysAdded}",
|
|
1272
|
+
"nextStepsTitle": "📋 下一步",
|
|
1273
|
+
"nextStep1": "1. 运行使用情况分析:",
|
|
1274
1274
|
"nextStep2": "2. 验证翻译:",
|
|
1275
|
-
"nextStep3": "3
|
|
1275
|
+
"nextStep3": "3.分析完整性:",
|
|
1276
1276
|
"allKeysAvailable": "🎉 所有翻译键现已可用!",
|
|
1277
|
-
"runWithoutDryRun": "💡
|
|
1278
|
-
"pressEnterToContinue": "按 Enter
|
|
1277
|
+
"runWithoutDryRun": "💡 在没有 --dry-run 的情况下运行来应用更改",
|
|
1278
|
+
"pressEnterToContinue": "按 Enter 键继续..."
|
|
1279
1279
|
},
|
|
1280
1280
|
"updatePackage": {
|
|
1281
1281
|
"title": "📦 更新 i18n-toolkit 包",
|
|
1282
|
-
"description": "
|
|
1282
|
+
"description": "这会将 i18n-toolkit 包更新到 npm 上可用的最新版本。",
|
|
1283
1283
|
"command": "运行命令",
|
|
1284
|
-
"confirm": "
|
|
1285
|
-
"updating": "
|
|
1284
|
+
"confirm": "您确定要继续更新吗? (是/否):",
|
|
1285
|
+
"updating": "正在更新包...这可能需要一些时间。",
|
|
1286
1286
|
"success": "✅ i18n-toolkit 更新成功!",
|
|
1287
1287
|
"error": "❌ 更新 i18n-toolkit 失败",
|
|
1288
1288
|
"cancelled": "❌ 更新已取消。"
|
|
@@ -1290,54 +1290,54 @@
|
|
|
1290
1290
|
},
|
|
1291
1291
|
"security": {
|
|
1292
1292
|
"pathValidationFailed": "路径验证失败",
|
|
1293
|
-
"invalidInputType": "
|
|
1293
|
+
"invalidInputType": "无效输入类型",
|
|
1294
1294
|
"pathTraversalAttempt": "路径遍历尝试",
|
|
1295
1295
|
"pathValidated": "✅ 路径验证成功",
|
|
1296
1296
|
"pathValidationError": "路径验证错误",
|
|
1297
|
-
"fileTooLarge": "
|
|
1298
|
-
"fileReadError": "
|
|
1299
|
-
"contentTooLargeForFile": "
|
|
1300
|
-
"fileWriteError": "
|
|
1301
|
-
"jsonStringTooLarge": "安全:JSON
|
|
1302
|
-
"jsonParseError": "安全:JSON 解析错误:{errorMessage}",
|
|
1297
|
+
"fileTooLarge": "安全性:文件太大: {filePath}",
|
|
1298
|
+
"fileReadError": "安全:文件读取错误: {errorMessage}",
|
|
1299
|
+
"contentTooLargeForFile": "安全性:内容对于文件来说太大: {filePath}",
|
|
1300
|
+
"fileWriteError": "安全:文件写入错误: {errorMessage}",
|
|
1301
|
+
"jsonStringTooLarge": "安全:JSON 字符串太大",
|
|
1302
|
+
"jsonParseError": "安全:JSON 解析错误: {errorMessage}",
|
|
1303
1303
|
"inputContainsDisallowedCharacters": "安全:输入包含不允许的字符",
|
|
1304
|
-
"unknownCommandArgument": "
|
|
1305
|
-
"unknown_command_argument": "
|
|
1306
|
-
"unknownConfigKey": "
|
|
1307
|
-
"unknown_config_key": "
|
|
1308
|
-
"securityAlert": "[安全警报] {timestamp}
|
|
1309
|
-
"contentTooLarge": "
|
|
1304
|
+
"unknownCommandArgument": "安全:未知的命令参数: {key}",
|
|
1305
|
+
"unknown_command_argument": "安全:未知的命令参数: {key}",
|
|
1306
|
+
"unknownConfigKey": "安全性:未知的配置密钥: {key}",
|
|
1307
|
+
"unknown_config_key": "安全性:未知的配置密钥: {key}",
|
|
1308
|
+
"securityAlert": "[安全警报] {timestamp}: {event}",
|
|
1309
|
+
"contentTooLarge": "安全性:内容对于文件来说太大: {validatedPath}",
|
|
1310
1310
|
"inputDisallowedCharacters": "安全:输入包含不允许的字符",
|
|
1311
|
-
"unknownCommandArg": "
|
|
1312
|
-
"logMessage": "[安全 {level}] {timestamp}
|
|
1313
|
-
"alertMessage": "[安全警报] {timestamp}
|
|
1314
|
-
"securityWarning": "[安全警告] {timestamp}
|
|
1315
|
-
"json_parse_error": "安全:JSON 解析错误:{errorMessage}",
|
|
1316
|
-
"file_too_large": "
|
|
1311
|
+
"unknownCommandArg": "未知的命令参数",
|
|
1312
|
+
"logMessage": "[安全 {level}] {timestamp}: {event}",
|
|
1313
|
+
"alertMessage": "[安全警报] {timestamp}: {event}",
|
|
1314
|
+
"securityWarning": "[安全警告] {timestamp}: {event}",
|
|
1315
|
+
"json_parse_error": "安全:JSON 解析错误: {errorMessage}",
|
|
1316
|
+
"file_too_large": "文件太大",
|
|
1317
1317
|
"file_read_error": "文件读取错误",
|
|
1318
|
-
"content_too_large_for_file": "
|
|
1318
|
+
"content_too_large_for_file": "内容对于文件来说太大",
|
|
1319
1319
|
"file_write_error": "文件写入错误",
|
|
1320
|
-
"json_string_too_large": "
|
|
1321
|
-
"recursion_detected": "
|
|
1322
|
-
"operation_timeout": "操作超时:{operation}",
|
|
1323
|
-
"operation_error": "
|
|
1324
|
-
"directory_read_error": "目录读取错误:{errorMessage}",
|
|
1320
|
+
"json_string_too_large": "Json 字符串太大",
|
|
1321
|
+
"recursion_detected": "检测到递归 {operation}",
|
|
1322
|
+
"operation_timeout": "操作超时: {operation}",
|
|
1323
|
+
"operation_error": "操作错误在 {operation}: {error}",
|
|
1324
|
+
"directory_read_error": "目录读取错误: {errorMessage}",
|
|
1325
1325
|
"security_alert": "安全警报"
|
|
1326
1326
|
},
|
|
1327
1327
|
"settings-cli": {
|
|
1328
1328
|
"settings": {
|
|
1329
1329
|
"mainMenu": {
|
|
1330
1330
|
"title": "主菜单:",
|
|
1331
|
-
"uiSettings": "
|
|
1331
|
+
"uiSettings": "用户界面设置",
|
|
1332
1332
|
"uiSettingsDesc": "语言、主题和界面选项",
|
|
1333
1333
|
"directorySettings": "目录设置",
|
|
1334
1334
|
"directorySettingsDesc": "源目录和输出目录路径",
|
|
1335
1335
|
"scriptDirectorySettings": "脚本目录设置",
|
|
1336
|
-
"scriptDirectorySettingsDesc": "
|
|
1336
|
+
"scriptDirectorySettingsDesc": "各个脚本操作的目录路径",
|
|
1337
1337
|
"processingSettings": "处理设置",
|
|
1338
|
-
"processingSettingsDesc": "
|
|
1338
|
+
"processingSettingsDesc": "批量大小、并发性和性能",
|
|
1339
1339
|
"advancedSettings": "高级设置",
|
|
1340
|
-
"advancedSettingsDesc": "
|
|
1340
|
+
"advancedSettingsDesc": "验证、记录和专家选项",
|
|
1341
1341
|
"viewAllSettings": "查看所有设置",
|
|
1342
1342
|
"viewAllSettingsDesc": "显示当前配置",
|
|
1343
1343
|
"importExport": "导入/导出",
|
|
@@ -1345,211 +1345,211 @@
|
|
|
1345
1345
|
"resetToDefaults": "重置为默认值",
|
|
1346
1346
|
"resetToDefaultsDesc": "恢复出厂设置",
|
|
1347
1347
|
"reportBug": "报告错误",
|
|
1348
|
-
"reportBugDesc": "在 GitHub
|
|
1348
|
+
"reportBugDesc": "在 GitHub 上提交问题报告",
|
|
1349
1349
|
"saveChanges": "保存更改",
|
|
1350
1350
|
"saveChangesDesc": "将当前设置保存到文件",
|
|
1351
|
-
"updatePackage": "
|
|
1351
|
+
"updatePackage": "更新包",
|
|
1352
1352
|
"updatePackageDesc": "通过 npm 更新 i18n-toolkit 包",
|
|
1353
1353
|
"help": "帮助",
|
|
1354
1354
|
"helpDesc": "显示详细帮助信息",
|
|
1355
|
-
"quit": "
|
|
1356
|
-
"quitDesc": "
|
|
1357
|
-
"unsavedChangesWarning": "
|
|
1358
|
-
"saveChangesBeforeQuit": "
|
|
1359
|
-
"selectOption": "
|
|
1360
|
-
"goodbyeMessage": "
|
|
1355
|
+
"quit": "辞职",
|
|
1356
|
+
"quitDesc": "退出设置(如果需要,有保存提示)",
|
|
1357
|
+
"unsavedChangesWarning": "⚠️您有未保存的更改",
|
|
1358
|
+
"saveChangesBeforeQuit": "您想在退出前保存更改吗? (是/否):",
|
|
1359
|
+
"selectOption": "选择一个选项:",
|
|
1360
|
+
"goodbyeMessage": "感谢您使用 i18n 设置管理器!"
|
|
1361
1361
|
},
|
|
1362
|
-
"goodbyeMessage": "
|
|
1363
|
-
"relativePathHint": "
|
|
1362
|
+
"goodbyeMessage": "感谢您使用 i18n 设置管理器!",
|
|
1363
|
+
"relativePathHint": "使用此目录中的相对路径(例如 ./src/i18n/locales)",
|
|
1364
1364
|
"currentDirectory": "当前项目目录"
|
|
1365
1365
|
},
|
|
1366
1366
|
"settings_manager": {
|
|
1367
1367
|
"error_loading_settings": "❌ 加载设置时出错:",
|
|
1368
1368
|
"error_saving_settings": "❌ 保存设置时出错:",
|
|
1369
|
-
"error_setting_value": "❌
|
|
1370
|
-
"missing_required_setting": "❌
|
|
1371
|
-
"invalid_language": "❌
|
|
1372
|
-
"invalid_source_language": "❌
|
|
1373
|
-
"default_languages_must_be_array": "❌
|
|
1374
|
-
"invalid_date_format": "❌
|
|
1375
|
-
"invalid_time_format": "❌ 无效的时间格式:{timeFormat}。有效格式:{validFormats}",
|
|
1376
|
-
"notifications_types_must_be_object": "❌
|
|
1377
|
-
"exclude_files_must_be_array": "❌
|
|
1378
|
-
"exclude_dirs_must_be_array": "❌
|
|
1379
|
-
"include_extensions_must_be_array": "❌ includeExtensions
|
|
1380
|
-
"invalid_batch_size": "❌
|
|
1381
|
-
"invalid_max_concurrent_files": "❌
|
|
1382
|
-
"invalid_sizing_threshold": "❌
|
|
1383
|
-
"invalid_timeout": "❌
|
|
1384
|
-
"invalid_sizing_format": "❌
|
|
1369
|
+
"error_setting_value": "❌ 错误设定值:",
|
|
1370
|
+
"missing_required_setting": "❌ 缺少所需设置: {prop}",
|
|
1371
|
+
"invalid_language": "❌ 无效语言: {language}",
|
|
1372
|
+
"invalid_source_language": "❌ 源语言无效: {sourceLanguage}",
|
|
1373
|
+
"default_languages_must_be_array": "❌defaultLanguages 必须是一个数组",
|
|
1374
|
+
"invalid_date_format": "❌ 日期格式无效: {dateFormat}。有效格式: {validFormats}",
|
|
1375
|
+
"invalid_time_format": "❌ 无效的时间格式: {timeFormat}。有效格式: {validFormats}",
|
|
1376
|
+
"notifications_types_must_be_object": "❌ notification.types 必须是一个对象",
|
|
1377
|
+
"exclude_files_must_be_array": "❌ exceptFiles 必须是一个数组",
|
|
1378
|
+
"exclude_dirs_must_be_array": "❌ excexDirs 必须是一个数组",
|
|
1379
|
+
"include_extensions_must_be_array": "❌ includeExtensions 必须是一个数组",
|
|
1380
|
+
"invalid_batch_size": "❌ 批量大小无效。必须是正数",
|
|
1381
|
+
"invalid_max_concurrent_files": "❌ 最大并发文件数无效。必须是正数",
|
|
1382
|
+
"invalid_sizing_threshold": "❌ 大小阈值无效。必须是正数",
|
|
1383
|
+
"invalid_timeout": "❌ 超时无效。必须至少 1000 毫秒",
|
|
1384
|
+
"invalid_sizing_format": "❌ 无效的尺寸格式: {sizingFormat}。有效格式: {validFormats}",
|
|
1385
1385
|
"error_validating_settings": "❌ 验证设置时出错:",
|
|
1386
|
-
"backup_created": "📋 已创建备份:{backupPath}",
|
|
1386
|
+
"backup_created": "📋 已创建备份: {backupPath}",
|
|
1387
1387
|
"error_creating_backup": "❌ 创建备份时出错:",
|
|
1388
|
-
"language_not_supported": "
|
|
1389
|
-
"ui_language_set": "🌍
|
|
1388
|
+
"language_not_supported": "语言 '{language}' 不支持。可用的: {availableLanguages}",
|
|
1389
|
+
"ui_language_set": "🌍 UI 语言设置为: {language}"
|
|
1390
1390
|
}
|
|
1391
1391
|
},
|
|
1392
1392
|
"settings": {
|
|
1393
1393
|
"title": "⚙️ 设置管理",
|
|
1394
|
-
"separator": "
|
|
1395
|
-
"goodbyeMessage": "
|
|
1396
|
-
"relativePathHint": "
|
|
1394
|
+
"separator": "===============================================================",
|
|
1395
|
+
"goodbyeMessage": "感谢您使用 i18ntk 设置管理器!",
|
|
1396
|
+
"relativePathHint": "使用此目录中的相对路径(例如 ./src/i18n/locales)",
|
|
1397
1397
|
"currentDirectory": "当前项目目录",
|
|
1398
|
-
"startingSettings": "
|
|
1399
|
-
"pin": "
|
|
1398
|
+
"startingSettings": "启动设置:",
|
|
1399
|
+
"pin": "别针:",
|
|
1400
1400
|
"reportBug": {
|
|
1401
1401
|
"title": "报告错误",
|
|
1402
|
-
"description": "
|
|
1403
|
-
"guidance": "
|
|
1404
|
-
"checkLogs": "
|
|
1405
|
-
"documentIssue": "
|
|
1406
|
-
"contactSupport": "
|
|
1407
|
-
"completed": "
|
|
1408
|
-
"instructions": "
|
|
1402
|
+
"description": "报告您遇到的任何问题或错误",
|
|
1403
|
+
"guidance": "有效报告问题:",
|
|
1404
|
+
"checkLogs": "1.检查项目目录中的调试日志",
|
|
1405
|
+
"documentIssue": "2. 记录问题以及重现步骤",
|
|
1406
|
+
"contactSupport": "3.联系您的系统管理员或支持团队",
|
|
1407
|
+
"completed": "显示错误报告指南",
|
|
1408
|
+
"instructions": "请按照上述说明报告错误。"
|
|
1409
1409
|
},
|
|
1410
1410
|
"mainMenu": {
|
|
1411
1411
|
"title": "主菜单:",
|
|
1412
|
-
"uiSettings": "
|
|
1412
|
+
"uiSettings": "用户界面设置",
|
|
1413
1413
|
"uiSettingsDesc": "语言、主题和界面选项",
|
|
1414
1414
|
"directorySettings": "目录设置",
|
|
1415
1415
|
"directorySettingsDesc": "源目录和输出目录路径",
|
|
1416
1416
|
"processingSettings": "处理设置",
|
|
1417
|
-
"processingSettingsDesc": "
|
|
1417
|
+
"processingSettingsDesc": "批量大小、并发性和性能",
|
|
1418
1418
|
"advancedSettings": "高级设置",
|
|
1419
|
-
"advancedSettingsDesc": "
|
|
1419
|
+
"advancedSettingsDesc": "验证、记录和专家选项",
|
|
1420
1420
|
"viewAllSettings": "查看所有设置",
|
|
1421
1421
|
"viewAllSettingsDesc": "显示当前配置",
|
|
1422
1422
|
"importExport": "导入/导出",
|
|
1423
|
-
"updatePackage": "
|
|
1423
|
+
"updatePackage": "更新包",
|
|
1424
1424
|
"updatePackageDesc": "通过 npm 更新 i18n-toolkit 包",
|
|
1425
|
-
"importExportDesc": "
|
|
1425
|
+
"importExportDesc": "备份和恢复设置",
|
|
1426
1426
|
"resetToDefaults": "重置为默认值",
|
|
1427
1427
|
"resetToDefaultsDesc": "恢复出厂设置",
|
|
1428
1428
|
"reportBug": "报告错误",
|
|
1429
|
-
"reportBugDesc": "在 GitHub
|
|
1429
|
+
"reportBugDesc": "在 GitHub 上提交问题报告",
|
|
1430
1430
|
"saveChanges": "保存更改",
|
|
1431
1431
|
"saveChangesDesc": "将当前设置保存到文件",
|
|
1432
1432
|
"help": "帮助",
|
|
1433
1433
|
"helpDesc": "显示详细帮助信息",
|
|
1434
|
-
"quit": "
|
|
1435
|
-
"quitDesc": "
|
|
1436
|
-
"unsavedChangesWarning": "
|
|
1437
|
-
"saveChangesBeforeQuit": "
|
|
1438
|
-
"selectOption": "
|
|
1439
|
-
"goodbyeMessage": "
|
|
1440
|
-
"selectSettingPrompt": "
|
|
1434
|
+
"quit": "辞职",
|
|
1435
|
+
"quitDesc": "退出设置(如果需要,有保存提示)",
|
|
1436
|
+
"unsavedChangesWarning": "⚠️您有未保存的更改",
|
|
1437
|
+
"saveChangesBeforeQuit": "您想在退出前保存更改吗? (是/否):",
|
|
1438
|
+
"selectOption": "选择一个选项:",
|
|
1439
|
+
"goodbyeMessage": "感谢您使用 i18n 设置管理器!",
|
|
1440
|
+
"selectSettingPrompt": "选择要编辑的设置(或选择“b”返回):",
|
|
1441
1441
|
"enterNewValue": "输入新值:",
|
|
1442
1442
|
"updatedSuccessfully": "{setting} 更新成功!",
|
|
1443
1443
|
"scriptDirectorySettings": "脚本目录设置",
|
|
1444
|
-
"scriptDirectoryDesc": "
|
|
1445
|
-
"scriptDirectorySettingsDesc": "
|
|
1444
|
+
"scriptDirectoryDesc": "为每个脚本指定自定义目录",
|
|
1445
|
+
"scriptDirectorySettingsDesc": "您可以为每个脚本设置自定义目录。如果未设置,将使用全局设置。",
|
|
1446
1446
|
"currentDirectory": "当前项目目录",
|
|
1447
1447
|
"securitySettings": "安全设置",
|
|
1448
|
-
"securitySettingsDesc": "管理员 PIN
|
|
1448
|
+
"securitySettingsDesc": "管理员 PIN 码和其他安全选项",
|
|
1449
1449
|
"backupSettings": "备份设置",
|
|
1450
|
-
"backupSettingsDesc": "
|
|
1450
|
+
"backupSettingsDesc": "备份和恢复配置设置"
|
|
1451
1451
|
},
|
|
1452
1452
|
"updatePackage": {
|
|
1453
|
-
"title": "
|
|
1453
|
+
"title": "更新包",
|
|
1454
1454
|
"description": "通过 npm 更新 i18n-toolkit 包",
|
|
1455
|
-
"command": "npm
|
|
1455
|
+
"command": "npm 更新 i18ntk -g",
|
|
1456
1456
|
"success": "更新成功完成。",
|
|
1457
1457
|
"failed": "更新失败。",
|
|
1458
|
-
"prompt": "
|
|
1459
|
-
"promptDesc": "注意:这会将 i18ntk
|
|
1458
|
+
"prompt": "您想立即更新软件包吗? (是/否):",
|
|
1459
|
+
"promptDesc": "注意:这会将 i18ntk 软件包更新到最新版本。",
|
|
1460
1460
|
"confirm": "y",
|
|
1461
1461
|
"cancelled": "更新已取消。",
|
|
1462
1462
|
"error": "更新包失败",
|
|
1463
1463
|
"updating": "正在更新包..."
|
|
1464
1464
|
},
|
|
1465
1465
|
"admin": {
|
|
1466
|
-
"selectOption": "
|
|
1467
|
-
"updateSuccess": "管理员 PIN
|
|
1468
|
-
"updateFailed": "
|
|
1469
|
-
"protectionRemoved": "管理员 PIN
|
|
1470
|
-
"configSuccess": "管理员 PIN
|
|
1471
|
-
"configFailed": "
|
|
1472
|
-
"setupPinPrompt": "
|
|
1473
|
-
"pinUpdatedSuccess": "管理员 PIN
|
|
1474
|
-
"pinUpdatedFailed": "
|
|
1475
|
-
"pinRemoved": "管理员 PIN
|
|
1476
|
-
"pinConfiguredSuccess": "管理员 PIN
|
|
1477
|
-
"pinConfiguredFailed": "
|
|
1478
|
-
"accessDenied": "❌
|
|
1479
|
-
"setupPin": "🔐
|
|
1480
|
-
"setupFailed": "❌ 设置管理员 PIN
|
|
1481
|
-
"pinConfigured": "📌 管理员 PIN
|
|
1466
|
+
"selectOption": "选择选项:",
|
|
1467
|
+
"updateSuccess": "管理员 PIN 码更新成功!",
|
|
1468
|
+
"updateFailed": "无法更新管理员 PIN。",
|
|
1469
|
+
"protectionRemoved": "管理员 PIN 保护已删除。",
|
|
1470
|
+
"configSuccess": "管理员 PIN 码配置成功!",
|
|
1471
|
+
"configFailed": "无法配置管理员 PIN。",
|
|
1472
|
+
"setupPinPrompt": "您想设置管理员 PIN 码吗? (是/否):",
|
|
1473
|
+
"pinUpdatedSuccess": "管理员 PIN 码更新成功!",
|
|
1474
|
+
"pinUpdatedFailed": "无法更新管理员 PIN。",
|
|
1475
|
+
"pinRemoved": "管理员 PIN 保护已删除。",
|
|
1476
|
+
"pinConfiguredSuccess": "管理员 PIN 码配置成功!",
|
|
1477
|
+
"pinConfiguredFailed": "无法配置管理员 PIN。",
|
|
1478
|
+
"accessDenied": "❌ 访问被拒绝。返回菜单。",
|
|
1479
|
+
"setupPin": "🔐 设置管理员 PIN...",
|
|
1480
|
+
"setupFailed": "❌ 设置管理员 PIN 码失败。设置未更改。",
|
|
1481
|
+
"pinConfigured": "📌 管理员 PIN 码当前已配置。",
|
|
1482
1482
|
"options": "选项:",
|
|
1483
|
-
"changePin": "1
|
|
1484
|
-
"removePin": "2
|
|
1485
|
-
"cancel": "3
|
|
1486
|
-
"verifyCurrentPin": "🔐
|
|
1487
|
-
"settingNewPin": "🔄
|
|
1488
|
-
"verifyToRemove": "🔐 验证当前 PIN
|
|
1483
|
+
"changePin": "1) 更改现有PIN码",
|
|
1484
|
+
"removePin": "2) 解除PIN保护",
|
|
1485
|
+
"cancel": "3) 取消",
|
|
1486
|
+
"verifyCurrentPin": "🔐 首先验证当前的 PIN:",
|
|
1487
|
+
"settingNewPin": "🔄 设置新的 PIN...",
|
|
1488
|
+
"verifyToRemove": "🔐 验证当前 PIN 码以取消保护:",
|
|
1489
1489
|
"noPinConfigured": "🔓 当前未配置管理员 PIN。",
|
|
1490
|
-
"pinBenefits": "设置管理员 PIN
|
|
1490
|
+
"pinBenefits": "设置管理员 PIN 码将为以下方面增加安全性:",
|
|
1491
1491
|
"benefitSecurity": "• 更改安全设置",
|
|
1492
1492
|
"benefitAdvanced": "• 修改高级配置",
|
|
1493
1493
|
"benefitDebug": "• 访问调试工具",
|
|
1494
1494
|
"benefitReset": "• 重置设置",
|
|
1495
|
-
"setupCancelled": "⏭️
|
|
1496
|
-
"operationCancelled": "❌
|
|
1497
|
-
"startingSettings": "🎛️
|
|
1498
|
-
"authRequired": "🔒
|
|
1499
|
-
"pinSetupTitle": "管理员 PIN
|
|
1495
|
+
"setupCancelled": "⏭️ 管理员 PIN 码设置已取消。",
|
|
1496
|
+
"operationCancelled": "❌ 操作被取消。",
|
|
1497
|
+
"startingSettings": "🎛️ 启动设置 CLI...",
|
|
1498
|
+
"authRequired": "🔒 需要管理员身份验证: {label}",
|
|
1499
|
+
"pinSetupTitle": "管理员 PIN 码设置",
|
|
1500
1500
|
"browserOpenFailed": "无法自动打开浏览器。",
|
|
1501
|
-
"manualVisit": "
|
|
1502
|
-
"browserOpened": "✅
|
|
1501
|
+
"manualVisit": "请手动访问: {url}",
|
|
1502
|
+
"browserOpened": "✅ 浏览器打开成功!"
|
|
1503
1503
|
},
|
|
1504
1504
|
"importExport": {
|
|
1505
|
-
"title": "
|
|
1506
|
-
"export": "
|
|
1507
|
-
"import": "
|
|
1508
|
-
"backup": "
|
|
1509
|
-
"enterFilename": "输入文件名(或按 Enter
|
|
1510
|
-
"exportSuccess": "
|
|
1511
|
-
"exportFailed": "
|
|
1505
|
+
"title": "导入/导出设置",
|
|
1506
|
+
"export": "导出设置",
|
|
1507
|
+
"import": "导入设置",
|
|
1508
|
+
"backup": "创建备份",
|
|
1509
|
+
"enterFilename": "输入文件名(或按 Enter 键默认):",
|
|
1510
|
+
"exportSuccess": "设置导出到 {file}",
|
|
1511
|
+
"exportFailed": "导出设置失败: {error}",
|
|
1512
1512
|
"importFilename": "输入要导入的文件名:",
|
|
1513
1513
|
"fileNotFound": "未找到文件。",
|
|
1514
1514
|
"invalidFormat": "设置文件格式无效。",
|
|
1515
|
-
"confirmImport": "
|
|
1515
|
+
"confirmImport": "这将替换所有当前设置。继续? (是/否):",
|
|
1516
1516
|
"importSuccess": "设置导入成功。",
|
|
1517
|
-
"importFailed": "
|
|
1518
|
-
"backupSuccess": "
|
|
1519
|
-
"backupFailed": "
|
|
1517
|
+
"importFailed": "导入设置失败: {error}",
|
|
1518
|
+
"backupSuccess": "创建备份: {file}",
|
|
1519
|
+
"backupFailed": "创建备份失败: {error}",
|
|
1520
1520
|
"exportFilenamePrompt": "输入导出文件名:",
|
|
1521
1521
|
"importConfirm": "导入此设置文件? (是/否):",
|
|
1522
1522
|
"importFilenamePrompt": "输入导入文件名:",
|
|
1523
1523
|
"manageBackups": "管理备份",
|
|
1524
1524
|
"restore": "恢复设置"
|
|
1525
1525
|
},
|
|
1526
|
-
"selectOption": "
|
|
1527
|
-
"resetToDefaultsTitle": "
|
|
1528
|
-
"resetWarning1": "
|
|
1529
|
-
"resetWarning2": "
|
|
1530
|
-
"resetConfirm": "
|
|
1531
|
-
"resetSuccess": "
|
|
1532
|
-
"resetFailed": "重置设置失败:{error}",
|
|
1533
|
-
"resetDone": "
|
|
1526
|
+
"selectOption": "选择一个选项:",
|
|
1527
|
+
"resetToDefaultsTitle": "将设置重置为默认值",
|
|
1528
|
+
"resetWarning1": "⚠️ 这会将所有设置重置为其默认值。",
|
|
1529
|
+
"resetWarning2": "此操作无法撤消。",
|
|
1530
|
+
"resetConfirm": "您确定要继续吗? (是/否):",
|
|
1531
|
+
"resetSuccess": "设置成功重置为默认值。",
|
|
1532
|
+
"resetFailed": "重置设置失败: {error}",
|
|
1533
|
+
"resetDone": "设置成功重置为默认值。",
|
|
1534
1534
|
"resetScriptDirsDone": "脚本目录已成功重置为系统默认值。",
|
|
1535
|
-
"saveSuccess": "
|
|
1536
|
-
"saveFailed": "
|
|
1537
|
-
"saveError": "
|
|
1538
|
-
"pressEnter": "按 Enter
|
|
1539
|
-
"initFailed": "初始化设置失败:{error}",
|
|
1535
|
+
"saveSuccess": "设置保存成功。",
|
|
1536
|
+
"saveFailed": "无法保存设置。",
|
|
1537
|
+
"saveError": "提供的设置无效",
|
|
1538
|
+
"pressEnter": "按 Enter 键继续...",
|
|
1539
|
+
"initFailed": "初始化设置失败: {error}",
|
|
1540
1540
|
"invalidValueFormat": "值格式无效。",
|
|
1541
1541
|
"help": {
|
|
1542
1542
|
"title": "设置帮助",
|
|
1543
1543
|
"navigationTitle": "导航",
|
|
1544
|
-
"navigation1": "1.
|
|
1545
|
-
"navigation2": "2
|
|
1546
|
-
"navigation3": "3. 处理设置 -
|
|
1547
|
-
"navigation4": "4. 高级设置 -
|
|
1548
|
-
"categoriesTitle": "
|
|
1549
|
-
"categoryUI": "•
|
|
1550
|
-
"categoryDirectory": "•
|
|
1551
|
-
"categoryProcessing": "•
|
|
1552
|
-
"categoryAdvanced": "•
|
|
1544
|
+
"navigation1": "1. 常规设置-配置UI语言、主题和基本首选项",
|
|
1545
|
+
"navigation2": "2.目录设置-设置翻译文件的源目录和输出目录",
|
|
1546
|
+
"navigation3": "3. 处理设置 - 配置批量大小、并发性和性能选项",
|
|
1547
|
+
"navigation4": "4. 高级设置 - 访问验证、日志记录和专家配置选项",
|
|
1548
|
+
"categoriesTitle": "设置类别",
|
|
1549
|
+
"categoryUI": "• UI 设置:界面语言、颜色主题和显示首选项",
|
|
1550
|
+
"categoryDirectory": "• 目录设置:源文件位置和输出报告目录",
|
|
1551
|
+
"categoryProcessing": "• 处理设置:批处理、文件限制和性能调整",
|
|
1552
|
+
"categoryAdvanced": "• 高级设置:调试模式、审核日志记录和安全选项",
|
|
1553
1553
|
"envVarsTitle": "环境变量",
|
|
1554
1554
|
"envVar1": "• I18N_SOURCE_DIR:覆盖默认源目录路径",
|
|
1555
1555
|
"envVar2": "• I18N_OUTPUT_DIR:覆盖默认输出目录路径",
|
|
@@ -1558,13 +1558,13 @@
|
|
|
1558
1558
|
"cliUsage1": "• npx i18ntk --settings:打开交互式设置菜单",
|
|
1559
1559
|
"cliUsage2": "• npx i18ntk --settings --lang de:以德语打开设置",
|
|
1560
1560
|
"cliUsage3": "• npx i18ntk --reset-settings:将所有设置重置为默认值",
|
|
1561
|
-
"navigation": "
|
|
1562
|
-
"editing": "
|
|
1563
|
-
"saving": "
|
|
1561
|
+
"navigation": "使用数字键选择选项,使用“b”返回",
|
|
1562
|
+
"editing": "出现提示时输入新值,或按 Enter 键保持当前值",
|
|
1563
|
+
"saving": "退出前使用 's' 保存更改",
|
|
1564
1564
|
"reset": "使用选项 7 将所有设置重置为默认值"
|
|
1565
1565
|
},
|
|
1566
1566
|
"categories": {
|
|
1567
|
-
"uiSettings": "
|
|
1567
|
+
"uiSettings": "用户界面设置",
|
|
1568
1568
|
"directorySettings": "目录设置",
|
|
1569
1569
|
"processingSettings": "处理设置",
|
|
1570
1570
|
"advancedSettings": "高级设置",
|
|
@@ -1572,359 +1572,389 @@
|
|
|
1572
1572
|
"securitySettings": "安全设置"
|
|
1573
1573
|
},
|
|
1574
1574
|
"security": {
|
|
1575
|
-
"title": "
|
|
1575
|
+
"title": "🔐安全设置",
|
|
1576
1576
|
"description": "配置管理员 PIN 保护和安全选项",
|
|
1577
|
-
"currentPin": "
|
|
1578
|
-
"pinConfigured": "✅
|
|
1577
|
+
"currentPin": "当前密码:",
|
|
1578
|
+
"pinConfigured": "✅ 配置完毕",
|
|
1579
1579
|
"pinNotConfigured": "❌ 未配置",
|
|
1580
|
-
"pinDisplay": "
|
|
1580
|
+
"pinDisplay": "密码显示:",
|
|
1581
1581
|
"menu": {
|
|
1582
|
-
"enableDisable": "1
|
|
1583
|
-
"setupChange": "2
|
|
1584
|
-
"sessionTimeout": "3
|
|
1585
|
-
"maxAttempts": "4
|
|
1586
|
-
"lockoutDuration": "5
|
|
1587
|
-
"back": "b
|
|
1582
|
+
"enableDisable": "1) 启用/禁用管理员 PIN",
|
|
1583
|
+
"setupChange": "2) 设置/更改管理员 PIN 码",
|
|
1584
|
+
"sessionTimeout": "3) 会话超时",
|
|
1585
|
+
"maxAttempts": "4) 最大失败尝试次数",
|
|
1586
|
+
"lockoutDuration": "5) 锁定时间",
|
|
1587
|
+
"back": "b) 返回主菜单"
|
|
1588
1588
|
},
|
|
1589
1589
|
"prompts": {
|
|
1590
|
-
"enablePin": "启用管理员 PIN
|
|
1591
|
-
"disablePin": "禁用管理员 PIN
|
|
1592
|
-
"enterTimeout": "
|
|
1590
|
+
"enablePin": "启用管理员 PIN 码保护吗? (是/否):",
|
|
1591
|
+
"disablePin": "禁用管理员 PIN 码保护? (是/否):",
|
|
1592
|
+
"enterTimeout": "输入会话超时(分钟):",
|
|
1593
1593
|
"enterMaxAttempts": "输入最大失败尝试次数:",
|
|
1594
1594
|
"enterLockoutDuration": "输入锁定持续时间(分钟):"
|
|
1595
1595
|
},
|
|
1596
1596
|
"messages": {
|
|
1597
|
-
"pinEnabled": "管理员 PIN
|
|
1598
|
-
"pinDisabled": "管理员 PIN
|
|
1599
|
-
"timeoutUpdated": "
|
|
1600
|
-
"maxAttemptsUpdated": "
|
|
1601
|
-
"lockoutDurationUpdated": "
|
|
1597
|
+
"pinEnabled": "管理员 PIN 码保护已启用",
|
|
1598
|
+
"pinDisabled": "管理员 PIN 码保护已禁用",
|
|
1599
|
+
"timeoutUpdated": "会话超时更新为 {minutes} 分钟",
|
|
1600
|
+
"maxAttemptsUpdated": "最大失败尝试次数更新为 {attempts}",
|
|
1601
|
+
"lockoutDurationUpdated": "锁定持续时间更新为 {minutes} 分钟"
|
|
1602
1602
|
}
|
|
1603
1603
|
},
|
|
1604
1604
|
"fields": {
|
|
1605
|
-
"backup": {
|
|
1606
|
-
"
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
"
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
"
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
"
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
"
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
"
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
"help": "确认备份操作"
|
|
1635
|
-
}
|
|
1605
|
+
"backup.enabled": {
|
|
1606
|
+
"label": "Enable Backup",
|
|
1607
|
+
"description": "Enable automatic backup of settings",
|
|
1608
|
+
"help": "Enable/disable backup feature"
|
|
1609
|
+
},
|
|
1610
|
+
"backup.singleFileMode": {
|
|
1611
|
+
"label": "Single File Mode",
|
|
1612
|
+
"description": "Use single file for backups",
|
|
1613
|
+
"help": "Backup settings in a single file"
|
|
1614
|
+
},
|
|
1615
|
+
"backup.singleBackupFile": {
|
|
1616
|
+
"label": "Backup File Path",
|
|
1617
|
+
"description": "Path to the backup file",
|
|
1618
|
+
"help": "Path to the single backup file"
|
|
1619
|
+
},
|
|
1620
|
+
"backup.retentionDays": {
|
|
1621
|
+
"label": "Retention Period",
|
|
1622
|
+
"description": "Days to keep backup files",
|
|
1623
|
+
"help": "Number of days to retain old backup files"
|
|
1624
|
+
},
|
|
1625
|
+
"backup.maxBackups": {
|
|
1626
|
+
"label": "Maximum Backups",
|
|
1627
|
+
"description": "Maximum backup files to keep",
|
|
1628
|
+
"help": "Maximum number of backup files to keep"
|
|
1629
|
+
},
|
|
1630
|
+
"backup.confirm": {
|
|
1631
|
+
"label": "Confirm Backup",
|
|
1632
|
+
"description": "Require confirmation for backup operations",
|
|
1633
|
+
"help": "Confirm backup operation"
|
|
1636
1634
|
},
|
|
1637
1635
|
"i18nDir": {
|
|
1638
1636
|
"label": "国际化目录",
|
|
1639
1637
|
"description": "包含翻译文件的目录",
|
|
1640
|
-
"current": "
|
|
1641
|
-
"help": "
|
|
1638
|
+
"current": "当前的: {value}",
|
|
1639
|
+
"help": "包含翻译文件的目录路径"
|
|
1642
1640
|
},
|
|
1643
1641
|
"projectRoot": {
|
|
1644
|
-
"label": "
|
|
1645
|
-
"description": "
|
|
1646
|
-
"current": "
|
|
1642
|
+
"label": "项目根",
|
|
1643
|
+
"description": "项目根目录",
|
|
1644
|
+
"current": "当前的: {value}",
|
|
1647
1645
|
"help": "项目根目录的路径"
|
|
1648
1646
|
},
|
|
1649
1647
|
"checkUsage": {
|
|
1650
1648
|
"usage_analysis_failed": "使用情况分析失败",
|
|
1651
1649
|
"usage_analysis_success": "使用情况分析成功",
|
|
1652
1650
|
"usage_analysis_complete": "使用情况分析完成",
|
|
1653
|
-
"usage_analysis_in_progress": "
|
|
1654
|
-
"usage_analysis_started": "
|
|
1655
|
-
"usage_analysis_skipped": "
|
|
1651
|
+
"usage_analysis_in_progress": "使用情况分析正在进行中",
|
|
1652
|
+
"usage_analysis_started": "使用情况分析开始",
|
|
1653
|
+
"usage_analysis_skipped": "已跳过使用情况分析"
|
|
1656
1654
|
},
|
|
1657
1655
|
"language": {
|
|
1658
1656
|
"label": "界面语言",
|
|
1659
|
-
"description": "
|
|
1660
|
-
"current": "
|
|
1661
|
-
"help": "
|
|
1657
|
+
"description": "用户界面语言",
|
|
1658
|
+
"current": "当前的: {value}",
|
|
1659
|
+
"help": "选择您喜欢的界面语言"
|
|
1662
1660
|
},
|
|
1663
1661
|
"scriptDirectories": {
|
|
1664
1662
|
"analyzeLabel": "分析脚本目录",
|
|
1665
|
-
"analyzeHelp": "
|
|
1666
|
-
"completeLabel": "
|
|
1663
|
+
"analyzeHelp": "分析脚本目录中的问题",
|
|
1664
|
+
"completeLabel": "完整的安装目录",
|
|
1667
1665
|
"initLabel": "初始化脚本目录",
|
|
1668
1666
|
"manageLabel": "管理脚本目录",
|
|
1669
|
-
"sizingLabel": "
|
|
1667
|
+
"sizingLabel": "调整脚本目录",
|
|
1670
1668
|
"summaryLabel": "摘要报告目录",
|
|
1671
1669
|
"usageLabel": "使用报告目录",
|
|
1672
1670
|
"validateLabel": "验证脚本目录"
|
|
1673
1671
|
},
|
|
1674
1672
|
"theme": {
|
|
1675
|
-
"label": "
|
|
1676
|
-
"description": "
|
|
1677
|
-
"current": "
|
|
1678
|
-
"help": "
|
|
1673
|
+
"label": "颜色主题",
|
|
1674
|
+
"description": "UI主题偏好",
|
|
1675
|
+
"current": "当前的: {value}",
|
|
1676
|
+
"help": "选择浅色和深色主题"
|
|
1679
1677
|
},
|
|
1680
1678
|
"dateFormat": {
|
|
1681
1679
|
"label": "日期格式",
|
|
1682
1680
|
"description": "显示日期的格式",
|
|
1683
|
-
"current": "
|
|
1684
|
-
"help": "
|
|
1681
|
+
"current": "当前的: {value}",
|
|
1682
|
+
"help": "选择日期在报告中的显示方式"
|
|
1685
1683
|
},
|
|
1686
1684
|
"notifications": {
|
|
1687
1685
|
"enabled": {
|
|
1688
1686
|
"label": "启用通知",
|
|
1689
1687
|
"description": "显示桌面通知",
|
|
1690
|
-
"current": "
|
|
1691
|
-
"help": "
|
|
1688
|
+
"current": "当前的: {value}",
|
|
1689
|
+
"help": "启用已完成操作的桌面通知"
|
|
1692
1690
|
}
|
|
1693
1691
|
},
|
|
1694
1692
|
"sourceDir": {
|
|
1695
1693
|
"label": "源目录",
|
|
1696
1694
|
"description": "包含翻译文件的目录",
|
|
1697
|
-
"current": "
|
|
1698
|
-
"help": "
|
|
1695
|
+
"current": "当前的: {value}",
|
|
1696
|
+
"help": "包含源翻译文件的目录路径"
|
|
1699
1697
|
},
|
|
1700
1698
|
"sourceLanguage": {
|
|
1701
1699
|
"label": "源语言",
|
|
1702
|
-
"description": "
|
|
1703
|
-
"current": "
|
|
1700
|
+
"description": "主要翻译语言",
|
|
1701
|
+
"current": "当前的: {value}",
|
|
1704
1702
|
"help": "用作翻译源的主要语言"
|
|
1705
1703
|
},
|
|
1706
1704
|
"outputDir": {
|
|
1707
1705
|
"label": "输出目录",
|
|
1708
1706
|
"description": "生成报告的目录",
|
|
1709
|
-
"current": "
|
|
1710
|
-
"help": "
|
|
1707
|
+
"current": "当前的: {value}",
|
|
1708
|
+
"help": "报告和处理后的文件的保存位置"
|
|
1711
1709
|
},
|
|
1712
1710
|
"batchSize": {
|
|
1713
1711
|
"label": "批量大小",
|
|
1714
|
-
"description": "
|
|
1715
|
-
"current": "
|
|
1716
|
-
"help": "
|
|
1712
|
+
"description": "每批次处理的物品数量",
|
|
1713
|
+
"current": "当前的: {value}",
|
|
1714
|
+
"help": "每批处理多少个文件"
|
|
1717
1715
|
},
|
|
1718
1716
|
"maxConcurrentFiles": {
|
|
1719
1717
|
"label": "最大并发文件数",
|
|
1720
1718
|
"description": "同时处理的最大文件数",
|
|
1721
|
-
"current": "
|
|
1722
|
-
"help": "
|
|
1719
|
+
"current": "当前的: {value}",
|
|
1720
|
+
"help": "同时处理的最大文件数"
|
|
1723
1721
|
},
|
|
1724
1722
|
"sizingThreshold": {
|
|
1725
|
-
"label": "
|
|
1726
|
-
"description": "
|
|
1727
|
-
"current": "
|
|
1728
|
-
"help": "
|
|
1723
|
+
"label": "尺寸阈值 (%)",
|
|
1724
|
+
"description": "尺寸变化警告阈值",
|
|
1725
|
+
"current": "当前的: {value}%",
|
|
1726
|
+
"help": "用于检测尺寸不匹配的百分比阈值"
|
|
1729
1727
|
},
|
|
1730
1728
|
"strictMode": {
|
|
1731
1729
|
"label": "严格验证模式",
|
|
1732
1730
|
"description": "启用严格验证模式",
|
|
1733
|
-
"current": "
|
|
1731
|
+
"current": "当前的: {value}",
|
|
1734
1732
|
"help": "对翻译文件启用严格验证"
|
|
1735
1733
|
},
|
|
1736
1734
|
"enableAuditLog": {
|
|
1737
1735
|
"label": "启用审核日志",
|
|
1738
1736
|
"description": "跟踪所有翻译更改",
|
|
1739
|
-
"current": "
|
|
1740
|
-
"help": "
|
|
1737
|
+
"current": "当前的: {value}",
|
|
1738
|
+
"help": "记录对翻译文件所做的所有更改"
|
|
1741
1739
|
},
|
|
1742
1740
|
"backupBeforeChanges": {
|
|
1743
1741
|
"label": "自动备份",
|
|
1744
|
-
"description": "
|
|
1745
|
-
"current": "
|
|
1746
|
-
"help": "
|
|
1742
|
+
"description": "修改前创建备份",
|
|
1743
|
+
"current": "当前的: {value}",
|
|
1744
|
+
"help": "进行更改之前自动创建备份"
|
|
1747
1745
|
},
|
|
1748
1746
|
"advanced_maxConcurrentFiles": {
|
|
1749
1747
|
"label": "最大并发文件数",
|
|
1750
1748
|
"description": "同时处理的最大文件数",
|
|
1751
|
-
"current": "
|
|
1752
|
-
"help": "
|
|
1749
|
+
"current": "当前的: {value}",
|
|
1750
|
+
"help": "同时处理的最大文件数"
|
|
1753
1751
|
},
|
|
1754
1752
|
"advanced_strictMode": {
|
|
1755
1753
|
"label": "严格验证模式",
|
|
1756
1754
|
"description": "启用严格验证模式",
|
|
1757
|
-
"current": "
|
|
1755
|
+
"current": "当前的: {value}",
|
|
1758
1756
|
"help": "对翻译文件启用严格验证"
|
|
1759
1757
|
},
|
|
1760
1758
|
"adminPinEnabled": {
|
|
1761
|
-
"label": "管理员 PIN
|
|
1762
|
-
"description": "
|
|
1763
|
-
"current": "
|
|
1764
|
-
"help": "
|
|
1759
|
+
"label": "管理员 PIN 码保护",
|
|
1760
|
+
"description": "为敏感设置启用管理员 PIN 身份验证",
|
|
1761
|
+
"current": "当前的: {value}",
|
|
1762
|
+
"help": "需要管理员 PIN 码才能更改安全和高级设置"
|
|
1765
1763
|
},
|
|
1766
1764
|
"sessionTimeout": {
|
|
1767
1765
|
"label": "会话超时",
|
|
1768
|
-
"description": "
|
|
1769
|
-
"current": "
|
|
1770
|
-
"help": "
|
|
1766
|
+
"description": "管理会话超时(以分钟为单位)",
|
|
1767
|
+
"current": "当前的: {value} 分钟",
|
|
1768
|
+
"help": "在需要重新身份验证之前,管理会话保持活动状态多长时间"
|
|
1771
1769
|
},
|
|
1772
1770
|
"maxFailedAttempts": {
|
|
1773
1771
|
"label": "最大失败尝试次数",
|
|
1774
|
-
"description": "
|
|
1775
|
-
"current": "
|
|
1776
|
-
"help": "
|
|
1772
|
+
"description": "锁定前最大失败 PIN 尝试次数",
|
|
1773
|
+
"current": "当前的: {value} 尝试",
|
|
1774
|
+
"help": "临时锁定前允许尝试 PIN 码失败的次数"
|
|
1777
1775
|
},
|
|
1778
1776
|
"lockoutDuration": {
|
|
1779
|
-
"label": "
|
|
1780
|
-
"description": "
|
|
1781
|
-
"current": "
|
|
1782
|
-
"help": "
|
|
1777
|
+
"label": "锁定时间",
|
|
1778
|
+
"description": "尝试失败后锁定的持续时间",
|
|
1779
|
+
"current": "当前的: {value} 分钟",
|
|
1780
|
+
"help": "最大失败尝试次数后系统保持锁定状态多长时间"
|
|
1783
1781
|
},
|
|
1784
1782
|
"scriptDirectories_analyze": {
|
|
1785
1783
|
"label": "分析脚本目录",
|
|
1786
1784
|
"description": "分析脚本的自定义目录",
|
|
1787
|
-
"current": "
|
|
1785
|
+
"current": "当前的: {value}",
|
|
1788
1786
|
"help": "为分析脚本指定自定义源目录。留空以使用全局设置。"
|
|
1789
1787
|
},
|
|
1790
1788
|
"scriptDirectories_complete": {
|
|
1791
|
-
"label": "
|
|
1792
|
-
"description": "
|
|
1793
|
-
"current": "
|
|
1794
|
-
"help": "
|
|
1789
|
+
"label": "完整的安装目录",
|
|
1790
|
+
"description": "完整安装脚本的自定义目录",
|
|
1791
|
+
"current": "当前的: {value}",
|
|
1792
|
+
"help": "为完整的安装脚本指定自定义源目录。留空以使用全局设置。"
|
|
1795
1793
|
},
|
|
1796
1794
|
"scriptDirectories_init": {
|
|
1797
1795
|
"label": "初始化脚本目录",
|
|
1798
1796
|
"description": "初始化脚本的自定义目录",
|
|
1799
|
-
"current": "
|
|
1800
|
-
"help": "
|
|
1797
|
+
"current": "当前的: {value}",
|
|
1798
|
+
"help": "指定初始化脚本的自定义源目录。留空以使用全局设置。"
|
|
1801
1799
|
},
|
|
1802
1800
|
"scriptDirectories_manage": {
|
|
1803
1801
|
"label": "管理脚本目录",
|
|
1804
1802
|
"description": "管理脚本的自定义目录",
|
|
1805
|
-
"current": "
|
|
1806
|
-
"help": "
|
|
1803
|
+
"current": "当前的: {value}",
|
|
1804
|
+
"help": "指定管理脚本的自定义源目录。留空以使用全局设置。"
|
|
1807
1805
|
},
|
|
1808
1806
|
"scriptDirectories_sizing": {
|
|
1809
|
-
"label": "
|
|
1810
|
-
"description": "
|
|
1811
|
-
"current": "
|
|
1812
|
-
"help": "
|
|
1807
|
+
"label": "调整脚本目录",
|
|
1808
|
+
"description": "用于调整脚本大小的自定义目录",
|
|
1809
|
+
"current": "当前的: {value}",
|
|
1810
|
+
"help": "指定大小调整脚本的自定义源目录。留空以使用全局设置。"
|
|
1813
1811
|
},
|
|
1814
1812
|
"scriptDirectories_summary": {
|
|
1815
1813
|
"label": "摘要报告目录",
|
|
1816
1814
|
"description": "摘要报告脚本的自定义目录",
|
|
1817
|
-
"current": "
|
|
1818
|
-
"help": "
|
|
1815
|
+
"current": "当前的: {value}",
|
|
1816
|
+
"help": "指定摘要报告脚本的自定义源目录。留空以使用全局设置。"
|
|
1819
1817
|
},
|
|
1820
1818
|
"scriptDirectories_usage": {
|
|
1821
1819
|
"label": "使用报告目录",
|
|
1822
|
-
"description": "
|
|
1823
|
-
"current": "
|
|
1824
|
-
"help": "
|
|
1820
|
+
"description": "使用情况报告脚本的自定义目录",
|
|
1821
|
+
"current": "当前的: {value}",
|
|
1822
|
+
"help": "指定使用情况报告脚本的自定义源目录。留空以使用全局设置。"
|
|
1825
1823
|
},
|
|
1826
1824
|
"scriptDirectories_validate": {
|
|
1827
1825
|
"label": "验证脚本目录",
|
|
1828
|
-
"description": "
|
|
1829
|
-
"current": "
|
|
1830
|
-
"help": "
|
|
1826
|
+
"description": "用于验证脚本的自定义目录",
|
|
1827
|
+
"current": "当前的: {value}",
|
|
1828
|
+
"help": "指定验证脚本的自定义源目录。留空以使用全局设置。"
|
|
1831
1829
|
},
|
|
1832
1830
|
"security_adminPinEnabled": {
|
|
1833
|
-
"label": "管理员 PIN
|
|
1834
|
-
"description": "为敏感设置启用管理员 PIN
|
|
1835
|
-
"current": "
|
|
1836
|
-
"help": "
|
|
1831
|
+
"label": "管理员 PIN 码保护",
|
|
1832
|
+
"description": "为敏感设置启用管理员 PIN 身份验证",
|
|
1833
|
+
"current": "当前的: {value}",
|
|
1834
|
+
"help": "需要管理员 PIN 码才能更改安全和高级设置"
|
|
1837
1835
|
},
|
|
1838
1836
|
"fields": {
|
|
1839
1837
|
"adminPinEnabled": {
|
|
1840
|
-
"label": "管理员 PIN
|
|
1841
|
-
"description": "为敏感设置启用管理员 PIN
|
|
1842
|
-
"help": "
|
|
1838
|
+
"label": "管理员 PIN 码保护",
|
|
1839
|
+
"description": "为敏感设置启用管理员 PIN 身份验证",
|
|
1840
|
+
"help": "需要管理员 PIN 码才能更改安全和高级设置"
|
|
1843
1841
|
}
|
|
1844
1842
|
},
|
|
1845
1843
|
"security_pinProtection_enabled": {
|
|
1846
|
-
"label": "
|
|
1844
|
+
"label": "密码保护",
|
|
1847
1845
|
"description": "为敏感设置启用 PIN 保护",
|
|
1848
|
-
"current": "
|
|
1849
|
-
"help": "
|
|
1846
|
+
"current": "当前的: {value}",
|
|
1847
|
+
"help": "需要 PIN 码才能更改安全和高级设置"
|
|
1850
1848
|
},
|
|
1851
1849
|
"pinProtection_configure": {
|
|
1852
1850
|
"label": "配置 PIN 保护脚本",
|
|
1853
1851
|
"description": "配置哪些脚本需要 PIN 保护",
|
|
1854
|
-
"help": "选择需要 PIN
|
|
1852
|
+
"help": "选择需要 PIN 身份验证的单个脚本"
|
|
1855
1853
|
},
|
|
1856
1854
|
"pinProtection_debugMenu": {
|
|
1857
1855
|
"label": "调试工具菜单",
|
|
1858
|
-
"description": "
|
|
1859
|
-
"current": "
|
|
1860
|
-
"help": "
|
|
1856
|
+
"description": "调试工具菜单需要 PIN",
|
|
1857
|
+
"current": "当前的: {value}",
|
|
1858
|
+
"help": "启用 PIN 保护以访问调试工具"
|
|
1861
1859
|
},
|
|
1862
1860
|
"pinProtection_deleteReports": {
|
|
1863
1861
|
"label": "删除报告",
|
|
1864
|
-
"description": "删除报告需要 PIN",
|
|
1865
|
-
"current": "
|
|
1866
|
-
"help": "
|
|
1862
|
+
"description": "删除报告需要 PIN 码",
|
|
1863
|
+
"current": "当前的: {value}",
|
|
1864
|
+
"help": "启用 PIN 保护以删除报告"
|
|
1867
1865
|
},
|
|
1868
1866
|
"pinProtection_summaryReports": {
|
|
1869
|
-
"label": "
|
|
1870
|
-
"description": "
|
|
1871
|
-
"current": "
|
|
1872
|
-
"help": "
|
|
1867
|
+
"label": "总结报告",
|
|
1868
|
+
"description": "摘要报告需要 PIN 码",
|
|
1869
|
+
"current": "当前的: {value}",
|
|
1870
|
+
"help": "启用 PIN 保护以生成摘要报告"
|
|
1873
1871
|
},
|
|
1874
1872
|
"pinProtection_settingsMenu": {
|
|
1875
1873
|
"label": "设置菜单",
|
|
1876
|
-
"description": "
|
|
1877
|
-
"current": "
|
|
1878
|
-
"help": "
|
|
1874
|
+
"description": "设置菜单需要 PIN 码",
|
|
1875
|
+
"current": "当前的: {value}",
|
|
1876
|
+
"help": "启用 PIN 码保护以访问设置"
|
|
1879
1877
|
},
|
|
1880
1878
|
"pinProtection_initScript": {
|
|
1881
1879
|
"label": "初始化脚本",
|
|
1882
|
-
"description": "
|
|
1883
|
-
"current": "
|
|
1884
|
-
"help": "
|
|
1880
|
+
"description": "初始化脚本需要 PIN",
|
|
1881
|
+
"current": "当前的: {value}",
|
|
1882
|
+
"help": "启用 PIN 保护以运行初始化脚本"
|
|
1885
1883
|
},
|
|
1886
1884
|
"pinProtection_resetDefaults": {
|
|
1887
1885
|
"label": "重置 PIN 保护",
|
|
1888
1886
|
"description": "将所有 PIN 保护设置重置为默认值",
|
|
1889
|
-
"help": "
|
|
1887
|
+
"help": "将所有单独的脚本 PIN 保护重置为默认值"
|
|
1890
1888
|
},
|
|
1891
1889
|
"removeUiLanguages": {
|
|
1892
|
-
"label": "
|
|
1890
|
+
"label": "删除用户界面语言",
|
|
1893
1891
|
"description": "删除未安装的 UI 语言",
|
|
1894
|
-
"help": "
|
|
1892
|
+
"help": "删除系统上未安装的 UI 语言"
|
|
1895
1893
|
},
|
|
1896
1894
|
"${helperKey}": {
|
|
1897
1895
|
"help": "帮助"
|
|
1896
|
+
},
|
|
1897
|
+
"backup": {
|
|
1898
|
+
"enabled": {
|
|
1899
|
+
"label": "启用备份",
|
|
1900
|
+
"description": "启用自动备份设置",
|
|
1901
|
+
"help": "启用/禁用备份功能"
|
|
1902
|
+
},
|
|
1903
|
+
"singleFileMode": {
|
|
1904
|
+
"label": "单文件模式",
|
|
1905
|
+
"description": "使用单个文件进行备份",
|
|
1906
|
+
"help": "将设置备份到单个文件中"
|
|
1907
|
+
},
|
|
1908
|
+
"singleBackupFile": {
|
|
1909
|
+
"label": "备份文件路径",
|
|
1910
|
+
"description": "备份文件的路径",
|
|
1911
|
+
"help": "单个备份文件的路径"
|
|
1912
|
+
},
|
|
1913
|
+
"retentionDays": {
|
|
1914
|
+
"label": "保留期限",
|
|
1915
|
+
"description": "保留备份文件的天数",
|
|
1916
|
+
"help": "保留旧备份文件的天数"
|
|
1917
|
+
},
|
|
1918
|
+
"maxBackups": {
|
|
1919
|
+
"label": "最大备份数",
|
|
1920
|
+
"description": "保留的最大备份文件数",
|
|
1921
|
+
"help": "保留的备份文件的最大数量"
|
|
1922
|
+
},
|
|
1923
|
+
"confirm": {
|
|
1924
|
+
"label": "确认备份",
|
|
1925
|
+
"description": "需要确认备份操作",
|
|
1926
|
+
"help": "确认备份操作"
|
|
1927
|
+
}
|
|
1898
1928
|
}
|
|
1899
1929
|
},
|
|
1900
1930
|
"actions": {
|
|
1901
1931
|
"editSetting": "编辑 {setting}:",
|
|
1902
1932
|
"settingUpdated": "✅ {setting} 更新成功!",
|
|
1903
|
-
"invalidValue": "❌
|
|
1904
|
-
"pressEnter": "按 Enter
|
|
1933
|
+
"invalidValue": "❌ 无效值。请再试一次。",
|
|
1934
|
+
"pressEnter": "按 Enter 键继续...",
|
|
1905
1935
|
"backToMenu": "返回主菜单",
|
|
1906
1936
|
"saveSuccess": "✅ 设置保存成功!",
|
|
1907
|
-
"saveFailed": "❌ 保存设置失败:{error}",
|
|
1908
|
-
"resetConfirm": "您确定要将所有设置重置为默认值吗?
|
|
1909
|
-
"resetSuccess": "✅
|
|
1937
|
+
"saveFailed": "❌ 保存设置失败: {error}",
|
|
1938
|
+
"resetConfirm": "您确定要将所有设置重置为默认值吗? (是/否):",
|
|
1939
|
+
"resetSuccess": "✅ 设置成功重置为默认值!",
|
|
1910
1940
|
"importSuccess": "✅ 设置导入成功!",
|
|
1911
1941
|
"exportSuccess": "✅ 设置导出成功!",
|
|
1912
|
-
"fileNotFound": "❌ 找不到文件:{path}",
|
|
1942
|
+
"fileNotFound": "❌ 找不到文件: {path}",
|
|
1913
1943
|
"invalidFormat": "❌ 设置文件格式无效",
|
|
1914
|
-
"pinProtectionUpdated": "✅ {script}
|
|
1915
|
-
"pinProtectionReset": "✅ 所有 PIN
|
|
1916
|
-
"pinProtectionConfigure": "
|
|
1917
|
-
"pinProtectionSelectScript": "
|
|
1918
|
-
"pinProtectionCurrentStatus": "
|
|
1919
|
-
"pinProtectionEnabled": "
|
|
1920
|
-
"pinProtectionDisabled": "
|
|
1921
|
-
"pinProtectionToggle": "切换 PIN
|
|
1944
|
+
"pinProtectionUpdated": "✅ PIN 码保护 {script} 更新成功!",
|
|
1945
|
+
"pinProtectionReset": "✅ 所有 PIN 保护设置重置为默认值!",
|
|
1946
|
+
"pinProtectionConfigure": "为各个脚本配置 PIN 保护",
|
|
1947
|
+
"pinProtectionSelectScript": "选择一个脚本来切换 PIN 保护:",
|
|
1948
|
+
"pinProtectionCurrentStatus": "目前状态: {status}",
|
|
1949
|
+
"pinProtectionEnabled": "启用",
|
|
1950
|
+
"pinProtectionDisabled": "残疾人",
|
|
1951
|
+
"pinProtectionToggle": "切换 PIN 码保护",
|
|
1922
1952
|
"pinProtectionResetAll": "全部重置为默认值",
|
|
1923
1953
|
"pinProtectionBack": "返回安全设置"
|
|
1924
1954
|
},
|
|
1925
1955
|
"themes": {
|
|
1926
|
-
"light": "
|
|
1927
|
-
"dark": "
|
|
1956
|
+
"light": "光",
|
|
1957
|
+
"dark": "黑暗的",
|
|
1928
1958
|
"system": "系统"
|
|
1929
1959
|
},
|
|
1930
1960
|
"languages": {
|
|
@@ -1933,319 +1963,319 @@
|
|
|
1933
1963
|
"es": "西班牙语",
|
|
1934
1964
|
"fr": "法语",
|
|
1935
1965
|
"ru": "俄语",
|
|
1936
|
-
"ja": "
|
|
1937
|
-
"zh": "
|
|
1966
|
+
"ja": "日本人",
|
|
1967
|
+
"zh": "中国人"
|
|
1938
1968
|
},
|
|
1939
1969
|
"viewAll": {
|
|
1940
1970
|
"title": "查看所有设置"
|
|
1941
1971
|
},
|
|
1942
|
-
"current": "
|
|
1972
|
+
"current": "当前的",
|
|
1943
1973
|
"back": "返回主菜单",
|
|
1944
|
-
"selectSettingPrompt": "
|
|
1974
|
+
"selectSettingPrompt": "选择要编辑的设置(或 b 表示返回,r 表示重置):",
|
|
1945
1975
|
"invalidOption": "无效选项。",
|
|
1946
|
-
"editing": "
|
|
1947
|
-
"enterNewValue": "
|
|
1976
|
+
"editing": "编辑",
|
|
1977
|
+
"enterNewValue": "输入新值(或按 Enter 键保持当前值,键入“default”以使用系统默认值):",
|
|
1948
1978
|
"validOptions": "有效选项",
|
|
1949
1979
|
"updatedSuccessfully": "更新成功!",
|
|
1950
|
-
"noHelp": "
|
|
1980
|
+
"noHelp": "此设置没有可用的帮助",
|
|
1951
1981
|
"resetScriptDirectories": "重置为默认值",
|
|
1952
|
-
"resetScriptDirectoriesTitle": "
|
|
1953
|
-
"resetScriptDirectoriesWarning1": "
|
|
1954
|
-
"resetScriptDirectoriesWarning2": "
|
|
1955
|
-
"resetScriptDirectoriesConfirm": "您确定要将所有脚本目录重置为默认值吗?
|
|
1982
|
+
"resetScriptDirectoriesTitle": "将脚本目录重置为默认值",
|
|
1983
|
+
"resetScriptDirectoriesWarning1": "这会将所有脚本目录配置重置为其系统默认值。",
|
|
1984
|
+
"resetScriptDirectoriesWarning2": "所有自定义目录路径都将被清除。此操作无法撤消。",
|
|
1985
|
+
"resetScriptDirectoriesConfirm": "您确定要将所有脚本目录重置为默认值吗? (是/否):",
|
|
1956
1986
|
"backup": {
|
|
1957
1987
|
"title": "备份设置",
|
|
1958
1988
|
"description": "将当前设置备份到文件",
|
|
1959
|
-
"confirm": "您确定要备份当前设置吗?
|
|
1989
|
+
"confirm": "您确定要备份当前设置吗? (是/否):",
|
|
1960
1990
|
"success": "✅ 设置已成功备份到 {backupFile}",
|
|
1961
|
-
"failed": "❌
|
|
1962
|
-
"enabled": "
|
|
1991
|
+
"failed": "❌ 备份设置失败: {error}",
|
|
1992
|
+
"enabled": "启用备份",
|
|
1963
1993
|
"enabledHelp": "启用/禁用备份功能",
|
|
1964
1994
|
"singleFileMode": "单文件模式",
|
|
1965
|
-
"singleFileModeHelp": "
|
|
1995
|
+
"singleFileModeHelp": "将设置备份到单个文件中",
|
|
1966
1996
|
"singleBackupFile": "单个备份文件",
|
|
1967
1997
|
"singleBackupFileHelp": "单个备份文件的路径",
|
|
1968
1998
|
"retentionDays": "保留天数",
|
|
1969
1999
|
"retentionDaysHelp": "保留旧备份文件的天数",
|
|
1970
2000
|
"maxBackups": "最大备份数",
|
|
1971
|
-
"maxBackupsHelp": "
|
|
2001
|
+
"maxBackupsHelp": "保留的备份文件的最大数量",
|
|
1972
2002
|
"confirmHelp": "确认备份操作",
|
|
1973
|
-
"confirmYes": "
|
|
1974
|
-
"confirmNo": "
|
|
2003
|
+
"confirmYes": "是的",
|
|
2004
|
+
"confirmNo": "不"
|
|
1975
2005
|
},
|
|
1976
2006
|
"validation": {
|
|
1977
2007
|
"valid": "有效的",
|
|
1978
2008
|
"validatingPaths": "正在验证配置的路径...",
|
|
1979
|
-
"validationComplete": "路径验证完成:{valid}/{total}
|
|
2009
|
+
"validationComplete": "路径验证完成: {valid}/{total} 有效的。"
|
|
1980
2010
|
}
|
|
1981
2011
|
},
|
|
1982
2012
|
"summary": {
|
|
1983
|
-
"separator": "
|
|
2013
|
+
"separator": "===============================================================",
|
|
1984
2014
|
"configurationTitle": "🔧 配置:",
|
|
1985
|
-
"sourceLanguage": "源语言:{sourceLanguage}",
|
|
1986
|
-
"supportedExtensions": "
|
|
1987
|
-
"excludedFiles": "排除的文件:{files}",
|
|
2015
|
+
"sourceLanguage": "源语言: {sourceLanguage}",
|
|
2016
|
+
"supportedExtensions": "支持的扩展: {extensions}",
|
|
2017
|
+
"excludedFiles": "排除的文件: {files}",
|
|
1988
2018
|
"reportContent": "{report}",
|
|
1989
|
-
"fatalError": "❌
|
|
1990
|
-
"helpTitle": "📊
|
|
1991
|
-
"helpDescription": "分析 i18n
|
|
1992
|
-
"helpUsage": "
|
|
1993
|
-
"helpOptions": "
|
|
1994
|
-
"helpSourceDir": "
|
|
1995
|
-
"helpOutput": "
|
|
1996
|
-
"helpVerbose": "--verbose, -v
|
|
1997
|
-
"helpKeepReports": "--keep-reports
|
|
1998
|
-
"helpDeleteReports": "--delete-reports
|
|
1999
|
-
"helpHelp": "--help, -h
|
|
2019
|
+
"fatalError": "❌ 致命错误: {error}",
|
|
2020
|
+
"helpTitle": "📊 I18NTK 摘要报告生成器",
|
|
2021
|
+
"helpDescription": "分析 i18n 文件夹结构并生成全面的摘要报告,包括关键统计数据、文件结构分析和验证检查。",
|
|
2022
|
+
"helpUsage": "用法:节点 i18ntk-summary.js [选项]",
|
|
2023
|
+
"helpOptions": "--源目录 <dir> 要分析的源目录",
|
|
2024
|
+
"helpSourceDir": "--源目录 <dir> 要分析的源目录",
|
|
2025
|
+
"helpOutput": "- 输出 <file> 报告的输出文件",
|
|
2026
|
+
"helpVerbose": "--verbose, -v 显示详细信息",
|
|
2027
|
+
"helpKeepReports": "--keep-reports 保留现有报告",
|
|
2028
|
+
"helpDeleteReports": "--delete-reports 删除现有报告",
|
|
2029
|
+
"helpHelp": "--help, -h 显示此帮助",
|
|
2000
2030
|
"helpExamples": "示例:",
|
|
2001
|
-
"helpExample1": "
|
|
2002
|
-
"helpExample2": "
|
|
2003
|
-
"helpExample3": "
|
|
2004
|
-
"helpExample4": "
|
|
2005
|
-
"helpExample5": "
|
|
2006
|
-
"couldNotReadFile": "
|
|
2007
|
-
"couldNotParseJSFile": "
|
|
2008
|
-
"errorReadingFile": "⚠️
|
|
2009
|
-
"analyzingFolder": "🔍
|
|
2010
|
-
"noLanguageDirectoriesFound": "❌
|
|
2011
|
-
"foundLanguages": "✅
|
|
2012
|
-
"referenceLanguageFiles": "📁 参考语言
|
|
2013
|
-
"analyzingLanguage": "🌍
|
|
2014
|
-
"keysInFiles": "📊
|
|
2015
|
-
"checkingInconsistentKeys": "🔍
|
|
2016
|
-
"generatingSummaryReport": "📝
|
|
2017
|
-
"reportTitle": "📊
|
|
2018
|
-
"generated": "
|
|
2019
|
-
"sourceDirectory": "
|
|
2020
|
-
"overview": "📈
|
|
2021
|
-
"languagesCount": "
|
|
2022
|
-
"totalFiles": "文件总数:{count}",
|
|
2023
|
-
"totalKeys": "
|
|
2024
|
-
"avgKeysPerLanguage": "
|
|
2025
|
-
"languagesBreakdown": "🌍
|
|
2026
|
-
"languageBreakdown": "{language}
|
|
2031
|
+
"helpExample1": "节点 i18ntk-summary.js",
|
|
2032
|
+
"helpExample2": "节点 i18ntk-summary.js --source-dir ./locales",
|
|
2033
|
+
"helpExample3": "节点 i18ntk-summary.js --输出摘要报告.txt",
|
|
2034
|
+
"helpExample4": "节点 i18ntk-summary.js --verbose",
|
|
2035
|
+
"helpExample5": "节点 i18ntk-summary.js --source-dir ./locales --output report.json",
|
|
2036
|
+
"couldNotReadFile": "⚠️无法读取文件: {filePath}",
|
|
2037
|
+
"couldNotParseJSFile": "⚠️无法解析JS/TS文件: {filePath}",
|
|
2038
|
+
"errorReadingFile": "⚠️ 读取文件时出错 {filePath}: {error}",
|
|
2039
|
+
"analyzingFolder": "🔍 正在分析文件夹结构...",
|
|
2040
|
+
"noLanguageDirectoriesFound": "❌ 在指定的源目录中找不到语言目录。",
|
|
2041
|
+
"foundLanguages": "✅ 找到了 {count} 语言: {languages}",
|
|
2042
|
+
"referenceLanguageFiles": "📁 参考语言 '{language}' 有 {count} 文件",
|
|
2043
|
+
"analyzingLanguage": "🌍 分析语言: {language}",
|
|
2044
|
+
"keysInFiles": "📊 找到了 {keys} 钥匙横跨 {files} 文件",
|
|
2045
|
+
"checkingInconsistentKeys": "🔍 检查跨语言的不一致键...",
|
|
2046
|
+
"generatingSummaryReport": "📝 生成总结报告...",
|
|
2047
|
+
"reportTitle": "📊 I18NTK 总结报告",
|
|
2048
|
+
"generated": "生成: {timestamp}",
|
|
2049
|
+
"sourceDirectory": "源码目录: {dir}",
|
|
2050
|
+
"overview": "📈 概述",
|
|
2051
|
+
"languagesCount": "语言: {count}",
|
|
2052
|
+
"totalFiles": "文件总数: {count}",
|
|
2053
|
+
"totalKeys": "总键数: {count}",
|
|
2054
|
+
"avgKeysPerLanguage": "每种语言的平均按键: {count}",
|
|
2055
|
+
"languagesBreakdown": "🌍 语言细分",
|
|
2056
|
+
"languageBreakdown": "{language}: {files} 文件, {keys} 键",
|
|
2027
2057
|
"fileStructure": "📁 文件结构",
|
|
2028
|
-
"fileKeys": "{file}
|
|
2029
|
-
"missingInLanguages": "⚠️
|
|
2058
|
+
"fileKeys": "{file}: {keys} 键",
|
|
2059
|
+
"missingInLanguages": "⚠️ 缺失: {languages}",
|
|
2030
2060
|
"issuesFound": "❌ 发现的问题",
|
|
2031
|
-
"missingFiles": "📁
|
|
2061
|
+
"missingFiles": "📁 丢失文件:",
|
|
2032
2062
|
"emptyFiles": "📄 空文件:",
|
|
2033
|
-
"malformedFiles": "
|
|
2034
|
-
"duplicateKeys": "🔑
|
|
2035
|
-
"inconsistentKeys": "🔍
|
|
2036
|
-
"missingKeys": "
|
|
2037
|
-
"extraKeys": "
|
|
2038
|
-
"noIssuesFound": "✅
|
|
2039
|
-
"allFilesConsistent": "
|
|
2040
|
-
"recommendations": "
|
|
2063
|
+
"malformedFiles": "⚠️格式错误的文件:",
|
|
2064
|
+
"duplicateKeys": "🔑 重复的键:",
|
|
2065
|
+
"inconsistentKeys": "🔍 键不一致:",
|
|
2066
|
+
"missingKeys": "丢失的: {keys}{more}",
|
|
2067
|
+
"extraKeys": "额外的: {keys}{more}",
|
|
2068
|
+
"noIssuesFound": "✅ 没有发现问题",
|
|
2069
|
+
"allFilesConsistent": "所有翻译文件在不同语言之间都是一致的。",
|
|
2070
|
+
"recommendations": "💡推荐",
|
|
2041
2071
|
"createMissingFiles": "• 创建缺失的翻译文件",
|
|
2042
|
-
"addContentToEmptyFiles": "•
|
|
2072
|
+
"addContentToEmptyFiles": "• 将内容添加到空翻译文件中",
|
|
2043
2073
|
"fixMalformedFiles": "• 修复格式错误的 JSON/JS 文件",
|
|
2044
|
-
"removeDuplicateKeys": "•
|
|
2045
|
-
"synchronizeKeys": "•
|
|
2046
|
-
"splitLargeFiles": "•
|
|
2074
|
+
"removeDuplicateKeys": "• 从文件中删除重复的键",
|
|
2075
|
+
"synchronizeKeys": "• 跨所有语言同步密钥",
|
|
2076
|
+
"splitLargeFiles": "• 考虑将大文件拆分为较小的命名空间",
|
|
2047
2077
|
"addMoreLanguages": "• 考虑添加更多语言",
|
|
2048
2078
|
"nextSteps": "🎯 下一步",
|
|
2049
|
-
"nextStep1": "1.
|
|
2079
|
+
"nextStep1": "1. 修复上述任何问题",
|
|
2050
2080
|
"nextStep2": "2. 运行验证以确保一致性",
|
|
2051
|
-
"nextStep3": "3
|
|
2052
|
-
"nextStep4": "4.
|
|
2053
|
-
"couldNotFindI18nDirectory": "❌
|
|
2054
|
-
"sourceDirectoryDoesNotExist": "❌ 源目录不存在:{dir}",
|
|
2055
|
-
"i18nSummaryReportGenerator": "📊
|
|
2081
|
+
"nextStep3": "3.考虑使用i18ntk-validate进行详细验证",
|
|
2082
|
+
"nextStep4": "4. 建议定期监测",
|
|
2083
|
+
"couldNotFindI18nDirectory": "❌ 找不到 i18n 目录。请指定--source-dir。",
|
|
2084
|
+
"sourceDirectoryDoesNotExist": "❌ 源目录不存在: {dir}",
|
|
2085
|
+
"i18nSummaryReportGenerator": "📊 I18N 摘要报告生成器",
|
|
2056
2086
|
"analysisComplete": "✅ 分析完成",
|
|
2057
|
-
"analyzedLanguages": "📊
|
|
2058
|
-
"processedFiles": "📁
|
|
2059
|
-
"foundTranslationKeys": "🔑 找到翻译键:{count}",
|
|
2060
|
-
"foundIssues": "
|
|
2061
|
-
"noIssuesConsole": "✅
|
|
2062
|
-
"errorDuringAnalysis": "❌
|
|
2063
|
-
"usageReportTitle": "📊
|
|
2064
|
-
"usageReportGenerated": "
|
|
2065
|
-
"usageReportSourceDir": "
|
|
2066
|
-
"usageReportI18nDir": "
|
|
2067
|
-
"usageReportSummary": "📈
|
|
2068
|
-
"usageReportSourceFilesScanned": "
|
|
2069
|
-
"usageReportTranslationFilesFound": "
|
|
2070
|
-
"usageReportAvailableKeys": "
|
|
2071
|
-
"usageReportUsedKeys": "
|
|
2072
|
-
"usageReportDynamicKeys": "动态翻译键:{count}",
|
|
2073
|
-
"usageReportUnusedKeys": "
|
|
2074
|
-
"usageReportMissingKeys": "
|
|
2075
|
-
"usageReportNotTranslatedKeys": "
|
|
2087
|
+
"analyzedLanguages": "📊 分析语言: {count}",
|
|
2088
|
+
"processedFiles": "📁 处理后的文件: {count}",
|
|
2089
|
+
"foundTranslationKeys": "🔑 找到翻译键: {count}",
|
|
2090
|
+
"foundIssues": "❌发现 {count} 问题",
|
|
2091
|
+
"noIssuesConsole": "✅ 没有发现问题 - 所有文件都是一致的!",
|
|
2092
|
+
"errorDuringAnalysis": "❌ 分析时出错: {error}",
|
|
2093
|
+
"usageReportTitle": "📊 I18NTK 使用报告",
|
|
2094
|
+
"usageReportGenerated": "生成: {timestamp}",
|
|
2095
|
+
"usageReportSourceDir": "源码目录: {sourceDir}",
|
|
2096
|
+
"usageReportI18nDir": "国际化目录: {i18nDir}",
|
|
2097
|
+
"usageReportSummary": "📈 总结",
|
|
2098
|
+
"usageReportSourceFilesScanned": "扫描的源文件: {count}",
|
|
2099
|
+
"usageReportTranslationFilesFound": "找到的翻译文件: {count}",
|
|
2100
|
+
"usageReportAvailableKeys": "可用的翻译键: {count}",
|
|
2101
|
+
"usageReportUsedKeys": "使用的翻译键: {count}",
|
|
2102
|
+
"usageReportDynamicKeys": "动态翻译键: {count}",
|
|
2103
|
+
"usageReportUnusedKeys": "未使用的翻译键: {count}",
|
|
2104
|
+
"usageReportMissingKeys": "缺少翻译键: {count}",
|
|
2105
|
+
"usageReportNotTranslatedKeys": "未翻译的键: {count}",
|
|
2076
2106
|
"usageReportTranslationCompleteness": "🌍 翻译完整性",
|
|
2077
|
-
"usageReportLanguageCompleteness": "{language}
|
|
2078
|
-
"usageReportNotTranslatedInLanguage": "未翻译:{count}
|
|
2107
|
+
"usageReportLanguageCompleteness": "{language}: {completeness}% ({translated}/{total})",
|
|
2108
|
+
"usageReportNotTranslatedInLanguage": "未翻译: {count} 键",
|
|
2079
2109
|
"usageReportTranslationFilesDiscovered": "📁 翻译文件",
|
|
2080
|
-
"usageReportFileInfo": "{relativePath}(命名空间:{namespace}
|
|
2110
|
+
"usageReportFileInfo": "{relativePath} (命名空间: {namespace}, 类型: {type})",
|
|
2081
2111
|
"usageReportUnusedTranslationKeys": "🗑️ 未使用的翻译键",
|
|
2082
|
-
"usageReportUnusedKeysDescription": "
|
|
2112
|
+
"usageReportUnusedKeysDescription": "这些键存在于翻译文件中,但在源代码中不使用:",
|
|
2083
2113
|
"usageReportUnusedKey": "• {key}",
|
|
2084
|
-
"usageReportMoreUnusedKeys": "...
|
|
2085
|
-
"usageReportMissingTranslationKeys": "❌
|
|
2086
|
-
"usageReportMissingKeysDescription": "
|
|
2114
|
+
"usageReportMoreUnusedKeys": "... 和 {count} 更多未使用的键",
|
|
2115
|
+
"usageReportMissingTranslationKeys": "❌ 缺少翻译键",
|
|
2116
|
+
"usageReportMissingKeysDescription": "这些键在源代码中使用,但在翻译文件中缺失:",
|
|
2087
2117
|
"usageReportMissingKey": "• {key}",
|
|
2088
|
-
"usageReportUsedIn": "
|
|
2089
|
-
"usageReportMoreFiles": "...
|
|
2118
|
+
"usageReportUsedIn": "用于: {filePath}",
|
|
2119
|
+
"usageReportMoreFiles": "... 和 {count} 更多文件",
|
|
2090
2120
|
"usageReportDynamicTranslationKeys": "⚡ 动态翻译键",
|
|
2091
|
-
"usageReportDynamicKeysDescription": "
|
|
2121
|
+
"usageReportDynamicKeysDescription": "这些键是动态使用的(在运行时构造):",
|
|
2092
2122
|
"usageReportDynamicKey": "• {key}",
|
|
2093
|
-
"usageReportFileUsageBreakdown": "📊
|
|
2094
|
-
"usageReportFileUsage": "{filePath}
|
|
2123
|
+
"usageReportFileUsageBreakdown": "📊 文件使用明细",
|
|
2124
|
+
"usageReportFileUsage": "{filePath}: {count} 键",
|
|
2095
2125
|
"status": {
|
|
2096
|
-
"generating": "⏳
|
|
2097
|
-
"completed": "✅
|
|
2126
|
+
"generating": "⏳ 生成...",
|
|
2127
|
+
"completed": "✅ 已完成"
|
|
2098
2128
|
},
|
|
2099
2129
|
"help": {
|
|
2100
|
-
"usage": "用法:node
|
|
2101
|
-
"interactiveMode": "
|
|
2130
|
+
"usage": "用法:node main/manage/index.js [选项]",
|
|
2131
|
+
"interactiveMode": "💡使用:node main/manage/index.js --command=<command> 用于直接执行",
|
|
2102
2132
|
"initProject": "🚀 初始化新语言",
|
|
2103
2133
|
"analyzeTranslations": "🔍 分析翻译",
|
|
2104
2134
|
"validateTranslations": "✅ 验证翻译",
|
|
2105
|
-
"checkUsage": "📊
|
|
2106
|
-
"showHelp": "📖 使用:node
|
|
2135
|
+
"checkUsage": "📊 检查密钥使用情况",
|
|
2136
|
+
"showHelp": "📖 使用:node main/manage/index.js --help 查看可用命令",
|
|
2107
2137
|
"availableCommands": "📖 可用命令:",
|
|
2108
|
-
"initCommand": "init
|
|
2109
|
-
"analyzeCommand": "
|
|
2110
|
-
"validateCommand": "validate
|
|
2111
|
-
"usageCommand": "
|
|
2112
|
-
"sizingCommand": "
|
|
2113
|
-
"completeCommand": "
|
|
2114
|
-
"summaryCommand": "
|
|
2115
|
-
"scannerCommand": "
|
|
2116
|
-
"translateCommand": "
|
|
2117
|
-
"debugCommand": "debug
|
|
2138
|
+
"initCommand": "init - 初始化新语言",
|
|
2139
|
+
"analyzeCommand": "分析 - 分析翻译",
|
|
2140
|
+
"validateCommand": "validate - 验证翻译",
|
|
2141
|
+
"usageCommand": "使用情况 - 检查密钥使用情况",
|
|
2142
|
+
"sizingCommand": "尺寸调整 - 分析尺寸",
|
|
2143
|
+
"completeCommand": "完整 - 完整翻译(100% 覆盖率)",
|
|
2144
|
+
"summaryCommand": "摘要 - 显示项目状态",
|
|
2145
|
+
"scannerCommand": "扫描仪 - 扫描 i18n 问题",
|
|
2146
|
+
"translateCommand": "翻译 - 自动翻译语言环境文件(测试版)",
|
|
2147
|
+
"debugCommand": "debug - 调试翻译问题"
|
|
2118
2148
|
},
|
|
2119
2149
|
"test_complete_system": {
|
|
2120
|
-
"starting_test": "🧪
|
|
2150
|
+
"starting_test": "🧪 开始完整的系统测试",
|
|
2121
2151
|
"separator": "=",
|
|
2122
|
-
"testing_ui_translations": "📝
|
|
2123
|
-
"testing_settings_manager": "⚙️
|
|
2124
|
-
"testing_main_scripts": "🔧
|
|
2125
|
-
"checking_translation_consistency": "🌐
|
|
2126
|
-
"non_critical_missing_keys": "ℹ️ {file}
|
|
2127
|
-
"extra_keys": "ℹ️ {file}
|
|
2128
|
-
"generating_report": "📊
|
|
2152
|
+
"testing_ui_translations": "📝 测试 UI 翻译...",
|
|
2153
|
+
"testing_settings_manager": "⚙️ 测试设置管理器...",
|
|
2154
|
+
"testing_main_scripts": "🔧 测试主要脚本...",
|
|
2155
|
+
"checking_translation_consistency": "🌐 检查翻译一致性...",
|
|
2156
|
+
"non_critical_missing_keys": "ℹ️ {file}: {count} 非关键缺失键",
|
|
2157
|
+
"extra_keys": "ℹ️ {file}: {count} 额外的钥匙",
|
|
2158
|
+
"generating_report": "📊 生成报告...",
|
|
2129
2159
|
"final_test_report_title": "📋 最终测试报告",
|
|
2130
|
-
"passed": "✅ 通过:{passed}",
|
|
2131
|
-
"failed": "
|
|
2132
|
-
"warnings": "
|
|
2133
|
-
"missing_translations_title": "🔍
|
|
2160
|
+
"passed": "✅ 通过: {passed}",
|
|
2161
|
+
"failed": "❌失败: {failed}",
|
|
2162
|
+
"warnings": "⚠️警告: {warnings}",
|
|
2163
|
+
"missing_translations_title": "🔍 缺少翻译 ({count}):",
|
|
2134
2164
|
"missing_translation_key": "- {key}",
|
|
2135
|
-
"missing_translations_more": "...
|
|
2165
|
+
"missing_translations_more": "... 和 {count} 更多的",
|
|
2136
2166
|
"errors_title": "❌ 错误:",
|
|
2137
2167
|
"error_message": "- {error}",
|
|
2138
|
-
"overall_status": "
|
|
2168
|
+
"overall_status": "📊整体状况: {status}",
|
|
2139
2169
|
"success_message": "✅ {message}",
|
|
2140
|
-
"failure_message": "❌{message}",
|
|
2170
|
+
"failure_message": "❌ {message}",
|
|
2141
2171
|
"failure_error_message": "{errorMessage}",
|
|
2142
|
-
"warning_message": "⚠️{message}",
|
|
2143
|
-
"test_runner_failed": "❌
|
|
2172
|
+
"warning_message": "⚠️ {message}",
|
|
2173
|
+
"test_runner_failed": "❌ 测试运行失败:",
|
|
2144
2174
|
"recommendations": {
|
|
2145
2175
|
"add_missing_translation_keys": "添加缺失的翻译键以保持一致性",
|
|
2146
|
-
"fix_failing_scripts": "
|
|
2147
|
-
"review_warning_messages": "
|
|
2176
|
+
"fix_failing_scripts": "在部署之前修复失败的脚本",
|
|
2177
|
+
"review_warning_messages": "查看并解决警告消息",
|
|
2148
2178
|
"system_ready_for_deployment": "系统已准备好部署"
|
|
2149
2179
|
},
|
|
2150
2180
|
"hardcodedTexts": {
|
|
2151
2181
|
"addMissingTranslationKeys": "添加缺失的翻译键以保持一致性",
|
|
2152
|
-
"fixFailingScripts": "
|
|
2153
|
-
"reviewWarningMessages": "
|
|
2182
|
+
"fixFailingScripts": "在部署之前修复失败的脚本",
|
|
2183
|
+
"reviewWarningMessages": "查看并解决警告消息",
|
|
2154
2184
|
"systemReadyForDeployment": "系统已准备好部署"
|
|
2155
2185
|
}
|
|
2156
2186
|
},
|
|
2157
2187
|
"testConsoleI18n": {
|
|
2158
|
-
"found_target_file": "找到目标文件:{fileName}",
|
|
2159
|
-
"scanning_files_for_console_statements": "
|
|
2160
|
-
"found_javascript_files": "
|
|
2161
|
-
"console_i18n_analysis_results": "
|
|
2162
|
-
"total_console_statements": "
|
|
2163
|
-
"translated_statements": "
|
|
2164
|
-
"hardcoded_statements": "硬编码语句:{count}",
|
|
2165
|
-
"translation_coverage": "
|
|
2166
|
-
"coverage_by_file": "
|
|
2167
|
-
"file_coverage_stats": "{emoji} {fileName}
|
|
2168
|
-
"hardcoded_console_statements": "
|
|
2169
|
-
"file_header": "文件:{file}",
|
|
2170
|
-
"line_statement": "
|
|
2171
|
-
"suggested_key": "建议键:{key}",
|
|
2172
|
-
"suggested_replacement": "
|
|
2188
|
+
"found_target_file": "找到目标文件: {fileName}",
|
|
2189
|
+
"scanning_files_for_console_statements": "正在扫描文件中的控制台语句...",
|
|
2190
|
+
"found_javascript_files": "成立 {count} JavaScript 文件。",
|
|
2191
|
+
"console_i18n_analysis_results": "控制台 I18n 分析结果",
|
|
2192
|
+
"total_console_statements": "控制台语句总数: {count}",
|
|
2193
|
+
"translated_statements": "翻译后的声明: {count}",
|
|
2194
|
+
"hardcoded_statements": "硬编码语句: {count}",
|
|
2195
|
+
"translation_coverage": "翻译范围: {percentage}%",
|
|
2196
|
+
"coverage_by_file": "文件覆盖范围:",
|
|
2197
|
+
"file_coverage_stats": "{emoji} {fileName}: {coverage}% ({translated}/{total})",
|
|
2198
|
+
"hardcoded_console_statements": "硬编码的控制台语句:",
|
|
2199
|
+
"file_header": "文件: {file}",
|
|
2200
|
+
"line_statement": "线 {line}: {statement}",
|
|
2201
|
+
"suggested_key": "建议键: {key}",
|
|
2202
|
+
"suggested_replacement": "建议更换: {replacement}",
|
|
2173
2203
|
"recommendations": "建议:",
|
|
2174
2204
|
"recommendation_1": "1. 用 i18n.t() 调用替换硬编码字符串。",
|
|
2175
|
-
"recommendation_2": "2.
|
|
2176
|
-
"recommendation_3": "3.
|
|
2177
|
-
"recommendation_4": "4.
|
|
2205
|
+
"recommendation_2": "2. 将新密钥添加到相关翻译 JSON 文件中。",
|
|
2206
|
+
"recommendation_3": "3. 确保所有控制台消息都是面向用户的并且需要翻译。",
|
|
2207
|
+
"recommendation_4": "4. 对动态消息使用模板文字或字符串连接,将变量传递给 i18n.t()。",
|
|
2178
2208
|
"translation_keys_to_add": "建议添加的翻译键:",
|
|
2179
|
-
"add_keys_instruction": "将以下 JSON
|
|
2180
|
-
"perfect_translation_coverage": "
|
|
2181
|
-
"all_statements_using_translation": "
|
|
2182
|
-
"i18n_console_translation_checker": "
|
|
2183
|
-
"script_description_line1": "
|
|
2184
|
-
"script_description_line2": "
|
|
2185
|
-
"analysis_completed_in_duration": "
|
|
2186
|
-
"report_saved_to_path": "
|
|
2187
|
-
"found_hardcoded_messages": "
|
|
2188
|
-
"all_console_messages_use_translation": "
|
|
2189
|
-
"consoleTranslationsCheck": "
|
|
2209
|
+
"add_keys_instruction": "将以下 JSON 结构复制到您的翻译文件中:",
|
|
2210
|
+
"perfect_translation_coverage": "完美翻译覆盖!",
|
|
2211
|
+
"all_statements_using_translation": "所有控制台语句都使用翻译系统。",
|
|
2212
|
+
"i18n_console_translation_checker": "I18n 控制台翻译检查器",
|
|
2213
|
+
"script_description_line1": "该脚本扫描所有 JavaScript 文件中的控制台语句",
|
|
2214
|
+
"script_description_line2": "并检查他们是否正在使用翻译系统。",
|
|
2215
|
+
"analysis_completed_in_duration": "分析完成于 {duration} 秒。",
|
|
2216
|
+
"report_saved_to_path": "报告保存至: {path}",
|
|
2217
|
+
"found_hardcoded_messages": "成立 {count} 硬编码消息。退出并显示错误代码 1。",
|
|
2218
|
+
"all_console_messages_use_translation": "所有控制台消息都使用翻译。以代码 0 退出。",
|
|
2219
|
+
"consoleTranslationsCheck": "控制台翻译检查"
|
|
2190
2220
|
},
|
|
2191
2221
|
"translate_mismatches": {
|
|
2192
2222
|
"title": "🌐 翻译助手 {dryRun}",
|
|
2193
|
-
"separator": "
|
|
2194
|
-
"processing_file": "📄
|
|
2195
|
-
"translation_summary_title": "
|
|
2196
|
-
"total_translations_applied": "
|
|
2197
|
-
"run_with_apply_instruction": "💡 使用 --apply
|
|
2198
|
-
"no_translation_mappings": "⚠️
|
|
2199
|
-
"translation_applied": "✅ {key}
|
|
2200
|
-
"saved_translations": "💾 已保存 {count}
|
|
2201
|
-
"found_translatable_items": "
|
|
2202
|
-
"no_automatic_translations": "✨
|
|
2203
|
-
"error_processing_file": "❌
|
|
2223
|
+
"separator": "=======================================",
|
|
2224
|
+
"processing_file": "📄 加工中 {language}.json...",
|
|
2225
|
+
"translation_summary_title": "📊翻译摘要:",
|
|
2226
|
+
"total_translations_applied": "应用的翻译总数: {totalTranslations}",
|
|
2227
|
+
"run_with_apply_instruction": "💡 使用 --apply 运行以应用这些翻译",
|
|
2228
|
+
"no_translation_mappings": "⚠️ 没有可用的翻译映射 {language}",
|
|
2229
|
+
"translation_applied": "✅ {key}: \"{oldValue}\" → \"{newValue}\"",
|
|
2230
|
+
"saved_translations": "💾 已保存 {count} 翻译为 {filename}",
|
|
2231
|
+
"found_translatable_items": "🔍发现 {count} 可翻译项目",
|
|
2232
|
+
"no_automatic_translations": "✨ 没有可用的自动翻译",
|
|
2233
|
+
"error_processing_file": "❌ 错误处理 {filename}: {errorMessage}",
|
|
2204
2234
|
"coverage_report_title": "📊 翻译覆盖率报告",
|
|
2205
2235
|
"coverage_report_separator": "===============================",
|
|
2206
|
-
"file_header": "📄 {filename}
|
|
2207
|
-
"total_keys": "
|
|
2208
|
-
"translated_keys": "
|
|
2209
|
-
"untranslated_markers": "
|
|
2210
|
-
"contains_english": "
|
|
2211
|
-
"coverage_percentage": "
|
|
2236
|
+
"file_header": "📄 {filename}:",
|
|
2237
|
+
"total_keys": "总键数: {total}",
|
|
2238
|
+
"translated_keys": "翻译: {translated}",
|
|
2239
|
+
"untranslated_markers": "未翻译的标记: {untranslated}",
|
|
2240
|
+
"contains_english": "包含英文: {hasEnglish}",
|
|
2241
|
+
"coverage_percentage": "覆盖范围: {coverage}%",
|
|
2212
2242
|
"error_general": "❌ 错误:",
|
|
2213
|
-
"use_help": "使用 --help
|
|
2243
|
+
"use_help": "使用 --help 获取使用信息"
|
|
2214
2244
|
},
|
|
2215
2245
|
"cleaningUpReportFiles": "清理旧报告文件...",
|
|
2216
|
-
"couldNotDelete": "无法删除 {file}
|
|
2246
|
+
"couldNotDelete": "无法删除 {file}: {error}",
|
|
2217
2247
|
"deletedOldReportFiles": "已删除 {count} 旧报告文件。",
|
|
2218
|
-
"errorCleaningUpReports": "清理报告时出错:{error}",
|
|
2248
|
+
"errorCleaningUpReports": "清理报告时出错: {error}",
|
|
2219
2249
|
"noOldReportFilesToDelete": "没有要删除的旧报告文件。",
|
|
2220
2250
|
"reportFilesPreserved": "报告文件已保存。",
|
|
2221
|
-
"reportSaveFailed": "无法将报告保存到:{reportPath}",
|
|
2222
|
-
"reportSaved": "报告保存至:{reportPath}"
|
|
2251
|
+
"reportSaveFailed": "无法将报告保存到: {reportPath}",
|
|
2252
|
+
"reportSaved": "报告保存至: {reportPath}"
|
|
2223
2253
|
},
|
|
2224
2254
|
"ui": {
|
|
2225
|
-
"autoDetectedI18nDirectory": "
|
|
2226
|
-
"executingCommand": "
|
|
2227
|
-
"unknownCommand": "
|
|
2228
|
-
"errorExecutingCommand": "
|
|
2229
|
-
"errorLoadingTranslationFile": "
|
|
2230
|
-
"errorSavingLanguagePreference": "
|
|
2231
|
-
"noActiveReadlineInterface": "
|
|
2232
|
-
"uiLanguageUpdated": "
|
|
2233
|
-
"selectOptionPrompt": "
|
|
2234
|
-
"pressEnterToReturn": "按Enter
|
|
2235
|
-
"detectedSourceDirectory": "
|
|
2236
|
-
"detectedI18nDirectory": "检测到i18n
|
|
2237
|
-
"toolkitTitle": "
|
|
2238
|
-
"versionInfo": "
|
|
2239
|
-
"releaseDate": "
|
|
2240
|
-
"maintainer": "
|
|
2241
|
-
"nodeVersion": "
|
|
2242
|
-
"license": "
|
|
2243
|
-
"whatsNew": "✨ v
|
|
2244
|
-
"changeItem": "
|
|
2245
|
-
"documentation": "📚
|
|
2246
|
-
"issues": "🐛
|
|
2255
|
+
"autoDetectedI18nDirectory": "自动检测 i18n 目录: {path}",
|
|
2256
|
+
"executingCommand": "执行命令: {command}",
|
|
2257
|
+
"unknownCommand": "未知命令: {command}",
|
|
2258
|
+
"errorExecutingCommand": "执行命令时出错: {error}",
|
|
2259
|
+
"errorLoadingTranslationFile": "加载 ' 的翻译文件时出错{language}': {error}",
|
|
2260
|
+
"errorSavingLanguagePreference": "保存语言首选项时出错: {error}",
|
|
2261
|
+
"noActiveReadlineInterface": "没有可用的活动读取线接口",
|
|
2262
|
+
"uiLanguageUpdated": "UI语言更新为: {language}",
|
|
2263
|
+
"selectOptionPrompt": "选择一个选项:",
|
|
2264
|
+
"pressEnterToReturn": "按 Enter 返回主菜单...",
|
|
2265
|
+
"detectedSourceDirectory": "检测到的源目录: {sourceDir}",
|
|
2266
|
+
"detectedI18nDirectory": "检测到 i18n 目录: {directory}",
|
|
2267
|
+
"toolkitTitle": "i18ntk - 企业 i18n 管理工具包",
|
|
2268
|
+
"versionInfo": "版本: {version}",
|
|
2269
|
+
"releaseDate": "发布日期: {date}",
|
|
2270
|
+
"maintainer": "维护者: {maintainer}",
|
|
2271
|
+
"nodeVersion": "节点.js: {version}",
|
|
2272
|
+
"license": "执照: {license}",
|
|
2273
|
+
"whatsNew": "✨ v 中的新功能{version}:",
|
|
2274
|
+
"changeItem": "{change}",
|
|
2275
|
+
"documentation": "📚 文档: {url}",
|
|
2276
|
+
"issues": "🐛 问题: {url}",
|
|
2247
2277
|
"versionInfoUnavailable": "i18ntk版本信息不可用",
|
|
2248
|
-
"versionInfoError": "
|
|
2278
|
+
"versionInfoError": "错误: {error}"
|
|
2249
2279
|
},
|
|
2250
2280
|
"validateLanguagePurity": {
|
|
2251
2281
|
"phrase_debug_tools": "调试工具",
|
|
@@ -2257,156 +2287,156 @@
|
|
|
2257
2287
|
"phrase_error": "错误",
|
|
2258
2288
|
"phrase_warning": "警告",
|
|
2259
2289
|
"phrase_success": "成功",
|
|
2260
|
-
"phrase_failed": "
|
|
2290
|
+
"phrase_failed": "失败的",
|
|
2261
2291
|
"phrase_loading": "加载中",
|
|
2262
|
-
"phrase_saving": "
|
|
2263
|
-
"phrase_full_system_debug": "
|
|
2292
|
+
"phrase_saving": "保存",
|
|
2293
|
+
"phrase_full_system_debug": "完整的系统调试",
|
|
2264
2294
|
"phrase_configuration_debug": "配置调试",
|
|
2265
2295
|
"phrase_translation_debug": "翻译调试",
|
|
2266
2296
|
"phrase_performance_debug": "性能调试",
|
|
2267
|
-
"phrase_admin_pin_setup": "
|
|
2268
|
-
"phrase_enter_admin_pin": "
|
|
2269
|
-
"phrase_confirm_admin_pin": "
|
|
2270
|
-
"phrase_authentication_failed": "
|
|
2271
|
-
"phrase_access_denied": "
|
|
2297
|
+
"phrase_admin_pin_setup": "管理员密码设置",
|
|
2298
|
+
"phrase_enter_admin_pin": "输入管理员密码",
|
|
2299
|
+
"phrase_confirm_admin_pin": "确认管理员密码",
|
|
2300
|
+
"phrase_authentication_failed": "认证失败",
|
|
2301
|
+
"phrase_access_denied": "拒绝访问",
|
|
2272
2302
|
"phrase_security_log": "安全日志",
|
|
2273
2303
|
"language_german": "德语",
|
|
2274
2304
|
"language_french": "法语",
|
|
2275
2305
|
"language_spanish": "西班牙语",
|
|
2276
2306
|
"language_russian": "俄语",
|
|
2277
|
-
"language_japanese": "
|
|
2278
|
-
"language_chinese": "
|
|
2307
|
+
"language_japanese": "日本人",
|
|
2308
|
+
"language_chinese": "中国人",
|
|
2279
2309
|
"validator_title": "🔍 语言纯度验证器",
|
|
2280
|
-
"validating_file": "📄
|
|
2281
|
-
"valid_file_message": "✅ 有效 -
|
|
2282
|
-
"invalid_file_message": "
|
|
2283
|
-
"no_validation_rules": "
|
|
2284
|
-
"error_reading_file": "
|
|
2285
|
-
"issue_forbidden_marker": "
|
|
2286
|
-
"issue_english_phrase": "
|
|
2287
|
-
"issue_english_words": "
|
|
2288
|
-
"issue_missing_cyrillic": "
|
|
2289
|
-
"issue_missing_japanese": "
|
|
2290
|
-
"issue_missing_chinese": "
|
|
2291
|
-
"summary_title": "📊
|
|
2292
|
-
"overall_results_header": "📋
|
|
2293
|
-
"total_files_validated": "
|
|
2294
|
-
"valid_files": "
|
|
2295
|
-
"invalid_files": "
|
|
2296
|
-
"total_violations": "
|
|
2297
|
-
"violations_by_file_header": "❌
|
|
2310
|
+
"validating_file": "📄 验证 {language}.json({name})...",
|
|
2311
|
+
"valid_file_message": "✅ 有效 - 不违反语言纯度",
|
|
2312
|
+
"invalid_file_message": "❌无效- {count} 发现违规行为",
|
|
2313
|
+
"no_validation_rules": "没有为语言定义验证规则: {language}",
|
|
2314
|
+
"error_reading_file": "读取文件时出错: {errorMessage}",
|
|
2315
|
+
"issue_forbidden_marker": "含有禁止标记: {marker}",
|
|
2316
|
+
"issue_english_phrase": "包含英文短语:“{phrase}\"",
|
|
2317
|
+
"issue_english_words": "包含英文单词: {words}",
|
|
2318
|
+
"issue_missing_cyrillic": "长文本应包含俄语的西里尔字符",
|
|
2319
|
+
"issue_missing_japanese": "长文本应包含日语字符",
|
|
2320
|
+
"issue_missing_chinese": "长文本应包含汉字",
|
|
2321
|
+
"summary_title": "📊 验证摘要",
|
|
2322
|
+
"overall_results_header": "📋 总体结果:",
|
|
2323
|
+
"total_files_validated": "已验证的文件总数: {count}",
|
|
2324
|
+
"valid_files": "有效文件: {count}",
|
|
2325
|
+
"invalid_files": "无效文件: {count}",
|
|
2326
|
+
"total_violations": "违规总数: {count}",
|
|
2327
|
+
"violations_by_file_header": "❌ 文件违规:"
|
|
2298
2328
|
},
|
|
2299
2329
|
"workflow": {
|
|
2300
|
-
"title": "
|
|
2301
|
-
"description": "管理i18n
|
|
2302
|
-
"select_workflow_file": "
|
|
2303
|
-
"no_workflow_files": "
|
|
2304
|
-
"invalid_selection": "
|
|
2305
|
-
"workflow_execution_started": "
|
|
2306
|
-
"workflow_execution_completed": "
|
|
2307
|
-
"workflow_execution_failed": "
|
|
2308
|
-
"workflow_cancelled": "
|
|
2309
|
-
"press_enter_to_continue": "
|
|
2310
|
-
"starting": "🚀
|
|
2311
|
-
"completed": "✅
|
|
2312
|
-
"checkReports": "📄
|
|
2313
|
-
"exitingCompleted": "📝
|
|
2330
|
+
"title": "工作流程管理",
|
|
2331
|
+
"description": "管理 i18n 工作流程。",
|
|
2332
|
+
"select_workflow_file": "选择要运行的工作流程文件:",
|
|
2333
|
+
"no_workflow_files": "在工作流目录中找不到工作流文件。",
|
|
2334
|
+
"invalid_selection": "选择无效。请输入与工作流程文件对应的编号。",
|
|
2335
|
+
"workflow_execution_started": "启动工作流程: {workflowName}",
|
|
2336
|
+
"workflow_execution_completed": "工作流程完成: {workflowName}",
|
|
2337
|
+
"workflow_execution_failed": "工作流程失败: {workflowName} - {error}",
|
|
2338
|
+
"workflow_cancelled": "工作流程执行已取消。",
|
|
2339
|
+
"press_enter_to_continue": "按 Enter 继续!",
|
|
2340
|
+
"starting": "🚀 开始工作流程...",
|
|
2341
|
+
"completed": "✅ 工作流程成功完成!",
|
|
2342
|
+
"checkReports": "📄 查看报告了解详情。",
|
|
2343
|
+
"exitingCompleted": "📝 工作流程完成。正在退出...",
|
|
2314
2344
|
"summary": {
|
|
2315
2345
|
"title": "📋 工作流程摘要",
|
|
2316
2346
|
"separator": "===================",
|
|
2317
|
-
"completedAt": "🕐
|
|
2318
|
-
"initialViolations": "📊
|
|
2319
|
-
"finalViolations": "📉
|
|
2320
|
-
"totalFixes": "🔧
|
|
2321
|
-
"improvement": "📈
|
|
2322
|
-
"stepResults": "📝
|
|
2323
|
-
"stepDetail": "{number}
|
|
2324
|
-
"violations": "
|
|
2325
|
-
"fixesApplied": "
|
|
2326
|
-
"nextSteps": "💡
|
|
2327
|
-
"congratulations": "
|
|
2328
|
-
"cicdIntegration": "✅ 考虑将验证器集成到您的CI/CD管道中",
|
|
2329
|
-
"automatedChecks": "✅
|
|
2330
|
-
"greatProgress": "
|
|
2331
|
-
"manualReview": "🔍
|
|
2332
|
-
"addMappings": "🌐
|
|
2333
|
-
"goodProgress": "📈
|
|
2347
|
+
"completedAt": "🕐 工作流程完成于: {timestamp}",
|
|
2348
|
+
"initialViolations": "📊 最初的违规行为: {count}",
|
|
2349
|
+
"finalViolations": "📉 最终违规行为: {count}",
|
|
2350
|
+
"totalFixes": "🔧 应用的修复总数: {count}",
|
|
2351
|
+
"improvement": "📈 改进: {percentage}%",
|
|
2352
|
+
"stepResults": "📝 步骤结果:",
|
|
2353
|
+
"stepDetail": "{number}. {status} {stepName}",
|
|
2354
|
+
"violations": "违规行为: {count}",
|
|
2355
|
+
"fixesApplied": "应用的修复: {count}",
|
|
2356
|
+
"nextSteps": "💡 下一步:",
|
|
2357
|
+
"congratulations": "🎉恭喜!所有语言环境文件现在都具有完美的语言纯度!",
|
|
2358
|
+
"cicdIntegration": "✅ 考虑将验证器集成到您的 CI/CD 管道中",
|
|
2359
|
+
"automatedChecks": "✅ 设置新翻译的自动检查",
|
|
2360
|
+
"greatProgress": "🎯进步很大!大多数问题已经解决。",
|
|
2361
|
+
"manualReview": "🔍 手动审核剩余违规行为",
|
|
2362
|
+
"addMappings": "🌐 考虑为边缘情况添加更多平移映射",
|
|
2363
|
+
"goodProgress": "📈 取得了良好进展,但还需要做更多的工作。",
|
|
2334
2364
|
"expandMappings": "🔧 扩展自动翻译映射",
|
|
2335
|
-
"professionalReview": "👥
|
|
2365
|
+
"professionalReview": "👥 考虑对复杂翻译进行人工审核",
|
|
2336
2366
|
"runAgain": "🔄 添加更多映射后再次运行工作流程",
|
|
2337
|
-
"limitedProgress": "
|
|
2367
|
+
"limitedProgress": "⚠️进展有限。可能需要手动干预。",
|
|
2338
2368
|
"reviewMappings": "🔍 检查翻译映射并添加缺失的映射",
|
|
2339
2369
|
"professionalServices": "👥 考虑专业翻译服务",
|
|
2340
|
-
"checkIssues": "🔧
|
|
2370
|
+
"checkIssues": "🔧 检查语言环境文件中的系统问题",
|
|
2341
2371
|
"success": "✅",
|
|
2342
2372
|
"warning": "⚠️"
|
|
2343
2373
|
}
|
|
2344
2374
|
},
|
|
2345
2375
|
"consoleI18nTester": {
|
|
2346
2376
|
"found_target_file": "找到目标文件",
|
|
2347
|
-
"scanning_files_for_console_statements": "
|
|
2348
|
-
"found_javascript_files": "找到
|
|
2377
|
+
"scanning_files_for_console_statements": "扫描文件中的控制台语句",
|
|
2378
|
+
"found_javascript_files": "找到 JavaScript 文件",
|
|
2349
2379
|
"console_i18n_analysis_results": "控制台 i18n 分析结果",
|
|
2350
|
-
"total_console_statements": "
|
|
2351
|
-
"translated_statements": "
|
|
2380
|
+
"total_console_statements": "控制台语句总数",
|
|
2381
|
+
"translated_statements": "翻译后的陈述",
|
|
2352
2382
|
"hardcoded_statements": "硬编码语句",
|
|
2353
|
-
"translation_coverage": "
|
|
2354
|
-
"coverage_by_file": "
|
|
2383
|
+
"translation_coverage": "翻译覆盖范围",
|
|
2384
|
+
"coverage_by_file": "按文件覆盖范围",
|
|
2355
2385
|
"file_coverage_stats": "文件覆盖率统计",
|
|
2356
|
-
"hardcoded_console_statements": "
|
|
2386
|
+
"hardcoded_console_statements": "硬编码的控制台语句",
|
|
2357
2387
|
"file_header": "文件头",
|
|
2358
|
-
"line_statement": "
|
|
2388
|
+
"line_statement": "行声明",
|
|
2359
2389
|
"suggested_key": "建议键",
|
|
2360
|
-
"suggested_replacement": "
|
|
2390
|
+
"suggested_replacement": "建议更换",
|
|
2361
2391
|
"recommendations": "建议",
|
|
2362
|
-
"recommendation_1": "建议
|
|
2363
|
-
"recommendation_2": "建议
|
|
2364
|
-
"recommendation_3": "建议
|
|
2365
|
-
"recommendation_4": "建议
|
|
2392
|
+
"recommendation_1": "建议1",
|
|
2393
|
+
"recommendation_2": "建议2",
|
|
2394
|
+
"recommendation_3": "建议3",
|
|
2395
|
+
"recommendation_4": "建议4",
|
|
2366
2396
|
"translation_keys_to_add": "要添加的翻译键",
|
|
2367
|
-
"add_keys_instruction": "
|
|
2368
|
-
"perfect_translation_coverage": "
|
|
2369
|
-
"all_statements_using_translation": "
|
|
2397
|
+
"add_keys_instruction": "添加按键指令",
|
|
2398
|
+
"perfect_translation_coverage": "完美的翻译覆盖",
|
|
2399
|
+
"all_statements_using_translation": "所有陈述均使用翻译",
|
|
2370
2400
|
"i18n_console_translation_checker": "I18n 控制台翻译检查器",
|
|
2371
|
-
"script_description_line1": "
|
|
2372
|
-
"script_description_line2": "
|
|
2373
|
-
"analysis_completed_in_duration": "
|
|
2401
|
+
"script_description_line1": "脚本描述第1行",
|
|
2402
|
+
"script_description_line2": "脚本描述第2行",
|
|
2403
|
+
"analysis_completed_in_duration": "分析在持续时间内完成",
|
|
2374
2404
|
"report_saved_to_path": "报告保存到路径",
|
|
2375
|
-
"found_hardcoded_messages": "
|
|
2405
|
+
"found_hardcoded_messages": "发现硬编码消息",
|
|
2376
2406
|
"all_console_messages_use_translation": "所有控制台消息都使用翻译"
|
|
2377
2407
|
},
|
|
2378
2408
|
"exportTranslations": {
|
|
2379
|
-
"createdDirectory": "
|
|
2380
|
-
"foundFiles": "
|
|
2409
|
+
"createdDirectory": "已创建目录",
|
|
2410
|
+
"foundFiles": "找到的文件",
|
|
2381
2411
|
"createdTemplate": "创建模板",
|
|
2382
|
-
"skippedExisting": "
|
|
2412
|
+
"skippedExisting": "跳过现有的",
|
|
2383
2413
|
"title": "标题",
|
|
2384
2414
|
"creatingTemplates": "创建模板",
|
|
2385
|
-
"summary": "
|
|
2415
|
+
"summary": "概括",
|
|
2386
2416
|
"summaryLanguages": "摘要语言",
|
|
2387
|
-
"summaryFilesPerLanguage": "
|
|
2388
|
-
"summaryTotalFiles": "
|
|
2417
|
+
"summaryFilesPerLanguage": "每种语言的摘要文件",
|
|
2418
|
+
"summaryTotalFiles": "摘要 总文件数",
|
|
2389
2419
|
"success": "成功",
|
|
2390
|
-
"location": "
|
|
2391
|
-
"nextSteps": "
|
|
2420
|
+
"location": "地点",
|
|
2421
|
+
"nextSteps": "下一步"
|
|
2392
2422
|
},
|
|
2393
2423
|
"dashboard": {
|
|
2394
2424
|
"title": "标题",
|
|
2395
|
-
"overview": "
|
|
2425
|
+
"overview": "概述"
|
|
2396
2426
|
},
|
|
2397
2427
|
"auth": {
|
|
2398
2428
|
"title": "标题",
|
|
2399
2429
|
"email": "电子邮件",
|
|
2400
2430
|
"password": "密码",
|
|
2401
|
-
"signIn": "
|
|
2431
|
+
"signIn": "登入",
|
|
2402
2432
|
"forgotPassword": "忘记密码",
|
|
2403
|
-
"signUp": "
|
|
2433
|
+
"signUp": "报名"
|
|
2404
2434
|
},
|
|
2405
2435
|
"checkUsage": {
|
|
2406
2436
|
"usage_analysis_failed": "使用情况分析失败。"
|
|
2407
2437
|
},
|
|
2408
2438
|
"completeTranslations": {
|
|
2409
|
-
"warning_could_not_parse_filepa": "警告:无法解析文件路径:{filePath}"
|
|
2439
|
+
"warning_could_not_parse_filepa": "警告:无法解析文件路径: {filePath}"
|
|
2410
2440
|
},
|
|
2411
2441
|
"pressEnterToContinue": "按 Enter 键继续...",
|
|
2412
2442
|
"status": {
|