i18ntk 4.1.0 → 4.2.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 (47) hide show
  1. package/CHANGELOG.md +51 -5
  2. package/README.md +79 -17
  3. package/SECURITY.md +10 -4
  4. package/main/i18ntk-analyze.js +10 -20
  5. package/main/i18ntk-backup.js +106 -44
  6. package/main/i18ntk-init.js +153 -157
  7. package/main/i18ntk-setup.js +36 -13
  8. package/main/i18ntk-translate.js +169 -21
  9. package/main/i18ntk-usage.js +272 -103
  10. package/main/i18ntk-validate.js +38 -31
  11. package/main/manage/commands/AnalyzeCommand.js +7 -17
  12. package/main/manage/commands/CommandRouter.js +6 -6
  13. package/main/manage/commands/TranslateCommand.js +65 -56
  14. package/main/manage/commands/ValidateCommand.js +34 -26
  15. package/main/manage/index.js +11 -42
  16. package/main/manage/managers/InteractiveMenu.js +11 -40
  17. package/main/manage/services/InitService.js +114 -118
  18. package/main/manage/services/UsageService.js +244 -85
  19. package/package.json +21 -14
  20. package/runtime/enhanced.d.ts +5 -5
  21. package/runtime/enhanced.js +49 -25
  22. package/runtime/i18ntk.d.ts +30 -7
  23. package/runtime/index.d.ts +48 -19
  24. package/runtime/index.js +175 -90
  25. package/settings/settings-cli.js +115 -38
  26. package/settings/settings-manager.js +24 -6
  27. package/ui-locales/de.json +192 -11
  28. package/ui-locales/en.json +182 -8
  29. package/ui-locales/es.json +193 -12
  30. package/ui-locales/fr.json +189 -8
  31. package/ui-locales/ja.json +190 -8
  32. package/ui-locales/ru.json +191 -9
  33. package/ui-locales/zh.json +194 -9
  34. package/utils/cli-helper.js +8 -12
  35. package/utils/config-helper.js +1 -1
  36. package/utils/config-manager.js +8 -6
  37. package/utils/localized-confirm.js +55 -0
  38. package/utils/menu-layout.js +41 -0
  39. package/utils/report-writer.js +110 -0
  40. package/utils/security.js +15 -22
  41. package/utils/translate/api.js +31 -3
  42. package/utils/translate/placeholder.js +42 -1
  43. package/utils/translate/report.js +3 -2
  44. package/utils/translate/safe-network.js +24 -4
  45. package/utils/usage-insights.js +435 -0
  46. package/utils/usage-source.js +50 -0
  47. package/utils/watch-locales.js +1 -8
@@ -536,7 +536,7 @@
536
536
  "argsParseFailed": "L'analyse des arguments a échoué : {error}",
537
537
  "translationDiscoveryError": "Erreur de découverte de traduction : {error}",
538
538
  "fileTraversalError": "Erreur de parcours de fichier : {error}",
539
- "sourceEqualsI18nWarn": "⚠️ Le répertoire source et le répertoire i18n sont identiques. Cela peut entraîner des problèmes avec l'analyse.",
539
+ "sourceEqualsI18nWarn": "{reason}. L?analyse d?usage ne scannera pas les fichiers de langue comme code source.",
540
540
  "i18nEqualsSourceWarn": "⚠️ Le répertoire I18n et le répertoire source sont identiques. Cela peut entraîner des problèmes avec l'analyse.",
541
541
  "usageAnalysisFailed": "⚠️ L'analyse de l'utilisation a échoué : {error}",
542
542
  "translationFileParseError": "⚠️ Erreur d'analyse du fichier de traduction : {error}",
@@ -642,7 +642,8 @@
642
642
  "failedToSaveReport": "Échec de l'enregistrement du rapport d'utilisation : {error}",
643
643
  "i18nDirectoryDoesNotExist": "Le répertoire I18n n'existe pas : {dir}",
644
644
  "reportSavedTo": "Rapport d'utilisation enregistré dans : {reportPath}",
645
- "sourceDirectoryDoesNotExist": "Le répertoire source n'existe pas : {dir}"
645
+ "sourceDirectoryDoesNotExist": "Le répertoire source n'existe pas : {dir}",
646
+ "noSourceDirectoryConfigured": "(non configur?)"
646
647
  },
