i18ntk 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -2
- package/LICENSE +3 -1
- package/README.md +47 -46
- package/docs/README.md +40 -18
- package/docs/SCRIPT_DIRECTORY_GUIDE.md +224 -0
- package/docs/release-notes/v1.3.0.md +162 -0
- package/main/i18ntk-analyze.js +11 -6
- package/main/i18ntk-autorun.js +37 -36
- package/main/i18ntk-complete.js +9 -5
- package/main/i18ntk-init.js +16 -12
- package/main/i18ntk-manage.js +6 -4
- package/main/i18ntk-sizing.js +5 -1
- package/main/i18ntk-summary.js +6 -2
- package/main/i18ntk-usage.js +5 -5
- package/main/i18ntk-validate.js +9 -5
- package/package.json +12 -5
- package/scripts/copy-translations.js +90 -0
- package/settings/i18ntk-config.json +11 -1
- package/settings/settings-cli.js +136 -75
- package/settings/settings-manager.js +19 -0
- package/ui-locales/de/autorun.json +69 -64
- package/ui-locales/de/common.json +14 -1
- package/ui-locales/de/errors.json +11 -1
- package/ui-locales/de/menu.json +10 -1
- package/ui-locales/de/operations.json +11 -0
- package/ui-locales/de/security.json +2 -1
- package/ui-locales/de/settings.json +60 -9
- package/ui-locales/de/sizing.json +14 -1
- package/ui-locales/de/status.json +18 -1
- package/ui-locales/de/test-complete-system.json +13 -1
- package/ui-locales/en/autorun.json +68 -65
- package/ui-locales/en/common.json +15 -1
- package/ui-locales/en/init.json +20 -5
- package/ui-locales/en/menu.json +1 -0
- package/ui-locales/en/operations.json +11 -1
- package/ui-locales/en/settings.json +151 -34
- package/ui-locales/es/autorun.json +68 -65
- package/ui-locales/es/common.json +14 -1
- package/ui-locales/es/errors.json +11 -1
- package/ui-locales/es/menu.json +10 -1
- package/ui-locales/es/operations.json +11 -0
- package/ui-locales/es/security.json +2 -1
- package/ui-locales/es/settings.json +60 -9
- package/ui-locales/es/sizing.json +14 -1
- package/ui-locales/es/status.json +18 -1
- package/ui-locales/es/test-complete-system.json +13 -1
- package/ui-locales/fr/autorun.json +69 -64
- package/ui-locales/fr/common.json +14 -1
- package/ui-locales/fr/errors.json +11 -1
- package/ui-locales/fr/menu.json +10 -1
- package/ui-locales/fr/operations.json +11 -0
- package/ui-locales/fr/security.json +2 -1
- package/ui-locales/fr/settings.json +60 -9
- package/ui-locales/fr/sizing.json +14 -1
- package/ui-locales/fr/status.json +18 -1
- package/ui-locales/fr/test-complete-system.json +13 -1
- package/ui-locales/ja/autorun.json +69 -64
- package/ui-locales/ja/common.json +14 -1
- package/ui-locales/ja/errors.json +11 -1
- package/ui-locales/ja/menu.json +10 -1
- package/ui-locales/ja/operations.json +11 -0
- package/ui-locales/ja/security.json +2 -1
- package/ui-locales/ja/settings.json +60 -9
- package/ui-locales/ja/sizing.json +14 -1
- package/ui-locales/ja/status.json +18 -1
- package/ui-locales/ja/test-complete-system.json +13 -1
- package/ui-locales/pt/analyze.json +2 -1
- package/ui-locales/pt/autorun.json +69 -64
- package/ui-locales/pt/common.json +14 -1
- package/ui-locales/pt/errors.json +11 -1
- package/ui-locales/pt/init.json +5 -1
- package/ui-locales/pt/menu.json +10 -1
- package/ui-locales/pt/operations.json +11 -0
- package/ui-locales/pt/security.json +2 -1
- package/ui-locales/pt/settings.json +60 -9
- package/ui-locales/pt/sizing.json +14 -1
- package/ui-locales/pt/status.json +18 -1
- package/ui-locales/pt/test-complete-system.json +13 -1
- package/ui-locales/ru/autorun.json +69 -64
- package/ui-locales/ru/common.json +14 -1
- package/ui-locales/ru/errors.json +11 -1
- package/ui-locales/ru/menu.json +10 -1
- package/ui-locales/ru/operations.json +11 -0
- package/ui-locales/ru/security.json +2 -1
- package/ui-locales/ru/settings.json +60 -9
- package/ui-locales/ru/sizing.json +14 -1
- package/ui-locales/ru/status.json +18 -1
- package/ui-locales/ru/test-complete-system.json +13 -1
- package/ui-locales/zh/autorun.json +69 -64
- package/ui-locales/zh/common.json +14 -1
- package/ui-locales/zh/errors.json +11 -1
- package/ui-locales/zh/menu.json +10 -1
- package/ui-locales/zh/operations.json +11 -0
- package/ui-locales/zh/security.json +2 -1
- package/ui-locales/zh/settings.json +60 -9
- package/ui-locales/zh/sizing.json +13 -1
- package/ui-locales/zh/status.json +25 -8
- package/ui-locales/zh/test-complete-system.json +13 -1
- package/utils/test-complete-system.js +178 -162
- package/settings/backups/i18ntk-config-backup-2025-08-01T23-38-43-753Z.json +0 -117
- package/ui-locales/de-old.json +0 -705
- package/ui-locales/de.json +0 -15
- package/ui-locales/en-old.json +0 -709
- package/ui-locales/en.json +0 -15
- package/ui-locales/es-old.json +0 -654
- package/ui-locales/es.json +0 -15
- package/ui-locales/fr-old.json +0 -606
- package/ui-locales/fr.json +0 -15
- package/ui-locales/ja-old.json +0 -660
- package/ui-locales/ja.json +0 -15
- package/ui-locales/pt.json +0 -15
- package/ui-locales/ru-old.json +0 -655
- package/ui-locales/ru.json +0 -15
- package/ui-locales/zh-old.json +0 -647
- package/ui-locales/zh.json +0 -15
package/ui-locales/es.json
DELETED
package/ui-locales/fr-old.json
DELETED
|
@@ -1,606 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"language": {
|
|
3
|
-
"title": "🌍 Sélection de la langue",
|
|
4
|
-
"separator": "============================================================",
|
|
5
|
-
"current": "Langue actuelle : {language}",
|
|
6
|
-
"available": "Langues disponibles :",
|
|
7
|
-
"prompt": "Sélectionnez la langue (0 pour annuler) : ",
|
|
8
|
-
"cancelled": "Sélection de la langue annulée.",
|
|
9
|
-
"changed": "Langue changée en : {language}",
|
|
10
|
-
"invalid": "Sélection invalide. Veuillez réessayer.",
|
|
11
|
-
"changeTitle": "🌍 Changer la langue de l'interface",
|
|
12
|
-
"invalidSelection": "❌ Sélection invalide. Veuillez réessayer."
|
|
13
|
-
},
|
|
14
|
-
"menu": {
|
|
15
|
-
"title": "🌐 MENU DE GESTION I18N",
|
|
16
|
-
"separator": "============================================================",
|
|
17
|
-
"options": {
|
|
18
|
-
"init": "🚀 Initialiser de nouvelles langues",
|
|
19
|
-
"analyze": "🔍 Analyser les traductions",
|
|
20
|
-
"validate": "✅ Valider les traductions",
|
|
21
|
-
"usage": "📊 Vérifier l'utilisation des clés",
|
|
22
|
-
"complete": "🎯 Compléter les traductions (100% de couverture)",
|
|
23
|
-
"sizing": "📏 Analyser la taille",
|
|
24
|
-
"workflow": "🔄 Exécuter le workflow complet",
|
|
25
|
-
"status": "📋 Afficher le statut du projet",
|
|
26
|
-
"delete": "🗑️ Supprimer tous les rapports",
|
|
27
|
-
"language": "🌍 Changer la langue de l'interface",
|
|
28
|
-
"settings": "⚙️ Paramètres",
|
|
29
|
-
"debug": "🔧 Outils de débogage",
|
|
30
|
-
"help": "❓ Aide",
|
|
31
|
-
"exit": "🚪 Quitter"
|
|
32
|
-
},
|
|
33
|
-
"goodbye": "👋 Au revoir !",
|
|
34
|
-
"invalidChoice": "❌ Choix invalide. Veuillez sélectionner entre 0 et 13.",
|
|
35
|
-
"returning": "🔄 Retour au menu principal...",
|
|
36
|
-
"invalidOption": "❌ Option invalide. Veuillez réessayer."
|
|
37
|
-
},
|
|
38
|
-
"init": {
|
|
39
|
-
"warnings": {
|
|
40
|
-
"noPackageJson": "⚠️ Aucun package.json trouvé dans le répertoire courant"
|
|
41
|
-
},
|
|
42
|
-
"suggestions": {
|
|
43
|
-
"noFramework": "💡 Aucun framework i18n détecté. Envisagez d'installer :",
|
|
44
|
-
"installFramework": "💡 Installer un framework : 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": "❌ Erreur lors de la lecture de package.json",
|
|
55
|
-
"noFramework": "❌ Aucun framework i18n supporté trouvé"
|
|
56
|
-
},
|
|
57
|
-
"creatingSourceDirectory": "📁 Création du répertoire source : {{dir}}",
|
|
58
|
-
"creatingSourceLanguageDirectory": "📁 Création du répertoire de langue source : {{dir}}",
|
|
59
|
-
"createdSampleTranslationFile": "📄 Fichier de traduction d'exemple créé : {{file}}",
|
|
60
|
-
"adminPinSeparator": "==================================================",
|
|
61
|
-
"adminPinDescription1": "La protection par PIN administrateur ajoute de la sécurité pour les opérations sensibles comme :",
|
|
62
|
-
"adminPinDescription2": "• Supprimer les fichiers de traduction",
|
|
63
|
-
"adminPinDescription3": "• Modifier la configuration du projet",
|
|
64
|
-
"adminPinDescription4": "• Exécuter des commandes administratives",
|
|
65
|
-
"settingUpAdminPin": "📝 Configuration du PIN administrateur...",
|
|
66
|
-
"pinMustBe4To8Digits": "❌ Le PIN doit contenir uniquement 4 à 8 chiffres. Veuillez réessayer.",
|
|
67
|
-
"pinsDoNotMatch": "❌ Les PINs ne correspondent pas. Veuillez réessayer.",
|
|
68
|
-
"adminPinSetupSuccess": "✅ Le PIN administrateur a été configuré avec succès !",
|
|
69
|
-
"adminProtectionEnabled": "🔒 La protection administrateur est maintenant activée pour les opérations sensibles.",
|
|
70
|
-
"errorSettingUpAdminPin": "❌ Erreur lors de la configuration du PIN administrateur : {error}",
|
|
71
|
-
"continuingWithoutAdminPin": "⚠️ Continuation sans protection par PIN administrateur.",
|
|
72
|
-
"skippingAdminPinSetup": "⏭️ Ignorer la configuration du PIN administrateur. Vous pouvez le configurer plus tard dans les paramètres.",
|
|
73
|
-
"adminPinSetupOptional": "🔐 CONFIGURATION DU PIN ADMINISTRATEUR (OPTIONNEL)",
|
|
74
|
-
"adminPinSetupPrompt": "Souhaitez-vous configurer un PIN administrateur ? (o/N) : ",
|
|
75
|
-
"enterAdminPin": "Entrez le PIN administrateur (4-8 chiffres) : ",
|
|
76
|
-
"confirmAdminPin": "Confirmez le PIN administrateur : ",
|
|
77
|
-
"languageSelectionTitle": "🌍 SÉLECTION DE LANGUE I18N",
|
|
78
|
-
"defaultLanguages": "📋 Langues par défaut : {languages}",
|
|
79
|
-
"enterLanguageCodes": "Entrez les codes de langue (séparés par des virgules) ou appuyez sur Entrée pour les valeurs par défaut : ",
|
|
80
|
-
"warningInvalidLanguageCodes": "⚠️ Avertissement : Codes de langue invalides ignorés : {languages}",
|
|
81
|
-
"initializationTitle": "🚀 INITIALISATION I18N",
|
|
82
|
-
"sourceDirectoryLabel": "📁 Répertoire source : {dir}",
|
|
83
|
-
"sourceLanguageLabel": "🔤 Langue source : {language}",
|
|
84
|
-
"initializingProject": "🚀 Initialisation du projet i18n...",
|
|
85
|
-
"warningProceedingWithoutFramework": "⚠️ Avertissement : Procédure sans framework i18n approprié.",
|
|
86
|
-
"translationFilesCreatedWarning": "🔧 Les fichiers de traduction seront créés mais peuvent ne pas fonctionner sans configuration i18n appropriée.",
|
|
87
|
-
"noTargetLanguagesSpecified": "❌ Aucune langue cible spécifiée. Sortie.",
|
|
88
|
-
"targetLanguages": "🎯 Langues cibles : {languages}",
|
|
89
|
-
"foundSourceFiles": "📄 {count} fichiers source trouvés : {files}",
|
|
90
|
-
"processingLanguage": "🔄 Traitement de {language} ({name})...",
|
|
91
|
-
"fileProcessingResult": " ✅ {file} : {translated}/{total} ({percentage}%)",
|
|
92
|
-
"overallProgress": " 📊 Global : {translated}/{total} ({percentage}%)",
|
|
93
|
-
"initializationSummaryTitle": "📊 RÉSUMÉ DE L'INITIALISATION",
|
|
94
|
-
"languageSummary": "{icon} {name} ({code}) : {percentage}% terminé",
|
|
95
|
-
"languageFiles": " 📄 Fichiers : {count}",
|
|
96
|
-
"languageKeys": " 🔤 Clés : {translated}/{total}",
|
|
97
|
-
"languageMissing": " ⚠️ Manquantes : {count}",
|
|
98
|
-
"initializationCompletedSuccessfully": "🎉 Initialisation terminée avec succès !",
|
|
99
|
-
"nextStepsTitle": "📋 Étapes suivantes :",
|
|
100
|
-
"nextStep1": "1. Exécuter : npm run i18n:analyze",
|
|
101
|
-
"nextStep2": "2. Traduire les valeurs manquantes dans les fichiers de langue",
|
|
102
|
-
"nextStep3": "3. Exécuter : npm run i18n:validate",
|
|
103
|
-
"detectedI18nFrameworks": "✅ Framework(s) i18n détecté(s) : {{frameworks}}",
|
|
104
|
-
"continueWithoutI18nPrompt": "🤔 Continuer sans framework i18n ? (o/N) : ",
|
|
105
|
-
"initializationFailed": "❌ Initialisation échouée : {{error}}"
|
|
106
|
-
},
|
|
107
|
-
"workflow": {
|
|
108
|
-
"starting": "🚀 Démarrage du workflow...",
|
|
109
|
-
"completed": "✅ Workflow terminé avec succès !",
|
|
110
|
-
"checkReports": "📋 Vérifiez les rapports pour plus de détails",
|
|
111
|
-
"exitingCompleted": "📝 Workflow terminé. Fermeture..."
|
|
112
|
-
},
|
|
113
|
-
"operations": {
|
|
114
|
-
"completed": "✅ Opération terminée avec succès !",
|
|
115
|
-
"cancelled": "❌ Opération annulée.",
|
|
116
|
-
"settings": {
|
|
117
|
-
"title": "⚙️ Gestion des paramètres",
|
|
118
|
-
"separator": "============================================================"
|
|
119
|
-
},
|
|
120
|
-
"init": {
|
|
121
|
-
"title": "🚀 Initialiser les traductions"
|
|
122
|
-
},
|
|
123
|
-
"usage": {
|
|
124
|
-
"title": "📊 Vérifier l'utilisation des clés"
|
|
125
|
-
},
|
|
126
|
-
"analyze": {
|
|
127
|
-
"title": "📊 Analyser les traductions"
|
|
128
|
-
},
|
|
129
|
-
"validate": {
|
|
130
|
-
"title": "✅ Valider les traductions"
|
|
131
|
-
},
|
|
132
|
-
"complete": {
|
|
133
|
-
"deletingOldReport": "🗑️ Suppression de l'ancien rapport d'utilisation pour une nouvelle analyse",
|
|
134
|
-
"generatingFreshAnalysis": "🔄 Génération d'une nouvelle analyse d'utilisation...",
|
|
135
|
-
"couldNotGenerate": "⚠️ Impossible de générer l'analyse d'utilisation. Utilisation des clés manquantes communes.",
|
|
136
|
-
"reportNotFound": "⚠️ Rapport d'utilisation introuvable. Génération d'une nouvelle analyse...",
|
|
137
|
-
"foundMissingKeys": "🔍 {count} clés manquantes trouvées lors de l'analyse d'utilisation",
|
|
138
|
-
"couldNotParse": "⚠️ Impossible d'analyser le rapport d'utilisation. Utilisation des clés manquantes communes.",
|
|
139
|
-
"title": "🎯 COMPLÉTION DES TRADUCTIONS",
|
|
140
|
-
"separator": "============================================================",
|
|
141
|
-
"sourceDir": "📁 Répertoire source : {sourceDir}",
|
|
142
|
-
"sourceLanguage": "🔤 Langue source : {sourceLanguage}",
|
|
143
|
-
"dryRunMode": "🧪 Mode test - Aucun fichier ne sera modifié",
|
|
144
|
-
"languages": "🎯 Langues cibles : {languages}",
|
|
145
|
-
"addingMissingKeys": "➕ Ajout des clés manquantes aux fichiers de traduction...",
|
|
146
|
-
"processing": "🔄 Traitement de {language}...",
|
|
147
|
-
"addedKeys": "✅ {count} clés ajoutées",
|
|
148
|
-
"changeDetails": "📝 {file} : {key}",
|
|
149
|
-
"noChangesNeeded": "✅ Aucun changement nécessaire pour {language}",
|
|
150
|
-
"summaryTitle": "📊 RÉSUMÉ DE LA COMPLÉTION",
|
|
151
|
-
"totalChanges": "📝 Nombre total de modifications : {totalChanges}",
|
|
152
|
-
"languagesProcessed": "🌐 Langues traitées : {languagesProcessed}",
|
|
153
|
-
"missingKeysAdded": "➕ Clés manquantes ajoutées : {missingKeysAdded}",
|
|
154
|
-
"nextStepsTitle": "📋 ÉTAPES SUIVANTES",
|
|
155
|
-
"nextStep1": "1. Exécutez l'analyse d'utilisation :",
|
|
156
|
-
"nextStep2": "2. Validez les traductions :",
|
|
157
|
-
"nextStep3": "3. Analysez la complétude :",
|
|
158
|
-
"allKeysAvailable": "🎉 Toutes les clés de traduction sont désormais disponibles !",
|
|
159
|
-
"runWithoutDryRun": "💡 Exécutez sans --dry-run pour appliquer les modifications"
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
"admin": {
|
|
163
|
-
"authRequired": "🔐 Authentification administrateur requise",
|
|
164
|
-
"invalidPin": "❌ PIN invalide. Accès refusé.",
|
|
165
|
-
"authSuccess": "✅ Authentification réussie"
|
|
166
|
-
},
|
|
167
|
-
"status": {
|
|
168
|
-
"generating": "\n📊 Génération du résumé de statut...",
|
|
169
|
-
"completed": "✅ Résumé de statut généré avec succès !",
|
|
170
|
-
"exitingCompleted": "\n📝 Résumé de statut terminé. Fermeture...",
|
|
171
|
-
"i18nSetup": "🌐 Configuration I18n"
|
|
172
|
-
},
|
|
173
|
-
"common": {
|
|
174
|
-
"errorExiting": "\n📝 Une erreur est survenue. Fermeture...",
|
|
175
|
-
"welcome": "👋 Bienvenue dans l'outil de gestion I18n !",
|
|
176
|
-
"success": "✅ Opération terminée avec succès !",
|
|
177
|
-
"error": "❌ Une erreur est survenue !"
|
|
178
|
-
},
|
|
179
|
-
"delete": {
|
|
180
|
-
"options": {
|
|
181
|
-
"title": "🗑️ Options de suppression",
|
|
182
|
-
"all": "1. Supprimer tous les rapports",
|
|
183
|
-
"keepLast3": "2. Conserver les 3 derniers rapports",
|
|
184
|
-
"cancel": "0. Annuler"
|
|
185
|
-
},
|
|
186
|
-
"noFiles": "📂 Aucun fichier à supprimer."
|
|
187
|
-
},
|
|
188
|
-
"usage": {
|
|
189
|
-
"title": "📊 VÉRIFICATION DE L'UTILISATION DES CLÉS",
|
|
190
|
-
"help_message": "\nAnalyseur d'utilisation I18n\n\nUtilisation : node i18ntk-usage.js [options]\n\nOptions :\n --source-dir <dir> Répertoire source à scanner (par défaut : ./src)\n --i18n-dir <dir> Répertoire I18n (par défaut : ./src/locales)\n --output-report Générer un rapport détaillé\n --output-dir <dir> Répertoire de sortie pour les rapports (par défaut : ./reports)\n --help Afficher cette aide\n\nExemples :\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",
|
|
191
|
-
"source_directory_thissourcedir": "📁 Répertoire source : {sourceDir}",
|
|
192
|
-
"i18n_directory_thisi18ndir": "🌐 Répertoire I18n : {i18nDir}",
|
|
193
|
-
"failed_to_parse_filename_error": "❌ Erreur lors de l'analyse du nom de fichier : {file}",
|
|
194
|
-
"analyzing_source_files": "🔍 Analyse des fichiers source...",
|
|
195
|
-
"analysisCompletedSuccessfully": "✅ Analyse d'utilisation terminée avec succès",
|
|
196
|
-
"analysisFailedError": "❌ Échec de l'analyse d'utilisation :",
|
|
197
|
-
"detectedSourceDirectory": "🔍 Répertoire source détecté :",
|
|
198
|
-
"detectedI18nDirectory": "🔍 Répertoire i18n détecté :",
|
|
199
|
-
"foundTranslationFiles": "🔍 {count} fichiers de traduction trouvés",
|
|
200
|
-
"invalidPattern": "Modèle invalide :",
|
|
201
|
-
"patternMatchLimitReached": "Limite de correspondance de modèle atteinte. Certains fichiers peuvent ne pas être analysés."
|
|
202
|
-
},
|
|
203
|
-
"keysCount": " 🔤 Clés : {count}",
|
|
204
|
-
"missingFilesCount": " ❌ Fichiers manquants : {count}",
|
|
205
|
-
"syntaxErrorsCount": " 🐛 Erreurs de syntaxe : {count}",
|
|
206
|
-
"translationPercentage": " 📊 Traduction : {{percentage}}% ({{translated}}/{{total}})",
|
|
207
|
-
"n_validation_summary": "\n📊 RÉSUMÉ DE VALIDATION",
|
|
208
|
-
"total_errors": "❌ Total des erreurs : {count}",
|
|
209
|
-
"total_warnings": "⚠️ Total des avertissements : {count}",
|
|
210
|
-
"n_errors": "\n❌ ERREURS :",
|
|
211
|
-
"n_warnings": "\n⚠️ AVERTISSEMENTS :",
|
|
212
|
-
"n_recommendations": "\n📋 RECOMMANDATIONS",
|
|
213
|
-
"fix_errors_first": "🔧 Corriger d'abord les erreurs :",
|
|
214
|
-
"1_resolve_missing_files_and_sy": "1. Résoudre les fichiers manquants et erreurs de syntaxe",
|
|
215
|
-
"2_fix_structural_inconsistenci": "2. Corriger les incohérences structurelles",
|
|
216
|
-
"3_complete_missing_translation": "3. Compléter les traductions manquantes",
|
|
217
|
-
"4_rerun_validation": "4. Relancer la validation",
|
|
218
|
-
"address_warnings": "⚠️ Traiter les avertissements :",
|
|
219
|
-
"review_warnings": "1. Examiner les avertissements ci-dessus",
|
|
220
|
-
"2_consider_running_with_strict": "2. Envisager d'exécuter en mode strict (--strict) pour une validation plus rigoureuse",
|
|
221
|
-
"all_validations_passed": "🎉 Toutes les validations sont passées !",
|
|
222
|
-
"consider_running_usage_analysi": "💡 Envisager d'exécuter une analyse d'utilisation pour trouver les clés inutilisées",
|
|
223
|
-
"validation_failed": "❌ Validation échouée :",
|
|
224
|
-
"analyzeTranslations": {
|
|
225
|
-
"referenceLanguageFiles": "📁 Fichiers de langue de référence : {files}",
|
|
226
|
-
"analyzingLanguage": "🔍 Analyse de la langue : {language}",
|
|
227
|
-
"reportTitle": "📊 Rapport d'analyse de traduction pour {language}",
|
|
228
|
-
"generated": "📅 Généré : {timestamp}",
|
|
229
|
-
"status": "Statut: {translated}/{total} traduites ({percentage}%)",
|
|
230
|
-
"filesAnalyzed": "Fichiers analysés: {analyzed}/{total}",
|
|
231
|
-
"keysNeedingTranslation": "Clés nécessitant une traduction: {count}",
|
|
232
|
-
"fileBreakdown": "RÉPARTITION DES FICHIERS:",
|
|
233
|
-
"statusFileMissing": "Statut: Fichier manquant",
|
|
234
|
-
"sourceKeys": "Clés sources: {count}",
|
|
235
|
-
"translation": "Traduction: {translated}/{total} ({percentage}%)",
|
|
236
|
-
"structure": "Structure: {status}",
|
|
237
|
-
"consistent": "Cohérent",
|
|
238
|
-
"inconsistent": "Incohérent",
|
|
239
|
-
"missingKeys": "Clés manquantes: {count}",
|
|
240
|
-
"extraKeys": "Clés supplémentaires: {count}",
|
|
241
|
-
"issues": "Problèmes: {count}",
|
|
242
|
-
"issueType": {
|
|
243
|
-
"not_translated": "Non traduit : {count}",
|
|
244
|
-
"empty_value": "Valeur vide : {count}",
|
|
245
|
-
"partial_translation": "Traduction partielle : {count}",
|
|
246
|
-
"same_as_source": "Identique à la source : {count}"
|
|
247
|
-
},
|
|
248
|
-
"key": "Clé",
|
|
249
|
-
"english": "Anglais",
|
|
250
|
-
"needsTranslation": "NÉCESSITE UNE TRADUCTION",
|
|
251
|
-
"andMoreKeys": "... et {count} clés supplémentaires",
|
|
252
|
-
"problematic_no": "Aucun problème de taille détecté",
|
|
253
|
-
"problematic_yes": "Problèmes de taille potentiels détectés",
|
|
254
|
-
"keysToTranslate": "CLÉS À TRADUIRE",
|
|
255
|
-
"summary": "\n📊 RÉSUMÉ DE L'ANALYSE",
|
|
256
|
-
"help_message": "\nAnalyseur de traduction I18n\n\nUtilisation : node i18ntk-analyze.js [options]\n\nOptions :\n --language <lang> Analyser une langue spécifique (par défaut : toutes)\n --source-dir <dir> Répertoire source (par défaut : ./src/locales)\n --output-reports Générer des rapports détaillés\n --output-dir <dir> Répertoire de sortie des rapports (par défaut : ./reports)\n --help Afficher cette aide\n\nExemples :\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",
|
|
257
|
-
"starting": "🔍 Démarrage de l'analyse des traductions...",
|
|
258
|
-
"noLanguages": "⚠️ Aucune langue cible trouvée.",
|
|
259
|
-
"foundLanguages": "📋 {count} langues trouvées à analyser : {{languages}}",
|
|
260
|
-
"analyzing": "\n🔄 Analyse de {{language}}...",
|
|
261
|
-
"completed": "✅ Analyse terminée pour {{language}}",
|
|
262
|
-
"progress": " Progression : {{percentage}}% ({{translatedKeys}}/{{totalKeys}} clés)",
|
|
263
|
-
"reportSaved": " Rapport sauvegardé : {{reportPath}}",
|
|
264
|
-
"finished": "\n✅ Analyse terminée avec succès !",
|
|
265
|
-
"error": "❌ Analyse échouée"
|
|
266
|
-
},
|
|
267
|
-
"completeTranslations": {
|
|
268
|
-
"warning_could_not_parse_filepa": "⚠️ Impossible d'analyser le fichier : {filePath}"
|
|
269
|
-
},
|
|
270
|
-
"sizing": {
|
|
271
|
-
"analyzing_file_sizes": "Analyse des tailles de fichiers en cours...",
|
|
272
|
-
"analyzing_translation_content": "Analyse du contenu des traductions en cours...",
|
|
273
|
-
"failed_to_parse_language_error": "Échec de l'analyse de {{language}} : {{errorMessage}}",
|
|
274
|
-
"generating_size_comparisons": "Génération des comparaisons de taille...",
|
|
275
|
-
"no_languages_found_for_comparison": "Aucune langue trouvée pour la comparaison",
|
|
276
|
-
"sizing_analysis_results": "\n📊 Résultats de l'analyse des tailles",
|
|
277
|
-
"file_sizes_title": "📁 Tailles des fichiers",
|
|
278
|
-
"file_sizes_header": "Langue\t\tTaille (Ko)\t\tLignes\t\tCaractères",
|
|
279
|
-
"file_size_row": "{{lang}}\t\t{{sizeKB}} Ko\t\t{{lines}} lignes\t\t{{characters}} caractères",
|
|
280
|
-
"language_statistics_title": "📈 Statistiques des langues",
|
|
281
|
-
"language_stats_header": "Langue\t\tClés\t\tTotal Caractères\t\tLongueur Moy\t\tLongueur Max\t\tClés Vides",
|
|
282
|
-
"language_stats_row": "{{lang}}\t\t{{totalKeys}} clés\t\t{{totalCharacters}} caractères\t\t{{averageKeyLength}} moy\t\t{{maxKeyLength}} max\t\t{{emptyKeys}} vides",
|
|
283
|
-
"size_variations_title": "⚖️ Variations de taille",
|
|
284
|
-
"size_variations_header": "Langue\t\tDiff Caractères\t\tPourcentage\t\tProblématique",
|
|
285
|
-
"size_variation_row": "{{lang}}\t\t{{characterDifference}}\t\t{{percentageDifference}}%\t\t{{problematic}}",
|
|
286
|
-
"recommendations_title": "💡 Recommandations",
|
|
287
|
-
"recommendation_item": "{{index}}. {{recommendation}}",
|
|
288
|
-
"generating_detailed_report": "\n📄 Génération du rapport détaillé sur les tailles...",
|
|
289
|
-
"report_saved_to": "Rapport sauvegardé : {{reportPath}}",
|
|
290
|
-
"csv_report_saved_to": "Rapport CSV sauvegardé : {{csvPath}}",
|
|
291
|
-
"starting_i18n_sizing_analysis": "🔍 Démarrage de l'analyse des tailles I18n...",
|
|
292
|
-
"source_directory": "Répertoire source : {{sourceDir}}",
|
|
293
|
-
"no_translation_files_found": "❌ Aucun fichier de traduction trouvé",
|
|
294
|
-
"found_languages": "Langues trouvées : {{languages}}",
|
|
295
|
-
"analysis_completed": "✅ Analyse terminée en {{duration}} ms",
|
|
296
|
-
"analysis_failed": "❌ Échec de l'analyse des tailles : {{errorMessage}}",
|
|
297
|
-
"problematic_no": "Aucun problème de taille détecté",
|
|
298
|
-
"problematic_yes": "Problèmes de taille potentiels détectés"
|
|
299
|
-
},
|
|
300
|
-
"hardcodedTexts": {
|
|
301
|
-
"securityUnknownCommandArg": "Sécurité : argument de commande inconnu",
|
|
302
|
-
"securityUnknownConfigKey": "Sécurité : clé de configuration inconnue",
|
|
303
|
-
"translationNotFound": "Traduction introuvable pour la clé",
|
|
304
|
-
"noSourceFilesFound": "Aucun fichier source trouvé à analyser.",
|
|
305
|
-
"usageAnalysisCompleted": "✅ Analyse d’utilisation terminée avec succès",
|
|
306
|
-
"analyzingTranslationCompleteness": "Analyse de la complétude de la traduction...",
|
|
307
|
-
"analysisCompletedSuccessfully": "Analyse terminée avec succès",
|
|
308
|
-
"foundTranslationFiles": "🔍 {count} fichiers de traduction trouvés",
|
|
309
|
-
"processedFiles": "📊 Traitement de {processedFiles}/{totalFiles} fichiers…",
|
|
310
|
-
"i18nDirectoryNotFound": "Répertoire i18n introuvable : {i18nDir}",
|
|
311
|
-
"noTranslationLanguagesFound": "Aucune langue de traduction trouvée.",
|
|
312
|
-
"failedToAnalyzeFile": "Échec de l’analyse de {filePath} : {error}",
|
|
313
|
-
"failedToAnalyzeLanguage": "Échec de l’analyse de la langue {language} : {error}",
|
|
314
|
-
"translationCompletenessAnalysisFailed": "Échec de l’analyse de l’exhaustivité des traductions : {error}",
|
|
315
|
-
"autoDetectedI18nDirectory": "Répertoire i18n détecté automatiquement :",
|
|
316
|
-
"selectOptionPrompt": "Sélectionnez une option :",
|
|
317
|
-
"pressEnterToContinue": "Appuyez sur Entrée pour continuer...",
|
|
318
|
-
"invalidChoiceSelectRange": "❌ Choix invalide. Veuillez sélectionner 0–6.",
|
|
319
|
-
"errorGeneratingStatusSummary": "❌ Erreur lors de la génération du résumé d’état : {error}",
|
|
320
|
-
"debugToolNotFound": "❌ Outil de débogage introuvable : {toolName}",
|
|
321
|
-
"errorRunningDebugTool": "❌ Erreur lors de l’exécution de {displayName} : {error}",
|
|
322
|
-
"autoDetectedI18nDirectory": "🔍 Répertoire i18n détecté automatiquement : {path}",
|
|
323
|
-
"executingCommand": "🔄 Exécution de la commande : {command}",
|
|
324
|
-
"unknownCommand": "❌ Commande inconnue : {command}",
|
|
325
|
-
"errorExecutingCommand": "❌ Erreur lors de l’exécution de la commande : {error}",
|
|
326
|
-
"mainDebuggerSystemDiagnostics": "🔍 Débogueur principal : diagnostics et analyse système",
|
|
327
|
-
"consoleTranslationsCheck": "🌐 Traductions de la console : vérifier les messages",
|
|
328
|
-
"exportMissingKeys": "🔑 Exporter les clés manquantes : exporter les clés de traduction manquantes",
|
|
329
|
-
"replaceHardcodedConsole": "🔄 Remplacer messages codés en dur : convertir les messages",
|
|
330
|
-
"consoleKeyChecker": "✅ Vérificateur de clés de la console : valider les clés de traduction",
|
|
331
|
-
"debugLogs": "📝 Journaux de débogage : afficher les plus récents",
|
|
332
|
-
"backToMainMenu": "← Retour au menu principal",
|
|
333
|
-
"runningDebugTool": "🔧 Exécution de {displayName}…",
|
|
334
|
-
"recentDebugLogs": "📝 Journaux de débogage récents",
|
|
335
|
-
"noDebugLogsFound": "📭 Aucun journal de débogage trouvé.",
|
|
336
|
-
"debugLogsDirectoryNotFound": "📭 Répertoire des journaux introuvable.",
|
|
337
|
-
"errorReadingDebugLogs": "❌ Erreur lors de la lecture des journaux : {error}",
|
|
338
|
-
"debugLogSelectPrompt": "Sélectionnez un journal à afficher (1–{count}) ou 0 pour revenir : ",
|
|
339
|
-
"debugLogError": "Erreur de lecture des journaux de débogage :",
|
|
340
|
-
"missingRequiredFile": "❌ Fichier ou répertoire requis manquant : {file}",
|
|
341
|
-
"runInitializationFirst": "🔧 Veuillez d’abord exécuter l’initialisation : node i18ntk-init.js",
|
|
342
|
-
"initializationCheckPassed": "✅ Vérification de l’initialisation réussie",
|
|
343
|
-
"runningStep": "🔄 Exécution : {stepName}",
|
|
344
|
-
"commandStep": " Commande : {command}",
|
|
345
|
-
"stepCompleted": "✅ {stepName} terminé",
|
|
346
|
-
"stepCompletedWithDuration": "✅ {stepName} terminé en {duration} ms",
|
|
347
|
-
"stepFailed": "❌ {stepName} a échoué : {error}",
|
|
348
|
-
"stepFailedWithDetails": "❌ {stepName} a échoué :\n Erreur : {error}",
|
|
349
|
-
"requiredStepFailed": "🛑 Étape requise échouée — arrêt de l’exécution.",
|
|
350
|
-
"optionalStepFailed": "⚠️ Étape facultative échouée — poursuite…",
|
|
351
|
-
"startingAutoRunWorkflow": "🚀 Démarrage du workflow d’exécution automatique",
|
|
352
|
-
"workflowIncludes": "📋 Le workflow comprend {stepCount} étapes :",
|
|
353
|
-
"stepListItem": " {index}. {stepName} {required}",
|
|
354
|
-
"startingExecution": "⏱️ Début de l’exécution…",
|
|
355
|
-
"workflowStopped": "🛑 Workflow arrêté suite à l’échec d’une étape requise.",
|
|
356
|
-
"workflowCompleted": "🎉 Workflow terminé !",
|
|
357
|
-
"runningSelectedSteps": "🎯 Exécution des étapes sélectionnées",
|
|
358
|
-
"invalidStepNumber": "❌ Numéro d’étape invalide : {stepNum}",
|
|
359
|
-
"executionReport": "📊 RAPPORT D’EXÉCUTION",
|
|
360
|
-
"successfulSteps": "✅ Réussis : {successful}",
|
|
361
|
-
"failedSteps": "❌ Échoués : {failed}",
|
|
362
|
-
"requiredFailedSteps": "🔴 Étapes requises échouées : {requiredFailed}",
|
|
363
|
-
"stepDetails": "📋 Détails de l’étape :",
|
|
364
|
-
"stepResult": " {status} {required} {step}{duration}",
|
|
365
|
-
"stepError": " Erreur : {error}",
|
|
366
|
-
"reportSaved": "💾 Rapport enregistré : {reportPath}",
|
|
367
|
-
"overallStatus": "📊 Statut global : {status}",
|
|
368
|
-
"customSettingsConfiguration": "🔧 Configuration des paramètres personnalisés",
|
|
369
|
-
"pressEnterForDefaults": "Appuyez sur Entrée pour utiliser les valeurs par défaut ou saisissez de nouvelles valeurs :",
|
|
370
|
-
"settingsUpdatedSuccessfully": "✅ Paramètres mis à jour avec succès !",
|
|
371
|
-
"errorConfiguringSettings": "❌ Erreur lors de la configuration : {error}",
|
|
372
|
-
"autoRunScriptTitle": "🤖 Script d’exécution automatique I18N",
|
|
373
|
-
"usageInstructions": "Utilisation :",
|
|
374
|
-
"runAllSteps": " node auto-run.js # Exécuter toutes les étapes",
|
|
375
|
-
"configureFirst": " node auto-run.js --config # Configurer d’abord les paramètres",
|
|
376
|
-
"runSpecificSteps": " node auto-run.js --steps 1,2,3 # Exécuter des étapes spécifiques",
|
|
377
|
-
"showHelp": " node auto-run.js --help # Afficher cette aide",
|
|
378
|
-
"availableSteps": "Étapes disponibles :",
|
|
379
|
-
"stepListHelp": " {index}. {stepName} {required}",
|
|
380
|
-
"examplesTitle": "Exemples :",
|
|
381
|
-
"configurationComplete": "🚀 Configuration terminée ! Vous pouvez maintenant lancer l’auto-runner avec :",
|
|
382
|
-
"runAutoRunner": " node auto-run.js",
|
|
383
|
-
"configurationFailed": "❌ Échec de la configuration : {error}",
|
|
384
|
-
"noValidStepNumbers": "❌ Aucun numéro d’étape valide fourni",
|
|
385
|
-
"autoRunFailed": "❌ Échec de l’exécution automatique : {error}",
|
|
386
|
-
"stepRunning": "🔄 Exécution de l’étape : {stepName}",
|
|
387
|
-
"selectOptionPrompt": "Sélectionnez une option (0–13) : ",
|
|
388
|
-
"selectDebugToolPrompt": "Sélectionnez un outil de débogage (0–6) : ",
|
|
389
|
-
"pressEnterToContinue": "📝 Appuyez sur Entrée pour continuer…",
|
|
390
|
-
"pressEnterToReturnToMenu": "Appuyez sur Entrée pour revenir au menu.",
|
|
391
|
-
"selectLogPrompt": "Sélectionnez un journal à afficher (1–{count}) ou 0 pour revenir : ",
|
|
392
|
-
"stepFailedWithError": "❌ Échec de l'étape {stepName} : {error}"
|
|
393
|
-
},
|
|
394
|
-
"summary": {
|
|
395
|
-
"i18nSummaryReportGenerator": "🔧 GÉNÉRATEUR DE RAPPORT RÉCAPITULATIF I18N",
|
|
396
|
-
"keysInFiles": " 📝 {keys} clés dans {files} fichiers",
|
|
397
|
-
"checkingInconsistentKeys": "🔍 Vérification des clés incohérentes entre les langues...",
|
|
398
|
-
"noIssuesFound": "Aucun problème détecté – votre configuration i18n est excellente !",
|
|
399
|
-
"allFilesConsistent": "Tous les fichiers de traduction sont cohérents dans toutes les langues.",
|
|
400
|
-
"recommendations": "Recommandations",
|
|
401
|
-
"nextSteps": "Prochaines étapes",
|
|
402
|
-
"nextStep1": "Examinez le rapport récapitulatif pour détecter les incohérences ou les clés manquantes.",
|
|
403
|
-
"nextStep2": "Corrigez les problèmes signalés dans le rapport.",
|
|
404
|
-
"nextStep3": "Validez les traductions pour la pureté et la complétude linguistique.",
|
|
405
|
-
"nextStep4": "Exécutez à nouveau le rapport récapitulatif après modifications.",
|
|
406
|
-
"inconsistentKeys": "Clés incohérentes trouvées :",
|
|
407
|
-
"missingKeys": " Clés manquantes : {keys}{more}",
|
|
408
|
-
"extraKeys": " Clés supplémentaires : {keys}{more}",
|
|
409
|
-
"createMissingFiles": "Créer les fichiers manquants pour toutes les langues.",
|
|
410
|
-
"addContentToEmptyFiles": "Ajouter du contenu aux fichiers de traduction vides.",
|
|
411
|
-
"fixMalformedFiles": "Corriger les fichiers de traduction mal formés.",
|
|
412
|
-
"removeDuplicateKeys": "Supprimer les clés dupliquées des fichiers de traduction.",
|
|
413
|
-
"synchronizeKeys": "Synchroniser les clés dans toutes les langues.",
|
|
414
|
-
"splitLargeFiles": "Diviser les gros fichiers de traduction pour une meilleure maintenance.",
|
|
415
|
-
"addMoreLanguages": "Ajouter plus de langues à votre projet.",
|
|
416
|
-
"reportTitle": "📊 Rapport récapitulatif I18N",
|
|
417
|
-
"generated": "Généré : {timestamp}",
|
|
418
|
-
"sourceDirectory": "Répertoire source : {dir}",
|
|
419
|
-
"analyzingFolder": "Analyse du dossier : {folder}",
|
|
420
|
-
"foundLanguages": "📋 Langues trouvées : {languages}",
|
|
421
|
-
"referenceLanguageFiles": "Fichiers de langue de référence : {files}",
|
|
422
|
-
"analyzingLanguage": "Analyse de la langue : {language}",
|
|
423
|
-
"overview": "APERÇU",
|
|
424
|
-
"languagesCount": "🌍 Langues : {count}",
|
|
425
|
-
"totalFiles": "📁 Total des fichiers : {count}",
|
|
426
|
-
"totalKeys": "🔤 Total des clés : {count}",
|
|
427
|
-
"avgKeysPerLanguage": "📊 Moyenne des clés par langue : {count}",
|
|
428
|
-
"languagesBreakdown": "RÉPARTITION DES LANGUES",
|
|
429
|
-
"languageBreakdown": "📍 {language} : {files} fichiers, {keys} clés",
|
|
430
|
-
"fileStructure": "STRUCTURE DES FICHIERS",
|
|
431
|
-
"fileKeys": "📄 {file} : {keys} clés",
|
|
432
|
-
"missingInLanguages": " ⚠️ Manquant dans : {languages}",
|
|
433
|
-
"noIssuesConsole": "✅ Aucun problème trouvé – votre configuration i18n est excellente ! (console)",
|
|
434
|
-
"reportSaved": "📄 Rapport récapitulatif enregistré : {reportPath}",
|
|
435
|
-
"reportSaveFailed": "❌ Échec de l'enregistrement du rapport récapitulatif : {reportPath}",
|
|
436
|
-
"couldNotReadFile": "⚠️ Impossible de lire le fichier : {filePath}",
|
|
437
|
-
"couldNotParseJSFile": "⚠️ Impossible d'analyser le fichier JS/TS : {filePath}",
|
|
438
|
-
"errorReadingFile": "⚠️ Erreur lors de la lecture du fichier {filePath} : {error}",
|
|
439
|
-
"noLanguageDirectoriesFound": "❌ Aucun répertoire de langue trouvé !",
|
|
440
|
-
"issuesFound": "🚨 PROBLÈMES TROUVÉS",
|
|
441
|
-
"missingFiles": "❌ Fichiers manquants :",
|
|
442
|
-
"emptyFiles": "📭 Fichiers vides :",
|
|
443
|
-
"malformedFiles": "💥 Fichiers malformés :",
|
|
444
|
-
"duplicateKeys": "🔄 Clés dupliquées :",
|
|
445
|
-
"couldNotFindI18nDirectory": "❌ Impossible de trouver le répertoire i18n. Veuillez spécifier avec --source-dir",
|
|
446
|
-
"sourceDirectoryDoesNotExist": "❌ Le répertoire source n'existe pas : {sourceDir}",
|
|
447
|
-
"generatingSummaryReport": "📄 Génération du rapport de résumé...",
|
|
448
|
-
"cleaningUpReportFiles": "🗑️ Nettoyage des fichiers de rapport...",
|
|
449
|
-
"couldNotDelete": "⚠️ Impossible de supprimer {file} : {error}",
|
|
450
|
-
"noOldReportFilesToDelete": "📄 Aucun ancien fichier de rapport à supprimer.",
|
|
451
|
-
"errorCleaningUpReports": "⚠️ Erreur lors du nettoyage des rapports : {error}",
|
|
452
|
-
"reportFilesPreserved": "📁 Fichiers de rapport conservés comme demandé.",
|
|
453
|
-
"analysisComplete": "📊 ANALYSE TERMINÉE",
|
|
454
|
-
"analyzedLanguages": "✅ {count} langues analysées",
|
|
455
|
-
"processedFiles": "✅ {count} fichiers traités",
|
|
456
|
-
"foundTranslationKeys": "✅ {count} clés de traduction trouvées",
|
|
457
|
-
"errorDuringAnalysis": "❌ Erreur pendant l'analyse : {error}",
|
|
458
|
-
"deletedOldReportFiles": "✅ {count} anciens fichiers de rapport supprimés.",
|
|
459
|
-
"helpTitle": "🔧 GÉNÉRATEUR DE RAPPORT RÉCAPITULATIF I18N",
|
|
460
|
-
"helpDescription": "Analyse la structure du dossier i18n et génère des rapports complets",
|
|
461
|
-
"helpUsage": "Utilisation : i18ntk summary [options]",
|
|
462
|
-
"helpOptions": "Options :",
|
|
463
|
-
"helpSourceDir": " -s, --source-dir <path> Chemin vers le répertoire des locales i18n",
|
|
464
|
-
"helpOutput": " -o, --output <file> Fichier de sortie pour le rapport",
|
|
465
|
-
"helpVerbose": " -v, --verbose Afficher la sortie détaillée",
|
|
466
|
-
"helpKeepReports": " --keep-reports Conserver tous les fichiers de rapport existants",
|
|
467
|
-
"helpDeleteReports": " --delete-reports Supprimer les anciens fichiers de rapport après génération",
|
|
468
|
-
"helpHelp": " -h, --help Afficher ce message d'aide",
|
|
469
|
-
"helpExamples": "Exemples :",
|
|
470
|
-
"helpExample1": " i18ntk summary",
|
|
471
|
-
"helpExample2": " i18ntk summary --source-dir ./src/i18n/locales",
|
|
472
|
-
"helpExample3": " i18ntk summary --output summary.txt --verbose",
|
|
473
|
-
"helpExample4": " i18ntk summary --output summary.txt --delete-reports",
|
|
474
|
-
"helpExample5": " i18ntk summary --keep-reports",
|
|
475
|
-
"usageReportTitle": "RAPPORT D'ANALYSE D'UTILISATION I18N - Version 1.4.3",
|
|
476
|
-
"usageReportGenerated": "Généré : {timestamp}",
|
|
477
|
-
"usageReportSourceDir": "Répertoire source : {sourceDir}",
|
|
478
|
-
"usageReportI18nDir": "Répertoire I18n : {i18nDir}",
|
|
479
|
-
"usageReportSummary": "RÉSUMÉ",
|
|
480
|
-
"usageReportSourceFilesScanned": "📄 Fichiers source analysés : {count}",
|
|
481
|
-
"usageReportTranslationFilesFound": "📄 Fichiers de traduction trouvés : {count}",
|
|
482
|
-
"usageReportAvailableKeys": "🔤 Clés de traduction disponibles : {count}",
|
|
483
|
-
"usageReportUsedKeys": "🎯 Clés de traduction utilisées : {count}",
|
|
484
|
-
"usageReportDynamicKeys": "🔄 Clés dynamiques détectées : {count}",
|
|
485
|
-
"usageReportUnusedKeys": "❌ Clés inutilisées : {count}",
|
|
486
|
-
"usageReportMissingKeys": "⚠️ Clés manquantes : {count}",
|
|
487
|
-
"usageReportNotTranslatedKeys": "🔄 Clés NON_TRADUITES : {count}",
|
|
488
|
-
"usageReportTranslationCompleteness": "COMPLÉTUDE DE TRADUCTION",
|
|
489
|
-
"usageReportLanguageCompleteness": "🌍 {language} : {completeness}% complète ({translated}/{total})",
|
|
490
|
-
"usageReportNotTranslatedInLanguage": " 🔄 NON_TRADUITES : {count} clés",
|
|
491
|
-
"usageReportTranslationFilesDiscovered": "FICHIERS DE TRADUCTION DÉCOUVERTS",
|
|
492
|
-
"usageReportFileInfo": "📄 {relativePath} ({namespace}, {type})",
|
|
493
|
-
"usageReportUnusedKeysSection": "CLÉS DE TRADUCTION INUTILISÉES",
|
|
494
|
-
"usageReportUnusedKeysDescription": "Ces clés existent dans les fichiers de traduction mais ne sont pas utilisées dans le code source :",
|
|
495
|
-
"usageReportMoreUnusedKeys": "... et {count} clés inutilisées supplémentaires",
|
|
496
|
-
"usageReportMissingKeysSection": "CLÉS DE TRADUCTION MANQUANTES",
|
|
497
|
-
"usageReportMissingKeysDescription": "Ces clés sont utilisées dans le code source mais manquent dans les fichiers de traduction :",
|
|
498
|
-
"usageReportUsedIn": "📄 Utilisé dans : {filePath}",
|
|
499
|
-
"usageReportMoreFiles": "... et {count} fichiers supplémentaires",
|
|
500
|
-
"usageReportDynamicKeysSection": "CLÉS DE TRADUCTION DYNAMIQUES",
|
|
501
|
-
"usageReportDynamicKeysDescription": "Ces clés utilisent des motifs dynamiques et nécessitent une vérification manuelle :",
|
|
502
|
-
"usageReportFileUsageBreakdown": "RÉPARTITION DE L'UTILISATION DES FICHIERS",
|
|
503
|
-
"usageReportFileUsage": "📄 {filePath} ({count} clés)",
|
|
504
|
-
"usageReportMoreFileUsage": "... et {count} fichiers supplémentaires",
|
|
505
|
-
"usageReportSaved": "📄 Rapport enregistré dans : {filepath}",
|
|
506
|
-
"usageReportSaveFailed": "❌ Échec de l'enregistrement du rapport : {error}",
|
|
507
|
-
"analysisCompletedSuccessfully": "✅ Analyse terminée avec succès",
|
|
508
|
-
"analysisFailed": "❌ Analyse échouée : {error}",
|
|
509
|
-
"analysisFailedError": "❌ Analyse échouée",
|
|
510
|
-
"usageReportUnusedTranslationKeys": "CLÉS DE TRADUCTION INUTILISÉES",
|
|
511
|
-
"usageReportUnusedKey": "❌ {key}",
|
|
512
|
-
"usageReportMissingTranslationKeys": "CLÉS DE TRADUCTION MANQUANTES",
|
|
513
|
-
"usageReportMissingKey": "⚠️ {key}",
|
|
514
|
-
"usageReportDynamicTranslationKeys": "CLÉS DE TRADUCTION DYNAMIQUES",
|
|
515
|
-
"usageReportDynamicKey": "🔄 {key}",
|
|
516
|
-
"unusedKeysCount": " ❌ Clés inutilisées : {count}",
|
|
517
|
-
"missingKeysCount": " ⚠️ Clés manquantes : {count}",
|
|
518
|
-
"translationCompletenessTitle": "\n🌍 Complétude de traduction :",
|
|
519
|
-
"languageCompletenessStats": " {language} : {completeness}% complète ({translated}/{total})",
|
|
520
|
-
"configuration": "🔧 Configuration :",
|
|
521
|
-
"sourceLanguage": " Langue source : {sourceLanguage}",
|
|
522
|
-
"supportedExtensions": " Extensions supportées : {extensions}",
|
|
523
|
-
"excludedFiles": " Fichiers exclus : {files}",
|
|
524
|
-
"foundIssues": "⚠️ {count} problèmes trouvés nécessitant une attention",
|
|
525
|
-
"fatalError": "❌ Erreur fatale : {error}",
|
|
526
|
-
"issuesFoundTitle": "PROBLÈMES TROUVÉS",
|
|
527
|
-
"missingFilesTitle": "❌ Fichiers manquants :",
|
|
528
|
-
"emptyFilesTitle": "📭 Fichiers vides :",
|
|
529
|
-
"malformedFilesTitle": "💥 Fichiers malformés :",
|
|
530
|
-
"duplicateKeysTitle": "🔄 Clés dupliquées :"
|
|
531
|
-
},
|
|
532
|
-
"help": {
|
|
533
|
-
"usage": "Utilisation :",
|
|
534
|
-
"interactiveMode": " node i18ntk-manage.js # Mode interactif",
|
|
535
|
-
"initProject": " node i18ntk-manage.js init # Initialiser le projet",
|
|
536
|
-
"analyzeTranslations": " node i18ntk-manage.js analyze # Analyser les traductions",
|
|
537
|
-
"validateTranslations": " node i18ntk-manage.js validate # Valider les traductions",
|
|
538
|
-
"checkUsage": " node i18ntk-manage.js usage # Vérifier l'utilisation",
|
|
539
|
-
"showHelp": " node i18ntk-manage.js help # Afficher l'aide",
|
|
540
|
-
"availableCommands": "\nCommandes Disponibles :",
|
|
541
|
-
"initCommand": " init - Initialiser la structure i18n",
|
|
542
|
-
"analyzeCommand": " analyze - Analyser la complétude des traductions",
|
|
543
|
-
"validateCommand": " validate - Valider les fichiers de traduction",
|
|
544
|
-
"usageCommand": " usage - Vérifier l'utilisation des clés de traduction",
|
|
545
|
-
"sizingCommand": " sizing - Analyser la taille des traductions",
|
|
546
|
-
"completeCommand": " complete - Compléter les traductions manquantes",
|
|
547
|
-
"summaryCommand": " summary - Générer un rapport de résumé",
|
|
548
|
-
"debugCommand": "debug - Exécuter l'analyse de débogage"
|
|
549
|
-
},
|
|
550
|
-
"complete": {
|
|
551
|
-
"nextStep1": "1. Vérifier l'analyse d'utilisation :",
|
|
552
|
-
"nextStep2": "2. Valider les traductions :",
|
|
553
|
-
"nextStep3": "3. Analyser la complétude :",
|
|
554
|
-
"andMore": "... et {count} de plus"
|
|
555
|
-
},
|
|
556
|
-
"usage": {
|
|
557
|
-
"analysisCompletedSuccessfully": "✅ Analyse d'utilisation terminée avec succès",
|
|
558
|
-
"analysisFailedError": "❌ Analyse d'utilisation échouée :",
|
|
559
|
-
"detectedSourceDirectory": "🔍 Répertoire source détecté :",
|
|
560
|
-
"detectedI18nDirectory": "🔍 Répertoire i18n détecté :",
|
|
561
|
-
"foundTranslationFiles": "🔍 {count} fichiers de traduction trouvés",
|
|
562
|
-
"invalidPattern": "Motif invalide :",
|
|
563
|
-
"patternMatchLimitReached": "Limite de correspondance de motif atteinte pour le fichier :",
|
|
564
|
-
"patternExecutionFailed": "Exécution du motif échouée pour",
|
|
565
|
-
"failedToExtractKeys": "Échec de l'extraction des clés de",
|
|
566
|
-
"failedToProcessFile": "Échec du traitement du fichier",
|
|
567
|
-
"errorReadingI18nDirectory": "Erreur lors de la lecture du répertoire i18n :",
|
|
568
|
-
"notTranslatedKeysTotal": "🔄 Clés NON_TRADUITES : {total}",
|
|
569
|
-
"reviewNotTranslatedKeys": "🔄 Examiner {total} clés NON_TRADUITES dans toutes les langues",
|
|
570
|
-
"analysisCompletedSuccessfullySimple": "\n✅ Analyse terminée avec succès",
|
|
571
|
-
"analysisFailedResult": "\n❌ Analyse échouée :",
|
|
572
|
-
"analysisFailedGeneral": "\n❌ Analyse échouée :",
|
|
573
|
-
"title": "RAPPORT D'ANALYSE D'UTILISATION I18N",
|
|
574
|
-
"generatedAt": "Généré le : {timestamp}",
|
|
575
|
-
"sourceDirectory": "Répertoire source : {sourceDir}",
|
|
576
|
-
"i18nDirectory": "Répertoire I18n : {i18nDir}",
|
|
577
|
-
"sourceFilesScanned": "Fichiers source analysés : {count}",
|
|
578
|
-
"translationFilesFound": "Fichiers de traduction trouvés : {count}",
|
|
579
|
-
"availableKeys": "Clés de traduction disponibles : {count}",
|
|
580
|
-
"usedKeys": "Clés de traduction utilisées : {count}",
|
|
581
|
-
"analysisResults": "Résultats de l'analyse",
|
|
582
|
-
"availableKeysCount": "Nombre de clés disponibles",
|
|
583
|
-
"usedKeysCount": "Nombre de clés utilisées",
|
|
584
|
-
"dynamicKeys": "Clés dynamiques détectées : {count}",
|
|
585
|
-
"unusedKeys": "Clés de traduction inutilisées : {count}",
|
|
586
|
-
"missingKeys": "Clés de traduction manquantes : {count}",
|
|
587
|
-
"notTranslatedKeys": "Clés NON_TRADUITES : {count}",
|
|
588
|
-
"translationCompleteness": "COMPLÉTUDE DE TRADUCTION",
|
|
589
|
-
"translationFilesDiscovered": "FICHIERS DE TRADUCTION DÉCOUVERTS",
|
|
590
|
-
"unusedKeysSection": "CLÉS DE TRADUCTION INUTILISÉES",
|
|
591
|
-
"unusedKeysDescription": "Ces clés existent dans les fichiers de traduction mais ne sont pas utilisées dans le code source :",
|
|
592
|
-
"missingKeysSection": "CLÉS DE TRADUCTION MANQUANTES",
|
|
593
|
-
"missingKeysDescription": "Ces clés sont utilisées dans le code source mais manquent dans les fichiers de traduction :",
|
|
594
|
-
"dynamicKeysSection": "CLÉS DE TRADUCTION DYNAMIQUES",
|
|
595
|
-
"dynamicKeysDescription": "Ces clés sont générées dynamiquement et peuvent nécessiter une vérification manuelle :",
|
|
596
|
-
"fileUsageBreakdown": "RÉPARTITION DE L'UTILISATION DES FICHIERS",
|
|
597
|
-
"fileUsageDescription": "Utilisation des clés de traduction par fichier source :",
|
|
598
|
-
"reportSavedTo": "📄 Rapport enregistré dans : {reportPath}",
|
|
599
|
-
"failedToSaveReport": "❌ Échec de l'enregistrement du rapport : {error}",
|
|
600
|
-
"analysisFailed": "❌ Analyse d'utilisation échouée",
|
|
601
|
-
"unusedKeysCount": "❌ Clés inutilisées : {count}",
|
|
602
|
-
"missingKeysCount": "⚠️ Clés manquantes : {count}",
|
|
603
|
-
"translationCompletenessTitle": "🌍 Complétude de traduction :",
|
|
604
|
-
"languageCompletenessStats": " {language} : {completeness}% complète ({translated}/{total})"
|
|
605
|
-
}
|
|
606
|
-
}
|