i18ntk 1.2.2 → 1.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 +48 -2
- package/LICENSE +3 -1
- package/README.md +47 -46
- package/docs/README.md +40 -18
- package/docs/SCRIPT_DIRECTORY_GUIDE.md +224 -0
- package/docs/release-notes/v1.3.0.md +162 -0
- package/main/i18ntk-analyze.js +11 -6
- package/main/i18ntk-autorun.js +37 -36
- package/main/i18ntk-complete.js +9 -5
- package/main/i18ntk-init.js +16 -12
- package/main/i18ntk-manage.js +6 -4
- package/main/i18ntk-sizing.js +5 -1
- package/main/i18ntk-summary.js +6 -2
- package/main/i18ntk-usage.js +5 -5
- package/main/i18ntk-validate.js +9 -5
- package/package.json +12 -5
- package/scripts/copy-translations.js +90 -0
- package/settings/i18ntk-config.json +11 -1
- package/settings/settings-cli.js +136 -75
- package/settings/settings-manager.js +19 -0
- package/ui-locales/de/autorun.json +69 -64
- package/ui-locales/de/common.json +14 -1
- package/ui-locales/de/errors.json +11 -1
- package/ui-locales/de/menu.json +10 -1
- package/ui-locales/de/operations.json +11 -0
- package/ui-locales/de/security.json +2 -1
- package/ui-locales/de/settings.json +60 -9
- package/ui-locales/de/sizing.json +14 -1
- package/ui-locales/de/status.json +18 -1
- package/ui-locales/de/test-complete-system.json +13 -1
- package/ui-locales/en/autorun.json +68 -65
- package/ui-locales/en/common.json +15 -1
- package/ui-locales/en/init.json +20 -5
- package/ui-locales/en/menu.json +1 -0
- package/ui-locales/en/operations.json +11 -1
- package/ui-locales/en/settings.json +151 -34
- package/ui-locales/es/autorun.json +68 -65
- package/ui-locales/es/common.json +14 -1
- package/ui-locales/es/errors.json +11 -1
- package/ui-locales/es/menu.json +10 -1
- package/ui-locales/es/operations.json +11 -0
- package/ui-locales/es/security.json +2 -1
- package/ui-locales/es/settings.json +60 -9
- package/ui-locales/es/sizing.json +14 -1
- package/ui-locales/es/status.json +18 -1
- package/ui-locales/es/test-complete-system.json +13 -1
- package/ui-locales/fr/autorun.json +69 -64
- package/ui-locales/fr/common.json +14 -1
- package/ui-locales/fr/errors.json +11 -1
- package/ui-locales/fr/menu.json +10 -1
- package/ui-locales/fr/operations.json +11 -0
- package/ui-locales/fr/security.json +2 -1
- package/ui-locales/fr/settings.json +60 -9
- package/ui-locales/fr/sizing.json +14 -1
- package/ui-locales/fr/status.json +18 -1
- package/ui-locales/fr/test-complete-system.json +13 -1
- package/ui-locales/ja/autorun.json +69 -64
- package/ui-locales/ja/common.json +14 -1
- package/ui-locales/ja/errors.json +11 -1
- package/ui-locales/ja/menu.json +10 -1
- package/ui-locales/ja/operations.json +11 -0
- package/ui-locales/ja/security.json +2 -1
- package/ui-locales/ja/settings.json +60 -9
- package/ui-locales/ja/sizing.json +14 -1
- package/ui-locales/ja/status.json +18 -1
- package/ui-locales/ja/test-complete-system.json +13 -1
- package/ui-locales/pt/analyze.json +2 -1
- package/ui-locales/pt/autorun.json +69 -64
- package/ui-locales/pt/common.json +14 -1
- package/ui-locales/pt/errors.json +11 -1
- package/ui-locales/pt/init.json +5 -1
- package/ui-locales/pt/menu.json +10 -1
- package/ui-locales/pt/operations.json +11 -0
- package/ui-locales/pt/security.json +2 -1
- package/ui-locales/pt/settings.json +60 -9
- package/ui-locales/pt/sizing.json +14 -1
- package/ui-locales/pt/status.json +18 -1
- package/ui-locales/pt/test-complete-system.json +13 -1
- package/ui-locales/ru/autorun.json +69 -64
- package/ui-locales/ru/common.json +14 -1
- package/ui-locales/ru/errors.json +11 -1
- package/ui-locales/ru/menu.json +10 -1
- package/ui-locales/ru/operations.json +11 -0
- package/ui-locales/ru/security.json +2 -1
- package/ui-locales/ru/settings.json +60 -9
- package/ui-locales/ru/sizing.json +14 -1
- package/ui-locales/ru/status.json +18 -1
- package/ui-locales/ru/test-complete-system.json +13 -1
- package/ui-locales/zh/autorun.json +69 -64
- package/ui-locales/zh/common.json +14 -1
- package/ui-locales/zh/errors.json +11 -1
- package/ui-locales/zh/menu.json +10 -1
- package/ui-locales/zh/operations.json +11 -0
- package/ui-locales/zh/security.json +2 -1
- package/ui-locales/zh/settings.json +60 -9
- package/ui-locales/zh/sizing.json +13 -1
- package/ui-locales/zh/status.json +25 -8
- package/ui-locales/zh/test-complete-system.json +13 -1
- package/utils/test-complete-system.js +178 -162
- package/settings/backups/i18ntk-config-backup-2025-08-01T23-38-43-753Z.json +0 -117
- package/ui-locales/de-old.json +0 -705
- package/ui-locales/de.json +0 -15
- package/ui-locales/en-old.json +0 -709
- package/ui-locales/en.json +0 -15
- package/ui-locales/es-old.json +0 -654
- package/ui-locales/es.json +0 -15
- package/ui-locales/fr-old.json +0 -606
- package/ui-locales/fr.json +0 -15
- package/ui-locales/ja-old.json +0 -660
- package/ui-locales/ja.json +0 -15
- package/ui-locales/pt.json +0 -15
- package/ui-locales/ru-old.json +0 -655
- package/ui-locales/ru.json +0 -15
- package/ui-locales/zh-old.json +0 -647
- package/ui-locales/zh.json +0 -15
package/ui-locales/zh-old.json
DELETED
|
@@ -1,647 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"language": {
|
|
3
|
-
"title": "🌍 语言选择",
|
|
4
|
-
"separator": "============================================================",
|
|
5
|
-
"current": "当前语言: {language}",
|
|
6
|
-
"available": "可用语言:",
|
|
7
|
-
"prompt": "请选择语言 (输入0取消): ",
|
|
8
|
-
"cancelled": "语言选择已取消。",
|
|
9
|
-
"changed": "语言已更改为: {language}",
|
|
10
|
-
"invalid": "选择无效。请重试。",
|
|
11
|
-
"changeTitle": "🌍 更改界面语言",
|
|
12
|
-
"invalidSelection": "❌ 选择无效。请重试。"
|
|
13
|
-
},
|
|
14
|
-
"menu": {
|
|
15
|
-
"title": "🌐 国际化管理菜单",
|
|
16
|
-
"separator": "============================================================",
|
|
17
|
-
"options": {
|
|
18
|
-
"init": "🚀 初始化新语言",
|
|
19
|
-
"analyze": "🔍 分析翻译",
|
|
20
|
-
"validate": "✅ 验证翻译",
|
|
21
|
-
"usage": "📊 检查键使用情况",
|
|
22
|
-
"complete": "🎯 完成翻译(100% 覆盖)",
|
|
23
|
-
"sizing": "📏 分析大小",
|
|
24
|
-
"workflow": "🔄 运行完整流程",
|
|
25
|
-
"status": "📋 显示项目状态",
|
|
26
|
-
"delete": "🗑️ 删除所有报告",
|
|
27
|
-
"language": "🌍 更改界面语言",
|
|
28
|
-
"settings": "⚙️ 配置",
|
|
29
|
-
"help": "❓ 帮助",
|
|
30
|
-
"debug": "🔧 调试工具",
|
|
31
|
-
"exit": "🚪 退出"
|
|
32
|
-
},
|
|
33
|
-
"goodbye": "👋 再见!",
|
|
34
|
-
"invalidChoice": "❌ 选择无效。请选择0-13之间的数字。",
|
|
35
|
-
"returning": "🔄 返回主菜单...",
|
|
36
|
-
"invalidOption": "❌ 选项无效。请重试。"
|
|
37
|
-
},
|
|
38
|
-
"init": {
|
|
39
|
-
"warnings": {
|
|
40
|
-
"noPackageJson": "⚠️ 当前目录未找到package.json"
|
|
41
|
-
},
|
|
42
|
-
"suggestions": {
|
|
43
|
-
"noFramework": "💡 未检测到i18n框架。考虑安装:",
|
|
44
|
-
"installFramework": "💡 安装框架: npm install react-i18next"
|
|
45
|
-
},
|
|
46
|
-
"frameworks": {
|
|
47
|
-
"react": " - React: react-i18next",
|
|
48
|
-
"vue": " - Vue: vue-i18n",
|
|
49
|
-
"i18next": " - i18next: i18next",
|
|
50
|
-
"nuxt": " - Nuxt: @nuxtjs/i18n",
|
|
51
|
-
"svelte": " - Svelte: svelte-i18n"
|
|
52
|
-
},
|
|
53
|
-
"errors": {
|
|
54
|
-
"packageJsonRead": "❌ 读取package.json时出错",
|
|
55
|
-
"noFramework": "❌ 未找到支持的i18n框架"
|
|
56
|
-
},
|
|
57
|
-
"creatingSourceDirectory": "📁 正在创建源目录: {{dir}}",
|
|
58
|
-
"creatingSourceLanguageDirectory": "📁 正在创建源语言目录: {{dir}}",
|
|
59
|
-
"createdSampleTranslationFile": "📄 已创建示例翻译文件: {{file}}",
|
|
60
|
-
"adminPinSeparator": "==================================================",
|
|
61
|
-
"adminPinDescription1": "管理员PIN码保护为敏感操作增加了安全性,例如:",
|
|
62
|
-
"adminPinDescription2": "• 删除翻译文件",
|
|
63
|
-
"adminPinDescription3": "• 修改项目配置",
|
|
64
|
-
"adminPinDescription4": "• 运行管理命令",
|
|
65
|
-
"settingUpAdminPin": "📝 正在设置管理员PIN码...",
|
|
66
|
-
"pinMustBe4To8Digits": "❌ PIN码必须是4-8位数字。请重试。",
|
|
67
|
-
"pinsDoNotMatch": "❌ PIN码不匹配。请重试。",
|
|
68
|
-
"adminPinSetupSuccess": "✅ 管理员PIN码已成功设置!",
|
|
69
|
-
"adminProtectionEnabled": "🔒 管理员保护已为敏感操作启用。",
|
|
70
|
-
"errorSettingUpAdminPin": "❌ 设置管理员PIN码时出错: {error}",
|
|
71
|
-
"continuingWithoutAdminPin": "⚠️ 在没有管理员PIN码保护的情况下继续。",
|
|
72
|
-
"skippingAdminPinSetup": "⏭️ 跳过管理员PIN码设置。您可以在以后使用设置进行设置。",
|
|
73
|
-
"adminPinSetupOptional": "🔐 管理员PIN码设置 (可选)",
|
|
74
|
-
"adminPinSetupPrompt": "您想设置管理员PIN码吗?(y/N): ",
|
|
75
|
-
"enterAdminPin": "输入管理员PIN码 (4-8位数字): ",
|
|
76
|
-
"confirmAdminPin": "确认管理员PIN码: ",
|
|
77
|
-
"languageSelectionTitle": "🌍 国际化语言选择",
|
|
78
|
-
"defaultLanguages": "📋 默认语言: {languages}",
|
|
79
|
-
"enterLanguageCodes": "输入语言代码 (逗号分隔) 或按Enter键使用默认值: ",
|
|
80
|
-
"warningInvalidLanguageCodes": "⚠️ 警告: 无效的语言代码已被忽略: {languages}",
|
|
81
|
-
"initializationTitle": "🚀 国际化初始化",
|
|
82
|
-
"sourceDirectoryLabel": "📁 源目录: {dir}",
|
|
83
|
-
"sourceLanguageLabel": "🔤 源语言: {language}",
|
|
84
|
-
"initializingProject": "🚀 正在初始化国际化项目...",
|
|
85
|
-
"warningProceedingWithoutFramework": "⚠️ 警告: 在没有适当的国际化框架的情况下继续。",
|
|
86
|
-
"translationFilesCreatedWarning": "🔧 翻译文件将被创建,但如果没有适当的国际化设置可能无法工作。",
|
|
87
|
-
"noTargetLanguagesSpecified": "❌ 未指定目标语言。正在退出。",
|
|
88
|
-
"targetLanguages": "🎯 目标语言: {languages}",
|
|
89
|
-
"foundSourceFiles": "📄 找到 {count} 个源文件: {files}",
|
|
90
|
-
"processingLanguage": "🔄 正在处理 {language} ({name})...",
|
|
91
|
-
"fileProcessingResult": " ✅ {file}: {translated}/{total} ({percentage}%)",
|
|
92
|
-
"overallProgress": " 📊 总体: {translated}/{total} ({percentage}%)",
|
|
93
|
-
"initializationSummaryTitle": "📊 初始化摘要",
|
|
94
|
-
"languageSummary": "{icon} {name} ({code}): {percentage}% 完成",
|
|
95
|
-
"languageFiles": " 📄 文件: {count}",
|
|
96
|
-
"languageKeys": " 🔤 键: {translated}/{total}",
|
|
97
|
-
"languageMissing": " ⚠️ 缺失: {count}",
|
|
98
|
-
"initializationCompletedSuccessfully": "🎉 初始化成功完成!",
|
|
99
|
-
"nextStepsTitle": "📋 下一步:",
|
|
100
|
-
"nextStep1": "1. 运行: npm run i18n:analyze",
|
|
101
|
-
"nextStep2": "2. 翻译语言文件中缺失的值",
|
|
102
|
-
"nextStep3": "3. 运行: npm run i18n:validate",
|
|
103
|
-
"detectedI18nFrameworks": "✅ 检测到国际化框架: {{frameworks}}",
|
|
104
|
-
"continueWithoutI18nPrompt": "🤔 在没有国际化框架的情况下继续?(y/N): ",
|
|
105
|
-
"initializationFailed": "❌ 初始化失败: {{error}}"
|
|
106
|
-
},
|
|
107
|
-
"workflow": {
|
|
108
|
-
"starting": "🚀 开始执行流程...",
|
|
109
|
-
"completed": "✅ 流程执行成功完成!",
|
|
110
|
-
"checkReports": "📋 查看报告详情",
|
|
111
|
-
"exitingCompleted": "📝 流程完成,正在退出..."
|
|
112
|
-
},
|
|
113
|
-
"operations": {
|
|
114
|
-
"completed": "✅ 操作成功完成!",
|
|
115
|
-
"cancelled": "❌ 操作已取消。",
|
|
116
|
-
"settings": {
|
|
117
|
-
"title": "⚙️ 设置管理",
|
|
118
|
-
"separator": "============================================================"
|
|
119
|
-
},
|
|
120
|
-
"init": {
|
|
121
|
-
"title": "🚀 初始化翻译"
|
|
122
|
-
},
|
|
123
|
-
"usage": {
|
|
124
|
-
"title": "📊 检查键使用情况"
|
|
125
|
-
},
|
|
126
|
-
"analyze": {
|
|
127
|
-
"title": "📊 分析翻译"
|
|
128
|
-
},
|
|
129
|
-
"validate": {
|
|
130
|
-
"title": "✅ 验证翻译"
|
|
131
|
-
},
|
|
132
|
-
"complete": {
|
|
133
|
-
"deletingOldReport": "🗑️ 删除旧的使用报告以进行新分析",
|
|
134
|
-
"generatingFreshAnalysis": "🔄 生成新的使用分析...",
|
|
135
|
-
"couldNotGenerate": "⚠️ 无法生成使用分析。使用常见缺失键。",
|
|
136
|
-
"reportNotFound": "⚠️ 未找到使用报告。正在生成新的分析...",
|
|
137
|
-
"foundMissingKeys": "🔍 使用分析中发现缺失键 {count} 个",
|
|
138
|
-
"couldNotParse": "⚠️ 无法解析使用报告。使用常见缺失键。",
|
|
139
|
-
"title": "🎯 完成翻译",
|
|
140
|
-
"separator": "============================================================",
|
|
141
|
-
"sourceDir": "📁 源目录: {sourceDir}",
|
|
142
|
-
"sourceLanguage": "🔤 源语言: {sourceLanguage}",
|
|
143
|
-
"dryRunMode": "🧪 试运行模式 - 不会修改任何文件",
|
|
144
|
-
"languages": "🎯 目标语言: {languages}",
|
|
145
|
-
"addingMissingKeys": "➕ 正在添加缺失的翻译键到文件...",
|
|
146
|
-
"processing": "🔄 正在处理 {language}...",
|
|
147
|
-
"addedKeys": "✅ 添加了 {count} 个键",
|
|
148
|
-
"changeDetails": "📝 {file}: {key}",
|
|
149
|
-
"noChangesNeeded": "✅ {language} 无需更改",
|
|
150
|
-
"summaryTitle": "📊 完成摘要",
|
|
151
|
-
"totalChanges": "📝 总更改数: {totalChanges}",
|
|
152
|
-
"languagesProcessed": "🌐 已处理语言数: {languagesProcessed}",
|
|
153
|
-
"missingKeysAdded": "➕ 新增缺失键: {missingKeysAdded}",
|
|
154
|
-
"nextStepsTitle": "📋 后续步骤",
|
|
155
|
-
"nextStep1": "1. 运行使用分析:",
|
|
156
|
-
"nextStep2": "2. 验证翻译:",
|
|
157
|
-
"nextStep3": "3. 分析完整性:",
|
|
158
|
-
"allKeysAvailable": "🎉 所有翻译键均已可用!",
|
|
159
|
-
"runWithoutDryRun": "💡 运行时去掉 --dry-run 以应用更改"
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
"admin": {
|
|
163
|
-
"authRequired": "🔐 需要管理员身份验证",
|
|
164
|
-
"invalidPin": "❌ PIN码无效。访问被拒绝。",
|
|
165
|
-
"authSuccess": "✅ 身份验证成功"
|
|
166
|
-
},
|
|
167
|
-
"status": {
|
|
168
|
-
"generating": "\n📊 正在生成状态摘要...",
|
|
169
|
-
"completed": "✅ 状态摘要生成成功!",
|
|
170
|
-
"exitingCompleted": "\n📝 状态摘要完成,正在退出...",
|
|
171
|
-
"i18nSetup": "🌐 国际化设置"
|
|
172
|
-
},
|
|
173
|
-
"common": {
|
|
174
|
-
"errorExiting": "\n📝 出错,正在退出...",
|
|
175
|
-
"welcome": "👋 欢迎使用国际化管理工具包!",
|
|
176
|
-
"success": "✅ 操作成功完成!",
|
|
177
|
-
"error": "❌ 发生错误!"
|
|
178
|
-
},
|
|
179
|
-
"delete": {
|
|
180
|
-
"options": {
|
|
181
|
-
"title": "🗑️ 删除选项",
|
|
182
|
-
"all": "1. 删除所有报告",
|
|
183
|
-
"keepLast3": "2. 保留最近3份报告",
|
|
184
|
-
"cancel": "0. 取消"
|
|
185
|
-
},
|
|
186
|
-
"noFiles": "📂 无可删除文件。"
|
|
187
|
-
},
|
|
188
|
-
"usage": {
|
|
189
|
-
"help_message": "\nI18n 使用情况分析器\n\n用法: node i18ntk-usage.js [选项]\n\n选项:\n --source-dir <dir> 要扫描的源目录 (默认: ./src)\n --i18n-dir <dir> I18n 目录 (默认: ./src/locales)\n --output-report 生成详细报告\n --output-dir <dir> 报告输出目录 (默认: ./reports)\n --help 显示此帮助\n\n示例:\n node i18ntk-usage.js --output-report\n node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-usage.js --output-dir=./analysis --output-report\n",
|
|
190
|
-
"source_directory_thissourcedir": "📁 源目录: {sourceDir}",
|
|
191
|
-
"i18n_directory_thisi18ndir": "🌐 I18n 目录: {i18nDir}",
|
|
192
|
-
"failed_to_parse_filename_error": "⚠️ 解析 {fileName} 失败: {errorMessage}",
|
|
193
|
-
"analyzing_source_files": "🔍 正在分析源文件...",
|
|
194
|
-
"found_files_in_source": "📂 在源目录中找到 {numFiles} 个文件",
|
|
195
|
-
"found_thisusedkeyssize_unique_": "🎯 找到 {usedKeysSize} 个唯一使用的键",
|
|
196
|
-
"total_key_usages_totalkeysfoun": "📊 总键使用量: {totalKeysFound}",
|
|
197
|
-
"loading_available_translation_": "📋 正在加载可用翻译键...",
|
|
198
|
-
"found_thisavailablekeyssize_av": "✅ 找到 {availableKeysSize} 个可用键",
|
|
199
|
-
"title": "🔍 I18N 使用情况分析",
|
|
200
|
-
"message": "正在运行使用情况分析...",
|
|
201
|
-
"n": "\n",
|
|
202
|
-
"analysisResults": "📊 使用情况分析结果",
|
|
203
|
-
"source_files_scanned_thisfileu": "📄 已扫描源文件: {fileUsageSize}",
|
|
204
|
-
"availableKeysCount": "✅ 可用键: {availableKeysSize}",
|
|
205
|
-
"usedKeysCount": "🎯 已用键: {usedKeysSize}",
|
|
206
|
-
"dynamic_keys_detected_dynamick": "🔄 检测到动态键数量: {dynamicKeysLength}",
|
|
207
|
-
"unused_keys_unusedkeyslength": "❌ 未使用的键数量: {unusedKeysLength}",
|
|
208
|
-
"missing_keys_missingkeyslength": "⚠️ 缺失键数量: {missingKeysLength}",
|
|
209
|
-
"translation_completeness_title": "🌍 翻译完整性:",
|
|
210
|
-
"language_completeness_stats": " {language}: 完整度 {completeness}% ({translated}/{total})",
|
|
211
|
-
"n_sample_unused_keys": "\n📋 未使用键示例:",
|
|
212
|
-
"key": "❌ {key}",
|
|
213
|
-
"and_unusedkeyslength_5_more": "... 以及更多 {count} 个",
|
|
214
|
-
"n_sample_missing_keys": "\n📋 缺失键示例:",
|
|
215
|
-
"and_missingkeyslength_5_more": "... 以及更多 {count} 个缺失键",
|
|
216
|
-
"n_generating_detailed_report": "\n📄 正在生成详细报告...",
|
|
217
|
-
"report_saved_reportpath": "📄 报告已保存: {reportPath}",
|
|
218
|
-
"n_recommendations": "\n💡 建议:",
|
|
219
|
-
"consider_removing_unused_trans": "🗑️ 考虑删除未使用的翻译键",
|
|
220
|
-
"add_missing_translation_keys_t": "⚠️ 添加缺失的翻译键以避免运行时错误",
|
|
221
|
-
"review_dynamic_keys_manually_t": "🔄 手动检查动态键以确保所有变体存在",
|
|
222
|
-
"all_translation_keys_are_prope": "🎉 所有翻译键均已正确使用!",
|
|
223
|
-
"n_next_steps": "\n📋 后续步骤:",
|
|
224
|
-
"1_review_the_analysis_results": "1. 查看以上分析结果",
|
|
225
|
-
"2_check_the_detailed_report_fo": "2. 检查详细报告中的具体文件和键",
|
|
226
|
-
"2_run_with_outputreport_for_de": "2. 使用 --output-report 运行以获取详细报告",
|
|
227
|
-
"3_remove_unused_keys_or_add_mi": "3. 删除未使用键或添加缺失键",
|
|
228
|
-
"4_rerun_analysis_to_verify_imp": "4. 重新运行分析以验证改进",
|
|
229
|
-
"usage_analysis_failed": "❌ 使用分析失败:"
|
|
230
|
-
},
|
|
231
|
-
|
|
232
|
-
"validateTranslations": {
|
|
233
|
-
"invalidEmailFormat": "❌ 邮箱格式无效",
|
|
234
|
-
"help_message": "\n国际化翻译验证器\n\n用法: node i18ntk-validate.js [选项]\n\n选项:\n --language <lang> 验证指定语言 (默认: 全部)\n --source-dir <dir> 源目录 (默认: ./src/locales)\n --strict 启用严格模式(警告视为错误)\n --help 显示此帮助\n\n管理员命令:\n --setup-admin 设置管理员PIN保护\n --disable-admin 禁用管理员PIN保护\n --admin-status 显示管理员保护状态\n\n示例:\n node i18ntk-validate.js\n node i18ntk-validate.js --language=de\n node i18ntk-validate.js --source-dir=./locales --strict\n node i18ntk-validate.js --setup-admin\n",
|
|
235
|
-
"title": "🔍 国际化翻译验证",
|
|
236
|
-
"message": "=",
|
|
237
|
-
"deletedOldReport": "🗑️ 删除旧的验证报告",
|
|
238
|
-
"sourceDirectory": "📁 源目录: {{dir}}",
|
|
239
|
-
"source_language_thisconfigsour": "🔤 源语言: {{sourceLanguage}}",
|
|
240
|
-
"strictMode": "⚙️ 严格模式: {{mode}}",
|
|
241
|
-
"noTargetLanguages": "❌ 未找到目标语言。",
|
|
242
|
-
"validatingLanguages": "🎯 正在验证语言: {{langs}}",
|
|
243
|
-
"validatingLanguage": "\n🔄 正在验证 {{lang}}...",
|
|
244
|
-
"filesCount": " 📄 文件数: {count}",
|
|
245
|
-
"keysCount": " 🔤 键数: {count}",
|
|
246
|
-
"missingFilesCount": " ❌ 缺失文件数: {count}",
|
|
247
|
-
"syntaxErrorsCount": " 🐛 语法错误数: {count}",
|
|
248
|
-
"translationPercentage": " 📊 翻译完成度: {{percentage}}% ({{translated}}/{{total}})",
|
|
249
|
-
"n_validation_summary": "\n📊 验证摘要",
|
|
250
|
-
"total_errors": "❌ 错误总数: {count}",
|
|
251
|
-
"total_warnings": "⚠️ 警告总数: {count}",
|
|
252
|
-
"n_errors": "\n❌ 错误:",
|
|
253
|
-
"n_warnings": "\n⚠️ 警告:",
|
|
254
|
-
"n_recommendations": "\n📋 建议",
|
|
255
|
-
"fix_errors_first": "🔧 先修复错误:",
|
|
256
|
-
"1_resolve_missing_files_and_sy": "1. 解决缺失文件和语法错误",
|
|
257
|
-
"2_fix_structural_inconsistenci": "2. 修复结构不一致",
|
|
258
|
-
"3_complete_missing_translation": "3. 补全缺失翻译",
|
|
259
|
-
"4_rerun_validation": "4. 重新运行验证",
|
|
260
|
-
"address_warnings": "⚠️ 处理警告:",
|
|
261
|
-
"review_warnings": "1. 查看上述警告",
|
|
262
|
-
"2_consider_running_with_strict": "2. 考虑使用 --strict 进行更严格验证",
|
|
263
|
-
"all_validations_passed": "🎉 所有验证通过!",
|
|
264
|
-
"consider_running_usage_analysi": "💡 考虑运行使用分析以查找未使用的键",
|
|
265
|
-
"validation_failed": "❌ 验证失败:"
|
|
266
|
-
},
|
|
267
|
-
"analyzeTranslations": {
|
|
268
|
-
"referenceLanguageFiles": "📋 参考语言文件",
|
|
269
|
-
"analyzingLanguage": "🔄 正在分析语言: {language}",
|
|
270
|
-
"reportTitle": "📊 翻译分析报告",
|
|
271
|
-
"generated": "📅 生成时间",
|
|
272
|
-
"status": "状态: {translated}/{total} 已翻译 ({percentage}%)",
|
|
273
|
-
"filesAnalyzed": "已分析文件: {analyzed}/{total}",
|
|
274
|
-
"keysNeedingTranslation": "需要翻译的键: {count}",
|
|
275
|
-
"fileBreakdown": "文件详细信息:",
|
|
276
|
-
"statusFileMissing": "状态: 文件缺失",
|
|
277
|
-
"sourceKeys": "源键:{count}",
|
|
278
|
-
"translation": "翻译:{translated}/{total} ({percentage}%)",
|
|
279
|
-
"structure": "结构:{status}",
|
|
280
|
-
"consistent": "一致",
|
|
281
|
-
"inconsistent": "不一致",
|
|
282
|
-
"missingKeys": "缺失键: {count}",
|
|
283
|
-
"extraKeys": "额外键: {count}",
|
|
284
|
-
"issues": "问题: {count}",
|
|
285
|
-
"issueType": {
|
|
286
|
-
"not_translated": "未翻译: {count}",
|
|
287
|
-
"empty_value": "空值: {count}",
|
|
288
|
-
"partial_translation": "部分翻译: {count}",
|
|
289
|
-
"same_as_source": "与源相同: {count}"
|
|
290
|
-
},
|
|
291
|
-
"key": "键",
|
|
292
|
-
"english": "英语",
|
|
293
|
-
"needsTranslation": "需要翻译",
|
|
294
|
-
"andMoreKeys": "... 以及其他 {count} 个键",
|
|
295
|
-
"problematic_no": "未检测到大小问题",
|
|
296
|
-
"problematic_yes": "检测到潜在大小问题",
|
|
297
|
-
"summary": "\n📊 分析摘要",
|
|
298
|
-
"keysToTranslate": "需要翻译的键",
|
|
299
|
-
"help_message": "\n国际化翻译分析器\n\n用法: node i18ntk-analyze.js [选项]\n\n选项:\n --language <lang> 分析指定语言 (默认: 全部)\n --source-dir <dir> 源目录 (默认: ./src/locales)\n --output-reports 生成详细报告\n --output-dir <dir> 报告输出目录 (默认: ./reports)\n --help 显示此帮助\n\n示例:\n node i18ntk-analyze.js --output-reports\n node i18ntk-analyze.js --language=de --output-reports\n node i18ntk-analyze.js --source-dir=./locales --output-dir=./analysis\n",
|
|
300
|
-
"starting": "🔍 开始翻译分析...",
|
|
301
|
-
"noLanguages": "⚠️ 未找到目标语言。",
|
|
302
|
-
"foundLanguages": "📋 发现 {count} 种语言待分析: {{languages}}",
|
|
303
|
-
"analyzing": "\n🔄 正在分析 {{language}}...",
|
|
304
|
-
"completed": "✅ {{language}} 分析完成",
|
|
305
|
-
"progress": " 进度: {{percentage}}% ({{translatedKeys}}/{{totalKeys}} 键)",
|
|
306
|
-
"reportSaved": " 报告已保存: {{reportPath}}",
|
|
307
|
-
"finished": "\n✅ 分析成功完成!",
|
|
308
|
-
"error": "❌ 分析失败"
|
|
309
|
-
},
|
|
310
|
-
"completeTranslations": {
|
|
311
|
-
"warning_could_not_parse_filepa": "⚠️ 无法解析文件: {filePath}"
|
|
312
|
-
},
|
|
313
|
-
"hardcodedTexts": {
|
|
314
|
-
"securityUnknownCommandArg": "安全:未知命令参数",
|
|
315
|
-
"securityUnknownConfigKey": "安全:未知配置键",
|
|
316
|
-
"translationNotFound": "未找到键的翻译",
|
|
317
|
-
"noSourceFilesFound": "未找到要分析的源文件。",
|
|
318
|
-
"usageAnalysisCompleted": "✅ 使用分析成功完成",
|
|
319
|
-
"analyzingTranslationCompleteness": "🔍 分析翻译完整性...",
|
|
320
|
-
"analysisCompletedSuccessfully": "分析成功完成",
|
|
321
|
-
"foundTranslationFiles": "🔍 找到 {count} 个翻译文件",
|
|
322
|
-
"processedFiles": "📊 已处理 {processedFiles}/{totalFiles} 个文件...",
|
|
323
|
-
"i18nDirectoryNotFound": "未找到 i18n 目录:{i18nDir}",
|
|
324
|
-
"noTranslationLanguagesFound": "未找到翻译语言。",
|
|
325
|
-
"failedToAnalyzeFile": "分析 {filePath} 失败:{error}",
|
|
326
|
-
"failedToAnalyzeLanguage": "分析语言 {language} 失败:{error}",
|
|
327
|
-
"translationCompletenessAnalysisFailed": "翻译完整性分析失败:{error}",
|
|
328
|
-
"invalidChoiceSelectRange": "无效选择。请选择 1 到 {max} 之间的数字。",
|
|
329
|
-
"errorGeneratingStatusSummary": "生成状态摘要时出错:{error}",
|
|
330
|
-
"debugToolNotFound": "未找到调试工具:{tool}",
|
|
331
|
-
"pressEnterToReturnToMenu": "按Enter键返回菜单",
|
|
332
|
-
"errorRunningDebugTool": "运行调试工具时出错:{error}",
|
|
333
|
-
"autoDetectedI18nDirectory": "自动检测到 i18n 目录:{directory}",
|
|
334
|
-
"stepRunning": "🔄 正在运行步骤: {stepName}",
|
|
335
|
-
"executingCommand": "执行命令:{command}",
|
|
336
|
-
"unknownCommand": "未知命令:{command}",
|
|
337
|
-
"errorExecutingCommand": "执行命令时出错:{error}",
|
|
338
|
-
"mainDebuggerSystemDiagnostics": "主调试器 - 系统诊断",
|
|
339
|
-
"consoleTranslationsCheck": "控制台翻译检查",
|
|
340
|
-
"exportMissingKeys": "🔑 导出缺失键 - 导出缺失的翻译键",
|
|
341
|
-
"replaceHardcodedConsole": "🔄 替换硬编码控制台 - 转换硬编码消息",
|
|
342
|
-
"consoleKeyChecker": "✅ 控制台键检查器 - 验证控制台翻译键",
|
|
343
|
-
"debugLogs": "📝 调试日志 - 查看最近的调试日志",
|
|
344
|
-
"backToMainMenu": "← 返回主菜单",
|
|
345
|
-
"runningDebugTool": "🔧 正在运行 {displayName}...",
|
|
346
|
-
"recentDebugLogs": "📝 最近的调试日志",
|
|
347
|
-
"noDebugLogsFound": "📭 未找到调试日志。",
|
|
348
|
-
"debugLogsDirectoryNotFound": "📭 未找到调试日志目录。",
|
|
349
|
-
"errorReadingDebugLogs": "❌ 读取调试日志时出错: {error}",
|
|
350
|
-
"debugLogSelectPrompt": "选择要查看的日志 (1-{count}) 或0返回: ",
|
|
351
|
-
"debugLogError": "读取调试日志时出错:",
|
|
352
|
-
"missingRequiredFile": "❌ 缺少必需的文件/目录: {file}",
|
|
353
|
-
"runInitializationFirst": "🔧 请先运行初始化: node i18ntk-init.js",
|
|
354
|
-
"initializationCheckPassed": "✅ 初始化检查通过",
|
|
355
|
-
"runningStep": "🔄 正在运行: {stepName}",
|
|
356
|
-
"commandStep": " 命令: {command}",
|
|
357
|
-
"stepCompleted": "✅ {stepName} 已完成",
|
|
358
|
-
"stepCompletedWithDuration": "✅ {stepName} 在 {duration}ms 内完成",
|
|
359
|
-
"stepFailed": "❌ {stepName} 失败: {error}",
|
|
360
|
-
"stepFailedWithDetails": "❌ {stepName} 失败:\n 错误: {error}",
|
|
361
|
-
"requiredStepFailed": "🛑 必需步骤失败。停止执行。",
|
|
362
|
-
"optionalStepFailed": "⚠️ 可选步骤失败。继续执行...",
|
|
363
|
-
"startingAutoRunWorkflow": "🚀 启动自动运行工作流",
|
|
364
|
-
"workflowIncludes": "📋 工作流包含 {stepCount} 个步骤:",
|
|
365
|
-
"stepListItem": " {index}. {stepName} {required}",
|
|
366
|
-
"startingExecution": "⏱️ 开始执行...",
|
|
367
|
-
"workflowStopped": "🛑 由于必需步骤失败,工作流已停止。",
|
|
368
|
-
"workflowCompleted": "🎉 工作流已完成!",
|
|
369
|
-
"runningSelectedSteps": "🎯 运行选定的步骤",
|
|
370
|
-
"invalidStepNumber": "❌ 无效的步骤编号: {stepNum}",
|
|
371
|
-
"executionReport": "📊 执行报告",
|
|
372
|
-
"successfulSteps": "✅ 成功: {successful}",
|
|
373
|
-
"failedSteps": "❌ 失败: {failed}",
|
|
374
|
-
"requiredFailedSteps": "🔴 必需失败: {requiredFailed}",
|
|
375
|
-
"stepDetails": "📋 步骤详情:",
|
|
376
|
-
"stepResult": " {status} {required} {step}{duration}",
|
|
377
|
-
"stepError": " 错误: {error}",
|
|
378
|
-
"reportSaved": "💾 报告已保存至: {reportPath}",
|
|
379
|
-
"overallStatus": "📊 总体状态: {status}",
|
|
380
|
-
"customSettingsConfiguration": "🔧 自定义设置配置",
|
|
381
|
-
"pressEnterForDefaults": "按Enter使用默认值或输入新值:",
|
|
382
|
-
"settingsUpdatedSuccessfully": "✅ 设置更新成功!",
|
|
383
|
-
"errorConfiguringSettings": "❌ 配置设置时出错: {error}",
|
|
384
|
-
"autoRunScriptTitle": "🤖 I18N 自动运行脚本",
|
|
385
|
-
"usageInstructions": "使用方法:",
|
|
386
|
-
"runAllSteps": " node auto-run.js # 运行所有步骤",
|
|
387
|
-
"configureFirst": " node auto-run.js --config # 首先配置设置",
|
|
388
|
-
"runSpecificSteps": " node auto-run.js --steps 1,2,3 # 运行特定步骤",
|
|
389
|
-
"showHelp": " node auto-run.js --help # 显示此帮助",
|
|
390
|
-
"availableSteps": "可用步骤:",
|
|
391
|
-
"stepListHelp": " {index}. {stepName} {required}",
|
|
392
|
-
"examplesTitle": "示例:",
|
|
393
|
-
"configurationComplete": "🚀 配置完成!现在可以使用以下命令运行自动运行器:",
|
|
394
|
-
"runAutoRunner": " node auto-run.js",
|
|
395
|
-
"configurationFailed": "❌ 配置失败: {error}",
|
|
396
|
-
"noValidStepNumbers": "❌ 未提供有效的步骤编号",
|
|
397
|
-
"autoRunFailed": "❌ 自动运行失败: {error}",
|
|
398
|
-
"selectOptionPrompt": "选择选项 (0-13): ",
|
|
399
|
-
"selectDebugToolPrompt": "选择调试工具 (0-6): ",
|
|
400
|
-
"pressEnterToContinue": "📝 按Enter继续...",
|
|
401
|
-
"selectLogPrompt": "选择要查看的日志 (1-{count}) 或0返回: ",
|
|
402
|
-
"stepFailedWithError": "❌ 步骤 {stepName} 失败: {error}"
|
|
403
|
-
},
|
|
404
|
-
"sizing": {
|
|
405
|
-
"analyzing_file_sizes": "正在分析文件大小...",
|
|
406
|
-
"analyzing_translation_content": "正在分析翻译内容...",
|
|
407
|
-
"failed_to_parse_language_error": "无法解析 {{language}}: {{errorMessage}}",
|
|
408
|
-
"generating_size_comparisons": "正在生成大小比较...",
|
|
409
|
-
"no_languages_found_for_comparison": "未找到用于比较的语言",
|
|
410
|
-
"sizing_analysis_results": "\n📊 大小分析结果",
|
|
411
|
-
"file_sizes_title": "📁 文件大小",
|
|
412
|
-
"file_sizes_header": "语言\t\t大小 (KB)\t\t行数\t\t字符数",
|
|
413
|
-
"file_size_row": "{{lang}}\t\t{{sizeKB}} KB\t\t{{lines}} 行\t\t{{characters}} 字符",
|
|
414
|
-
"language_statistics_title": "📈 语言统计",
|
|
415
|
-
"language_stats_header": "语言\t\t键数\t\t总字符数\t\t平均长度\t\t最大长度\t\t空键",
|
|
416
|
-
"language_stats_row": "{{lang}}\t\t{{totalKeys}} 键\t\t{{totalCharacters}} 字符\t\t{{averageKeyLength}} 平均\t\t{{maxKeyLength}} 最大\t\t{{emptyKeys}} 空",
|
|
417
|
-
"size_variations_title": "⚖️ 大小变化",
|
|
418
|
-
"size_variations_header": "语言\t\t字符差异\t\t百分比\t\t有问题",
|
|
419
|
-
"size_variation_row": "{{lang}}\t\t{{characterDifference}}\t\t{{percentageDifference}}%\t\t{{problematic}}",
|
|
420
|
-
"recommendations_title": "💡 建议",
|
|
421
|
-
"recommendation_item": "{{index}}. {{recommendation}}",
|
|
422
|
-
"generating_detailed_report": "\n📄 正在生成详细大小报告...",
|
|
423
|
-
"report_saved_to": "报告已保存至: {{reportPath}}",
|
|
424
|
-
"csv_report_saved_to": "CSV报告已保存至: {{csvPath}}",
|
|
425
|
-
"starting_i18n_sizing_analysis": "🔍 开始国际化大小分析...",
|
|
426
|
-
"source_directory": "源目录: {{sourceDir}}",
|
|
427
|
-
"no_translation_files_found": "❌ 未找到翻译文件",
|
|
428
|
-
"found_languages": "找到的语言: {{languages}}",
|
|
429
|
-
"analysis_completed": "✅ 分析在 {{duration}} 毫秒内完成",
|
|
430
|
-
"analysis_failed": "❌ 大小分析失败: {{errorMessage}}",
|
|
431
|
-
"problematic_no": "未检测到大小问题",
|
|
432
|
-
"problematic_yes": "检测到潜在的大小问题"
|
|
433
|
-
},
|
|
434
|
-
"summary": {
|
|
435
|
-
"i18nSummaryReportGenerator": "🔧 I18N 摘要报告生成器",
|
|
436
|
-
"keysInFiles": " 📝 {files} 个文件中有 {keys} 个键",
|
|
437
|
-
"checkingInconsistentKeys": "🔍 检查各语言间不一致的键...",
|
|
438
|
-
"analyzingFolder": "🔍 正在分析文件夹: {folder}",
|
|
439
|
-
"foundLanguages": "📋 发现 {count} 种语言: {languages}",
|
|
440
|
-
"referenceLanguageFiles": "📁 参考语言文件: {files}",
|
|
441
|
-
"analyzingLanguage": "🔄 正在分析语言: {language}",
|
|
442
|
-
"overview": "📊 概览",
|
|
443
|
-
"noIssuesFound": "未发现问题 - 您的i18n配置看起来很棒!",
|
|
444
|
-
"allFilesConsistent": "所有翻译文件在所有语言中都是一致的。",
|
|
445
|
-
"recommendations": "建议",
|
|
446
|
-
"nextSteps": "下一步",
|
|
447
|
-
"nextStep1": "查看摘要报告以了解不一致或缺失的键。",
|
|
448
|
-
"nextStep2": "修复报告中突出显示的任何问题。",
|
|
449
|
-
"nextStep3": "验证翻译的语言纯度和完整性。",
|
|
450
|
-
"nextStep4": "进行更改后重新运行摘要报告。",
|
|
451
|
-
"inconsistentKeys": "发现不一致的键:",
|
|
452
|
-
"missingKeys": " 缺失键: {keys}{more}",
|
|
453
|
-
"extraKeys": " 额外键: {keys}{more}",
|
|
454
|
-
"createMissingFiles": "为所有语言创建缺失文件。",
|
|
455
|
-
"addContentToEmptyFiles": "向空翻译文件添加内容。",
|
|
456
|
-
"fixMalformedFiles": "修复格式错误的翻译文件。",
|
|
457
|
-
"removeDuplicateKeys": "从翻译文件中删除重复键。",
|
|
458
|
-
"synchronizeKeys": "在所有语言中同步键。",
|
|
459
|
-
"splitLargeFiles": "拆分大型翻译文件以便更好地维护。",
|
|
460
|
-
"addMoreLanguages": "向您的项目添加更多语言。",
|
|
461
|
-
"languagesCount": "🌍 语言数量:{count}",
|
|
462
|
-
"totalFiles": "📁 总文件数:{count}",
|
|
463
|
-
"totalKeys": "🔤 总键数:{count}",
|
|
464
|
-
"avgKeysPerLanguage": "📊 每种语言平均键数:{count}",
|
|
465
|
-
"languagesBreakdown": "语言细分",
|
|
466
|
-
"languageBreakdown": "📍 {language}: {files} 个文件,{keys} 个键",
|
|
467
|
-
"fileStructure": "文件结构",
|
|
468
|
-
"fileKeys": "📄 {file}: {keys} 个键",
|
|
469
|
-
"missingInLanguages": " ⚠️ 缺失于: {languages}",
|
|
470
|
-
"noIssuesConsole": "✅ 未发现问题 - 您的i18n配置看起来很棒!(控制台)",
|
|
471
|
-
"reportSaved": "📄 摘要报告已保存: {reportPath}",
|
|
472
|
-
"reportSaveFailed": "❌ 无法保存摘要报告: {reportPath}",
|
|
473
|
-
"sourceDirectory": "源目录:{dir}",
|
|
474
|
-
"reportTitle": "I18N 摘要报告",
|
|
475
|
-
"generated": "生成时间:{timestamp}",
|
|
476
|
-
"couldNotReadFile": "⚠️ 无法读取文件: {filePath}",
|
|
477
|
-
"couldNotParseJSFile": "⚠️ 无法解析JS/TS文件: {filePath}",
|
|
478
|
-
"errorReadingFile": "⚠️ 读取文件 {filePath} 时出错: {error}",
|
|
479
|
-
"noLanguageDirectoriesFound": "❌ 未找到语言目录!",
|
|
480
|
-
"issuesFound": "🚨 发现问题",
|
|
481
|
-
"missingFiles": "❌ 缺失文件:",
|
|
482
|
-
"emptyFiles": "📭 空文件:",
|
|
483
|
-
"malformedFiles": "💥 格式错误的文件:",
|
|
484
|
-
"duplicateKeys": "🔄 重复键:",
|
|
485
|
-
"couldNotFindI18nDirectory": "❌ 找不到国际化目录。请使用 --source-dir 指定",
|
|
486
|
-
"sourceDirectoryDoesNotExist": "❌ 源目录不存在: {sourceDir}",
|
|
487
|
-
"generatingSummaryReport": "📄 正在生成摘要报告...",
|
|
488
|
-
"cleaningUpReportFiles": "🗑️ 正在清理报告文件...",
|
|
489
|
-
"couldNotDelete": "⚠️ 无法删除 {file}: {error}",
|
|
490
|
-
"noOldReportFilesToDelete": "📄 没有旧的报告文件可删除。",
|
|
491
|
-
"errorCleaningUpReports": "⚠️ 清理报告时出错: {error}",
|
|
492
|
-
"reportFilesPreserved": "📁 报告文件已按要求保留。",
|
|
493
|
-
"analysisComplete": "📊 分析完成",
|
|
494
|
-
"analyzedLanguages": "✅ 已分析 {count} 种语言",
|
|
495
|
-
"processedFiles": "✅ 已处理 {count} 个文件",
|
|
496
|
-
"foundTranslationKeys": "✅ 找到 {count} 个翻译键",
|
|
497
|
-
"errorDuringAnalysis": "❌ 分析期间出错: {error}",
|
|
498
|
-
"deletedOldReportFiles": "✅ 已删除 {count} 个旧报告文件。",
|
|
499
|
-
"helpTitle": "🔧 国际化摘要报告生成器",
|
|
500
|
-
"helpDescription": "分析国际化文件夹结构并生成综合报告",
|
|
501
|
-
"helpUsage": "用法: i18ntk summary [选项]",
|
|
502
|
-
"helpOptions": "选项:",
|
|
503
|
-
"helpSourceDir": " -s, --source-dir <path> 国际化语言环境目录路径",
|
|
504
|
-
"helpOutput": " -o, --output <file> 报告输出文件",
|
|
505
|
-
"helpVerbose": " -v, --verbose 显示详细输出",
|
|
506
|
-
"helpKeepReports": " --keep-reports 保留所有现有报告文件",
|
|
507
|
-
"helpDeleteReports": " --delete-reports 生成后删除旧报告文件",
|
|
508
|
-
"helpHelp": " -h, --help 显示此帮助消息",
|
|
509
|
-
"helpExamples": "示例:",
|
|
510
|
-
"helpExample1": " i18ntk summary",
|
|
511
|
-
"helpExample2": " i18ntk summary --source-dir ./src/i18n/locales",
|
|
512
|
-
"helpExample3": " i18ntk summary --output summary.txt --verbose",
|
|
513
|
-
"helpExample4": " i18ntk summary --output summary.txt --delete-reports",
|
|
514
|
-
"helpExample5": " i18ntk summary --keep-reports",
|
|
515
|
-
"usageReportTitle": "国际化使用分析报告 - 版本 1.4.3",
|
|
516
|
-
"usageReportGenerated": "生成时间: {timestamp}",
|
|
517
|
-
"usageReportSourceDir": "源目录: {sourceDir}",
|
|
518
|
-
"usageReportI18nDir": "国际化目录: {i18nDir}",
|
|
519
|
-
"usageReportSummary": "摘要",
|
|
520
|
-
"usageReportSourceFilesScanned": "📄 已扫描源文件: {count}",
|
|
521
|
-
"usageReportTranslationFilesFound": "📄 找到翻译文件: {count}",
|
|
522
|
-
"usageReportAvailableKeys": "🔤 可用翻译键: {count}",
|
|
523
|
-
"usageReportUsedKeys": "🎯 已使用翻译键: {count}",
|
|
524
|
-
"usageReportDynamicKeys": "🔄 检测到动态键: {count}",
|
|
525
|
-
"usageReportUnusedKeys": "❌ 未使用的键: {count}",
|
|
526
|
-
"usageReportMissingKeys": "⚠️ 缺失键: {count}",
|
|
527
|
-
"usageReportNotTranslatedKeys": "🔄 未翻译键: {count}",
|
|
528
|
-
"usageReportTranslationCompleteness": "翻译完整性",
|
|
529
|
-
"usageReportLanguageCompleteness": "🌍 {language}: {completeness}% 完成 ({translated}/{total})",
|
|
530
|
-
"usageReportNotTranslatedInLanguage": " 🔄 未翻译: {count} 个键",
|
|
531
|
-
"usageReportTranslationFilesDiscovered": "发现的翻译文件",
|
|
532
|
-
"usageReportFileInfo": "📄 {relativePath} ({namespace}, {type})",
|
|
533
|
-
"usageReportUnusedKeysSection": "未使用的翻译键",
|
|
534
|
-
"usageReportUnusedKeysDescription": "这些键存在于翻译文件中,但未在源代码中使用:",
|
|
535
|
-
"usageReportMoreUnusedKeys": "... 还有 {count} 个未使用的键",
|
|
536
|
-
"usageReportMissingKeysSection": "缺失的翻译键",
|
|
537
|
-
"usageReportMissingKeysDescription": "这些键在源代码中使用,但翻译文件中缺失:",
|
|
538
|
-
"usageReportUsedIn": "📄 使用于: {filePath}",
|
|
539
|
-
"usageReportMoreFiles": "... 还有 {count} 个文件",
|
|
540
|
-
"usageReportDynamicKeysSection": "动态翻译键",
|
|
541
|
-
"usageReportDynamicKeysDescription": "这些键使用动态模式,需要手动验证:",
|
|
542
|
-
"usageReportFileUsageBreakdown": "文件使用明细",
|
|
543
|
-
"usageReportFileUsage": "📄 {filePath} ({count} 键)",
|
|
544
|
-
"usageReportMoreFileUsage": "... 还有 {count} 个文件",
|
|
545
|
-
"usageReportSaved": "📄 报告已保存至: {filepath}",
|
|
546
|
-
"usageReportSaveFailed": "❌ 保存报告失败: {error}",
|
|
547
|
-
"analysisCompletedSuccessfully": "✅ 分析成功完成",
|
|
548
|
-
"analysisFailed": "❌ 分析失败: {error}",
|
|
549
|
-
"analysisFailedError": "❌ 分析失败",
|
|
550
|
-
"usageReportUnusedTranslationKeys": "未使用的翻译键",
|
|
551
|
-
"usageReportUnusedKey": "❌ {key}",
|
|
552
|
-
"usageReportMissingTranslationKeys": "缺失的翻译键",
|
|
553
|
-
"usageReportMissingKey": "⚠️ {key}",
|
|
554
|
-
"usageReportDynamicTranslationKeys": "动态翻译键",
|
|
555
|
-
"usageReportDynamicKey": "🔄 {key}",
|
|
556
|
-
"unusedKeysCount": " ❌ 未使用的键: {count}",
|
|
557
|
-
"missingKeysCount": " ⚠️ 缺失键: {count}",
|
|
558
|
-
"translationCompletenessTitle": "\n🌍 翻译完整性:",
|
|
559
|
-
"languageCompletenessStats": " {language}: {completeness}% 完成 ({translated}/{total})",
|
|
560
|
-
"configuration": "🔧 配置:",
|
|
561
|
-
"sourceLanguage": " 源语言: {sourceLanguage}",
|
|
562
|
-
"supportedExtensions": " 支持的扩展: {extensions}",
|
|
563
|
-
"excludedFiles": " 排除文件: {files}",
|
|
564
|
-
"foundIssues": "⚠️ 发现 {count} 个需要注意的问题",
|
|
565
|
-
"fatalError": "❌ 致命错误: {error}",
|
|
566
|
-
"issuesFoundTitle": "发现问题",
|
|
567
|
-
"missingFilesTitle": "❌ 缺失文件:",
|
|
568
|
-
"emptyFilesTitle": "📭 空文件:",
|
|
569
|
-
"malformedFilesTitle": "💥 格式错误的文件:",
|
|
570
|
-
"duplicateKeysTitle": "🔄 重复键: {count}"
|
|
571
|
-
},
|
|
572
|
-
|
|
573
|
-
"help": {
|
|
574
|
-
"usage": "用法:node i18ntk-manage.js [选项]",
|
|
575
|
-
"interactiveMode": "交互模式:运行不带参数以启动交互式菜单",
|
|
576
|
-
"initProject": "初始化项目:node i18ntk-manage.js init",
|
|
577
|
-
"analyzeTranslations": "分析翻译:node i18ntk-manage.js analyze",
|
|
578
|
-
"validateTranslations": "验证翻译:node i18ntk-manage.js validate",
|
|
579
|
-
"checkUsage": "检查使用情况:node i18ntk-manage.js usage",
|
|
580
|
-
"showHelp": "显示帮助:node i18ntk-manage.js help",
|
|
581
|
-
"availableCommands": "可用命令:",
|
|
582
|
-
"initCommand": "init - 初始化 i18n 结构",
|
|
583
|
-
"analyzeCommand": "analyze - 分析翻译完整性",
|
|
584
|
-
"validateCommand": "validate - 验证翻译文件",
|
|
585
|
-
"usageCommand": "usage - 检查翻译键使用情况",
|
|
586
|
-
"sizingCommand": "sizing - 分析翻译大小",
|
|
587
|
-
"completeCommand": "complete - 完成缺失的翻译",
|
|
588
|
-
"summaryCommand": "summary - 生成摘要报告",
|
|
589
|
-
"debugCommand": "debug - 运行调试分析"
|
|
590
|
-
},
|
|
591
|
-
"complete": {
|
|
592
|
-
"nextStep1": "1. 检查使用分析:",
|
|
593
|
-
"nextStep2": "2. 验证翻译:",
|
|
594
|
-
"nextStep3": "3. 分析完整性:",
|
|
595
|
-
"andMore": "... 还有 {count} 个"
|
|
596
|
-
},
|
|
597
|
-
"usage": {
|
|
598
|
-
"analysisCompletedSuccessfully": "✅ 使用情况分析成功完成",
|
|
599
|
-
"analysisFailedError": "❌ 使用情况分析失败:",
|
|
600
|
-
"detectedSourceDirectory": "🔍 检测到源目录:",
|
|
601
|
-
"detectedI18nDirectory": "🔍 检测到i18n目录:",
|
|
602
|
-
"foundTranslationFiles": "🔍 找到 {count}个翻译文件",
|
|
603
|
-
"invalidPattern": "无效模式:",
|
|
604
|
-
"patternMatchLimitReached": "文件模式匹配限制已达到:",
|
|
605
|
-
"patternExecutionFailed": "模式执行失败",
|
|
606
|
-
"failedToExtractKeys": "从以下位置提取键失败",
|
|
607
|
-
"failedToProcessFile": "处理文件失败",
|
|
608
|
-
"errorReadingI18nDirectory": "读取i18n目录错误:",
|
|
609
|
-
"notTranslatedKeysTotal": "🔄 未翻译键:{total}",
|
|
610
|
-
"reviewNotTranslatedKeys": "🔄 请检查所有语言中的{total}个未翻译键",
|
|
611
|
-
"analysisCompletedSuccessfullySimple": "\n✅ 分析成功完成",
|
|
612
|
-
"analysisFailedResult": "\n❌ 分析失败:",
|
|
613
|
-
"analysisFailedGeneral": "\n❌ 分析失败:",
|
|
614
|
-
"title": "国际化使用分析报告",
|
|
615
|
-
"generatedAt": "生成时间: {timestamp}",
|
|
616
|
-
"sourceDirectory": "源目录: {sourceDir}",
|
|
617
|
-
"i18nDirectory": "国际化目录: {i18nDir}",
|
|
618
|
-
"sourceFilesScanned": "已扫描源文件: {count}",
|
|
619
|
-
"analysisResults": "分析结果",
|
|
620
|
-
"availableKeysCount": "可用键数量",
|
|
621
|
-
"usedKeysCount": "已用键数量",
|
|
622
|
-
"translationFilesFound": "翻译文件: {count}",
|
|
623
|
-
"availableKeys": "可用翻译键: {count}",
|
|
624
|
-
"usedKeys": "已使用翻译键: {count}",
|
|
625
|
-
"dynamicKeys": "检测到动态键: {count}",
|
|
626
|
-
"unusedKeys": "未使用的键: {count}",
|
|
627
|
-
"missingKeys": "缺失键: {count}",
|
|
628
|
-
"notTranslatedKeys": "未翻译键: {count}",
|
|
629
|
-
"translationCompleteness": "翻译完整性",
|
|
630
|
-
"translationFilesDiscovered": "发现的翻译文件",
|
|
631
|
-
"unusedKeysSection": "未使用的翻译键",
|
|
632
|
-
"unusedKeysDescription": "这些键存在于翻译文件中,但未在源代码中使用:",
|
|
633
|
-
"missingKeysSection": "缺失的翻译键",
|
|
634
|
-
"missingKeysDescription": "这些键在源代码中使用,但翻译文件中缺失:",
|
|
635
|
-
"dynamicKeysSection": "动态翻译键",
|
|
636
|
-
"dynamicKeysDescription": "这些键使用动态模式,需要手动验证:",
|
|
637
|
-
"fileUsageBreakdown": "文件使用明细",
|
|
638
|
-
"fileUsageDescription": "翻译键使用情况按源文件:",
|
|
639
|
-
"reportSavedTo": "📄 报告已保存至: {reportPath}",
|
|
640
|
-
"failedToSaveReport": "❌ 保存报告失败: {error}",
|
|
641
|
-
"analysisFailed": "❌ 使用情况分析失败",
|
|
642
|
-
"unusedKeysCount": "❌ 未使用的键: {count}",
|
|
643
|
-
"missingKeysCount": "⚠️ 缺失键: {count}",
|
|
644
|
-
"translationCompletenessTitle": "🌍 翻译完整性:",
|
|
645
|
-
"languageCompletenessStats": " {language}: {completeness}% 完成 ({translated}/{total})"
|
|
646
|
-
}
|
|
647
|
-
}
|