i18ntk 1.0.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +401 -0
  2. package/LICENSE +21 -0
  3. package/README.md +507 -0
  4. package/dev/README.md +37 -0
  5. package/dev/debug/README.md +30 -0
  6. package/dev/debug/complete-console-translations.js +295 -0
  7. package/dev/debug/console-key-checker.js +408 -0
  8. package/dev/debug/console-translations.js +335 -0
  9. package/dev/debug/debugger.js +408 -0
  10. package/dev/debug/export-missing-keys.js +432 -0
  11. package/dev/debug/final-normalize.js +236 -0
  12. package/dev/debug/find-extra-keys.js +68 -0
  13. package/dev/debug/normalize-locales.js +153 -0
  14. package/dev/debug/refactor-locales.js +240 -0
  15. package/dev/debug/reorder-locales.js +85 -0
  16. package/dev/debug/replace-hardcoded-console.js +378 -0
  17. package/docs/INSTALLATION.md +449 -0
  18. package/docs/README.md +222 -0
  19. package/docs/TODO_ROADMAP.md +279 -0
  20. package/docs/api/API_REFERENCE.md +377 -0
  21. package/docs/api/COMPONENTS.md +492 -0
  22. package/docs/api/CONFIGURATION.md +651 -0
  23. package/docs/api/NPM_PUBLISHING_GUIDE.md +434 -0
  24. package/docs/debug/DEBUG_README.md +30 -0
  25. package/docs/debug/DEBUG_TOOLS.md +494 -0
  26. package/docs/development/AGENTS.md +351 -0
  27. package/docs/development/DEVELOPMENT_RULES.md +165 -0
  28. package/docs/development/DEV_README.md +37 -0
  29. package/docs/release-notes/RELEASE_NOTES_v1.0.0.md +173 -0
  30. package/docs/release-notes/RELEASE_NOTES_v1.6.0.md +141 -0
  31. package/docs/release-notes/RELEASE_NOTES_v1.6.1.md +185 -0
  32. package/docs/release-notes/RELEASE_NOTES_v1.6.3.md +199 -0
  33. package/docs/reports/ANALYSIS_README.md +17 -0
  34. package/docs/reports/CONSOLE_MISMATCH_BUG_REPORT_v1.5.0.md +181 -0
  35. package/docs/reports/SIZING_README.md +18 -0
  36. package/docs/reports/SUMMARY_README.md +18 -0
  37. package/docs/reports/TRANSLATION_BUG_REPORT_v1.5.0.md +129 -0
  38. package/docs/reports/USAGE_README.md +18 -0
  39. package/docs/reports/VALIDATION_README.md +18 -0
  40. package/locales/de/auth.json +3 -0
  41. package/locales/de/common.json +16 -0
  42. package/locales/de/pagination.json +6 -0
  43. package/locales/en/auth.json +3 -0
  44. package/locales/en/common.json +16 -0
  45. package/locales/en/pagination.json +6 -0
  46. package/locales/es/auth.json +3 -0
  47. package/locales/es/common.json +16 -0
  48. package/locales/es/pagination.json +6 -0
  49. package/locales/fr/auth.json +3 -0
  50. package/locales/fr/common.json +16 -0
  51. package/locales/fr/pagination.json +6 -0
  52. package/locales/ru/auth.json +3 -0
  53. package/locales/ru/common.json +16 -0
  54. package/locales/ru/pagination.json +6 -0
  55. package/main/i18ntk-analyze.js +625 -0
  56. package/main/i18ntk-autorun.js +461 -0
  57. package/main/i18ntk-complete.js +494 -0
  58. package/main/i18ntk-init.js +686 -0
  59. package/main/i18ntk-manage.js +848 -0
  60. package/main/i18ntk-sizing.js +557 -0
  61. package/main/i18ntk-summary.js +671 -0
  62. package/main/i18ntk-usage.js +1282 -0
  63. package/main/i18ntk-validate.js +762 -0
  64. package/main/ui-i18n.js +332 -0
  65. package/package.json +152 -0
  66. package/scripts/fix-missing-translation-keys.js +214 -0
  67. package/scripts/verify-package.js +168 -0
  68. package/ui-locales/de.json +637 -0
  69. package/ui-locales/en.json +688 -0
  70. package/ui-locales/es.json +637 -0
  71. package/ui-locales/fr.json +637 -0
  72. package/ui-locales/ja.json +637 -0
  73. package/ui-locales/ru.json +637 -0
  74. package/ui-locales/zh.json +637 -0
  75. package/utils/admin-auth.js +317 -0
  76. package/utils/admin-cli.js +353 -0
  77. package/utils/admin-pin.js +409 -0
  78. package/utils/detect-language-mismatches.js +454 -0
  79. package/utils/i18n-helper.js +128 -0
  80. package/utils/maintain-language-purity.js +433 -0
  81. package/utils/native-translations.js +478 -0
  82. package/utils/security.js +384 -0
  83. package/utils/test-complete-system.js +356 -0
  84. package/utils/test-console-i18n.js +402 -0
  85. package/utils/translate-mismatches.js +571 -0
  86. package/utils/validate-language-purity.js +531 -0