647
648
  "validate": {
648
649
  "help_message": "Utilisation du validateur de traduction I18n : nœud i18ntk-validate.js [options] Options : --source-dir <dir> Répertoire source à analyser (par défaut : ./src) --i18n-dir <dir> Répertoire I18n (par défaut : ./src/locales) --output-report Générer un rapport détaillé --output-dir <dir> Répertoire de sortie des rapports (par défaut : ./reports) --help Afficher cette aide Exemples : node i18ntk-validate.js --output-report node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales node i18ntk-validate.js --output-dir=./analysis --output-report",
@@ -922,7 +923,7 @@
922
923
  "summaryCommand": "résumé - Afficher l'état du projet",
923
924
  "debugCommand": "debug - Problèmes de traduction de débogage",
924
925
  "scannerCommand": "scanner - Rechercher des clés",
925
- "translateCommand": "traduire - Traduire automatiquement les fichiers de paramètres régionaux (bêta)",
926
+ "translateCommand": "traduire - Traduire automatiquement les fichiers de paramètres régionaux",
926
927
  "menu": {
927
928
  "pressEnterToContinue": "Appuyez sur Entrée pour continuer...",
928
929
  "title": "🌐MENU DE GESTION I18NTK",
@@ -1102,7 +1103,32 @@
1102
1103
  "translationFilesCreatedWarning": "Les fichiers de traduction ont été créés avec des espaces réservés ; examen avant utilisation en production.",
1103
1104
  "warningCannotReadSourceDir": "Attention : impossible de lire le répertoire source {dir}: {error}",
1104
1105
  "warningInvalidLanguageCodes": "Attention : codes de langue invalides ignorés : {languages}",
1105
- "warningProceedingWithoutFramework": "Poursuite sans framework i18n détecté."
1106
+ "warningProceedingWithoutFramework": "Poursuite sans framework i18n détecté.",
1107
+ "backup": {
1108
+ "title": "Param?tres de sauvegarde",
1109
+ "description": "Les sauvegardes sont d?sactiv?es par d?faut pour ?viter la r?cursion et la pollution du d?p?t.",
1110
+ "enablePrompt": "Activer les sauvegardes automatiques ? (o/N) : ",
1111
+ "keepPrompt": "Combien de sauvegardes conserver automatiquement (1-3, d?faut 1) : "
1112
+ },
1113
+ "completionSummaryTitle": "R?sum? de fin",
1114
+ "completionSummaryBasicTitle": "R?sum? de fin (basique)",
1115
+ "totalChanges": "Changements totaux : {count}",
1116
+ "languagesProcessed": "Langues trait?es : {count}",
1117
+ "missingKeysAdded": "Cl?s manquantes ajout?es : {count}",
1118
+ "reportPrompt": "Voulez-vous g?n?rer un rapport ? (O/n) : ",
1119
+ "reportGenerated": "Rapport g?n?r? : {reportPath}",
1120
+ "reportFailed": "?chec de g?n?ration du rapport : {error}",
1121
+ "completionError": "Erreur pendant la finalisation : {error}",
1122
+ "optimize": {
1123
+ "title": "Optimisation de la taille du paquet",
1124
+ "preview": "Execution de l apercu d optimisation des locales...",
1125
+ "reduceTip": "Vous pouvez reduire la taille du paquet en selectionnant uniquement les langues necessaires.",
1126
+ "prompt": "Voulez-vous lancer l optimisation interactive maintenant ? (o/N): ",
1127
+ "starting": "Demarrage de l optimisation interactive des locales...",
1128
+ "completed": "Optimisation du paquet terminee.",
1129
+ "later": "Vous pouvez lancer l optimisation des locales plus tard avec :",
1130
+ "unavailable": "Impossible de proposer l optimisation des locales : {error}"
1131
+ }
1106
1132
  },
1107
1133
  "language": {
1108
1134
  "title": "🌍 Changer de langue",
@@ -1147,7 +1173,7 @@
1147
1173
  "sizing": "📏 Analyser le dimensionnement",
1148
1174
  "fix": "🛠️ Correction des traductions d'espaces réservés",
1149
1175
  "scanner": "🔍 Rechercher les problèmes i18n",
1150
- "translate": "🌐 Traduction automatique (bêta)",
1176
+ "translate": "🌐 Traduction automatique",
1151
1177
  "workflow": "🔄 Exécuter un flux de travail complet",
1152
1178
  "status": "📋 Afficher l'état du projet",
1153
1179
  "delete": "🗑️ Supprimer tous les rapports",
@@ -1447,7 +1473,9 @@
1447
1473
  "securitySettings": "Paramètres de sécurité",
1448
1474
  "securitySettingsDesc": "Code PIN administrateur et autres options de sécurité",
1449
1475
  "backupSettings": "Paramètres de sauvegarde",
1450
- "backupSettingsDesc": "Sauvegarder et restaurer les paramètres de configuration"
1476
+ "backupSettingsDesc": "Sauvegarder et restaurer les paramètres de configuration",
1477
+ "autoTranslate": "Traduction automatique",
1478
+ "autoTranslateDesc": "Ajuster les espaces reserves, la concurrence, les lots et les rapports"
1451
1479
  },
1452
1480
  "updatePackage": {
1453
1481
  "title": "Package de mise à jour",
@@ -1569,7 +1597,8 @@
1569
1597
  "processingSettings": "Paramètres de traitement",
1570
1598
  "advancedSettings": "Paramètres avancés",
1571
1599
  "scriptDirectorySettings": "Paramètres du répertoire de scripts",
1572
- "securitySettings": "Paramètres de sécurité"
1600
+ "securitySettings": "Paramètres de sécurité",
1601
+ "autoTranslate": "Parametres de traduction automatique"
1573
1602
  },
1574
1603
  "security": {
1575
1604
  "title": "🔐 Paramètres de sécurité",
@@ -1925,6 +1954,70 @@
1925
1954
  "description": "Exiger une confirmation pour les opérations de sauvegarde",
1926
1955
  "help": "Confirmer l'opération de sauvegarde"
1927
1956
  }
1957
+ },
1958
+ "reports_format": {
1959
+ "label": "Format du rapport",
1960
+ "help": "Choisissez markdown pour des rapports lisibles, json pour l automatisation ou text pour des journaux simples."
1961
+ },
1962
+ "autoTranslate_placeholderMode": {
1963
+ "label": "Mode de gestion des espaces reserves",
1964
+ "help": "Traitement des chaines avec espaces reserves pendant la traduction automatique."
1965
+ },
1966
+ "autoTranslate_concurrency": {
1967
+ "label": "Requetes de traduction simultanees",
1968
+ "help": "Nombre maximal de requetes fournisseur simultanees. Google accepte jusqu'a 100 dans i18ntk; DeepL et LibreTranslate sont limites plus bas."
1969
+ },
1970
+ "autoTranslate_batchSize": {
1971
+ "label": "Segments de texte par lot",
1972
+ "help": "Nombre de segments de texte planifies par lot."
1973
+ },
1974
+ "autoTranslate_progressInterval": {
1975
+ "label": "Intervalle de progression",
1976
+ "help": "Segments termines entre deux mises a jour de progression."
1977
+ },
1978
+ "autoTranslate_retryCount": {
1979
+ "label": "Nombre de tentatives",
1980
+ "help": "Nombre maximal de tentatives par requete echouee."
1981
+ },
1982
+ "autoTranslate_retryDelay": {
1983
+ "label": "Delai de nouvelle tentative (ms)",
1984
+ "help": "Delai de base en millisecondes."
1985
+ },
1986
+ "autoTranslate_timeout": {
1987
+ "label": "Expiration de requete (ms)",
1988
+ "help": "Delai maximal pour la requete au fournisseur de traduction."
1989
+ },
1990
+ "autoTranslate_dryRunFirst": {
1991
+ "label": "Apercu d abord",
1992
+ "help": "Afficher ce qui sera traduit avant d ecrire les fichiers."
1993
+ },
1994
+ "autoTranslate_onlyMissingOrEnglish": {
1995
+ "label": "Seulement les cles manquantes ou anglaises",
1996
+ "help": "Conserver les valeurs cible deja traduites et traduire seulement les valeurs manquantes, marqueurs, copies source ou probablement anglaises."
1997
+ },
1998
+ "autoTranslate_reportStdout": {
1999
+ "label": "Afficher le rapport dans le terminal",
2000
+ "help": "Afficher le rapport apres traduction sur stdout."
2001
+ },
2002
+ "autoTranslate_bom": {
2003
+ "label": "Ecrire le BOM UTF-8",
2004
+ "help": "Ecrire les fichiers JSON traduits avec un BOM UTF-8."
2005
+ },
2006
+ "autoTranslate_protectionEnabled": {
2007
+ "label": "Proteger marques, cles et valeurs",
2008
+ "help": "Activer les termes, cles, valeurs et motifs proteges modifiables par l utilisateur."
2009
+ },
2010
+ "autoTranslate_protectionFile": {
2011
+ "label": "Fichier JSON de protection",
2012
+ "help": "Fichier JSON du projet contenant les regles de protection de traduction automatique."
2013
+ },
2014
+ "autoTranslate_promptProtectionSetup": {
2015
+ "label": "Demander la creation du fichier de protection",
2016
+ "help": "Demander la creation du fichier de protection au premier lancement."
2017
+ },
2018
+ "autoTranslate_promptProtectionUpdate": {
2019
+ "label": "Demander la mise a jour des regles de protection",
2020
+ "help": "Demander la mise a jour des regles de protection avant les traductions du gestionnaire."
1928
2021
  }
