i18ntk
Version:
i18ntk (i18n Toolkit) - A comprehensive, enterprise-grade internationalization (i18n) management toolkit for JavaScript/TypeScript projects with advanced analysis, validation, and automation features
1,159 lines • 103 kB
JSON
{
"meta": {
"version": "1.5.3",
"consolidated": "2025-08-06T14:36:37.519Z",
"sourceFiles": 256
},
"common": {
"welcome": "欢迎",
"hello": "你好",
"goodbye": "再见",
"yes": "是",
"no": "否",
"save": "保存",
"cancel": "取消",
"delete": "删除",
"edit": "编辑",
"loading": "加载中...",
"offlineTitle": "您当前处于离线状态",
"offlineMessage": "请检查您的网络连接",
"tryReconnect": "尝试重新连接",
"logout": "退出登录",
"login": "登录",
"amount": "金额",
"success": "成功",
"error": "错误",
"warning": "警告",
"info": "信息:",
"debug": "调试",
"progress": "进度:",
"remaining": "剩余:",
"total": "总计:",
"completed": "7. 成功完成!",
"missing": "缺失",
"partial": "部分",
"sameAsSource": "与源相同:",
"formatMismatch": "格式不匹配:",
"typeMismatch": "类型不匹配:",
"structureMismatch": "结构不匹配:",
"invalidOption": "无效选项",
"separator": "==================================================",
"initializationFailed": "❌ 初始化失败:{error}",
"stackTrace": "堆栈跟踪:{stack}",
"pressEnterToContinue": "按Enter继续...",
"pressEnterToReturn": "按Enter返回主菜单...",
"stepCompleted": "步骤 '{stepName}' 已完成。",
"stepFailed": "步骤 '{stepName}' 失败。",
"runningStep": "正在运行步骤:{stepName}",
"command": "命令:{command}",
"startingWorkflow": "正在启动工作流...",
"workflowCompleted": "工作流已完成。",
"checkReports": "请查看报告了解详情。",
"errorExecutingCommand": "执行命令时出错: {error}",
"genericError": "❌ 错误: {{error}}",
"errorGeneratingStatusSummary": "生成状态摘要时出错: {error}",
"errorRunningDebugTool": "运行调试工具'{displayName}'时出错: {error}",
"errorReadingDebugLogs": "读取调试日志时出错: {error}",
"errorAnalyzingLogFile": "分析日志文件时出错: {error}",
"errorAnalyzingTranslationKeys": "分析翻译键时出错: {error}",
"errorAnalyzingTranslationCompleteness": "分析翻译完整性时出错: {error}",
"errorAnalyzingTranslationFormat": "分析翻译格式时出错: {error}",
"errorAnalyzingTranslationType": "分析翻译类型时出错: {error}",
"errorAnalyzingTranslationStructure": "分析翻译结构时出错: {error}",
"errorAnalyzingTranslationFormatMismatch": "分析翻译格式不匹配时出错: {error}",
"errorAnalyzingTranslationTypeMismatch": "分析翻译类型不匹配时出错: {error}",
"errorAnalyzingTranslationStructureMismatch": "分析翻译结构不匹配时出错: {error}",
"errorAnalyzingTranslationSameAsSource": "分析与源文件相同的翻译时出错: {error}",
"title": "状态",
"nextStep1": "1. 检查使用情况分析:",
"nextStep2": "2. 验证翻译:",
"nextStep3": "3. 分析完整性:",
"nextStep4": "4. 完成缺失的翻译:",
"nextStep5": "5. 生成摘要报告:",
"nextStep6": "6. 审核并完成翻译:",
"generating": "正在生成摘要报告...",
"review": "正在检查翻译...",
"finalizing": "正在完成翻译...",
"finalized": "成功完成!",
"errors": "错误:",
"warnings": "警告:",
"completedKeys": "已完成键:",
"missingKeys": "缺失键:",
"partialKeys": "部分键:"
},
"analyze": {
"help_message": "\n国际化翻译分析器\n\n用法: node i18ntk-analyze.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-analyze.js --output-report\n node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-analyze.js --output-dir=./analysis --output-report\n",
"source_directory": "📁 源目录: {sourceDir}",
"i18n_directory": "🌐 I18n 目录: {i18nDir}",
"loading_translation_files": "📋 正在加载翻译文件...",
"sourceDirectoryLabel": "📁 源目录: {{sourceDir}}",
"sourceLanguageLabel": "🌍 源语言: {{sourceLanguage}}",
"strictModeLabel": "⚙️ 严格模式: {{mode}}\n",
"found_translation_files_count": "✅ 找到 {count} 个翻译文件",
"analyzing_translations": "🔍 正在分析翻译...",
"analysis_completed_successfully": "🎉 分析成功完成!",
"analysis_results": "📊 分析结果",
"language_analysis_stats": " {language}: {translatedKeys}/{totalKeys} ({percentage}% 已翻译)",
"sample_missing_keys": "\n缺失键示例:",
"missing_key": "- {key}",
"and_more_missing": "...以及 {count} 个更多。",
"sample_unused_keys": "\n未使用键示例:",
"unused_key": "- {key}",
"and_more_unused": "...以及 {count} 个更多。",
"recommendations": "\n📋 建议",
"add_missing_translations": "💡 添加缺失翻译以提高覆盖率。",
"remove_unused_translations": "💡 删除未使用的翻译以保持项目整洁。",
"next_steps": "\n📋 后续步骤",
"review_analysis_results": "1. 查看控制台或生成报告中的分析结果。",
"run_with_output_report": "2. 使用 --output-report 运行以获取详细报告。",
"add_or_remove_translations": "3. 添加缺失翻译或删除未使用的翻译。",
"analysis_summary": "📊 分析摘要",
"source_files_scanned": "已扫描源文件: {fileCount}",
"translation_files_checked": "已检查翻译文件: {translationFileCount}",
"total_keys": "总键数: {totalKeys}",
"translated_keys": "已翻译键: {translatedKeys}",
"missing_keys": "缺失键: {missingKeys}",
"unused_keys": "未使用键: {unusedKeys}",
"translation_coverage": "翻译覆盖率: {coverage}%",
"analysis_passed_for_language": "✅ {language} 分析通过",
"analysis_failed_for_language": "❌ {language} 分析失败 ({missingKeys} 个缺失, {unusedKeys} 个未使用)",
"starting": "🔍 开始翻译分析...",
"foundLanguages": "📋 找到 {count} 种语言待分析: {languages}",
"analyzing": "🔄 正在分析 {language}...",
"reportTitle": "📊 翻译分析报告",
"generated": "生成时间: {timestamp}",
"status": "状态: {translated}/{total} 个键 ({percentage}% 已翻译)",
"filesAnalyzed": "已分析文件: {analyzed}/{total}",
"keysNeedingTranslation": "需要翻译的键: {count}",
"fileBreakdown": "📋 文件明细",
"error": "错误",
"completed": "✅ {language} 分析完成",
"progress": "📊 总体进度: {translated}/{total} 种语言已处理",
"reportSaved": " 报告已保存: {reportPath}",
"summary": "📊 分析摘要",
"finished": "✅ 分析成功完成!",
"statusFileMissing": "❌ 翻译文件缺失",
"sourceKeys": "📊 源键: {count}",
"translation": "📊 翻译: {translated}/{total} ({percentage}%)",
"structure": "🗂️ 结构: {status}",
"consistent": "一致",
"inconsistent": "不一致",
"missingKeys": "缺失键: {count}",
"extraKeys": "额外键: {count}",
"issues": "⚠️ 发现问题: {count}",
"issueType": {
"not_translated": "未翻译: {count}",
"empty_value": "空值: {count}",
"partial_translation": "部分翻译: {count}",
"format_mismatch": "格式不匹配: {count}",
"type_mismatch": "类型不匹配: {count}",
"structure_mismatch": "结构不匹配: {count}",
"same_as_source": "与源文件相同: {count}"
},
"keysToTranslate": "📋 待翻译键",
"key": "键",
"english": "英语",
"needsTranslation": "需要翻译",
"andMoreKeys": "...以及 {count} 个更多键。",
"noLanguages": "⚠️ 未找到目标语言。",
"languageStats": "{language}: {percentage}% 完成 ({translated}/{total} 个键)",
"invalidReportFilePath": "无效的报告文件路径",
"failedToWriteReportFile": "无法写入报告文件"
},
"complete": {
"configLoadedSuccessfully": "配置加载成功",
"configLoadingFailed": "配置加载失败",
"title": "🌍 I18N翻译完成",
"separator": "============================================================",
"sourceDir": "📁 源目录:{sourceDir}",
"sourceLanguage": "🌐 源语言:{sourceLanguage}",
"dryRunMode": "🧪 试运行模式 - 不会进行任何更改",
"languages": "🌍 可用语言:{languages}",
"addingMissingKeys": "➕ 正在向翻译文件添加缺失的键...",
"processing": "🔄 正在处理 {language}...",
"addedKeys": "✅ 已添加 {count} 个缺失的键",
"noChangesNeeded": "✅ {language} 不需要更改",
"summaryTitle": "📊 完成摘要",
"totalChanges": "📝 总更改数:{totalChanges}",
"languagesProcessed": "🌍 处理的语言:{languagesProcessed}",
"missingKeysAdded": "➕ 已添加的缺失键:{missingKeysAdded}",
"nextStepsTitle": "📋 后续步骤",
"nextStep1": "1. 运行使用情况分析:",
"nextStep2": " node i18ntk-usage.js --output-report",
"nextStep3": "2. 验证翻译:",
"nextStep4": " node i18ntk-validate.js",
"nextStep5": "3. 分析模式:",
"nextStep6": " node i18ntk-analyze.js",
"allKeysAvailable": "🎉 所有翻译键现在都已可用!",
"runWithoutDryRun": "💡 运行时不使用 --dry-run 来应用更改",
"deletingOldReport": "🗑️ 正在删除旧报告...",
"generatingFreshAnalysis": "📊 正在生成新的使用情况分析...",
"couldNotGenerate": "❌ 无法生成使用情况分析",
"reportNotFound": "📋 未找到使用情况报告。使用常用键...",
"foundMissingKeys": "📋 从使用情况分析中找到 {count} 个缺失的键",
"couldNotParse": "❌ 无法解析使用情况报告。使用常用键...",
"errorDuringCompletion": "❌ 完成过程中出错: {error}",
"fatalError": "❌ 致命错误: {error}",
"configurationValidationFailed": "配置验证失败:缺少必需字段"
},
"sizing": {
"separator": "================================================================================",
"lineSeparator": "--------------------------------------------------------------------------------",
"analysisStats": "{{stats}}",
"sourceDirectoryLabel": "📁 源目录: {{sourceDir}}",
"sourceLanguageLabel": "🌍 源语言: {{sourceLanguage}}",
"strictModeLabel": "⚙️ 严格模式: {{mode}}",
"invalidSourceDirectoryError": "无效的源目录路径: {{sourceDir}}",
"sourceDirectoryNotFoundError": "未找到源目录: {{sourceDir}}",
"invalidOutputDirectoryError": "无效的输出目录路径: {{outputDir}}",
"invalidReportFileError": "无效的报告文件路径",
"problematic_keys": "问题键: {problematicKeys}",
"problematicKeysLabel": "问题键: {problematicKeys}",
"long_translations": "长翻译: {{longTranslations}}",
"failedToSaveReportError": "无法安全保存报告",
"invalidCsvFileError": "无效的CSV文件路径",
"failedToSaveCsvError": "无法安全保存CSV报告",
"fatalError": "❌ 大小分析失败: {{error}}",
"starting_i18n_sizing_analysis": "开始国际化大小分析...",
"source_directory": "源目录: {{sourceDir}}",
"found_languages": "找到语言: {{languages}}",
"analyzing_file_sizes": "正在分析文件大小...",
"analyzing_translation_content": "正在分析翻译内容...",
"generating_size_comparisons": "正在生成大小比较...",
"no_languages_found_for_comparison": "未找到用于比较的语言",
"sizing_analysis_results": "国际化大小分析结果",
"file_sizes_title": "文件大小",
"file_sizes_header": "语言 大小(KB) 行数 字符数",
"file_size_row": "{{lang}} {{sizeKB}} {{lines}} {{characters}}",
"language_statistics_title": "语言统计",
"language_stats_header": "语言 键数 字符数 平均长度 最大长度 空值 长文本",
"language_stats_row": "{{lang}} {{totalKeys}} {{totalCharacters}} {{averageKeyLength}} {{maxKeyLength}} {{emptyKeys}} {{longKeys}}",
"size_variations_title": "大小变化",
"size_variations_header": "语言 字符差异 百分比差异 问题",
"size_variation_row": "{{lang}} {{characterDifference}} {{percentageDifference}}% {{problematic}}",
"problematic_yes": "是",
"problematic_no": "否",
"recommendations_title": "建议",
"recommendation_item": "{{index}}. {{recommendation}}",
"problematic_key_detail": " {{index}}. 键: '{{key}}' - 变化: {{variations}}",
"generating_detailed_report": "正在生成详细报告...",
"keysHaveSignificantSizeVariations": "键有显著的大小变化",
"longTranslationsDetected": "${lang} 有 ${data.longKeys} 个翻译超过100个字符 - 考虑拆分它们",
"report_saved_to": "报告已保存到: {{reportPath}}",
"considerReviewingTranslations": "考虑检查 ${lang} 翻译 - 它们比基准长 ${data.percentageDifference}%",
"csv_report_saved_to": "CSV报告已保存到: {{csvPath}}",
"no_translation_files_found": "未找到翻译文件",
"analysis_completed": "分析在{{duration}}毫秒内完成",
"analysis_failed": "分析失败: {{errorMessage}}",
"failed_to_parse_language_error": "无法解析{{language}}翻译: {{errorMessage}}",
"recommendations": {
"keys_have_significant_size_variations": "键有显著的大小变化",
"consider_reviewing_translations": "考虑检查 {{lang}} 翻译 - 它们比基准 {{comparison}} {{percentageDifference}}%",
"long_translations_detected": "{{lang}} 有 {{longKeys}} 个翻译超过 {{threshold}} 个字符 - 考虑拆分它们"
},
"hardcodedTexts": {
"keysHaveSignificantSizeVariations": "键有显著的大小变化",
"considerReviewingTranslations": "考虑检查 {{lang}} 翻译 - 它们比基准 {{comparison}} {{percentageDifference}}%",
"longTranslationsDetected": "{{lang}} 有 {{longKeys}} 个翻译超过 {{threshold}} 个字符 - 考虑拆分它们"
}
},
"usage": {
"help_message": "\n国际化使用分析器\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",
"source_directory_thissourcedir": "📁 源目录: {sourceDir}",
"translationCompletenessTitle": "🌍 翻译完整性:",
"i18n_directory_thisi18ndir": "🌐 I18n 目录: {i18nDir}",
"failed_to_parse_filename_error": "⚠️ 解析失败 {fileName}: {errorMessage}",
"analyzing_source_files": "🔍 正在分析源文件...",
"found_files_in_source": "📂 在源目录中找到 {numFiles} 个文件",
"found_thisusedkeyssize_unique_": "🎯 找到 {usedKeysSize} 个唯一使用键",
"total_key_usages_totalkeysfoun": "📊 总键使用数: {totalKeysFound}",
"loading_available_translation_": "📋 正在加载可用翻译键...",
"found_thisavailablekeyssize_av": "✅ 找到 {availableKeysSize} 个可用键",
"foundTranslationFiles": "✅ 找到 {count} 个翻译文件",
"pressEnterToReturnToMenu": "📝 按 Enter 键返回主菜单...",
"notTranslatedKeysTotal": "⚠️ 未翻译键: {total}",
"noSourceFilesFound": "⚠️ 未找到源文件目录中的源文件。",
"reviewNotTranslatedKeys": "💡 查看未翻译键",
"analysisCompletedSuccessfully": "🎉 分析成功完成!",
"detectedSourceDirectory": "检测到源目录: {{sourceDir}}",
"detectedI18nDirectory": "检测到 I18n 目录: {{i18nDir}}",
"fileInfo": " 📄 {namespace}: {keys} 个键",
"failedToAnalyzeUsage": "❌ 使用分析失败: {error}",
"failedToAnalyzeFile": "❌ 文件分析失败: {error}",
"analyzerInitialized": "分析器已初始化",
"analyzerInitFailed": "分析器初始化失败: {error}",
"argsParsed": "参数已解析",
"argsParseFailed": "参数解析失败: {error}",
"translationDiscoveryError": "翻译发现错误: {error}",
"fileTraversalError": "文件遍历错误: {error}",
"usageAnalysisFailed": "使用分析失败: {error}",
"translationFileParseError": "翻译文件解析错误: {error}",
"translationKeysLoadError": "翻译键加载错误: {error}",
"languageCompletenessStats": "{language}: {translated}/{total} ({completeness}% 已翻译)",
"missingKeysCount": "缺失键: {count}",
"analyzingTranslationCompleteness": "正在分析翻译完整性...",
"unusedKeysCount": "未使用键: {count}",
"usedKeysCount": "已使用键: {count}",
"availableKeysCount": "可用键: {count}",
"analysisResults": "分析结果:",
"checkUsage": {
"title": "🔍 国际化使用分析",
"message": "正在分析项目中国际化键的使用情况。",
"help_message": "\n国际化使用分析器\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",
"source_directory_thissourcedir": "📁 源目录: {sourceDir}",
"i18n_directory_thisi18ndir": "🌐 I18n 目录: {i18nDir}",
"loading_available_translation_": "📋 正在加载可用翻译键...",
"found_thisavailablekeyssize_av": "✅ 找到 {availableKeysSize} 个可用键",
"analyzing_source_files": "🔍 正在分析源文件...",
"found_files_in_source": "📂 在源目录中找到 {numFiles} 个文件",
"found_thisusedkeyssize_unique_": "🎯 找到 {usedKeysSize} 个唯一使用键",
"total_key_usages_totalkeysfoun": "📊 总键使用数: {totalKeysFound}",
"translation_completeness_title": "📊 翻译完整性",
"language_completeness_stats": " {language}: {translated}/{total} ({completeness}% 已翻译)",
"n_sample_unused_keys": "\n示例未使用键:",
"key": "- {key}",
"and_unusedkeyslength_5_more": "...还有 {count} 个。",
"n_recommendations": "\n📋 建议",
"consider_removing_unused_trans": "💡 考虑移除未使用的翻译以保持项目整洁。",
"n_next_steps": "\n📋 下一步",
"1_review_the_analysis_results": "1. 在控制台或生成的报告中查看分析结果。",
"2_run_with_outputreport_for_de": "2. 使用 --output-report 运行以获取详细报告。",
"3_remove_unused_keys_or_add_mi": "3. 移除未使用的键或在源代码中添加缺失的键。",
"4_rerun_analysis_to_verify_imp": "4. 重新运行分析以验证改进。",
"usage_analysis_results": "📊 使用分析结果",
"source_files_scanned_thisfileu": "已扫描源文件: {fileUsageSize}",
"available_translation_keys_thi": "可用翻译键: {availableKeysSize}",
"used_translation_keys_thisused": "已使用翻译键: {usedKeysSize}",
"dynamic_keys_detected_dynamick": "检测到动态键: {dynamicKeysLength}",
"unused_keys_unusedkeyslength": "未使用键: {unusedKeysLength}",
"missing_keys_missingkeyslength": "缺失键: {missingKeysLength}",
"noSourceFilesFound": "未找到要分析的源文件。",
"processedFiles": "已处理 {processedFiles} / {totalFiles} 个文件。",
"i18nDirectoryNotFound": "未找到 I18n 目录: {i18nDir}",
"noTranslationLanguagesFound": "未找到翻译语言。",
"failedToAnalyzeFile": "分析文件 {filePath} 失败: {error}",
"failedToAnalyzeLanguage": "分析语言 {language} 失败: {error}",
"translationCompletenessAnalysisFailed": "翻译完整性分析失败: {error}",
"n": ""
},
"complete": {
"configLoadedSuccessfully": "配置加载成功",
"configLoadingFailed": "配置加载失败",
"title": "🌍 国际化翻译完成",
"separator": "============================================================",
"sourceDir": "📁 源目录: {sourceDir}",
"sourceLanguage": "🌐 源语言: {sourceLanguage}",
"dryRunMode": "🧪 试运行模式 - 不会进行任何更改",
"languages": "🌍 可用语言: {languages}",
"addingMissingKeys": "➕ 正在向翻译文件添加缺失键...",
"processing": "🔄 正在处理 {language}...",
"addedKeys": "✅ 已添加 {count} 个缺失键",
"noChangesNeeded": "✅ {language} 无需更改",
"summaryTitle": "📊 完成摘要",
"totalChanges": "📝 总更改: {totalChanges}",
"languagesProcessed": "🌍 已处理语言: {languagesProcessed}",
"missingKeysAdded": "➕ 已添加缺失键: {missingKeysAdded}",
"nextStepsTitle": "📋 下一步",
"nextStep1": "1. 运行使用分析:",
"nextStep2": " node i18ntk-usage.js --output-report",
"nextStep3": "2. 验证翻译:",
"nextStep4": " node i18ntk-validate.js",
"nextStep5": "3. 分析模式:",
"nextStep6": " node i18ntk-analyze.js",
"allKeysAvailable": "🎉 所有翻译键现在都可用!",
"runWithoutDryRun": "💡 不使用 --dry-run 运行以应用更改",
"deletingOldReport": "🗑️ 正在删除旧报告...",
"generatingFreshAnalysis": "📊 正在生成新的使用分析...",
"couldNotGenerate": "❌ 无法生成使用分析",
"reportNotFound": "📋 未找到使用报告。使用常用键...",
"foundMissingKeys": "📋 从使用分析中找到 {count} 个缺失键",
"couldNotParse": "❌ 无法解析使用报告。使用常用键..."
}
},
"validate": {
"help_message": "\nI18n翻译验证器\n\n用法: node i18ntk-validate.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-validate.js --output-report\n node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-validate.js --output-dir=./analysis --output-report\n",
"title": "🔍 I18n翻译验证器",
"message": "正在启动验证流程...",
"sourceDirectory": "📁 源目录: {dir}",
"sourceLanguage": "🌍 源语言: {sourceLanguage}",
"strictMode": "⚙️ 严格模式: {mode}",
"noTargetLanguages": "⚠️ 未找到需要验证的目标语言",
"validatingLanguages": "🌍 正在验证语言: {langs}",
"validatingLanguage": "🔍 正在验证语言: {lang}",
"filesCount": "📄 文件数: {count}",
"keysCount": "🔑 键数: {count}",
"missingFilesCount": "📁 缺失文件: {count}",
"syntaxErrorsCount": "❌ 语法错误: {count}",
"translationPercentage": "🎯 翻译进度: {percentage}% ({translated}/{total} 个键)",
"validationSummary": "📊 验证摘要",
"validation_failed": "❌ 验证失败: {error}",
"totalErrors": "❌ 总错误数: {count}",
"totalWarnings": "⚠️ 总警告数: {count}",
"errorsSection": "❌ 错误",
"warningsSection": "⚠️ 警告",
"recommendationsSection": "💡 建议",
"fixErrorsFirst": "1. 首先修复所有错误",
"resolveMissingFilesAndSyntaxErrors": "1. 解决缺失文件和语法错误",
"fixStructuralInconsistencies": "2. 修复结构不一致问题",
"completeMissingTranslations": "3. 完成缺失的翻译",
"rerunValidation": "4. 重新运行验证以确认修复",
"addressWarnings": "处理警告以提高质量",
"reviewWarnings": "检查警告并在适当位置修复",
"considerRunningWithStrict": "2. 考虑使用 --strict 标志运行以获得更严格的验证",
"allValidationsPassed": "🎉 所有验证均已通过!",
"considerRunningUsageAnalysis": "考虑运行使用分析: node i18ntk-usage.js",
"deletedOldReport": "🗑️ 已删除旧验证报告",
"sourceDir": "📁 源目录: {sourceDir}",
"i18nDir": "🌐 I18n目录: {i18nDir}",
"loadingTranslationFiles": "📋 正在加载翻译文件...",
"foundTranslationFilesCount": "✅ 找到 {count} 个翻译文件",
"analyzingTranslations": "🔍 正在分析翻译...",
"validationCompletedSuccessfully": "🎉 验证成功完成!",
"validationErrorsFound": "⚠️ 发现验证错误: {count}",
"validationWarningsFound": "⚠️ 发现验证警告: {count}",
"validationPassed": "✅ 验证通过,无错误",
"validationFailed": "验证失败: {error}",
"startingValidationProcess": "🔍 正在启动验证流程...",
"validationProcessCompletedSuccessfully": "✅ 验证流程成功完成",
"stackTrace": "堆栈跟踪: {{stack}}",
"authenticationFailed": "❌ 身份验证失败。访问被拒绝。",
"fatalValidationError": "❌ 严重验证错误: {{error}}",
"configAccess": "正在访问验证配置",
"configValidated": "配置验证成功",
"configError": "配置错误: {error}",
"validatorInit": "正在初始化I18n验证器",
"validatorInitialized": "I18n验证器初始化成功",
"validatorInitError": "验证器初始化错误: {error}",
"argsParsing": "正在解析命令行参数",
"argsParsed": "命令行参数解析成功",
"argsParseError": "参数解析错误: {error}",
"languagesScan": "正在扫描可用语言",
"languagesFound": "找到 {count} 种语言",
"languagesScanError": "语言扫描错误: {error}",
"filesScan": "在 {language} 中找到 {count} 个文件",
"filesScanError": "文件扫描错误: {error}",
"jsonValidated": "JSON语法验证通过: {filePath}",
"jsonValidationError": "JSON验证错误: {error}",
"languageValidation": "正在验证语言: {language}",
"languageValidationError": "语言验证错误: {error}",
"fileDeleted": "文件已删除",
"runStarted": "正在启动验证运行",
"runCompleted": "验证运行成功完成",
"runError": "验证运行失败: {error}",
"scriptExecution": "脚本执行",
"validationCompleted": "验证完成",
"validationError": "验证错误: {error}",
"separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
"languageHeader": "🌐 语言: {language}",
"validationResults": "📊 验证结果",
"noErrors": "✅ 未发现错误",
"noWarnings": "✅ 未发现警告",
"summaryHeader": "📋 总体摘要",
"progressIndicator": "⏳ 处理中...",
"completedIndicator": "✅ 已完成",
"errorIndicator": "❌ 错误",
"warningIndicator": "⚠️ 警告",
"infoIndicator": "ℹ️ 信息",
"sourceDirNotConfigured": "源目录未配置",
"sourceLanguageNotConfigured": "源语言未配置",
"translationFunctionNotInitialized": "翻译函数未正确初始化",
"sourceLanguageDirectoryNotFound": "未找到源语言目录",
"specifiedLanguageNotFound": "未找到指定语言",
"noJsonFilesFound": "在源目录中未找到JSON文件: {sourceDir}",
"i18nDirectoryNotFound": "未找到I18n目录: {i18nDir}",
"invalidDirectoryPaths": "检测到无效的目录路径",
"invalidSampleFilePath": "无效的示例文件路径",
"failedToCreateSampleTranslationFile": "创建示例翻译文件失败",
"invalidFilePathDetected": "检测到无效的文件路径",
"failedToWriteFile": "写入文件失败: {filePath}"
},
"adminCli": {
"setupPinProtectionTitle": "\n🔐 设置管理员PIN保护",
"setupPinProtectionDescription": "这将要求输入4-6位数字PIN码进行管理员操作。",
"enablePinProtectionPrompt": "您要启用管理员PIN保护吗?",
"setupCancelled": "管理员PIN保护设置已取消。",
"enterPinPrompt": "请输入4-6位数字PIN码:",
"pinFormatError": "❌ PIN码必须是4-6位数字。请重试。",
"confirmPinPrompt": "确认PIN码:",
"pinMismatchError": "❌ PIN码不匹配。请重试。",
"pinProtectionEnabledSuccess": "✅ 管理员PIN保护已成功启用!",
"pinRecoveryWarning": "⚠️ 记住您的PIN码 - 如果丢失将无法恢复。",
"setupPinProtectionFailed": "❌ 设置管理员PIN保护失败。",
"errorSettingUpPin": "❌ 设置管理员PIN时出错:{message}",
"authRequiredForOperation": "\n🔐 管理员身份验证要求:{operation}",
"invalidPinFormat": "❌ 无效的PIN码格式。PIN码必须是4-6位数字。",
"authenticationSuccess": "✅ 身份验证成功!",
"invalidPinAttemptsRemaining": "❌ 无效的PIN码。还剩{remaining}次尝试机会。",
"authenticationFailedAccessDenied": "❌ 身份验证失败。访问被拒绝。",
"authenticationError": "❌ 身份验证错误:{message}",
"pinProtectionNotEnabled": "管理员PIN保护当前未启用。",
"disablingPinProtectionTitle": "\n🔓 禁用管理员PIN保护",
"confirmDisablePinProtection": "您确定要禁用管理员PIN保护吗?",
"operationCancelled": "操作已取消。",
"pinProtectionDisabledSuccess": "✅ 管理员PIN保护已禁用。",
"disablePinProtectionFailed": "❌ 禁用管理员PIN保护失败。",
"errorDisablingPinProtection": "❌ 禁用管理员保护时出错:{message}",
"adminProtectionStatusTitle": "\n🔐 管理员保护状态",
"statusEnabled": "状态:✅ 已启用",
"protectionDetails": "保护:管理员操作需要4-6位数字PIN码",
"lockoutDetails": "锁定:3次失败尝试=15分钟锁定",
"statusDisabled": "状态:❌ 已禁用",
"noAuthRequired": "保护:无需身份验证",
"unprotectedRisk": "风险:管理操作未受保护",
"errorCheckingAdminStatus": "❌ 检查管理员状态时出错:{message}",
"authRequired": "🔐 需要管理员身份验证。",
"invalidPin": "❌ 无效的PIN码。",
"authSuccess": "✅ 身份验证成功!",
"adminPinSetupCli": "admin_pin_setup_cli",
"adminAuthFailedCli": "admin_auth_failed_cli",
"adminAuthDisabledCli": "admin_auth_disabled_cli",
"protectedAccess": "受保护访问:敏感操作需要管理员身份验证。",
"enterPin": "请输入管理员PIN码:",
"accessGranted": "访问已授权。"
},
"adminPin": {
"setup_title": "🔐 管理员PIN设置",
"setup_separator": "============================================================",
"setup_description": "为管理员访问敏感设置创建4-6位数字PIN码。",
"required_for_title": "此PIN码将用于以下用途:",
"required_for_1": " • 更改安全设置",
"required_for_2": " • 修改高级配置",
"required_for_3": " • 访问调试工具",
"required_for_4": " • 重置设置",
"setup_note": "💡 注意:输入时您会看到星号(*) - 这些只是掩码字符。",
"setup_digits_only": " 仅接受数字0-9作为PIN码数字。",
"invalid_pin_length": "❌ 无效的PIN码。必须是4-6位数字(仅数字0-9)。",
"invalid_pin_example": " 示例:1234或567890",
"pins_do_not_match": "❌ PIN码不匹配。",
"setup_success": "✅ 管理员PIN码设置成功!",
"setup_warning": "⚠️ 请妥善保管此PIN码。如果丢失将无法恢复。",
"setup_error": "❌ 设置PIN码时出错:",
"session_expired": "\n⏰ 管理员会话因不活动而过期。",
"no_pin_set_setting_up": "⚠️ 未设置管理员PIN码。正在设置PIN码...",
"no_pin_configured_access_denied": "⚠️ 未配置管理员PIN码。访问被拒绝。",
"use_admin_settings_to_set_pin": "💡 请先在管理员设置中设置PIN码。",
"locked_out": "🔒 由于失败尝试次数过多,管理员访问已被锁定。",
"wait_before_retry": "请在5分钟后重试。",
"access_granted": "✅ 管理员访问已授权。",
"incorrect_pin": "❌ 错误的PIN码。还剩{attempts}次尝试机会。",
"verify_pin_error": "❌ 验证PIN码时出错:",
"already_configured": "✅ 管理员PIN码已配置。",
"optional_setup_title": "\n🔐 管理员PIN设置(可选)",
"optional_setup_description": "管理员PIN保护为以下敏感操作增加安全性:",
"setup_prompt": "您要设置管理员PIN码吗?(y/N): ",
"skipping_setup": "⏭️ 跳过管理员PIN设置。您可以稍后在设置中进行配置。",
"setup_prompt_error": "❌ PIN设置提示期间出错:",
"protectedAccess": "受保护访问:敏感操作需要管理员身份验证。",
"enterPin": "请输入管理员PIN码:",
"accessGranted": "访问已授权。",
"invalidPin": "❌ 无效的PIN码。请重试。",
"weak_pin_warning": "⚠️ 警告:此PIN码看起来较弱或很常见。",
"weak_pin_suggestion": "💡 考虑使用带有不同数字的更强的PIN码。",
"use_anyway_prompt": "输入\"yes\"继续使用,或按Enter选择不同的PIN码:",
"enter_new_pin": "请输入新的管理员PIN码(4-6位数字):",
"confirm_pin": "确认管理员PIN码:",
"not_set": "未设置",
"pin_display_mask": "####"
},
"autorun": {
"missingRequiredFile": "缺少必需文件:{file}",
"runInitializationFirst": "请先运行初始化。",
"initializationCheckPassed": "初始化检查通过。",
"runningStep": "正在运行步骤:{stepName}",
"commandLabel": "命令:{command}",
"stepRunning": "步骤“{stepName}”正在运行...",
"stepCompletedWithTime": "步骤“{stepName}”在 {duration}ms 内完成。",
"stepCompleted": "步骤“{stepName}”已完成。",
"stepFailed": "步骤“{stepName}”失败。",
"errorLabel": "错误:{error}",
"stepFailedWithError": "步骤“{stepName}”因错误失败:{error}",
"requiredStepFailed": "必需步骤失败。正在停止工作流。",
"optionalStepFailed": "可选步骤失败。继续执行工作流。",
"startingAutoRunWorkflow": "正在启动自动运行工作流...",
"workflowIncludesSteps": "工作流包含 {count} 个步骤:",
"stepRequired": "(必需)",
"stepOptional": "(可选)",
"startingExecution": "正在开始执行...",
"workflowStopped": "工作流已停止。",
"workflowCompleted": "工作流已完成。",
"pressEnterToContinue": "按 Enter 继续...",
"runningSelectedSteps": "正在运行所选步骤...",
"invalidStepNumber": "无效的步骤编号:{stepNum}",
"executionReport": "执行报告:",
"successfulSteps": "成功步骤数:{count}",
"failedSteps": "失败步骤数:{count}",
"requiredFailedSteps": "失败的必需步骤数:{count}",
"stepDetails": "步骤详情:",
"errorDetails": "错误:{error}",
"reportSavedTo": "报告已保存到:{path}",
"overallStatusSuccess": "成功",
"overallStatusFailed": "失败",
"overallStatus": "总体状态:{status}",
"customSettingsConfiguration": "自定义设置配置",
"pressEnterForDefaults": "按 Enter 使用默认设置。",
"sourceDirPrompt": "请输入源目录(默认:{default}):",
"sourceLangPrompt": "请输入源语言(默认:{default}):",
"targetLangsPrompt": "请输入目标语言(用逗号分隔,默认:{default}):",
"translationMarkerPrompt": "请输入翻译标记(默认:{default}):",
"outputDirPrompt": "请输入报告输出目录(默认:{default}):",
"settingsUpdatedSuccessfully": "设置更新成功!",
"errorConfiguringSettings": "配置设置时出错:{error}",
"autoRunScriptTitle": "自动运行脚本",
"usageTitle": "用法:",
"runAllSteps": "node i18ntk-autorun.js --all - 运行 i18ntk-config.json 中定义的所有步骤",
"configureSettingsFirst": "node i18ntk-autorun.js --config - 配置工作流设置",
"runSpecificSteps": "node i18ntk-autorun.js --steps <步骤编号> - 运行特定步骤(例如:--steps 1,3,5)",
"showHelp": "node i18ntk-autorun.js --help - 显示此帮助信息",
"availableSteps": "可用步骤:",
"examplesTitle": "示例:",
"configExample": "node i18ntk-autorun.js --config",
"stepsExample1": "node i18ntk-autorun.js --steps 1,2,3",
"stepsExample2": "node i18ntk-autorun.js --all",
"configurationComplete": "配置完成。",
"runAutoRunCommand": "现在您可以运行自动执行命令。",
"configurationFailed": "配置失败:{error}",
"noValidStepNumbers": "未提供有效的步骤编号。",
"autoRunFailed": "自动运行失败:{error}",
"stepInitializeProject": "初始化项目",
"stepAnalyzeTranslations": "分析翻译",
"stepValidateTranslations": "验证翻译",
"stepCheckUsage": "检查使用情况",
"stepCompleteTranslations": "完成翻译",
"stepAnalyzeSizing": "分析翻译大小",
"stepGenerateSummary": "正在生成摘要报告...",
"stepCompletedIcon": "✅",
"stepCompletedWithIcon": "✅ 步骤“{stepName}”已完成。",
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] 步骤“{stepName}”正在运行...",
"stepFailedIcon": "❌",
"translationLoadWarning": "警告:无法加载 {lang} 翻译",
"configReadError": "读取配置文件 {file} 时出错",
"separator": "=================================================="
},
"debug": {
"title": "🔧 调试工具",
"separator": "============================================================",
"mainDebuggerSystemDiagnostics": "1. 系统诊断",
"_consoleTranslationsCheck": "// 2. 控制台翻译检查",
"_exportMissingKeys": "// 3. 导出缺失的翻译键",
"_replaceHardcodedConsole": "// 4. 替换硬编码控制台字符串",
"_consoleKeyChecker": "// 5. 控制台键检查器",
"debugLogs": "2. 调试日志",
"backToMainMenu": "0. 返回主菜单",
"selectOption": "请选择一个调试工具:",
"runningDebugTool": "正在运行 {displayName}...",
"debugToolNotFound": "❌ 未找到调试工具:{toolName}",
"recentDebugLogs": "📄 最近的调试日志",
"noDebugLogsFound": "❌ 未找到调试日志。",
"debugLogsDirectoryNotFound": "❌ 未找到调试日志目录。",
"selectLogPrompt": "选择要查看的日志文件(1-{count}):",
"invalidChoiceSelectRange": "无效的选择。请选择提供范围内的数字。",
"contentOf": "📄 {filename} 的内容:",
"pressEnterToContinue": "按 Enter 继续..."
},
"detect_language_mismatches": {
"tool_title": "🔍 语言不匹配检测工具",
"separator": "=====================================\n",
"analyzing_file": "📄 正在分析 {language}.json...",
"error_analyzing_file": "❌ 分析 {filename} 时出错:{errorMessage}",
"results_title": "📊 语言不匹配检测结果",
"results_separator": "========================================\n",
"summary_title": "📋 总结:",
"total_files_analyzed": " 分析的文件总数:{totalFiles}",
"files_with_mismatches": " 出现不匹配的文件:{filesWithMismatches}",
"total_mismatches_found": " 发现不匹配项总数:{totalMismatches}\n",
"no_mismatches_found": "✅ 未发现语言不匹配!所有翻译似乎都在正确的语言中。\n",
"detailed_results_title": "🔍 详细结果:\n",
"file_mismatch_header": "📄 {filename}({language})",
"mismatches_count": " 找到 {count} 个不匹配项:\n",
"mismatch_details": " {index}. 键:{key}",
"mismatch_value": " 值:\"{value}\"",
"mismatch_issue": " 问题:{description}",
"recommendations_title": "💡 建议:\n",
"recommendation_1": "1. 审查并翻译所有标记为 [TRANSLATE] 的条目",
"recommendation_2": "2. 替换语言前缀(如 [DE], [FR])为适当的翻译",
"recommendation_3": "3. 将英语文本翻译为目标语言",
"recommendation_4": "4. 所有面向用户的文本应使用本地语言表达",
"recommendation_5": "5. 完成更正后再次运行该工具以验证修复效果\n",
"detailed_report_saved": "📄 详细报告已保存到:{reportPath}\n",
"error_saving_report": "❌ 保存报告时出错:{errorMessage}\n",
"auto_fix_mode": "🔧 自动修复模式 {dryRun}",
"auto_fix_separator": "=====================================\n",
"fixed_file": "✅ 已修复 {filename}",
"auto_fix_summary_title": "\n📊 自动修复摘要:",
"total_fixes_applied": " 应用的修复总数:{count}",
"preview_fixes_title": "\n🔍 修复预览:",
"fix_details": " {file}:{key}\n 原始:\"{old}\"\n 新值:\"{new}\"\n",
"more_fixes": " ...以及另外 {count} 个修复\n",
"run_with_apply_fixes": "💡 使用 --apply 参数运行以应用这些修复\n",
"error_general": "❌ 错误:",
"mainDebuggerSystemDiagnostics": "主调试器 / 系统诊断",
"exportMissingKeys": "导出缺失键",
"replaceHardcodedConsole": "替换硬编码控制台",
"consoleKeyChecker": "控制台键检查器",
"debugLogs": "调试日志",
"backToMainMenu": "返回主菜单",
"invalidChoiceSelectRange": "❌ 无效选择。请选择显示范围内的数字。",
"runningDebugTool": "正在运行调试工具:{displayName}",
"debugToolNotFound": "未找到调试工具:'{toolName}'。",
"recentDebugLogs": "最近的调试日志",
"noDebugLogsFound": "未找到调试日志。",
"logEntry": "日志条目:{timestamp} - {message}",
"debugLogsDirectoryNotFound": "未找到调试日志目录。"
},
"help": {
"title": "📊 国际化管理帮助\n\n",
"usage": "用法:node i18ntk-manage.js [选项]\n",
"interactiveMode": "\n💡 使用:node i18ntk-manage.js --command=<command> 直接执行命令\n",
"showHelp": "\n📖 使用:node i18ntk-manage.js --help 查看可用命令\n",
"availableCommands": "\n📖 可用命令:\n",
"initProject": "🚀 初始化新语言",
"analyzeTranslations": "🔍 分析翻译",
"validateTranslations": "✅ 验证翻译",
"checkUsage": "📊 检查键使用情况",
"initCommand": " init - 初始化新语言",
"analyzeCommand": " analyze - 分析翻译",
"validateCommand": " validate - 验证翻译",
"usageCommand": " usage - 检查键使用情况",
"sizingCommand": " sizing - 分析大小差异",
"completeCommand": " complete - 完成翻译(100% 覆盖)",
"summaryCommand": " summary - 显示项目状态",
"debugCommand": " debug - 调试翻译问题",
"menu": {
"title": "\n🌐 国际化管理菜单\n",
"description": "用于管理国际化的交互式菜单\n",
"exit": "\n🚪 退出"
},
"commands": {
"init": "\n init - 初始化新语言",
"analyze": " analyze - 分析翻译",
"validate": " validate - 验证翻译",
"usage": " usage - 检查键使用情况",
"sizing": " sizing - 分析大小差异",
"complete": " complete - 完成翻译(100% 覆盖)",
"summary": " summary - 显示项目状态",
"debug": " debug - 调试翻译问题"
},
"options": {
"sourceDir": "\n --source-dir <dir> 要分析的源目录",
"output": " --output <file> 报告输出文件",
"verbose": " --verbose, -v 显示详细信息",
"keepReports": " --keep-reports 保留现有报告",
"deleteReports": " --delete-reports 删除现有报告",
"help": " --help, -h 显示此帮助"
},
"examples": {
"title": "\n示例:\n",
"example1": " node i18ntk-manage.js",
"example2": " node i18ntk-manage.js --source-dir ./locales",
"example3": " node i18ntk-manage.js --output summary-report.txt",
"example4": " node i18ntk-manage.js --verbose",
"example5": " node i18ntk-manage.js --source-dir ./locales --output report.json"
},
"features": {
"initProject": "🚀 初始化新语言",
"analyzeTranslations": "🔍 分析翻译",
"validateTranslations": "✅ 验证翻译",
"checkUsage": "📊 检查键使用情况",
"completeTranslations": "🎯 完成翻译(100% 覆盖)",
"showSizing": "📏 分析大小差异",
"runWorkflow": "🔄 运行完整工作流",
"showStatus": "📋 显示项目状态",
"deleteReports": "🗑️ 删除所有报告",
"changeLanguage": "🌍 切换界面语言",
"settings": "⚙️ 设置",
"showHelp": "❓ 帮助",
"debugTools": "🔧 调试工具"
},
"messages": {
"selectOption": "请选择一个选项:",
"invalidOption": "❌ 无效选项,请重试。",
"operationCompleted": "✅ 操作成功完成!",
"pressEnter": "按 Enter 继续...",
"goodbye": "👋 再见!",
"unknownCommand": "未知命令:{{command}}",
"nonInteractive": "⚠️ 检测到非交互模式,仅供参考显示菜单。"
},
"i18n_helper": {
"translation_file_not_found": "未找到翻译文件:{translationFile}",
"error_loading_translations": "加载翻译时出错:{errorMessage}",
"translation_not_found": "未找到键的翻译:{key}",
"translation_key_not_string": "翻译键未解析为字符串:{key}",
"error_reading_locales_directory": "读取 locales 目录时出错:{errorMessage}"
}
},
"init": {
"initializationTitle": "🚀 i18n 管理工具 - 项目初始化",
"sourceDirectoryLabel": "📁 源目录:{dir}",
"sourceLanguageLabel": "🌍 源语言:{language}",
"detectedI18nFrameworks": "🔍 检测到的 i18n 框架:{frameworks}",
"existingDirectoriesFound": "📁 发现已有翻译目录:",
"useExistingDirectoryPrompt": "要使用已有目录吗?(y/n)",
"autoDetectedI18nDirectory": "📂 自动检测到的 i18n 目录:{directory}",
"initializingProject": "⚙️ 正在初始化项目配置...",
"createdSampleTranslationFile": "✅ 已创建示例翻译文件:{file}",
"languageSelectionTitle": "🌐 语言配置",
"available": "可用",
"defaultLanguages": "📝 默认语言:{languages}",
"enterLanguageCodes": "🎯 输入目标语言代码(逗号分隔,例如 de, es, fr, ru):",
"targetLanguages": "🌍 目标语言",
"foundSourceFiles": "📄 找到 {count} 个源文件待分析",
"processingLanguage": "🔄 正在处理语言:{language}",
"fileProcessingResult": "✅ 处理 {file}:{translated}/{total} 键({percentage}%)",
"overallProgress": "📊 总体进度:已处理 {translated}/{total} 键({percentage}%)",
"initializationSummaryTitle": "📋 初始化摘要",
"languageSummary": "{icon} {name}({code}):完成 {percentage}% ",
"languageFiles": " 📄 文件数:{count}",
"languageKeys": " 🔤 键:{translated}/{total}",
"languageMissing": " ⚠️ 缺失:{count}",
"initializationCompletedSuccessfully": "🎉 项目初始化成功完成!",
"nextStepsTitle": "🚀 下一步",
"nextStep1": "1. 在 locales/ 目录中查看生成的翻译文件",
"nextStep2": "2. 为每个目标语言添加翻译",
"nextStep3": "3. 再次运行 'npm run i18ntk' 验证翻译",
"detectedFrameworks": "✅ 检测到的 i18n 框架:{frameworks}",
"errorsNoFramework": "未检测到 i18n 框架。请安装一个框架或手动指定。",
"suggestions": {
"noFramework": "未检测到 i18n 框架。请考虑使用以下框架之一:",
"installFramework": "要安装框架,请运行:npm install <包名>"
},
"frameworks": {
"react": "- React i18next (react-i18next)",
"vue": "- Vue i18n (vue-i18n)",
"i18next": "- i18next (i18next)",
"nuxt": "- Nuxt i18n (@nuxtjs/i18n)",
"svelte": "- Svelte i18n (svelte-i18n)"
},
"continueWithoutI18nPrompt": "未检测到 i18n 框架。是否继续?(y/N):",
"detectedI18nFramework": "检测到 i18n 框架:{frameworks}",
"existingDirectoryItem": " {index}. {location}",
"usingExistingStructure": "使用已有结构:{dir}",
"creatingSourceDirectory": "创建源目录:{dir}",
"creatingSourceLanguageDirectory": "创建源语言目录:{dir}",
"errors": {
"sourceDirectoryNotFound": "未找到源目录:{dir}",
"sourceLanguageDirectoryNotFound": "未找到源语言目录:{dir}",
"noJsonFilesInSourceDirectory": "源目录中未找到 JSON 文件:{dir}",
"invalidFilePathDetected": "检测到无效的文件路径",
"initializationFailed": "初始化失败:{error}",
"packageJsonRead": "读取 package.json 时出错:{error}",
"noFramework": "未检测到 i18n 框架,请手动安装或指定。"
},
"processingFile": "正在为 {language} 处理文件 {file}...",
"fileAlreadyExistsMerging": "文件 {file} 已存在。正在合并新键。",
"createdNewFile": "已创建新文件:{file}",
"updatedFile": "已更新文件:{file}",
"skippingExcludedFile": "已跳过 {language} 的 {file},因其在排除列表中。"
},
"language": {
"title": "🌍 切换语言",
"separator": "============================================================",
"current": "当前语言:{language}",
"available": "可用语言:",
"languageOption": "{index}. {displayName}{current}",
"backToMainMenu": "返回主菜单",
"prompt": "请选择语言(0-8):",
"cancelled": "已取消语言切换。",
"invalid": "无效选择,请重试。",
"changed": "语言已切换为:{language}",
"pressEnterToContinue": "按 Enter 继续..."
},
"maintainLanguagePurity": {
"workflow_title": "🚀 语言纯洁度维护工作流",
"step1_title": "📊 第1步:初始语言纯洁度评估",
"step2_title": "\n🔧 第2步:检测并自动修复语言不匹配",
"step3_title": "\n🌐 第3步:应用自动翻译",
"step4_title": "\n✅ 第4步:最终语言纯洁度评估",
"workflow_error": "❌ 工作流错误:{errorMessage}",
"running_initial_validation": "正在运行初始语言纯洁度验证…",
"initial_assessment_complete": "✅ 初始评估完成:发现 {count} 处违规\n",
"initial_assessment_warnings": "⚠️ 初始评估完成,存在警告\n",
"detecting_fixing_mismatches": "正在检测并修复语言不匹配…",
"detection_complete_applying_fixes": "检测完成,正在应用自动修复…",
"mismatch_fixes_complete": "✅ 语言不匹配修复完成:应用了 {count} 处修复\n",
"mismatch_fixes_warnings": "⚠️ 语言不匹配修复完成,存在警告\n",
"applying_automatic_translations": "正在应用自动翻译…",
"translation_preview_complete": "翻译预览完成,正在应用翻译…"
},
"menu": {
"title": "🌐 国际化管理菜单",
"separator": "============================================================",
"options": {
"init": "🚀 初始化新语言",
"analyze": "🔍 分析翻译",
"validate": "✅ 验证翻译",
"usage": "📊 检查键使用情况",
"complete": "🎯 完成翻译(100% 覆盖)",
"sizing": "📏 分析大小差异",
"workflow": "🔄 运行完整工作流",
"status": "📋 显示项目状态",
"delete": "🗑️ 删除全部报告",
"language": "🌍 切换界面语言",
"settings": "⚙️ 设置",
"help": "❓ 帮助",
"debug": "🔧 调试工具",
"exit": "🚪 退出"
},
"update": "📦 更新软件包",
"goodbye": "👋 再见!",
"invalidChoice": "❌ 无效选择。请选择 0-13。",
"returning": "🔄 正在返回主菜单…",
"invalidOption": "❌ 无效选项,请重试。",
"nonInteractiveModeWarning": "⚠️ 检测到非交互模式,仅供参考显示菜单。",
"useDirectExecution": "💡 使用:node main/i18ntk-manage.js --command=<command> 直接执行。",
"useHelpForCommands": "📖 使用:node main/i18ntk-manage.js --help 获取可用命令。",
"returnToMainMenu": "按 Enter 返回主菜单。",
"pressEnterToContinue": "按 Enter 继续…",
"selectOptionPrompt": "请选择一个选项:",
"selectDebugToolPrompt": "请选择调试工具:",
"selectLogPrompt": "请选择日志文件(1-{count}):",
"autoDetectedI18nDirectory": "📂 自动检测到的 i18n 目录:{directory}",
"executingCommand": "正在执行命令:{command}",
"unknownCommand": "未知命令:{command}",
"languageOption": " {{index}}. {{displayName}}{{current}}",
"debugTools": {
"1": "日志文件分析",
"2": "翻译键使用分析",
"3": "翻译完整性分析",
"4": "翻译格式分析",
"5": "翻译类型分析",
"6": "翻译结构分析"
},
"native_translations": {
"exact_translation_found": " ✅ {keyPath}:{value}",
"no_exact_translation": " ⚠️ 未找到“{keyPath}”的精确翻译,发现相似键:",
"similar_key": " - {key}({similarity}% 匹配)",
"processing_language_files": "🔄 正在处理 {count} 个语言文件…\n",
"file_not_found": "⚠️ 未找到文件:{file}",
"processing_translations": "🌍 正在处理 {code} 翻译…",
"backup_created": "📋 已创建备份:{filename}",
"error_parsing_json": "❌ 解析 {code}.json 时出错:{errorMessage}",
"existing_keys_found": "📊 {code}:找到 {count} 个现有键",
"error_writing_json": "❌ 写入 {code}.json 时出错:{errorMessage}",
"translations_replaced": "📊 {code}:已替换 {count} 个翻译",
"translation_replacement_complete": "\n✅ 翻译替换完成!",
"total_replacements": "📊 替换总数:{count}",
"dry_run_mode": "\n⚠️ 试运行模式 - 未修改任何文件",
"tool_title": "🌍 本地化自动翻译工具 v1.5.3",
"tool_separator": "======================================\n",
"dry_run_warning": "⚠️ 正在试运行模式 - 不会修改文件\n",
"error_during_replacement": "❌ 翻译替换过程中出错:"
},
"operations": {
"completed": "✅ 操作成功完成!",
"deleteReportsTitle": "🗑️ 删除报告与日志",
"scanningForFiles": "🔍 正在扫描待删除的文件…",
"noFilesFoundToDelete": "✅ 未找到可删除的文件。",
"availableDirectories": "📁 可用目录:",
"allDirectories": "所有目录",
"cancelOption": "取消",
"cancelReportOption": "取消 / 返回菜单",
"invalidSelection": "❌ 无效选择。",
"foundFilesInSelectedDirectories": "📊 在选定目录中找到 {count} 个文件:",
"deletionOptions": "🗑️ 删除选项:",
"deleteAllFiles": "删除所有文件",
"keepLast3Files": "保留最近 3 个文件(按日期)",
"keepLast5Files": "保留最近 5 个文件(按日期)",
"noFilesToDelete": "✅ 无需删除任何文件。",
"filesToDeleteCount": "📋 待删除文件数:{count}",
"filesToKeepCount": "📋 保留文件数:{count}",
"confirmDeletion": "⚠️ 确定要删除这些文件吗?(y/N):",
"deletedFile": "✅ 已删除:{filename}",
"failedToDeleteFile": "❌ 删除 {filename} 失败:{error}",
"cancelled": "❌ 操作已取消。",
"init": {
"title": "🚀 初始化新语言"
},
"usage": {
"title": "📊 检查键使用情况"
},
"analyze": {
"title": "🔍 分析翻译"
},
"validate": {
"title": "✅ 验证翻译"
},
"settings": {
"title": "⚙️ 设置管理",
"separator": "============================================================"
},
"complete": {
"deletingOldReport": "🗑️ 正在删除旧的使用分析报告,以便重新生成",
"generatingFreshAnalysis": "🔄 正在生成新的使用分析…",
"couldNotGenerate": "⚠️ 无法生成使用分析,使用常见缺失键。",
"reportNotFound": "⚠️ 未找到使用报告,正在生成新的分析…",
"foundMissingKeys": "🔍 从使用分析中找到 {count} 个缺失键",
"couldNotParse": "⚠️ 无法解析使用报告,使用常见缺失键。",
"title": "🎯 完成翻译",
"separator": "============================================================",
"sourceDir": "📁 源目录:{sourceDir}",
"sourceLanguage": "🔤 源语言:{sourceLanguage}",
"dryRunMode": "🧪 试运行模式 - 不会修改任何文件",
"languages": "🎯 目标语言:{languages}",
"addingMissingKeys": "➕ 正在向翻译文件添加缺失键…",
"processing": "🔄 正在处理 {language}…",
"addedKeys": "✅ 已添加 {count} 个键",
"changeDetails": "📝 {file}:{key}",
"noChangesNeeded": "✅ {language} 无需更改",
"summaryTitle": "📊 完成摘要",
"totalChanges": "📝 总更改数:{totalChanges}",
"languagesProcessed": "🌐 已处理语言:{languagesProcessed}",
"missingKeysAdded": "➕ 已添加缺失键:{missingKeysAdded}",
"nextStepsTitle": "📋 后续步骤",
"nextStep1": "1. 运行使用分析:",
"nextStep2": "2. 验证翻译:",
"nextStep3": "3. 分析完整性:",
"allKeysAvailable": "🎉 所有翻译键现已可用!",
"runWithoutDryRun": "💡 不使用 --dry-run 参数运行以应用更改",
"pressEnterToContinue": "按 Enter 继续…"
},
"updatePackage": {
"title": "📦 更新 i18n-toolkit 包",
"description": "这将把 i18n-toolkit 包更新到 npm 上可用的最新版本。",
"command": "运行命令",
"confirm": "确定要继续更新吗?(y/N):",
"updating": "正在更新软件包…这可能需要一些时间。",
"success": "✅ i18n-toolkit 更新成功!",
"error": "❌ 更新 i18n-toolkit 失败",
"cancelled": "❌ 更新已取消。"
}
},
"security": {
"pathValidationFailed": "路径验证失败",
"invalidInputType": "无效的输入类型",
"pathTraversalAttempt": "路径遍历尝试",
"pathValidated": "✅ 路径验证成功",
"pathValidationError": "路径验证错误",
"fileTooLarge": "安全:文件过大:{filePath}",
"fileReadError": "安全:读取文件出错:{errorMessage}",
"contentTooLargeForFile": "安全:内容过大,无法写入文件:{filePath}",
"fileWriteError": "安全:写入文件出错:{errorMessage}",
"jsonStringTooLarge": "安全:JSON 字符串过大",
"jsonParseError": "安全:JSON 解析错误:{errorMessage}",
"inputContainsDisallowedCharacters": "安全:输入包含不允许的字符",
"unknownCommandArgument": "安全:未知命令参数:{key}",
"unknown_command_argument": "安全:未知命令参数:{key}",
"unknownConfigKey": "安全:未知配置键:{key}",
"unknown_config_key": "安全:未知配置键:{key}",
"securityAlert": "[安全警报] {timestamp}:{event}",
"contentTooLarge": "安全:内容过大,无法写入文件:{validatedPath}",
"inputDisallowedCharacters": "安全:输入包含不允许的字符",
"unknownCommandArg": "未知命令参数",
"logMessage": "[安全 {level}] {timestamp}:{event}",
"alertMessage": "[安全警报] {timestamp}:{event}",
"securityWarning": "[安全警告] {timestamp}:{event}",
"json_parse_error": "安全:JSON 解析错误:{errorMessage}"
}
},
"settings-cli": {
"settings": {
"mainMenu": {
"title": "主菜单:",
"uiSettings": "界面设置",
"uiSettingsDesc": "语言、主题和界面选项",
"directorySettings": "目录设置",
"directorySettingsDesc": "源目录和输出目录路径",
"scriptDirectorySettings": "脚本目录设置",
"scriptDirectorySettingsDesc": "各脚本操作的目录路径",
"processingSettings": "处理设置",
"processingSettingsDesc": "批量大小、并发和性能",
"advancedSettings": "高级设置",
"advancedSettingsDesc": "验证、日志和专家选项",
"viewAllSettings": "查看所有设置",
"viewAllSettingsDesc": "显示当前配置",
"importExport": "导入/导出",
"importExportDesc": "备份和恢复设置",
"resetToDefaults": "重置为默认值",
"resetToDefaultsDesc": "恢复出厂设置",
"reportBug": "报告错误",
"reportBugDesc": "在 GitHub 提交问题报告",
"saveChanges": "保存更改",
"saveChangesDesc": "将当前设置保存到文件",
"updatePackage": "更新软件包",
"updatePackageDesc": "通过 npm 更新 i18n-toolkit 包",
"help": "帮助",
"helpDesc": "显示详细帮助信息",
"quit": "退出",
"quitDesc": "退出设置(如有更改则提示保存)",
"unsavedChangesWarning": "⚠️ 您有未保存的更改",
"saveChangesBeforeQuit": "是否在退出前保存更改?(y/N):",
"selectOption": "请选择一个选项:",
"goodbyeMessage": "感谢使用 i18n 设置管理器!"
},
"goodbyeMessage": "感谢使用 i18n 设置管理器!",
"relativePathHint": "请使用相对路径(例如:./src/i18n/locales)",
"currentDirectory": "当前项目目录"
},
"settings_manager": {
"error_loading_settings": "❌ 加载设置时出错:",
"error_saving_settings": "❌ 保存设置时出错:",
"error_setting_value": "❌ 设置值时出错:",
"missing_required_setting": "❌ 缺少必需的设置:{prop}",
"invalid_language": "❌ 无效的语言:{language}",
"invalid_source_language": "❌ 无效的源语言:{sourceLanguage}",
"default_languages_must_be_array": "❌ defaultLanguages 必须是数组",
"invalid_date_format": "❌ 无效的日期格式:{dateFormat}。有效格式:{validFormats}",
"invalid_time_format": "❌ 无效的时间格式:{timeFormat}。有效格式:{validFormats}",
"notifications_types_must_be_object": "❌ notifications.types 必须是对象",
"exclude_files_must_be_array": "❌ excludeFiles 必须是数组",
"exclude_dirs_must_be_array": "❌ excludeDirs 必须是数组",
"include_extensions_must_be_array": "❌ includeExtensions 必须是数组",
"invalid_batch_size": "❌ 无效的批量大小。必须为正数",
"invalid_max_concurrent_files": "❌ 无效的最大并发文件数。必须为正数",
"invalid_sizing_threshold": "❌ 无效的大小阈值。必须为正数",
"invalid_timeout": "❌ 无效的超时。必须至少为 1000 毫秒",
"invalid_sizing_format": "❌ 无效的大小格式:{sizingFormat}。有效格式:{validFormats}",
"error_validating_settings": "❌ 验证设置时出错:",
"backup_created": "📋 已创建备份:{backupPath}",
"error_creating_backup": "❌ 创建备份时出错:",
"language_not_supported": "❌ 语言“{language}”不受支持。可用语言:{availableLanguages}",
"ui_language_set": "🌍 界面语言已设置为:{language}"
}
},
"settings": {
"title": "⚙️ 设置管理",
"separator": "============================================================",
"goodbyeMessage": "感谢使用 i18ntk 设置管理器!",
"relativePathHint": "请使用相对路径(例如:./src/i18n/locales)",
"currentDirectory": "当前项目目录",
"pin": "PIN:",
"mainMenu": {
"title": "主菜单:",
"uiSettings": "界面设置",
"uiSettingsDesc": "语言、主题和界面选项",
"directorySettings": "目录设置",
"directorySettingsDesc": "源目录和输出目录路径",
"processingSettings": "处理设置",
"processingSettingsDesc": "批量大小、并发和性能",
"advancedSettings": "高级设置",
"advancedSettingsDesc": "验证、日志和专家选项",
"viewAllSettings": "查看所有设置",
"viewAllSettingsDesc": "显示当前配置",
"importExport": "导入/导出",
"updatePackage": "更新软件包",
"updatePackageDesc": "通过 npm 更新 i18n-toolkit 包",
"importExportDesc": "备份并恢复设置",
"resetToDefaults": "重置为默认值",
"resetToDefaultsDesc": "恢复出厂设置",
"reportBug": "报告错误",
"reportBugDesc": "在 GitHub 提交问题报告",
"saveChanges": "保存更改",
"saveChangesDesc": "将当前设置保存到文件",
"help": "帮助",
"helpDesc": "显示详细帮助信息",
"quit": "退出",
"quitDesc": "退出设置(如有更改则提示保存)",
"unsavedChangesWarning": "⚠️ 您有未保存的更改",
"saveChangesBeforeQuit": "是否在退出前保存更改?(y/N):",
"selectOption": "请选择一项:",
"selectSettingPrompt": "选择要编辑的设置(或输入 'b' 返回):",
"enterNewValue": "输入新值:",
"updatedSuccessfully": "{setting} 更新成功!",
"scriptDirectorySettings": "脚本目录设置",
"scriptDirectoryDesc": "为各脚本指定自定义目录",
"scriptDirectorySettingsDesc": "可为每个脚本设置自定义目录;如不设置,将使用全局设置。",
"securitySettings": "安全设置",
"securitySettingsDesc": "管理员 PIN 及其他安全选项"
},
"updatePackage": {
"title": "更新软件包",
"description": "通过 npm 更新 i18n-toolkit