@@ -0,0 +1,637 @@
1
+ {
2
+ "language": {
3
+ "title": "🌍 言語選択",
4
+ "separator": "============================================================",
5
+ "current": "現在の言語: {language}",
6
+ "available": "利用可能な言語:",
7
+ "prompt": "言語を選択してください(キャンセルは0): ",
8
+ "cancelled": "言語選択をキャンセルしました。",
9
+ "changed": "言語が変更されました: {language}",
10
+ "invalid": "無効な選択です。もう一度お試しください。",
11
+ "changeTitle": "🌍 UI言語の変更",
12
+ "invalidSelection": "❌ 無効な選択です。もう一度お試しください。"
13
+ },
14
+ "menu": {
15
+ "title": "🌐 I18N管理メニュー",
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": "🌍 UI言語を変更",
28
+ "settings": "⚙️ 設定",
29
+ "debug": "🔧 デバッグツール",
30
+ "help": "❓ ヘルプ",
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
+ "analyze": {
124
+ "title": "📊 翻訳を分析"
125
+ },
126
+ "validate": {
127
+ "title": "✅ 翻訳を検証"
128
+ },
129
+ "complete": {
130
+ "deletingOldReport": "🗑️ 新しい分析のために古い使用状況レポートを削除中",
131
+ "generatingFreshAnalysis": "🔄 新しい使用状況分析を生成中...",
132
+ "couldNotGenerate": "⚠️ 使用状況分析を生成できませんでした。共通の欠落キーを使用しています。",
133
+ "reportNotFound": "⚠️ 使用状況レポートが見つかりません。新しい分析を生成中...",
134
+ "foundMissingKeys": "🔍 使用状況分析で {count} 個の欠落キーを発見しました",
135
+ "couldNotParse": "⚠️ 使用状況レポートの解析に失敗しました。共通の欠落キーを使用しています。",
136
+ "title": "🎯 翻訳の完了",
137
+ "separator": "============================================================",
138
+ "sourceDir": "📁 ソースディレクトリ: {sourceDir}",
139
+ "sourceLanguage": "🔤 ソース言語: {sourceLanguage}",
140
+ "dryRunMode": "🧪 ドライランモード - ファイルは変更されません",
141
+ "languages": "🎯 対象言語: {languages}",
142
+ "addingMissingKeys": "➕ 翻訳ファイルに欠落キーを追加中...",
143
+ "processing": "🔄 {language} を処理中...",
144
+ "addedKeys": "✅ {count} 個のキーを追加しました",
145
+ "changeDetails": "📝 {file}: {key}",
146
+ "noChangesNeeded": "✅ {language} に変更は必要ありません",
147
+ "summaryTitle": "📊 完了サマリー",
148
+ "totalChanges": "📝 総変更数: {totalChanges}",
149
+ "languagesProcessed": "🌐 処理済み言語数: {languagesProcessed}",
150
+ "missingKeysAdded": "➕ 追加された欠落キー数: {missingKeysAdded}",
151
+ "nextStepsTitle": "📋 次のステップ",
152
+ "nextStep1": "1. 使用状況分析を実行してください:",
153
+ "nextStep2": "2. 翻訳を検証してください:",
154
+ "nextStep3": "3. 完全性を分析してください:",
155
+ "allKeysAvailable": "🎉 すべての翻訳キーが利用可能になりました!",
156
+ "runWithoutDryRun": "💡 --dry-run なしで実行して変更を適用してください"
157
+ }
158
+ },
159
+ "admin": {
160
+ "authRequired": "🔐 管理者認証が必要です",
161
+ "invalidPin": "❌ 無効なPINです。アクセスが拒否されました。",
162
+ "authSuccess": "✅ 認証に成功しました"
163
+ },
164
+ "status": {
165
+ "generating": "\n📊 ステータスサマリーを生成しています...",
166
+ "completed": "✅ ステータスサマリーの生成が成功しました!",
167
+ "exitingCompleted": "\n📝 ステータスサマリーが完了しました。終了します...",
168
+ "i18nSetup": "🌐 i18n設定"
169
+ },
170
+ "common": {
171
+ "errorExiting": "\n📝 エラーが発生しました。終了します...",
172
+ "welcome": "👋 I18n管理ツールキットへようこそ!",
173
+ "success": "✅ 操作が正常に完了しました!",
174
+ "error": "❌ エラーが発生しました!"
175
+ },
176
+ "delete": {
177
+ "options": {
178
+ "title": "🗑️ 削除オプション",
179
+ "all": "1. すべてのレポートを削除",
180
+ "keepLast3": "2. 最新の3つのレポートを保持",
181
+ "cancel": "0. キャンセル"
182
+ },
183
+ "noFiles": "📂 削除するファイルがありません。"
184
+ },
185
+ "checkUsage": {
186
+ "help_message": "\nI18n 使用状況アナライザー\n\n使用方法: node i18ntk-usage.js [options]\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",
187
+ "source_directory_thissourcedir": "📁 ソースディレクトリ: {sourceDir}",
188
+ "i18n_directory_thisi18ndir": "🌐 I18nディレクトリ: {i18nDir}",
189
+ "failed_to_parse_filename_error": "⚠️ {fileName} の解析に失敗: {errorMessage}",
190
+ "analyzing_source_files": "🔍 ソースファイルを分析中...",
191
+ "found_files_in_source": "📂 ソースディレクトリで {numFiles} ファイルを発見",
192
+ "found_thisusedkeyssize_unique_": "🎯 {usedKeysSize} 個のユニークな使用中キーを発見",
193
+ "total_key_usages_totalkeysfoun": "📊 合計キー使用回数: {totalKeysFound}",
194
+ "loading_available_translation_": "📋 利用可能な翻訳キーを読み込み中...",
195
+ "found_thisavailablekeyssize_av": "✅ {availableKeysSize} 個の利用可能なキーを発見",
196
+ "title": "🔍 I18N 使用状況分析",
197
+ "message": "使用状況分析を開始しています...",
198
+ "n": "\n",
199
+ "usage_analysis_results": "📊 使用状況分析結果",
200
+ "source_files_scanned_thisfileu": "📄 スキャンされたソースファイル数: {fileUsageSize}",
201
+ "available_translation_keys_thi": "🔤 利用可能な翻訳キー数: {availableKeysSize}",
202
+ "used_translation_keys_thisused": "🎯 使用された翻訳キー数: {usedKeysSize}",
203
+ "dynamic_keys_detected_dynamick": "🔄 動的キー検出数: {dynamicKeysLength}",
204
+ "unused_keys_unusedkeyslength": "❌ 未使用キー数: {unusedKeysLength}",
205
+ "missing_keys_missingkeyslength": "⚠️ 欠落キー数: {missingKeysLength}",
206
+ "translation_completeness_title": "🌍 翻訳の完全性:",
207
+ "language_completeness_stats": " {language}: {completeness}% 完了 ({translated}/{total})",
208
+ "n_sample_unused_keys": "\n📋 未使用キーのサンプル:",
209
+ "key": "❌ {key}",
210
+ "and_unusedkeyslength_5_more": "... 他 {count} 件",
211
+ "n_sample_missing_keys": "\n📋 欠落キーのサンプル:",
212
+ "and_missingkeyslength_5_more": "... 他 {count} 件欠落",
213
+ "n_generating_detailed_report": "\n📄 詳細レポートを生成中...",
214
+ "report_saved_reportpath": "📄 レポートを保存しました: {reportPath}",
215
+ "n_recommendations": "\n💡 推奨事項:",
216
+ "consider_removing_unused_trans": "🗑️ 未使用の翻訳キーの削除を検討してください",
217
+ "add_missing_translation_keys_t": "⚠️ 実行時エラーを防ぐために欠落した翻訳キーを追加してください",
218
+ "review_dynamic_keys_manually_t": "🔄 すべてのバリエーションが存在するか動的キーを手動で確認してください",
219
+ "all_translation_keys_are_prope": "🎉 すべての翻訳キーは正しく使用されています!",
220
+ "n_next_steps": "\n📋 次のステップ:",
221
+ "1_review_the_analysis_results": "1. 上記の分析結果を確認してください",
222
+ "2_check_the_detailed_report_fo": "2. 詳細レポートで特定のファイルとキーを確認してください",
223
+ "2_run_with_outputreport_for_de": "2. --output-report オプションで詳細レポートを実行してください",
224
+ "3_remove_unused_keys_or_add_mi": "3. 未使用のキーを削除するか欠落しているものを追加してください",
225
+ "4_rerun_analysis_to_verify_imp": "4. 改善を確認するために再分析してください",
226
+ "usage_analysis_failed": "❌ 使用状況分析に失敗しました:"
227
+ },
228
+ "validateTranslations": {
229
+ "help_message": "\nI18n翻訳バリデーター\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",
230
+ "invalidEmailFormat": "❌ 無効なメール形式: {email}",
231
+ "title": "🔍 I18N 翻訳検証",
232
+ "message": "=",
233
+ "deletedOldReport": "🗑️ 古い検証レポートを削除しました",
234
+ "sourceDirectory": "📁 ソースディレクトリ: {{dir}}",
235
+ "source_language_thisconfigsour": "🔤 ソース言語: {{sourceLanguage}}",
236
+ "strictMode": "⚙️ 厳格モード: {{mode}}",
237
+ "noTargetLanguages": "❌ 対象言語が見つかりません。",
238
+ "validatingLanguages": "🎯 検証中の言語: {{langs}}",
239
+ "validatingLanguage": "\n🔄 {{lang}} を検証中...",
240
+ "filesCount": " 📄 ファイル数: {count}",
241
+ "keysCount": " 🔤 キー数: {count}",
242
+ "missingFilesCount": " ❌ 欠落ファイル数: {count}",
243
+ "syntaxErrorsCount": " 🐛 構文エラー数: {count}",
244
+ "translationPercentage": " 📊 翻訳率: {{percentage}}% ({{translated}}/{{total}})",
245
+ "n_validation_summary": "\n📊 検証サマリー",
246
+ "total_errors": "❌ エラー合計: {count}",
247
+ "total_warnings": "⚠️ 警告合計: {count}",
248
+ "n_errors": "\n❌ エラー:",
249
+ "n_warnings": "\n⚠️ 警告:",
250
+ "n_recommendations": "\n📋 推奨事項",
251
+ "fix_errors_first": "🔧 まずエラーを修正してください:",
252
+ "1_resolve_missing_files_and_sy": "1. 欠落ファイルと構文エラーを解決する",
253
+ "2_fix_structural_inconsistenci": "2. 構造の不整合を修正する",
254
+ "3_complete_missing_translation": "3. 欠落した翻訳を補完する",
255
+ "4_rerun_validation": "4. 検証を再実行する",
256
+ "address_warnings": "⚠️ 警告に対処してください:",
257
+ "review_warnings": "1. 上記の警告を確認する",
258
+ "2_consider_running_with_strict": "2. より厳密な検証のために --strict を検討する",
259
+ "all_validations_passed": "🎉 すべての検証に合格しました!",
260
+ "consider_running_usage_analysi": "💡 未使用キー検出のため使用状況分析を実行してください",
261
+ "validation_failed": "❌ 検証に失敗しました:"
262
+ },
263
+ "analyzeTranslations": {
264
+ "keysToTranslate": "翻訳が必要なキー",
265
+ "help_message": "\nI18n翻訳アナライザー\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",
266
+ "starting": "🔍 翻訳分析を開始しています...",
267
+ "noLanguages": "⚠️ 対象言語が見つかりません。",
268
+ "foundLanguages": "📋 分析対象の言語を発見: {count} 言語: {{languages}}",
269
+ "referenceLanguageFiles": "📁 参照言語ファイル: {files}",
270
+ "analyzingLanguage": "🔍 言語を分析中: {language}",
271
+ "reportTitle": "📊 {language} の翻訳分析レポート",
272
+ "generated": "📅 生成日時: {timestamp}",
273
+ "status": "ステータス: {translated}/{total} 翻訳済み ({percentage}%)",
274
+ "filesAnalyzed": "分析されたファイル: {analyzed}/{total}",
275
+ "keysNeedingTranslation": "翻訳が必要なキー: {count}",
276
+ "fileBreakdown": "ファイル内訳:",
277
+ "statusFileMissing": "ステータス: ファイルが見つかりません",
278
+ "sourceKeys": "ソースキー: {count}",
279
+ "translation": "翻訳: {translated}/{total} ({percentage}%)",
280
+ "structure": "構造: {status}",
281
+ "consistent": "一貫性あり",
282
+ "inconsistent": "一貫性なし",
283
+ "missingKeys": "不足キー: {count}",
284
+ "extraKeys": "追加キー: {count}",
285
+ "issues": "問題: {count}",
286
+ "issueType": {
287
+ "not_translated": "未翻訳: {count}",
288
+ "empty_value": "空の値: {count}",
289
+ "partial_translation": "部分翻訳: {count}",
290
+ "same_as_source": "ソースと同じ: {count}"
291
+ },
292
+ "key": "キー",
293
+ "english": "英語",
294
+ "needsTranslation": "翻訳が必要",
295
+ "andMoreKeys": "... および他 {count} キー",
296
+ "problematic_no": "サイズの問題は検出されませんでした",
297
+ "problematic_yes": "潜在的なサイズの問題が検出されました",
298
+ "analyzing": "\n🔄 {{language}} を分析中...",
299
+ "completed": "✅ {{language}} の分析が完了しました",
300
+ "progress": " 進捗: {{percentage}}% ({{translatedKeys}}/{{totalKeys}} キー)",
301
+ "reportSaved": " レポートを保存しました: {{reportPath}}",
302
+ "finished": "\n✅ 分析が正常に完了しました!",
303
+ "error": "❌ 分析に失敗しました",
304
+ "summary": "\n📊 分析サマリー"
305
+ },
306
+ "completeTranslations": {
307
+ "warning_could_not_parse_filepa": "⚠️ ファイルを解析できませんでした: {filePath}"
308
+ },
309
+ "sizing": {
310
+ "analyzing_file_sizes": "ファイルサイズを分析中...",
311
+ "analyzing_translation_content": "翻訳コンテンツを分析中...",
312
+ "failed_to_parse_language_error": "{{language}} の解析に失敗しました: {{errorMessage}}",
313
+ "generating_size_comparisons": "サイズ比較を生成中...",
314
+ "no_languages_found_for_comparison": "比較対象の言語が見つかりません",
315
+ "sizing_analysis_results": "\n📊 サイズ分析結果",
316
+ "file_sizes_title": "📁 ファイルサイズ",
317
+ "file_sizes_header": "言語\t\tサイズ (KB)\t\t行数\t\t文字数",
318
+ "file_size_row": "{{lang}}\t\t{{sizeKB}} KB\t\t{{lines}} 行\t\t{{characters}} 文字",
319
+ "language_statistics_title": "📈 言語統計",
320
+ "language_stats_header": "言語\t\tキー数\t\t総文字数\t\t平均長\t\t最大長\t\t空キー数",
321
+ "language_stats_row": "{{lang}}\t\t{{totalKeys}} キー\t\t{{totalCharacters}} 文字\t\t平均 {{averageKeyLength}}\t\t最大 {{maxKeyLength}}\t\t空 {{emptyKeys}}",
322
+ "size_variations_title": "⚖️ サイズの変動",
323
+ "size_variations_header": "言語\t\t文字差\t\t割合\t\t問題点",
324
+ "size_variation_row": "{{lang}}\t\t{{characterDifference}}\t\t{{percentageDifference}}%\t\t{{problematic}}",
325
+ "recommendations_title": "💡 推奨事項",
326
+ "recommendation_item": "{{index}}. {{recommendation}}",
327
+ "generating_detailed_report": "\n📄 詳細なサイズレポートを生成中...",
328
+ "report_saved_to": "レポートを保存しました: {{reportPath}}",
329
+ "csv_report_saved_to": "CSVレポートを保存しました: {{csvPath}}",
330
+ "starting_i18n_sizing_analysis": "🔍 I18nサイズ分析を開始しています...",
331
+ "source_directory": "ソースディレクトリ: {{sourceDir}}",
332
+ "no_translation_files_found": "❌ 翻訳ファイルが見つかりません",
333
+ "found_languages": "発見された言語: {{languages}}",
334
+ "analysis_completed": "✅ 分析が {{duration}}ms で完了しました",
335
+ "analysis_failed": "❌ サイズ分析に失敗しました: {{errorMessage}}",
336
+ "problematic_no": "サイズの問題は検出されませんでした",
337
+ "problematic_yes": "潜在的なサイズの問題が検出されました"
338
+ },
339
+ "summary": {
340
+ "i18nSummaryReportGenerator": "🔧 I18N サマリーレポートジェネレーター",
341
+ "keysInFiles": "{keys} キーが {files} ファイルに含まれています",
342
+ "checkingInconsistentKeys": "言語間の不整合キーをチェック中...",
343
+ "reportTitle": "I18N サマリーレポート",
344
+ "generated": "生成日時: {timestamp}",
345
+ "sourceDirectory": "ソースディレクトリ: {dir}",
346
+ "analyzingFolder": "フォルダを分析中: {folder}",
347
+ "foundLanguages": "📋 見つかった言語: {languages}",
348
+ "referenceLanguageFiles": "参照言語ファイル: {files}",
349
+ "analyzingLanguage": "言語を分析中: {language}",
350
+ "overview": "概要",
351
+ "languagesCount": "🌍 言語数: {count}",
352
+ "totalFiles": "📁 総ファイル数: {count}",
353
+ "totalKeys": "🔤 総キー数: {count}",
354
+ "avgKeysPerLanguage": "📊 言語あたりの平均キー数: {count}",
355
+ "languagesBreakdown": "言語の詳細",
356
+ "languageBreakdown": "📍 {language}: {files} ファイル、{keys} キー",
357
+ "fileStructure": "ファイル構造",
358
+ "fileKeys": "📄 {file}: {keys} キー",
359
+ "missingInLanguages": " ⚠️ 不足している言語: {languages}",
360
+ "noIssuesFound": "問題は見つかりませんでした – あなたのi18n設定は素晴らしい状態です!",
361
+ "noIssuesConsole": "✅ 問題は見つかりませんでした – あなたのi18n設定は素晴らしい状態です!(コンソール)",
362
+ "allFilesConsistent": "すべての翻訳ファイルは全言語で一貫しています。",
363
+ "recommendations": "推奨事項",
364
+ "nextSteps": "次のステップ",
365
+ "nextStep1": "不整合や欠落しているキーがないか要約レポートを確認してください。",
366
+ "nextStep2": "レポートで指摘された問題を修正してください。",
367
+ "nextStep3": "翻訳の言語純度と完全性を検証してください。",
368
+ "nextStep4": "変更後に要約レポートを再度実行してください。",
369
+ "inconsistentKeys": "不整合のあるキーが見つかりました:",
370
+ "missingKeys": " 欠落キー: {keys}{more}",
371
+ "extraKeys": " 余分なキー: {keys}{more}",
372
+ "createMissingFiles": "すべての言語の不足しているファイルを作成してください。",
373
+ "addContentToEmptyFiles": "空の翻訳ファイルに内容を追加してください。",
374
+ "fixMalformedFiles": "不正な形式の翻訳ファイルを修正してください。",
375
+ "removeDuplicateKeys": "翻訳ファイルの重複したキーを削除してください。",
376
+ "synchronizeKeys": "すべての言語間でキーを同期してください。",
377
+ "splitLargeFiles": "大きな翻訳ファイルを分割してメンテナンスを容易にしてください。",
378
+ "addMoreLanguages": "プロジェクトにさらに言語を追加してください。",
379
+ "reportSaved": "📄 要約レポートを保存しました: {reportPath}",
380
+ "reportSaveFailed": "❌ 要約レポートの保存に失敗しました: {reportPath}",
381
+ "couldNotReadFile": "⚠️ ファイルを読み込めませんでした: {filePath}",
382
+ "couldNotParseJSFile": "⚠️ JS/TSファイルを解析できませんでした: {filePath}",
383
+ "errorReadingFile": "⚠️ ファイル読み込みエラー {filePath}: {error}",
384
+ "noLanguageDirectoriesFound": "❌ 言語ディレクトリが見つかりません!",
385
+ "issuesFound": "🚨 問題が発見されました",
386
+ "missingFiles": "❌ 不足ファイル:",
387
+ "emptyFiles": "📭 空のファイル:",
388
+ "malformedFiles": "💥 不正なファイル:",
389
+ "duplicateKeys": "🔄 重複キー:",
390
+ "couldNotFindI18nDirectory": "❌ 国際化ディレクトリが見つかりません。--source-dirで指定してください",
391
+ "sourceDirectoryDoesNotExist": "❌ ソースディレクトリが存在しません: {sourceDir}",
392
+ "generatingSummaryReport": "📄 サマリーレポートを生成中...",
393
+ "cleaningUpReportFiles": "🗑️ レポートファイルをクリーンアップ中...",
394
+ "couldNotDelete": "⚠️ 削除できませんでした {file}: {error}",
395
+ "noOldReportFilesToDelete": "📄 削除する古いレポートファイルはありません。",
396
+ "errorCleaningUpReports": "⚠️ レポートクリーンアップエラー: {error}",
397
+ "reportFilesPreserved": "📁 要求に応じてレポートファイルを保持しました。",
398
+ "analysisComplete": "📊 分析完了",
399
+ "analyzedLanguages": "✅ {count} 言語を分析しました",
400
+ "processedFiles": "✅ {count} ファイルを処理しました",
401
+ "foundTranslationKeys": "✅ {count} 翻訳キーを発見しました",
402
+ "errorDuringAnalysis": "❌ 分析中にエラーが発生しました: {error}",
403
+ "deletedOldReportFiles": "✅ {count} 個の古いレポートファイルを削除しました。",
404
+ "helpTitle": "🔧 国際化サマリーレポートジェネレーター",
405
+ "helpDescription": "国際化フォルダ構造を分析し、包括的なレポートを生成します",
406
+ "helpUsage": "使用法: i18ntk summary [オプション]",
407
+ "helpOptions": "オプション:",
408
+ "helpSourceDir": " -s, --source-dir <path> 国際化ロケールディレクトリへのパス",
409
+ "helpOutput": " -o, --output <file> レポートの出力ファイル",
410
+ "helpVerbose": " -v, --verbose 詳細出力を表示",
411
+ "helpKeepReports": " --keep-reports 既存のレポートファイルをすべて保持",
412
+ "helpDeleteReports": " --delete-reports 生成後に古いレポートファイルを削除",
413
+ "helpHelp": " -h, --help このヘルプメッセージを表示",
414
+ "helpExamples": "例:",
415
+ "helpExample1": " i18ntk summary",
416
+ "helpExample2": " i18ntk summary --source-dir ./src/i18n/locales",
417
+ "helpExample3": " i18ntk summary --output summary.txt --verbose",
418
+ "helpExample4": " i18ntk summary --output summary.txt --delete-reports",
419
+ "helpExample5": " i18ntk summary --keep-reports",
420
+ "usageReportTitle": "I18N 使用状況分析レポート - バージョン 1.4.3",
421
+ "usageReportGenerated": "生成日時: {timestamp}",
422
+ "usageReportSourceDir": "ソースディレクトリ: {sourceDir}",
423
+ "usageReportI18nDir": "I18nディレクトリ: {i18nDir}",
424
+ "usageReportSummary": "サマリー",
425
+ "usageReportSourceFilesScanned": "📄 スキャンされたソースファイル数: {count}",
426
+ "usageReportTranslationFilesFound": "📄 発見された翻訳ファイル数: {count}",
427
+ "usageReportAvailableKeys": "🔤 利用可能な翻訳キー数: {count}",
428
+ "usageReportUsedKeys": "🎯 使用された翻訳キー数: {count}",
429
+ "usageReportDynamicKeys": "🔄 検出された動的キー数: {count}",
430
+ "usageReportUnusedKeys": "❌ 未使用キー数: {count}",
431
+ "usageReportMissingKeys": "⚠️ 欠落キー数: {count}",
432
+ "usageReportNotTranslatedKeys": "🔄 未翻訳キー数: {count}",
433
+ "usageReportTranslationCompleteness": "翻訳の完全性",
434
+ "usageReportLanguageCompleteness": "🌍 {language}: {completeness}% 完了 ({translated}/{total})",
435
+ "usageReportNotTranslatedInLanguage": " 🔄 未翻訳: {count} キー",
436
+ "usageReportTranslationFilesDiscovered": "発見された翻訳ファイル",
437
+ "usageReportFileInfo": "📄 {relativePath} ({namespace}, {type})",
438
+ "usageReportUnusedKeysSection": "未使用の翻訳キー",
439
+ "usageReportUnusedKeysDescription": "これらのキーは翻訳ファイルに存在しますが、ソースコードで使用されていません:",
440
+ "usageReportMoreUnusedKeys": "... その他 {count} 個の未使用キー",
441
+ "usageReportMissingKeysSection": "欠落している翻訳キー",
442
+ "usageReportMissingKeysDescription": "これらのキーはソースコードで使用されていますが、翻訳ファイルに存在しません:",
443
+ "usageReportUsedIn": "📄 使用場所: {filePath}",
444
+ "usageReportMoreFiles": "... その他 {count} ファイル",
445
+ "usageReportDynamicKeysSection": "動的翻訳キー",
446
+ "usageReportDynamicKeysDescription": "これらのキーは動的パターンを使用しており、手動での確認が必要です:",
447
+ "usageReportFileUsageBreakdown": "ファイル使用状況の詳細",
448
+ "usageReportFileUsage": "📄 {filePath} ({count} キー)",
449
+ "usageReportMoreFileUsage": "... その他 {count} ファイル",
450
+ "usageReportSaved": "📄 レポートを保存しました: {filepath}",
451
+ "usageReportSaveFailed": "❌ レポートの保存に失敗しました: {error}",
452
+ "analysisCompletedSuccessfully": "✅ 分析が正常に完了しました",
453
+ "analysisFailed": "❌ 分析に失敗しました: {error}",
454
+ "analysisFailedError": "❌ 分析に失敗しました",
455
+ "usageReportUnusedTranslationKeys": "未使用の翻訳キー",
456
+ "usageReportUnusedKey": "❌ {key}",
457
+ "usageReportMissingTranslationKeys": "欠落している翻訳キー",
458
+ "usageReportMissingKey": "⚠️ {key}",
459
+ "usageReportDynamicTranslationKeys": "動的翻訳キー",
460
+ "usageReportDynamicKey": "🔄 {key}",
461
+ "unusedKeysCount": " ❌ 未使用キー: {count}",
462
+ "missingKeysCount": " ⚠️ 欠落キー: {count}",
463
+ "translationCompletenessTitle": "\n🌍 翻訳の完全性:",
464
+ "languageCompletenessStats": " {language}: {completeness}% 完了 ({translated}/{total})",
465
+ "configuration": "🔧 設定:",
466
+ "sourceLanguage": " ソース言語: {sourceLanguage}",
467
+ "supportedExtensions": " サポートされる拡張子: {extensions}",
468
+ "excludedFiles": " 除外ファイル: {files}",
469
+ "foundIssues": "⚠️ 注意が必要な {count} 個の問題が見つかりました",
470
+ "fatalError": "❌ 致命的エラー: {error}",
471
+ "issuesFoundTitle": "発見された問題",
472
+ "missingFilesTitle": "❌ 欠落ファイル:",
473
+ "emptyFilesTitle": "📭 空のファイル:",
474
+ "malformedFilesTitle": "💥 不正なファイル:",
475
+ "duplicateKeysTitle": "🔄 重複キー:"
476
+ },
477
+ "hardcodedTexts": {
478
+ "securityUnknownCommandArg": "セキュリティ: 不明なコマンド引数",
479
+ "securityUnknownConfigKey": "セキュリティ: 不明な設定キー",
480
+ "translationNotFound": "キーの翻訳が見つかりません",
481
+ "noSourceFilesFound": "分析するソースファイルが見つかりません",
482
+ "usageAnalysisCompleted": "使用状況分析が正常に完了しました",
483
+ "analyzingTranslationCompleteness": "翻訳の完全性を分析中",
484
+ "analysisCompletedSuccessfully": "分析が正常に完了しました",
485
+ "foundTranslationFiles": "翻訳ファイルが見つかりました",
486
+ "processedFiles": "📊 {processedFiles}/{totalFiles}ファイルを処理中...",
487
+ "i18nDirectoryNotFound": "i18nディレクトリが見つかりません:{i18nDir}",
488
+ "noTranslationLanguagesFound": "翻訳言語が見つかりません。",
489
+ "failedToAnalyzeFile": "{filePath}の分析に失敗しました:{error}",
490
+ "failedToAnalyzeLanguage": "言語{language}の分析に失敗しました:{error}",
491
+ "translationCompletenessAnalysisFailed": "翻訳完全性分析に失敗しました:{error}",
492
+ "invalidChoiceSelectRange": "無効な選択です。1から{max}の範囲で選択してください。",
493
+ "errorGeneratingStatusSummary": "ステータスサマリーの生成中にエラーが発生しました:{error}",
494
+ "debugToolNotFound": "デバッグツールが見つかりません:{tool}",
495
+ "errorRunningDebugTool": "デバッグツールの実行中にエラーが発生しました:{error}",
496
+ "autoDetectedI18nDirectory": "i18nディレクトリを自動検出しました:{directory}",
497
+ "stepRunning": "🔄 ステップを実行中: {stepName}",
498
+ "executingCommand": "コマンドを実行中:{command}",
499
+ "unknownCommand": "不明なコマンド:{command}",
500
+ "errorExecutingCommand": "コマンドの実行中にエラーが発生しました:{error}",
501
+ "mainDebuggerSystemDiagnostics": "メインデバッガーシステム診断",
502
+ "consoleTranslationsCheck": "コンソール翻訳チェック",
503
+ "exportMissingKeys": "🔑 欠落キーのエクスポート - 欠落した翻訳キーをエクスポート",
504
+ "replaceHardcodedConsole": "🔄 ハードコードされたコンソールの置換 - ハードコードされたメッセージを変換",
505
+ "consoleKeyChecker": "✅ コンソールキーチェッカー - コンソール翻訳キーを検証",
506
+ "debugLogs": "📝 デバッグログ - 最近のデバッグログを表示",
507
+ "backToMainMenu": "← メインメニューに戻る",
508
+ "runningDebugTool": "🔧 {displayName}を実行中...",
509
+ "recentDebugLogs": "📝 最近のデバッグログ",
510
+ "noDebugLogsFound": "📭 デバッグログが見つかりません。",
511
+ "debugLogsDirectoryNotFound": "📭 デバッグログディレクトリが見つかりません。",
512
+ "errorReadingDebugLogs": "❌ デバッグログの読み取りエラー: {error}",
513
+ "debugLogSelectPrompt": "表示するログを選択してください (1-{count}) または0で戻る: ",
514
+ "debugLogError": "デバッグログの読み取りエラー:",
515
+ "missingRequiredFile": "❌ 必要なファイル/ディレクトリが見つかりません: {file}",
516
+ "runInitializationFirst": "🔧 最初に初期化を実行してください: node i18ntk-init.js",
517
+ "initializationCheckPassed": "✅ 初期化チェックが通過しました",
518
+ "runningStep": "🔄 実行中: {stepName}",
519
+ "commandStep": " コマンド: {command}",
520
+ "stepCompleted": "✅ {stepName} が完了しました",
521
+ "stepCompletedWithDuration": "✅ {stepName} が {duration}ms で完了しました",
522
+ "stepFailed": "❌ {stepName} が失敗しました: {error}",
523
+ "stepFailedWithDetails": "❌ {stepName} が失敗しました:\n エラー: {error}",
524
+ "requiredStepFailed": "🛑 必要なステップが失敗しました。実行を停止します。",
525
+ "optionalStepFailed": "⚠️ オプションのステップが失敗しました。続行します...",
526
+ "startingAutoRunWorkflow": "🚀 自動実行ワークフローを開始",
527
+ "workflowIncludes": "📋 ワークフローには {stepCount} のステップが含まれます:",
528
+ "stepListItem": " {index}. {stepName} {required}",
529
+ "startingExecution": "⏱️ 実行を開始...",
530
+ "workflowStopped": "🛑 必要なステップの失敗によりワークフローが停止しました。",
531
+ "workflowCompleted": "ワークフローが正常に完了しました!",
532
+ "runningSelectedSteps": "🎯 選択されたステップを実行中",
533
+ "invalidStepNumber": "❌ 無効なステップ番号: {stepNum}",
534
+ "executionReport": "📊 実行レポート",
535
+ "successfulSteps": "✅ 成功: {successful}",
536
+ "failedSteps": "❌ 失敗: {failed}",
537
+ "requiredFailedSteps": "🔴 必要な失敗: {requiredFailed}",
538
+ "stepDetails": "📋 ステップの詳細:",
539
+ "stepResult": " {status} {required} {step}{duration}",
540
+ "stepError": " エラー: {error}",
541
+ "reportSaved": "💾 レポートが保存されました: {reportPath}",
542
+ "overallStatus": "📊 全体のステータス: {status}",
543
+ "customSettingsConfiguration": "🔧 カスタム設定の構成",
544
+ "pressEnterForDefaults": "デフォルト値を使用するにはEnterを押すか、新しい値を入力してください:",
545
+ "settingsUpdatedSuccessfully": "✅ 設定が正常に更新されました!",
546
+ "errorConfiguringSettings": "❌ 設定の構成エラー: {error}",
547
+ "autoRunScriptTitle": "🤖 I18N 自動実行スクリプト",
548
+ "usageInstructions": "使用方法:",
549
+ "runAllSteps": " node auto-run.js # すべてのステップを実行",
550
+ "configureFirst": " node auto-run.js --config # 最初に設定を構成",
551
+ "runSpecificSteps": " node auto-run.js --steps 1,2,3 # 特定のステップを実行",
552
+ "showHelp": " node auto-run.js --help # このヘルプを表示",
553
+ "availableSteps": "利用可能なステップ:",
554
+ "stepListHelp": " {index}. {stepName} {required}",
555
+ "examplesTitle": "例:",
556
+ "configurationComplete": "🚀 構成が完了しました!次のコマンドで自動実行を開始できます:",
557
+ "runAutoRunner": " node auto-run.js",
558
+ "configurationFailed": "❌ 構成が失敗しました: {error}",
559
+ "noValidStepNumbers": "❌ 有効なステップ番号が提供されていません",
560
+ "autoRunFailed": "❌ 自動実行が失敗しました: {error}",
561
+ "selectOptionPrompt": "オプションを選択してください (0-13): ",
562
+ "selectDebugToolPrompt": "デバッグツールを選択してください (0-6): ",
563
+ "pressEnterToContinue": "📝 続行するにはEnterを押してください...",
564
+ "selectLogPrompt": "表示するログを選択してください (1-{count}) または0で戻る: "
565
+ },
566
+ "help": {
567
+ "usage": "使用方法:",
568
+ "interactiveMode": " node i18ntk-manage.js # インタラクティブモード",
569
+ "initProject": " node i18ntk-manage.js init # プロジェクトを初期化",
570
+ "analyzeTranslations": " node i18ntk-manage.js analyze # 翻訳を分析",
571
+ "validateTranslations": " node i18ntk-manage.js validate # 翻訳を検証",
572
+ "checkUsage": " node i18ntk-manage.js usage # 使用状況をチェック",
573
+ "showHelp": " node i18ntk-manage.js help # ヘルプを表示",
574
+ "availableCommands": "\n利用可能なコマンド:",
575
+ "initCommand": " init - i18n構造を初期化",
576
+ "analyzeCommand": " analyze - 翻訳の完全性を分析",
577
+ "validateCommand": " validate - 翻訳ファイルを検証",
578
+ "usageCommand": " usage - 翻訳キーの使用状況をチェック",
579
+ "sizingCommand": " sizing - 翻訳のサイズを分析",
580
+ "completeCommand": " complete - 不足している翻訳を補完",
581
+ "summaryCommand": " summary - サマリーレポートを生成",
582
+ "debugCommand": " debug - デバッグ分析を実行"
583
+ },
584
+ "complete": {
585
+ "nextStep1": "1. 使用状況分析を確認:",
586
+ "nextStep2": "2. 翻訳を検証:",
587
+ "nextStep3": "3. 完全性を分析:",
588
+ "andMore": "... その他{count}件"
589
+ },
590
+ "usage": {
591
+ "analysisCompletedSuccessfully": "✅ 使用状況分析が正常に完了しました",
592
+ "analysisFailedError": "❌ 使用状況分析が失敗しました:",
593
+ "detectedSourceDirectory": "🔍 検出されたソースディレクトリ:",
594
+ "detectedI18nDirectory": "🔍 検出されたi18nディレクトリ:",
595
+ "foundTranslationFiles": "🔍 {count}個の翻訳ファイルが見つかりました",
596
+ "invalidPattern": "無効なパターン:",
597
+ "patternMatchLimitReached": "ファイルのパターンマッチ制限に達しました:",
598
+ "patternExecutionFailed": "パターン実行が失敗しました",
599
+ "failedToExtractKeys": "キーの抽出に失敗しました",
600
+ "failedToProcessFile": "ファイルの処理に失敗しました",
601
+ "errorReadingI18nDirectory": "i18nディレクトリの読み取りエラー:",
602
+ "notTranslatedKeysTotal": "🔄 未翻訳キー:{total}",
603
+ "reviewNotTranslatedKeys": "🔄 全言語で{total}個の未翻訳キーを確認してください",
604
+ "analysisCompletedSuccessfullySimple": "\n✅ 分析が正常に完了しました",
605
+ "analysisFailedResult": "\n❌ 分析が失敗しました:",
606
+ "analysisFailedGeneral": "\n❌ 分析が失敗しました:",
607
+ "title": "I18N 使用状況分析レポート",
608
+ "generatedAt": "生成日時: {timestamp}",
609
+ "sourceDirectory": "ソースディレクトリ: {sourceDir}",
610
+ "i18nDirectory": "I18nディレクトリ: {i18nDir}",
611
+ "sourceFilesScanned": "スキャンされたソースファイル数: {count}",
612
+ "translationFilesFound": "発見された翻訳ファイル数: {count}",
613
+ "availableKeys": "利用可能な翻訳キー数: {count}",
614
+ "usedKeys": "使用された翻訳キー数: {count}",
615
+ "dynamicKeys": "検出された動的キー数: {count}",
616
+ "unusedKeys": "未使用の翻訳キー数: {count}",
617
+ "missingKeys": "欠落している翻訳キー数: {count}",
618
+ "notTranslatedKeys": "未翻訳キー数: {count}",
619
+ "translationCompleteness": "翻訳の完全性",
620
+ "translationFilesDiscovered": "発見された翻訳ファイル",
621
+ "unusedKeysSection": "未使用の翻訳キー",
622
+ "unusedKeysDescription": "これらのキーは翻訳ファイルに存在しますが、ソースコードで使用されていません:",
623
+ "missingKeysSection": "欠落している翻訳キー",
624
+ "missingKeysDescription": "これらのキーはソースコードで使用されていますが、翻訳ファイルに存在しません:",
625
+ "dynamicKeysSection": "動的翻訳キー",
626
+ "dynamicKeysDescription": "これらのキーは動的に生成され、手動での確認が必要な場合があります:",
627
+ "fileUsageBreakdown": "ファイル使用状況の詳細",
628
+ "fileUsageDescription": "ソースファイル別の翻訳キー使用状況:",
629
+ "reportSavedTo": "📄 レポートを保存しました: {reportPath}",
630
+ "failedToSaveReport": "❌ レポートの保存に失敗しました: {error}",
631
+ "analysisFailed": "❌ 使用状況分析に失敗しました",
632
+ "unusedKeysCount": "❌ 未使用キー: {count}",
633
+ "missingKeysCount": "⚠️ 欠落キー: {count}",
634
+ "translationCompletenessTitle": "🌍 翻訳の完全性:",
635
+ "languageCompletenessStats": " {language}: {completeness}% 完了 ({translated}/{total})"
636
+ }
637
+ }