1929
2022
  },
1930
2023
  "actions": {
@@ -2143,7 +2236,7 @@
2143
2236
  "completeCommand": "complet - Traductions complètes (couverture à 100 %)",
2144
2237
  "summaryCommand": "résumé - Afficher l'état du projet",
2145
2238
  "scannerCommand": "scanner - Rechercher les problèmes i18n",
2146
- "translateCommand": "traduire - Traduire automatiquement les fichiers de paramètres régionaux (bêta)",
2239
+ "translateCommand": "traduire - Traduire automatiquement les fichiers de paramètres régionaux",
2147
2240
  "debugCommand": "debug - Problèmes de traduction de débogage"
2148
2241
  },
2149
2242
  "test_complete_system": {
@@ -2441,5 +2534,93 @@
2441
2534
  "pressEnterToContinue": "Appuyez sur Entrée pour continuer...",
2442
2535
  "status": {
2443
2536
  "exitingCompleted": "Flux de travail terminé. Sortir..."
2537
+ },
2538
+ "prompt": {
2539
+ "yesTokens": [
2540
+ "o",
2541
+ "oui",
2542
+ "y",
2543
+ "yes"
2544
+ ],
2545
+ "noTokens": [
2546
+ "n",
2547
+ "non",
2548
+ "no"
2549
+ ]
2550
+ },
2551
+ "translate": {
2552
+ "title": "Traduction automatique",
2553
+ "sourceDirectory": {
2554
+ "title": "Repertoire de locale source",
2555
+ "currentProject": "Projet actuel : {dir}",
2556
+ "accepted": "Accepte : chemin absolu ou chemin relatif au projet actuel.",
2557
+ "localeRootExample": "./locales (puis choisir la langue source : en)",
2558
+ "folderHint": "Le dossier peut contenir directement des fichiers JSON ou des dossiers de langue comme ./locales/en.",
2559
+ "defaultNotFound": "Repertoire par defaut introuvable : {dir}",
2560
+ "enterExisting": "Saisissez un repertoire existant avec des fichiers JSON de locale.",
2561
+ "directoryNotFound": "Repertoire introuvable : {dir}",
2562
+ "enterFolderExample": "Saisissez un dossier existant, par exemple ./locales/en.",
2563
+ "notDirectory": "Ce n est pas un repertoire : {dir}",
2564
+ "using": "Repertoire source utilise : {dir}",
2565
+ "noJsonDirect": "Aucun fichier JSON trouve directement dans : {dir}",
2566
+ "usingLanguageFolder": "Dossier de langue source utilise : {dir}",
2567
+ "noJsonWithLanguageFolder": "Aucun fichier JSON trouve dans : {dir}\nDossier de langue source egalement verifie : {languageDir}",
2568
+ "noJson": "Aucun fichier JSON trouve dans : {dir}"
2569
+ },
2570
+ "targetLanguages": {
2571
+ "title": "Langue(s) cible",
2572
+ "allConfigured": "a) Toutes les langues cible configurees : {languages}",
2573
+ "noneConfigured": "a) Toutes les langues cible configurees : aucune configuree",
2574
+ "enterCodes": "Ou saisissez un ou plusieurs codes de langue separes par des virgules ou espaces.",
2575
+ "sourceExcluded": "La langue source \"{lang}\" sera exclue automatiquement.",
2576
+ "noneSelected": "Aucune langue cible valide selectionnee. Annulation.",
2577
+ "configureHint": "Configurez defaultLanguages dans .i18ntk-config ou saisissez les codes cible manuellement.",
2578
+ "selected": "Langues cible : {languages}"
2579
+ },
2580
+ "protection": {
2581
+ "title": "Termes et cles proteges"
2582
+ },
2583
+ "common": {
2584
+ "default": "Par defaut : {value}",
2585
+ "examples": "Exemples :",
2586
+ "exampleValue": "Exemple : {value}",
2587
+ "examplesInline": "Exemples : {examples}",
2588
+ "pressEnterDefault": "Appuyez sur Entree pour utiliser la valeur par defaut.",
2589
+ "usingDefault": "Valeur par defaut utilisee : {value}"
2590
+ },
2591
+ "sourceLanguage": {
2592
+ "title": "Code de langue source",
2593
+ "hint": "Il doit correspondre a la langue des valeurs JSON source.",
2594
+ "using": "Langue source utilisee : {lang}",
2595
+ "invalid": "Code de langue invalide. Utilisez 2 caracteres ou plus (ex. en, de, fr)."
2596
+ },
2597
+ "files": {
2598
+ "title": "Quel(s) fichier(s) traduire ?",
2599
+ "all": "a) Tous les fichiers JSON ({count} : {files})",
2600
+ "choicePrompt": "Choix [a/all ou numero de fichier] : ",
2601
+ "invalidChoice": "Choix invalide. Annulation."
2602
+ },
2603
+ "dryRun": {
2604
+ "previewFor": "Apercu pour \"{lang}\"..."
2605
+ },
2606
+ "confirm": {
2607
+ "proceed": "Continuer avec la traduction reelle ?",
2608
+ "yesNoPrompt": "[o]ui / [n]on : ",
2609
+ "cancelled": "Traduction annulee."
2610
+ },
2611
+ "run": {
2612
+ "translatingTo": "Traduction vers \"{lang}\"...",
2613
+ "failedFor": "Echec pour \"{lang}\" : {error}"
2614
+ },
2615
+ "summary": {
2616
+ "title": "Resume :",
2617
+ "complete": "Traduction terminee !"
2618
+ },
2619
+ "nonInteractive": {
2620
+ "useDirect": "Mode non interactif. Utilisez la CLI directe :"
2621
+ },
2622
+ "errors": {
2623
+ "sourceDirectoryNotFound": "Repertoire de locale source introuvable : {dir}"
2624
+ }
2444
2625
  }
2445
2626
  }
@@ -536,7 +536,7 @@
536
536
  "argsParseFailed": "引数の解析に失敗しました: {error}",
537
537
  "translationDiscoveryError": "翻訳検出エラー: {error}",
538
538
  "fileTraversalError": "ファイル トラバーサル エラー: {error}",
539
- "sourceEqualsI18nWarn": "⚠️ Source ディレクトリと i18n ディレクトリは同じです。これにより、分析で問題が発生する可能性があります。",
539
+ "sourceEqualsI18nWarn": "{reason}。使用状況分析では、ロケール ファイルをソース コードとしてスキャンしません。",
540
540
  "i18nEqualsSourceWarn": "⚠️ I18n ディレクトリとソースディレクトリは同じです。これにより、分析で問題が発生する可能性があります。",
541
541
  "usageAnalysisFailed": "⚠️ 使用状況分析が失敗しました: {error}",
542
542
  "translationFileParseError": "⚠️ 翻訳ファイルの解析エラー: {error}",
@@ -642,7 +642,8 @@
642
642
  "failedToSaveReport": "使用状況レポートの保存に失敗しました: {error}",
643
643
  "i18nDirectoryDoesNotExist": "I18n ディレクトリが存在しません: {dir}",
644
644
  "reportSavedTo": "使用状況レポートの保存場所: {reportPath}",
645
- "sourceDirectoryDoesNotExist": "ソースディレクトリが存在しません: {dir}"
645
+ "sourceDirectoryDoesNotExist": "ソースディレクトリが存在しません: {dir}",
646
+ "noSourceDirectoryConfigured": "(何も設定されていません)"
646
647
  },
647
648
  "validate": {
648
649
  "help_message": "I18n 変換バリデータの使用法: ノード i18ntk-validate.js [オプション] オプション: --source-dir <dir> スキャンするソース ディレクトリ (デフォルト: ./src) --i18n-dir <dir> I18n ディレクトリ (デフォルト: ./src/locales) --output-report 詳細レポートの生成 --output-dir <dir> レポートの出力ディレクトリ (デフォルト: ./reports) --help このヘルプを表示 例: node i18ntk-validate.js --output-report node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales node i18ntk-validate.js --output-dir=./analysis --output-report",
@@ -922,7 +923,7 @@
922
923
  "summaryCommand": "概要 - プロジェクトのステータスを表示します",
923
924
  "debugCommand": "debug - 翻訳の問題をデバッグします",
924
925
  "scannerCommand": "スキャナ - キーをスキャンします",
925
- "translateCommand": "翻訳 - ロケール ファイルを自動翻訳します (ベータ版)",
926
+ "translateCommand": "翻訳 - ロケール ファイルを自動翻訳します",
926
927
  "menu": {
927
928
  "pressEnterToContinue": "続行するには Enter キーを押してください...",
928
929
  "title": "🌐 I18NTK管理メニュー",
@@ -1102,7 +1103,32 @@
1102
1103
  "translationFilesCreatedWarning": "翻訳ファイルはプレースホルダーを使用して作成されました。本番環境で使用する前に確認してください。",
1103
1104
  "warningCannotReadSourceDir": "警告: ソース ディレクトリを読み取れません {dir}: {error}",
1104
1105
  "warningInvalidLanguageCodes": "警告: 無効な言語コードは無視されます: {languages}",
1105
- "warningProceedingWithoutFramework": "i18n フレームワークが検出されないまま続行します。"
1106
+ "warningProceedingWithoutFramework": "i18n フレームワークが検出されないまま続行します。",
1107
+ "backup": {
1108
+ "title": "バックアップ設定",
1109
+ "description": "バックアップの再帰とリポジトリ汚染を避けるために、バックアップはデフォルトで無効になっています。",
1110
+ "enablePrompt": "自動バックアップを有効にしますか? (はい/いいえ): ",
1111
+ "keepPrompt": "自動的に保持するバックアップの数 (1 ~ 3、デフォルトは 1):"
1112
+ },
1113
+ "completionSummaryTitle": "完了の概要",
1114
+ "completionSummaryBasicTitle": "完了の概要 (基本)",
1115
+ "totalChanges": "合計の変更: {count}",
1116
+ "languagesProcessed": "処理される言語: {count}",
1117
+ "missingKeysAdded": "不足しているキーが追加されました: {count}",
1118
+ "reportPrompt": "レポートの生成を希望しますか? (はい/いいえ):",
1119
+ "reportGenerated": "生成されたレポート: {reportPath}",
1120
+ "reportFailed": "レポートの生成に失敗しました: {error}",
1121
+ "completionError": "完了時のエラー: {error}",
1122
+ "optimize": {
1123
+ "title": "パッケージサイズ最適化",
1124
+ "preview": "ロケール最適化のプレビューを実行しています...",
1125
+ "reduceTip": "必要な言語だけを選ぶと、パッケージサイズを削減できます。",
1126
+ "prompt": "今すぐ対話式の最適化を実行しますか? (y/N): ",
1127
+ "starting": "対話式のロケール最適化を開始しています...",
1128
+ "completed": "パッケージ最適化が完了しました。",
1129
+ "later": "ロケール最適化は後で実行できます:",
1130
+ "unavailable": "ロケール最適化を提供できません: {error}"
1131
+ }
1106
1132
  },
1107
1133
  "language": {
1108
1134
  "title": "🌍 言語を変更する",
@@ -1147,7 +1173,7 @@
1147
1173
  "sizing": "📏 サイズを分析する",
1148
1174
  "fix": "🛠️ プレースホルダーの翻訳を修正",
1149
1175
  "scanner": "🔍 i18n の問題をスキャンする",
1150
- "translate": "🌐 自動翻訳 (ベータ版)",
1176
+ "translate": "🌐 自動翻訳",
1151
1177
  "workflow": "🔄 完全なワークフローを実行する",
1152
1178
  "status": "📋 プロジェクトのステータスを表示",
1153
1179
  "delete": "🗑️ すべてのレポートを削除する",
@@ -1447,7 +1473,9 @@
1447
1473
  "securitySettings": "セキュリティ設定",
1448
1474
  "securitySettingsDesc": "管理者PINおよびその他のセキュリティオプション",
1449
1475
  "backupSettings": "バックアップ設定",
1450
- "backupSettingsDesc": "構成設定のバックアップと復元"
1476
+ "backupSettingsDesc": "構成設定のバックアップと復元",
1477
+ "autoTranslate": "自動翻訳",
1478
+ "autoTranslateDesc": "プレースホルダー、同時実行数、バッチ、レポートを調整"
1451
1479
  },
1452
1480
  "updatePackage": {
1453
1481
  "title": "アップデートパッケージ",
@@ -1569,7 +1597,8 @@
1569
1597
  "processingSettings": "処理設定",
1570
1598
  "advancedSettings": "詳細設定",
1571
1599
  "scriptDirectorySettings": "スクリプトディレクトリの設定",
1572
- "securitySettings": "セキュリティ設定"
1600
+ "securitySettings": "セキュリティ設定",
1601
+ "autoTranslate": "自動翻訳設定"
1573
1602
  },
1574
1603
  "security": {
1575
1604
  "title": "🔐 セキュリティ設定",
@@ -1925,6 +1954,70 @@
1925
1954
  "description": "バックアップ操作には確認が必要です",
1926
1955
  "help": "バックアップ操作の確認"
1927
1956
  }
1957
+ },
1958
+ "reports_format": {
1959
+ "label": "レポート形式",
1960
+ "help": "読みやすいレポートには markdown、自動化には json、プレーンなログには text を選びます。"
1961
+ },
1962
+ "autoTranslate_placeholderMode": {
1963
+ "label": "プレースホルダー処理モード",
1964
+ "help": "自動翻訳中にプレースホルダーを含む文字列がどのように処理されるか。"
1965
+ },
1966
+ "autoTranslate_concurrency": {
1967
+ "label": "同時翻訳リクエスト",
1968
+ "help": "プロバイダーへの最大同時リクエスト数。i18ntk では Google は最大 100 まで対応し、DeepL と LibreTranslate はより低く制限されます。"
1969
+ },
1970
+ "autoTranslate_batchSize": {
1971
+ "label": "バッチごとのテキストセグメント",
1972
+ "help": "バッチごとにスケジュールされたテキスト セグメントの数。"
1973
+ },
1974
+ "autoTranslate_progressInterval": {
1975
+ "label": "進捗更新間隔",
1976
+ "help": "進捗状況の更新の間に完了したテキスト セグメント。"
1977
+ },
1978
+ "autoTranslate_retryCount": {
1979
+ "label": "リトライ回数",
1980
+ "help": "失敗したリクエストごとの最大再試行数。"
1981
+ },
1982
+ "autoTranslate_retryDelay": {
1983
+ "label": "再試行遅延 (ミリ秒)",
1984
+ "help": "基本再試行遅延 (ミリ秒単位)。"
1985
+ },
1986
+ "autoTranslate_timeout": {
1987
+ "label": "リクエストのタイムアウト (ミリ秒)",
1988
+ "help": "翻訳プロバイダーのリクエストがタイムアウトしました。"
1989
+ },
1990
+ "autoTranslate_dryRunFirst": {
1991
+ "label": "まずはドライランプレビュー",
1992
+ "help": "ファイルを書き込む前に、翻訳される内容をプレビューします。"
1993
+ },
1994
+ "autoTranslate_onlyMissingOrEnglish": {
1995
+ "label": "未翻訳または英語のキーのみ",
1996
+ "help": "既存の翻訳済み値を保持し、未設定、マーカー、原文コピー、または英語と判定される値だけを翻訳します。"
1997
+ },
1998
+ "autoTranslate_reportStdout": {
1999
+ "label": "レポートを端末に出力する",
2000
+ "help": "翻訳後のレポートを標準出力に出力します。"
2001
+ },
2002
+ "autoTranslate_bom": {
2003
+ "label": "UTF-8 BOM の書き込み",
2004
+ "help": "UTF-8 BOM を使用して、翻訳された JSON ファイルを書き込みます。"
2005
+ },
2006
+ "autoTranslate_protectionEnabled": {
2007
+ "label": "ブランドの用語、キー、価値を保護する",
2008
+ "help": "ユーザーが編集可能な保護された用語、キー、値、パターンを有効にします。"
2009
+ },
2010
+ "autoTranslate_protectionFile": {
2011
+ "label": "保護JSONファイル",
2012
+ "help": "自動翻訳保護ルールを含むプロジェクト JSON ファイル。"
2013
+ },
2014
+ "autoTranslate_promptProtectionSetup": {
2015
+ "label": "保護ファイルの作成を依頼する",
2016
+ "help": "自動翻訳を初めて実行するときに、保護ファイルを作成するように要求します。"
2017
+ },
2018
+ "autoTranslate_promptProtectionUpdate": {
2019
+ "label": "保護ルールの更新を要求する",
2020
+ "help": "マネージャーが翻訳する前に、保護ルールを更新するかどうかを尋ねます。"
1928
2021
  }
1929
2022
  },
1930
2023
  "actions": {
@@ -2143,7 +2236,7 @@
2143
2236
  "completeCommand": "complete - 完全な翻訳 (100% カバー)",
2144
2237
  "summaryCommand": "概要 - プロジェクトのステータスを表示します",
2145
2238
  "scannerCommand": "スキャナ - i18n の問題をスキャンします",
2146
- "translateCommand": "翻訳 - ロケール ファイルを自動翻訳します (ベータ版)",
2239
+ "translateCommand": "翻訳 - ロケール ファイルを自動翻訳します",
2147
2240
  "debugCommand": "debug - 翻訳の問題をデバッグします"
2148
2241
  },
2149
2242
  "test_complete_system": {
@@ -2441,5 +2534,94 @@
2441
2534
  "pressEnterToContinue": "続行するには Enter キーを押してください...",
2442
2535
  "status": {
2443
2536
  "exitingCompleted": "ワークフローが完了しました。終了中..."
2537
+ },
2538
+ "prompt": {
2539
+ "yesTokens": [
2540
+ "はい",
2541
+ "は",
2542
+ "y",
2543
+ "yes"
2544
+ ],
2545
+ "noTokens": [
2546
+ "いいえ",
2547
+ "いえ",
2548
+ "n",
2549
+ "no"
2550
+ ]
2551
+ },
2552
+ "translate": {
2553
+ "title": "自動翻訳",
2554
+ "sourceDirectory": {
2555
+ "title": "ソースロケールディレクトリ",
2556
+ "currentProject": "現在のプロジェクト: {dir}",
2557
+ "accepted": "絶対パス、または現在のプロジェクトからの相対パスを使用できます。",
2558
+ "localeRootExample": "./locales (次にソース言語を選択: en)",
2559
+ "folderHint": "フォルダにJSONファイルを直接置くことも、./locales/en のような言語フォルダを置くこともできます。",
2560
+ "defaultNotFound": "既定のディレクトリが見つかりません: {dir}",
2561
+ "enterExisting": "JSONロケールファイルがある既存のディレクトリを入力してください。",
2562
+ "directoryNotFound": "ディレクトリが見つかりません: {dir}",
2563
+ "enterFolderExample": "./locales/en などの既存フォルダを入力してください。",
2564
+ "notDirectory": "ディレクトリではありません: {dir}",
2565
+ "using": "ソースディレクトリを使用: {dir}",
2566
+ "noJsonDirect": "直下にJSONファイルが見つかりません: {dir}",
2567
+ "usingLanguageFolder": "ソース言語フォルダを使用: {dir}",
2568
+ "noJsonWithLanguageFolder": "JSONファイルが見つかりません: {dir}\nソース言語フォルダも確認しました: {languageDir}",
2569
+ "noJson": "JSONファイルが見つかりません: {dir}"
2570
+ },
2571
+ "targetLanguages": {
2572
+ "title": "ターゲット言語",
2573
+ "allConfigured": "a) 設定済みのすべてのターゲット言語: {languages}",
2574
+ "noneConfigured": "a) 設定済みのターゲット言語: なし",
2575
+ "enterCodes": "またはカンマや空白区切りで言語コードを入力してください。",
2576
+ "sourceExcluded": "ソース言語 \"{lang}\" は自動的に除外されます。",
2577
+ "noneSelected": "有効なターゲット言語が選択されていません。中止します。",
2578
+ "configureHint": ".i18ntk-config で defaultLanguages を設定するか、ターゲットコードを手動入力してください。",
2579
+ "selected": "ターゲット言語: {languages}"
2580
+ },
2581
+ "protection": {
2582
+ "title": "保護された用語とキー"
2583
+ },
2584
+ "common": {
2585
+ "default": "既定値: {value}",
2586
+ "examples": "例:",
2587
+ "exampleValue": "例: {value}",
2588
+ "examplesInline": "例: {examples}",
2589
+ "pressEnterDefault": "Enterで既定値を使用します。",
2590
+ "usingDefault": "既定値を使用: {value}"
2591
+ },
2592
+ "sourceLanguage": {
2593
+ "title": "ソース言語コード",
2594
+ "hint": "ソースJSONの値の言語と一致している必要があります。",
2595
+ "using": "ソース言語を使用: {lang}",
2596
+ "invalid": "言語コードが無効です。2文字以上を使用してください (例: en, de, fr)。"
2597
+ },
2598
+ "files": {
2599
+ "title": "どのファイルを翻訳しますか?",
2600
+ "all": "a) すべてのJSONファイル ({count}: {files})",
2601
+ "choicePrompt": "選択 [a/all またはファイル番号]: ",
2602
+ "invalidChoice": "無効な選択です。中止します。"
2603
+ },
2604
+ "dryRun": {
2605
+ "previewFor": "\"{lang}\" のプレビュー..."
2606
+ },
2607
+ "confirm": {
2608
+ "proceed": "実際の翻訳を続行しますか?",
2609
+ "yesNoPrompt": "[は]い / [い]いえ: ",
2610
+ "cancelled": "翻訳を中止しました。"
2611
+ },
2612
+ "run": {
2613
+ "translatingTo": "\"{lang}\" へ翻訳中...",
2614
+ "failedFor": "\"{lang}\" で失敗: {error}"
2615
+ },
2616
+ "summary": {
2617
+ "title": "概要:",
2618
+ "complete": "翻訳が完了しました!"
2619
+ },
2620
+ "nonInteractive": {
2621
+ "useDirect": "非対話モードです。直接CLIを使用してください:"
2622
+ },
2623
+ "errors": {
2624
+ "sourceDirectoryNotFound": "ソースロケールディレクトリが見つかりません: {dir}"
2625
+ }
2444
2626
  }
2445
2627
  }