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.
- package/CHANGELOG.md +401 -0
- package/LICENSE +21 -0
- package/README.md +507 -0
- package/dev/README.md +37 -0
- package/dev/debug/README.md +30 -0
- package/dev/debug/complete-console-translations.js +295 -0
- package/dev/debug/console-key-checker.js +408 -0
- package/dev/debug/console-translations.js +335 -0
- package/dev/debug/debugger.js +408 -0
- package/dev/debug/export-missing-keys.js +432 -0
- package/dev/debug/final-normalize.js +236 -0
- package/dev/debug/find-extra-keys.js +68 -0
- package/dev/debug/normalize-locales.js +153 -0
- package/dev/debug/refactor-locales.js +240 -0
- package/dev/debug/reorder-locales.js +85 -0
- package/dev/debug/replace-hardcoded-console.js +378 -0
- package/docs/INSTALLATION.md +449 -0
- package/docs/README.md +222 -0
- package/docs/TODO_ROADMAP.md +279 -0
- package/docs/api/API_REFERENCE.md +377 -0
- package/docs/api/COMPONENTS.md +492 -0
- package/docs/api/CONFIGURATION.md +651 -0
- package/docs/api/NPM_PUBLISHING_GUIDE.md +434 -0
- package/docs/debug/DEBUG_README.md +30 -0
- package/docs/debug/DEBUG_TOOLS.md +494 -0
- package/docs/development/AGENTS.md +351 -0
- package/docs/development/DEVELOPMENT_RULES.md +165 -0
- package/docs/development/DEV_README.md +37 -0
- package/docs/release-notes/RELEASE_NOTES_v1.0.0.md +173 -0
- package/docs/release-notes/RELEASE_NOTES_v1.6.0.md +141 -0
- package/docs/release-notes/RELEASE_NOTES_v1.6.1.md +185 -0
- package/docs/release-notes/RELEASE_NOTES_v1.6.3.md +199 -0
- package/docs/reports/ANALYSIS_README.md +17 -0
- package/docs/reports/CONSOLE_MISMATCH_BUG_REPORT_v1.5.0.md +181 -0
- package/docs/reports/SIZING_README.md +18 -0
- package/docs/reports/SUMMARY_README.md +18 -0
- package/docs/reports/TRANSLATION_BUG_REPORT_v1.5.0.md +129 -0
- package/docs/reports/USAGE_README.md +18 -0
- package/docs/reports/VALIDATION_README.md +18 -0
- package/locales/de/auth.json +3 -0
- package/locales/de/common.json +16 -0
- package/locales/de/pagination.json +6 -0
- package/locales/en/auth.json +3 -0
- package/locales/en/common.json +16 -0
- package/locales/en/pagination.json +6 -0
- package/locales/es/auth.json +3 -0
- package/locales/es/common.json +16 -0
- package/locales/es/pagination.json +6 -0
- package/locales/fr/auth.json +3 -0
- package/locales/fr/common.json +16 -0
- package/locales/fr/pagination.json +6 -0
- package/locales/ru/auth.json +3 -0
- package/locales/ru/common.json +16 -0
- package/locales/ru/pagination.json +6 -0
- package/main/i18ntk-analyze.js +625 -0
- package/main/i18ntk-autorun.js +461 -0
- package/main/i18ntk-complete.js +494 -0
- package/main/i18ntk-init.js +686 -0
- package/main/i18ntk-manage.js +848 -0
- package/main/i18ntk-sizing.js +557 -0
- package/main/i18ntk-summary.js +671 -0
- package/main/i18ntk-usage.js +1282 -0
- package/main/i18ntk-validate.js +762 -0
- package/main/ui-i18n.js +332 -0
- package/package.json +152 -0
- package/scripts/fix-missing-translation-keys.js +214 -0
- package/scripts/verify-package.js +168 -0
- package/ui-locales/de.json +637 -0
- package/ui-locales/en.json +688 -0
- package/ui-locales/es.json +637 -0
- package/ui-locales/fr.json +637 -0
- package/ui-locales/ja.json +637 -0
- package/ui-locales/ru.json +637 -0
- package/ui-locales/zh.json +637 -0
- package/utils/admin-auth.js +317 -0
- package/utils/admin-cli.js +353 -0
- package/utils/admin-pin.js +409 -0
- package/utils/detect-language-mismatches.js +454 -0
- package/utils/i18n-helper.js +128 -0
- package/utils/maintain-language-purity.js +433 -0
- package/utils/native-translations.js +478 -0
- package/utils/security.js +384 -0
- package/utils/test-complete-system.js +356 -0
- package/utils/test-console-i18n.js +402 -0
- package/utils/translate-mismatches.js +571 -0
- package/utils/validate-language-purity.js +531 -0
|
@@ -0,0 +1,637 @@
|
|
|
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
|
+
"analyze": {
|
|
124
|
+
"title": "đ Analyser les traductions"
|
|
125
|
+
},
|
|
126
|
+
"validate": {
|
|
127
|
+
"title": "â
Valider les traductions"
|
|
128
|
+
},
|
|
129
|
+
"complete": {
|
|
130
|
+
"deletingOldReport": "đïž Suppression de l'ancien rapport d'utilisation pour une nouvelle analyse",
|
|
131
|
+
"generatingFreshAnalysis": "đ GĂ©nĂ©ration d'une nouvelle analyse d'utilisation...",
|
|
132
|
+
"couldNotGenerate": "â ïž Impossible de gĂ©nĂ©rer l'analyse d'utilisation. Utilisation des clĂ©s manquantes communes.",
|
|
133
|
+
"reportNotFound": "â ïž Rapport d'utilisation introuvable. GĂ©nĂ©ration d'une nouvelle analyse...",
|
|
134
|
+
"foundMissingKeys": "đ {count} clĂ©s manquantes trouvĂ©es lors de l'analyse d'utilisation",
|
|
135
|
+
"couldNotParse": "â ïž Impossible d'analyser le rapport d'utilisation. Utilisation des clĂ©s manquantes communes.",
|
|
136
|
+
"title": "đŻ COMPLĂTION DES TRADUCTIONS",
|
|
137
|
+
"separator": "============================================================",
|
|
138
|
+
"sourceDir": "đ RĂ©pertoire source : {sourceDir}",
|
|
139
|
+
"sourceLanguage": "đ€ Langue source : {sourceLanguage}",
|
|
140
|
+
"dryRunMode": "đ§Ș Mode test - Aucun fichier ne sera modifiĂ©",
|
|
141
|
+
"languages": "đŻ Langues cibles : {languages}",
|
|
142
|
+
"addingMissingKeys": "â Ajout des clĂ©s manquantes aux fichiers de traduction...",
|
|
143
|
+
"processing": "đ Traitement de {language}...",
|
|
144
|
+
"addedKeys": "â
{count} clés ajoutées",
|
|
145
|
+
"changeDetails": "đ {file} : {key}",
|
|
146
|
+
"noChangesNeeded": "â
Aucun changement nécessaire pour {language}",
|
|
147
|
+
"summaryTitle": "đ RĂSUMĂ DE LA COMPLĂTION",
|
|
148
|
+
"totalChanges": "đ Nombre total de modifications : {totalChanges}",
|
|
149
|
+
"languagesProcessed": "đ Langues traitĂ©es : {languagesProcessed}",
|
|
150
|
+
"missingKeysAdded": "â ClĂ©s manquantes ajoutĂ©es : {missingKeysAdded}",
|
|
151
|
+
"nextStepsTitle": "đ ĂTAPES SUIVANTES",
|
|
152
|
+
"nextStep1": "1. Exécutez l'analyse d'utilisation :",
|
|
153
|
+
"nextStep2": "2. Validez les traductions :",
|
|
154
|
+
"nextStep3": "3. Analysez la complétude :",
|
|
155
|
+
"allKeysAvailable": "đ Toutes les clĂ©s de traduction sont dĂ©sormais disponibles !",
|
|
156
|
+
"runWithoutDryRun": "đĄ ExĂ©cutez sans --dry-run pour appliquer les modifications"
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"admin": {
|
|
160
|
+
"authRequired": "đ Authentification administrateur requise",
|
|
161
|
+
"invalidPin": "â PIN invalide. AccĂšs refusĂ©.",
|
|
162
|
+
"authSuccess": "â
Authentification réussie"
|
|
163
|
+
},
|
|
164
|
+
"status": {
|
|
165
|
+
"generating": "\nđ GĂ©nĂ©ration du rĂ©sumĂ© de statut...",
|
|
166
|
+
"completed": "â
Résumé de statut généré avec succÚs !",
|
|
167
|
+
"exitingCompleted": "\nđ RĂ©sumĂ© de statut terminĂ©. Fermeture...",
|
|
168
|
+
"i18nSetup": "đ Configuration I18n"
|
|
169
|
+
},
|
|
170
|
+
"common": {
|
|
171
|
+
"errorExiting": "\nđ Une erreur est survenue. Fermeture...",
|
|
172
|
+
"welcome": "đ Bienvenue dans l'outil de gestion I18n !",
|
|
173
|
+
"success": "â
Opération terminée avec succÚs !",
|
|
174
|
+
"error": "â Une erreur est survenue !"
|
|
175
|
+
},
|
|
176
|
+
"delete": {
|
|
177
|
+
"options": {
|
|
178
|
+
"title": "đïž Options de suppression",
|
|
179
|
+
"all": "1. Supprimer tous les rapports",
|
|
180
|
+
"keepLast3": "2. Conserver les 3 derniers rapports",
|
|
181
|
+
"cancel": "0. Annuler"
|
|
182
|
+
},
|
|
183
|
+
"noFiles": "đ Aucun fichier Ă supprimer."
|
|
184
|
+
},
|
|
185
|
+
"checkUsage": {
|
|
186
|
+
"help_message": "\nAnalyseur d'utilisation I18n\n\nUtilisation : node i18ntk-usage.js [options]\n\nOptions :\n --source-dir <dir> Répertoire source à analyser (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",
|
|
187
|
+
"source_directory_thissourcedir": "đ RĂ©pertoire source : {sourceDir}",
|
|
188
|
+
"i18n_directory_thisi18ndir": "đ RĂ©pertoire I18n : {i18nDir}",
|
|
189
|
+
"failed_to_parse_filename_error": "â ïž Ăchec de l'analyse de {fileName} : {errorMessage}",
|
|
190
|
+
"analyzing_source_files": "đ Analyse des fichiers source...",
|
|
191
|
+
"found_files_in_source": "đ {numFiles} fichiers trouvĂ©s dans le rĂ©pertoire source",
|
|
192
|
+
"found_thisusedkeyssize_unique_": "đŻ {usedKeysSize} clĂ©s uniques utilisĂ©es trouvĂ©es",
|
|
193
|
+
"total_key_usages_totalkeysfoun": "đ Nombre total d'utilisations des clĂ©s : {totalKeysFound}",
|
|
194
|
+
"loading_available_translation_": "đ Chargement des clĂ©s de traduction disponibles...",
|
|
195
|
+
"found_thisavailablekeyssize_av": "â
{availableKeysSize} clés disponibles trouvées",
|
|
196
|
+
"title": "đ ANALYSE DE L'UTILISATION I18N",
|
|
197
|
+
"message": "Début de l'analyse d'utilisation...",
|
|
198
|
+
"n": "\n",
|
|
199
|
+
"usage_analysis_results": "đ RĂSULTATS DE L'ANALYSE D'UTILISATION",
|
|
200
|
+
"source_files_scanned_thisfileu": "đ Fichiers source analysĂ©s : {fileUsageSize}",
|
|
201
|
+
"available_translation_keys_thi": "đ€ ClĂ©s de traduction disponibles : {availableKeysSize}",
|
|
202
|
+
"used_translation_keys_thisused": "đŻ ClĂ©s de traduction utilisĂ©es : {usedKeysSize}",
|
|
203
|
+
"dynamic_keys_detected_dynamick": "đ ClĂ©s dynamiques dĂ©tectĂ©es : {dynamicKeysLength}",
|
|
204
|
+
"unused_keys_unusedkeyslength": "â ClĂ©s inutilisĂ©es : {unusedKeysLength}",
|
|
205
|
+
"missing_keys_missingkeyslength": "â ïž ClĂ©s manquantes : {missingKeysLength}",
|
|
206
|
+
"translation_completeness_title": "đ ComplĂ©tude de la traduction :",
|
|
207
|
+
"language_completeness_stats": " {language} : {completeness}% complĂšte ({translated}/{total})",
|
|
208
|
+
"n_sample_unused_keys": "\nđ Exemple de clĂ©s inutilisĂ©es :",
|
|
209
|
+
"key": "â {key}",
|
|
210
|
+
"and_unusedkeyslength_5_more": "... et {count} autres",
|
|
211
|
+
"n_sample_missing_keys": "\nđ Exemple de clĂ©s manquantes :",
|
|
212
|
+
"and_missingkeyslength_5_more": "... et {count} autres manquantes",
|
|
213
|
+
"n_generating_detailed_report": "\nđ GĂ©nĂ©ration du rapport dĂ©taillĂ©...",
|
|
214
|
+
"report_saved_reportpath": "đ Rapport enregistrĂ© : {reportPath}",
|
|
215
|
+
"n_recommendations": "\nđĄ Recommandations :",
|
|
216
|
+
"consider_removing_unused_trans": "đïž Envisagez de supprimer les clĂ©s de traduction inutilisĂ©es",
|
|
217
|
+
"add_missing_translation_keys_t": "â ïž Ajoutez les clĂ©s manquantes pour Ă©viter les erreurs Ă l'exĂ©cution",
|
|
218
|
+
"review_dynamic_keys_manually_t": "đ VĂ©rifiez manuellement les clĂ©s dynamiques pour assurer toutes les variantes",
|
|
219
|
+
"all_translation_keys_are_prope": "đ Toutes les clĂ©s de traduction sont correctement utilisĂ©es !",
|
|
220
|
+
"n_next_steps": "\nđ Ătapes suivantes :",
|
|
221
|
+
"1_review_the_analysis_results": "1. Examinez les résultats de l'analyse ci-dessus",
|
|
222
|
+
"2_check_the_detailed_report_fo": "2. Vérifiez le rapport détaillé pour des fichiers et clés spécifiques",
|
|
223
|
+
"2_run_with_outputreport_for_de": "2. Exécutez avec --output-report pour un rapport détaillé",
|
|
224
|
+
"3_remove_unused_keys_or_add_mi": "3. Supprimez les clés inutilisées ou ajoutez celles manquantes",
|
|
225
|
+
"4_rerun_analysis_to_verify_imp": "4. Réexécutez l'analyse pour vérifier les améliorations",
|
|
226
|
+
"usage_analysis_failed": "â Ăchec de l'analyse d'utilisation :"
|
|
227
|
+
},
|
|
228
|
+
"validateTranslations": {
|
|
229
|
+
"help_message": "\nValidateur de traduction I18n\n\nUtilisation : node i18ntk-validate.js [options]\n\nOptions :\n --language <lang> Valider une langue spécifique (par défaut : toutes)\n --source-dir <dir> Répertoire source (par défaut : ./src/locales)\n --strict Activer le mode strict (les avertissements deviennent des erreurs)\n --help Afficher cette aide\n\nCommandes admin :\n --setup-admin Configurer la protection par PIN administrateur\n --disable-admin Désactiver la protection par PIN administrateur\n --admin-status Afficher le statut de la protection admin\n\nExemples :\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": "â Format d'email invalide : {email}",
|
|
231
|
+
"title": "đ VALIDATION DES TRADUCTIONS I18N",
|
|
232
|
+
"message": "=",
|
|
233
|
+
"deletedOldReport": "đïž Ancien rapport de validation supprimĂ©",
|
|
234
|
+
"sourceDirectory": "đ RĂ©pertoire source : {{dir}}",
|
|
235
|
+
"source_language_thisconfigsour": "đ€ Langue source : {{sourceLanguage}}",
|
|
236
|
+
"strictMode": "âïž Mode strict : {{mode}}",
|
|
237
|
+
"noTargetLanguages": "â Aucune langue cible trouvĂ©e.",
|
|
238
|
+
"validatingLanguages": "đŻ Validation des langues : {{langs}}",
|
|
239
|
+
"validatingLanguage": "\nđ Validation de {{lang}}...",
|
|
240
|
+
"filesCount": " đ Fichiers : {count}",
|
|
241
|
+
"keysCount": " đ€ ClĂ©s : {count}",
|
|
242
|
+
"missingFilesCount": " â Fichiers manquants : {count}",
|
|
243
|
+
"syntaxErrorsCount": " đ Erreurs de syntaxe : {count}",
|
|
244
|
+
"translationPercentage": " đ Traduction : {{percentage}}% ({{translated}}/{{total}})",
|
|
245
|
+
"n_validation_summary": "\nđ RĂSUMĂ DE VALIDATION",
|
|
246
|
+
"total_errors": "â Total des erreurs : {count}",
|
|
247
|
+
"total_warnings": "â ïž Total des avertissements : {count}",
|
|
248
|
+
"n_errors": "\nâ ERREURS :",
|
|
249
|
+
"n_warnings": "\nâ ïž AVERTISSEMENTS :",
|
|
250
|
+
"n_recommendations": "\nđ RECOMMANDATIONS",
|
|
251
|
+
"fix_errors_first": "đ§ Corriger d'abord les erreurs :",
|
|
252
|
+
"1_resolve_missing_files_and_sy": "1. Résoudre les fichiers manquants et erreurs de syntaxe",
|
|
253
|
+
"2_fix_structural_inconsistenci": "2. Corriger les incohérences structurelles",
|
|
254
|
+
"3_complete_missing_translation": "3. Compléter les traductions manquantes",
|
|
255
|
+
"4_rerun_validation": "4. Relancer la validation",
|
|
256
|
+
"address_warnings": "â ïž Traiter les avertissements :",
|
|
257
|
+
"review_warnings": "1. Examiner les avertissements ci-dessus",
|
|
258
|
+
"2_consider_running_with_strict": "2. Envisager d'exécuter en mode strict (--strict) pour une validation plus rigoureuse",
|
|
259
|
+
"all_validations_passed": "đ Toutes les validations sont passĂ©es !",
|
|
260
|
+
"consider_running_usage_analysi": "đĄ Envisager d'exĂ©cuter une analyse d'utilisation pour trouver les clĂ©s inutilisĂ©es",
|
|
261
|
+
"validation_failed": "â Validation Ă©chouĂ©e :"
|
|
262
|
+
},
|
|
263
|
+
"analyzeTranslations": {
|
|
264
|
+
"referenceLanguageFiles": "đ Fichiers de langue de rĂ©fĂ©rence : {files}",
|
|
265
|
+
"analyzingLanguage": "đ Analyse de la langue : {language}",
|
|
266
|
+
"reportTitle": "đ Rapport d'analyse de traduction pour {language}",
|
|
267
|
+
"generated": "đ
Généré : {timestamp}",
|
|
268
|
+
"status": "Statut: {translated}/{total} traduites ({percentage}%)",
|
|
269
|
+
"filesAnalyzed": "Fichiers analysés: {analyzed}/{total}",
|
|
270
|
+
"keysNeedingTranslation": "Clés nécessitant une traduction: {count}",
|
|
271
|
+
"fileBreakdown": "RĂPARTITION DES FICHIERS:",
|
|
272
|
+
"statusFileMissing": "Statut: Fichier manquant",
|
|
273
|
+
"sourceKeys": "Clés sources: {count}",
|
|
274
|
+
"translation": "Traduction: {translated}/{total} ({percentage}%)",
|
|
275
|
+
"structure": "Structure: {status}",
|
|
276
|
+
"consistent": "Cohérent",
|
|
277
|
+
"inconsistent": "Incohérent",
|
|
278
|
+
"missingKeys": "Clés manquantes: {count}",
|
|
279
|
+
"extraKeys": "Clés supplémentaires: {count}",
|
|
280
|
+
"issues": "ProblĂšmes: {count}",
|
|
281
|
+
"issueType": {
|
|
282
|
+
"not_translated": "Non traduit : {count}",
|
|
283
|
+
"empty_value": "Valeur vide : {count}",
|
|
284
|
+
"partial_translation": "Traduction partielle : {count}",
|
|
285
|
+
"same_as_source": "Identique Ă la source : {count}"
|
|
286
|
+
},
|
|
287
|
+
"key": "Clé",
|
|
288
|
+
"english": "Anglais",
|
|
289
|
+
"needsTranslation": "NĂCESSITE UNE TRADUCTION",
|
|
290
|
+
"andMoreKeys": "... et {count} clés supplémentaires",
|
|
291
|
+
"problematic_no": "Aucun problÚme de taille détecté",
|
|
292
|
+
"problematic_yes": "ProblÚmes de taille potentiels détectés",
|
|
293
|
+
"keysToTranslate": "CLĂS Ă TRADUIRE",
|
|
294
|
+
"summary": "\nđ RĂSUMĂ DE L'ANALYSE",
|
|
295
|
+
"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",
|
|
296
|
+
"starting": "đ DĂ©marrage de l'analyse des traductions...",
|
|
297
|
+
"noLanguages": "â ïž Aucune langue cible trouvĂ©e.",
|
|
298
|
+
"foundLanguages": "đ {count} langues trouvĂ©es Ă analyser : {{languages}}",
|
|
299
|
+
"analyzing": "\nđ Analyse de {{language}}...",
|
|
300
|
+
"completed": "â
Analyse terminée pour {{language}}",
|
|
301
|
+
"progress": " Progression : {{percentage}}% ({{translatedKeys}}/{{totalKeys}} clés)",
|
|
302
|
+
"reportSaved": " Rapport sauvegardé : {{reportPath}}",
|
|
303
|
+
"finished": "\nâ
Analyse terminée avec succÚs !",
|
|
304
|
+
"error": "â Analyse Ă©chouĂ©e"
|
|
305
|
+
},
|
|
306
|
+
"completeTranslations": {
|
|
307
|
+
"warning_could_not_parse_filepa": "â ïž Impossible d'analyser le fichier : {filePath}"
|
|
308
|
+
},
|
|
309
|
+
"sizing": {
|
|
310
|
+
"analyzing_file_sizes": "Analyse des tailles de fichiers en cours...",
|
|
311
|
+
"analyzing_translation_content": "Analyse du contenu des traductions en cours...",
|
|
312
|
+
"failed_to_parse_language_error": "Ăchec de l'analyse de {{language}} : {{errorMessage}}",
|
|
313
|
+
"generating_size_comparisons": "Génération des comparaisons de taille...",
|
|
314
|
+
"no_languages_found_for_comparison": "Aucune langue trouvée pour la comparaison",
|
|
315
|
+
"sizing_analysis_results": "\nđ RĂ©sultats de l'analyse des tailles",
|
|
316
|
+
"file_sizes_title": "đ Tailles des fichiers",
|
|
317
|
+
"file_sizes_header": "Langue\t\tTaille (Ko)\t\tLignes\t\tCaractĂšres",
|
|
318
|
+
"file_size_row": "{{lang}}\t\t{{sizeKB}} Ko\t\t{{lines}} lignes\t\t{{characters}} caractĂšres",
|
|
319
|
+
"language_statistics_title": "đ Statistiques des langues",
|
|
320
|
+
"language_stats_header": "Langue\t\tClés\t\tTotal CaractÚres\t\tLongueur Moy\t\tLongueur Max\t\tClés Vides",
|
|
321
|
+
"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",
|
|
322
|
+
"size_variations_title": "âïž Variations de taille",
|
|
323
|
+
"size_variations_header": "Langue\t\tDiff CaractÚres\t\tPourcentage\t\tProblématique",
|
|
324
|
+
"size_variation_row": "{{lang}}\t\t{{characterDifference}}\t\t{{percentageDifference}}%\t\t{{problematic}}",
|
|
325
|
+
"recommendations_title": "đĄ Recommandations",
|
|
326
|
+
"recommendation_item": "{{index}}. {{recommendation}}",
|
|
327
|
+
"generating_detailed_report": "\nđ GĂ©nĂ©ration du rapport dĂ©taillĂ© sur les tailles...",
|
|
328
|
+
"report_saved_to": "Rapport sauvegardé : {{reportPath}}",
|
|
329
|
+
"csv_report_saved_to": "Rapport CSV sauvegardé : {{csvPath}}",
|
|
330
|
+
"starting_i18n_sizing_analysis": "đ DĂ©marrage de l'analyse des tailles I18n...",
|
|
331
|
+
"source_directory": "Répertoire source : {{sourceDir}}",
|
|
332
|
+
"no_translation_files_found": "â Aucun fichier de traduction trouvĂ©",
|
|
333
|
+
"found_languages": "Langues trouvées : {{languages}}",
|
|
334
|
+
"analysis_completed": "â
Analyse terminée en {{duration}} ms",
|
|
335
|
+
"analysis_failed": "â Ăchec de l'analyse des tailles : {{errorMessage}}",
|
|
336
|
+
"problematic_no": "Aucun problÚme de taille détecté",
|
|
337
|
+
"problematic_yes": "ProblÚmes de taille potentiels détectés"
|
|
338
|
+
},
|
|
339
|
+
"summary": {
|
|
340
|
+
"i18nSummaryReportGenerator": "đ§ GĂNĂRATEUR DE RAPPORT RĂCAPITULATIF I18N",
|
|
341
|
+
"keysInFiles": " đ {keys} clĂ©s dans {files} fichiers",
|
|
342
|
+
"checkingInconsistentKeys": "đ VĂ©rification des clĂ©s incohĂ©rentes entre les langues...",
|
|
343
|
+
"noIssuesFound": "Aucun problĂšme dĂ©tectĂ© â votre configuration i18n est excellente !",
|
|
344
|
+
"allFilesConsistent": "Tous les fichiers de traduction sont cohérents dans toutes les langues.",
|
|
345
|
+
"recommendations": "Recommandations",
|
|
346
|
+
"nextSteps": "Prochaines étapes",
|
|
347
|
+
"nextStep1": "Examinez le rapport récapitulatif pour détecter les incohérences ou les clés manquantes.",
|
|
348
|
+
"nextStep2": "Corrigez les problÚmes signalés dans le rapport.",
|
|
349
|
+
"nextStep3": "Validez les traductions pour la pureté et la complétude linguistique.",
|
|
350
|
+
"nextStep4": "Exécutez à nouveau le rapport récapitulatif aprÚs modifications.",
|
|
351
|
+
"inconsistentKeys": "Clés incohérentes trouvées :",
|
|
352
|
+
"missingKeys": " Clés manquantes : {keys}{more}",
|
|
353
|
+
"extraKeys": " Clés supplémentaires : {keys}{more}",
|
|
354
|
+
"createMissingFiles": "Créer les fichiers manquants pour toutes les langues.",
|
|
355
|
+
"addContentToEmptyFiles": "Ajouter du contenu aux fichiers de traduction vides.",
|
|
356
|
+
"fixMalformedFiles": "Corriger les fichiers de traduction mal formés.",
|
|
357
|
+
"removeDuplicateKeys": "Supprimer les clés dupliquées des fichiers de traduction.",
|
|
358
|
+
"synchronizeKeys": "Synchroniser les clés dans toutes les langues.",
|
|
359
|
+
"splitLargeFiles": "Diviser les gros fichiers de traduction pour une meilleure maintenance.",
|
|
360
|
+
"addMoreLanguages": "Ajouter plus de langues Ă votre projet.",
|
|
361
|
+
"reportTitle": "đ Rapport rĂ©capitulatif I18N",
|
|
362
|
+
"generated": "Généré : {timestamp}",
|
|
363
|
+
"sourceDirectory": "Répertoire source : {dir}",
|
|
364
|
+
"analyzingFolder": "Analyse du dossier : {folder}",
|
|
365
|
+
"foundLanguages": "đ Langues trouvĂ©es : {languages}",
|
|
366
|
+
"referenceLanguageFiles": "Fichiers de langue de référence : {files}",
|
|
367
|
+
"analyzingLanguage": "Analyse de la langue : {language}",
|
|
368
|
+
"overview": "APERĂU",
|
|
369
|
+
"languagesCount": "đ Langues : {count}",
|
|
370
|
+
"totalFiles": "đ Total des fichiers : {count}",
|
|
371
|
+
"totalKeys": "đ€ Total des clĂ©s : {count}",
|
|
372
|
+
"avgKeysPerLanguage": "đ Moyenne des clĂ©s par langue : {count}",
|
|
373
|
+
"languagesBreakdown": "RĂPARTITION DES LANGUES",
|
|
374
|
+
"languageBreakdown": "đ {language} : {files} fichiers, {keys} clĂ©s",
|
|
375
|
+
"fileStructure": "STRUCTURE DES FICHIERS",
|
|
376
|
+
"fileKeys": "đ {file} : {keys} clĂ©s",
|
|
377
|
+
"missingInLanguages": " â ïž Manquant dans : {languages}",
|
|
378
|
+
"noIssuesConsole": "â
Aucun problĂšme trouvĂ© â votre configuration i18n est excellente ! (console)",
|
|
379
|
+
"reportSaved": "đ Rapport rĂ©capitulatif enregistrĂ© : {reportPath}",
|
|
380
|
+
"reportSaveFailed": "â Ăchec de l'enregistrement du rapport rĂ©capitulatif : {reportPath}",
|
|
381
|
+
"couldNotReadFile": "â ïž Impossible de lire le fichier : {filePath}",
|
|
382
|
+
"couldNotParseJSFile": "â ïž Impossible d'analyser le fichier JS/TS : {filePath}",
|
|
383
|
+
"errorReadingFile": "â ïž Erreur lors de la lecture du fichier {filePath} : {error}",
|
|
384
|
+
"noLanguageDirectoriesFound": "â Aucun rĂ©pertoire de langue trouvĂ© !",
|
|
385
|
+
"issuesFound": "đš PROBLĂMES TROUVĂS",
|
|
386
|
+
"missingFiles": "â Fichiers manquants :",
|
|
387
|
+
"emptyFiles": "đ Fichiers vides :",
|
|
388
|
+
"malformedFiles": "đ„ Fichiers malformĂ©s :",
|
|
389
|
+
"duplicateKeys": "đ ClĂ©s dupliquĂ©es :",
|
|
390
|
+
"couldNotFindI18nDirectory": "â Impossible de trouver le rĂ©pertoire i18n. Veuillez spĂ©cifier avec --source-dir",
|
|
391
|
+
"sourceDirectoryDoesNotExist": "â Le rĂ©pertoire source n'existe pas : {sourceDir}",
|
|
392
|
+
"generatingSummaryReport": "đ GĂ©nĂ©ration du rapport de rĂ©sumĂ©...",
|
|
393
|
+
"cleaningUpReportFiles": "đïž Nettoyage des fichiers de rapport...",
|
|
394
|
+
"couldNotDelete": "â ïž Impossible de supprimer {file} : {error}",
|
|
395
|
+
"noOldReportFilesToDelete": "đ Aucun ancien fichier de rapport Ă supprimer.",
|
|
396
|
+
"errorCleaningUpReports": "â ïž Erreur lors du nettoyage des rapports : {error}",
|
|
397
|
+
"reportFilesPreserved": "đ Fichiers de rapport conservĂ©s comme demandĂ©.",
|
|
398
|
+
"analysisComplete": "đ ANALYSE TERMINĂE",
|
|
399
|
+
"analyzedLanguages": "â
{count} langues analysées",
|
|
400
|
+
"processedFiles": "â
{count} fichiers traités",
|
|
401
|
+
"foundTranslationKeys": "â
{count} clés de traduction trouvées",
|
|
402
|
+
"errorDuringAnalysis": "â Erreur pendant l'analyse : {error}",
|
|
403
|
+
"deletedOldReportFiles": "â
{count} anciens fichiers de rapport supprimés.",
|
|
404
|
+
"helpTitle": "đ§ GĂNĂRATEUR DE RAPPORT RĂCAPITULATIF I18N",
|
|
405
|
+
"helpDescription": "Analyse la structure du dossier i18n et génÚre des rapports complets",
|
|
406
|
+
"helpUsage": "Utilisation : i18ntk summary [options]",
|
|
407
|
+
"helpOptions": "Options :",
|
|
408
|
+
"helpSourceDir": " -s, --source-dir <path> Chemin vers le répertoire des locales i18n",
|
|
409
|
+
"helpOutput": " -o, --output <file> Fichier de sortie pour le rapport",
|
|
410
|
+
"helpVerbose": " -v, --verbose Afficher la sortie détaillée",
|
|
411
|
+
"helpKeepReports": " --keep-reports Conserver tous les fichiers de rapport existants",
|
|
412
|
+
"helpDeleteReports": " --delete-reports Supprimer les anciens fichiers de rapport aprÚs génération",
|
|
413
|
+
"helpHelp": " -h, --help Afficher ce message d'aide",
|
|
414
|
+
"helpExamples": "Exemples :",
|
|
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": "RAPPORT D'ANALYSE D'UTILISATION I18N - Version 1.4.3",
|
|
421
|
+
"usageReportGenerated": "Généré : {timestamp}",
|
|
422
|
+
"usageReportSourceDir": "Répertoire source : {sourceDir}",
|
|
423
|
+
"usageReportI18nDir": "Répertoire I18n : {i18nDir}",
|
|
424
|
+
"usageReportSummary": "RĂSUMĂ",
|
|
425
|
+
"usageReportSourceFilesScanned": "đ Fichiers source analysĂ©s : {count}",
|
|
426
|
+
"usageReportTranslationFilesFound": "đ Fichiers de traduction trouvĂ©s : {count}",
|
|
427
|
+
"usageReportAvailableKeys": "đ€ ClĂ©s de traduction disponibles : {count}",
|
|
428
|
+
"usageReportUsedKeys": "đŻ ClĂ©s de traduction utilisĂ©es : {count}",
|
|
429
|
+
"usageReportDynamicKeys": "đ ClĂ©s dynamiques dĂ©tectĂ©es : {count}",
|
|
430
|
+
"usageReportUnusedKeys": "â ClĂ©s inutilisĂ©es : {count}",
|
|
431
|
+
"usageReportMissingKeys": "â ïž ClĂ©s manquantes : {count}",
|
|
432
|
+
"usageReportNotTranslatedKeys": "đ ClĂ©s NON_TRADUITES : {count}",
|
|
433
|
+
"usageReportTranslationCompleteness": "COMPLĂTUDE DE TRADUCTION",
|
|
434
|
+
"usageReportLanguageCompleteness": "đ {language} : {completeness}% complĂšte ({translated}/{total})",
|
|
435
|
+
"usageReportNotTranslatedInLanguage": " đ NON_TRADUITES : {count} clĂ©s",
|
|
436
|
+
"usageReportTranslationFilesDiscovered": "FICHIERS DE TRADUCTION DĂCOUVERTS",
|
|
437
|
+
"usageReportFileInfo": "đ {relativePath} ({namespace}, {type})",
|
|
438
|
+
"usageReportUnusedKeysSection": "CLĂS DE TRADUCTION INUTILISĂES",
|
|
439
|
+
"usageReportUnusedKeysDescription": "Ces clés existent dans les fichiers de traduction mais ne sont pas utilisées dans le code source :",
|
|
440
|
+
"usageReportMoreUnusedKeys": "... et {count} clés inutilisées supplémentaires",
|
|
441
|
+
"usageReportMissingKeysSection": "CLĂS DE TRADUCTION MANQUANTES",
|
|
442
|
+
"usageReportMissingKeysDescription": "Ces clés sont utilisées dans le code source mais manquent dans les fichiers de traduction :",
|
|
443
|
+
"usageReportUsedIn": "đ UtilisĂ© dans : {filePath}",
|
|
444
|
+
"usageReportMoreFiles": "... et {count} fichiers supplémentaires",
|
|
445
|
+
"usageReportDynamicKeysSection": "CLĂS DE TRADUCTION DYNAMIQUES",
|
|
446
|
+
"usageReportDynamicKeysDescription": "Ces clés utilisent des motifs dynamiques et nécessitent une vérification manuelle :",
|
|
447
|
+
"usageReportFileUsageBreakdown": "RĂPARTITION DE L'UTILISATION DES FICHIERS",
|
|
448
|
+
"usageReportFileUsage": "đ {filePath} ({count} clĂ©s)",
|
|
449
|
+
"usageReportMoreFileUsage": "... et {count} fichiers supplémentaires",
|
|
450
|
+
"usageReportSaved": "đ Rapport enregistrĂ© dans : {filepath}",
|
|
451
|
+
"usageReportSaveFailed": "â Ăchec de l'enregistrement du rapport : {error}",
|
|
452
|
+
"analysisCompletedSuccessfully": "â
Analyse terminée avec succÚs",
|
|
453
|
+
"analysisFailed": "â Analyse Ă©chouĂ©e : {error}",
|
|
454
|
+
"analysisFailedError": "â Analyse Ă©chouĂ©e",
|
|
455
|
+
"usageReportUnusedTranslationKeys": "CLĂS DE TRADUCTION INUTILISĂES",
|
|
456
|
+
"usageReportUnusedKey": "â {key}",
|
|
457
|
+
"usageReportMissingTranslationKeys": "CLĂS DE TRADUCTION MANQUANTES",
|
|
458
|
+
"usageReportMissingKey": "â ïž {key}",
|
|
459
|
+
"usageReportDynamicTranslationKeys": "CLĂS DE TRADUCTION DYNAMIQUES",
|
|
460
|
+
"usageReportDynamicKey": "đ {key}",
|
|
461
|
+
"unusedKeysCount": " â ClĂ©s inutilisĂ©es : {count}",
|
|
462
|
+
"missingKeysCount": " â ïž ClĂ©s manquantes : {count}",
|
|
463
|
+
"translationCompletenessTitle": "\nđ ComplĂ©tude de traduction :",
|
|
464
|
+
"languageCompletenessStats": " {language} : {completeness}% complĂšte ({translated}/{total})",
|
|
465
|
+
"configuration": "đ§ Configuration :",
|
|
466
|
+
"sourceLanguage": " Langue source : {sourceLanguage}",
|
|
467
|
+
"supportedExtensions": " Extensions supportées : {extensions}",
|
|
468
|
+
"excludedFiles": " Fichiers exclus : {files}",
|
|
469
|
+
"foundIssues": "â ïž {count} problĂšmes trouvĂ©s nĂ©cessitant une attention",
|
|
470
|
+
"fatalError": "â Erreur fatale : {error}",
|
|
471
|
+
"issuesFoundTitle": "PROBLĂMES TROUVĂS",
|
|
472
|
+
"missingFilesTitle": "â Fichiers manquants :",
|
|
473
|
+
"emptyFilesTitle": "đ Fichiers vides :",
|
|
474
|
+
"malformedFilesTitle": "đ„ Fichiers malformĂ©s :",
|
|
475
|
+
"duplicateKeysTitle": "đ ClĂ©s dupliquĂ©es :"
|
|
476
|
+
},
|
|
477
|
+
"hardcodedTexts": {
|
|
478
|
+
"securityUnknownCommandArg": "Sécurité : Argument de commande inconnu",
|
|
479
|
+
"securityUnknownConfigKey": "Sécurité : Clé de configuration inconnue",
|
|
480
|
+
"translationNotFound": "Traduction non trouvée pour la clé",
|
|
481
|
+
"noSourceFilesFound": "Aucun fichier source trouvé à analyser.",
|
|
482
|
+
"usageAnalysisCompleted": "â
Analyse d'utilisation terminée avec succÚs",
|
|
483
|
+
"analyzingTranslationCompleteness": "đ Analyse de la complĂ©tude des traductions...",
|
|
484
|
+
"analysisCompletedSuccessfully": "Analyse terminée avec succÚs",
|
|
485
|
+
"foundTranslationFiles": "đ {count} fichiers de traduction trouvĂ©s",
|
|
486
|
+
"processedFiles": "đ {processedFiles}/{totalFiles} fichiers traitĂ©s...",
|
|
487
|
+
"i18nDirectoryNotFound": "Répertoire i18n non trouvé : {i18nDir}",
|
|
488
|
+
"noTranslationLanguagesFound": "Aucune langue de traduction trouvée.",
|
|
489
|
+
"failedToAnalyzeFile": "Ăchec de l'analyse de {filePath} : {error}",
|
|
490
|
+
"failedToAnalyzeLanguage": "Ăchec de l'analyse de la langue {language} : {error}",
|
|
491
|
+
"translationCompletenessAnalysisFailed": "Ăchec de l'analyse de complĂ©tude des traductions : {error}",
|
|
492
|
+
"invalidChoiceSelectRange": "Sélection invalide. Veuillez sélectionner une plage de {range}.",
|
|
493
|
+
"errorGeneratingStatusSummary": "Erreur lors de la génération du résumé de statut : {error}",
|
|
494
|
+
"debugToolNotFound": "Outil de débogage non trouvé : {tool}",
|
|
495
|
+
"errorRunningDebugTool": "Erreur lors de l'exécution de l'outil de débogage : {error}",
|
|
496
|
+
"autoDetectedI18nDirectory": "Répertoire i18n détecté automatiquement : {directory}",
|
|
497
|
+
"executingCommand": "Exécution de la commande : {command}",
|
|
498
|
+
"unknownCommand": "Commande inconnue : {command}",
|
|
499
|
+
"errorExecutingCommand": "Erreur lors de l'exécution de la commande : {error}",
|
|
500
|
+
"mainDebuggerSystemDiagnostics": "Diagnostics du systÚme de débogage principal",
|
|
501
|
+
"consoleTranslationsCheck": "Vérification des traductions de console",
|
|
502
|
+
"exportMissingKeys": "đ Exporter les ClĂ©s Manquantes - Exporter les clĂ©s de traduction manquantes",
|
|
503
|
+
"replaceHardcodedConsole": "đ Remplacer la Console CodĂ©e - Convertir les messages codĂ©s",
|
|
504
|
+
"consoleKeyChecker": "â
Vérificateur de Clés de Console - Valider les clés de traduction de console",
|
|
505
|
+
"debugLogs": "đ Journaux de DĂ©bogage - Voir les journaux de dĂ©bogage rĂ©cents",
|
|
506
|
+
"backToMainMenu": "â Retour au Menu Principal",
|
|
507
|
+
"runningDebugTool": "đ§ ExĂ©cution de {displayName}...",
|
|
508
|
+
"recentDebugLogs": "đ Journaux de dĂ©bogage rĂ©cents",
|
|
509
|
+
"noDebugLogsFound": "đ Aucun journal de dĂ©bogage trouvĂ©.",
|
|
510
|
+
"debugLogsDirectoryNotFound": "đ RĂ©pertoire des journaux de dĂ©bogage introuvable.",
|
|
511
|
+
"errorReadingDebugLogs": "â Erreur lors de la lecture des journaux de dĂ©bogage : {error}",
|
|
512
|
+
"debugLogSelectPrompt": "Sélectionner le journal à afficher (1-{count}) ou 0 pour revenir : ",
|
|
513
|
+
"debugLogError": "Erreur lors de la lecture des journaux de débogage :",
|
|
514
|
+
"missingRequiredFile": "â Fichier/rĂ©pertoire requis manquant : {file}",
|
|
515
|
+
"runInitializationFirst": "đ§ Veuillez d'abord exĂ©cuter l'initialisation : node i18ntk-init.js",
|
|
516
|
+
"initializationCheckPassed": "â
Vérification de l'initialisation réussie",
|
|
517
|
+
"runningStep": "đ ExĂ©cution : {stepName}",
|
|
518
|
+
"commandStep": " Commande : {command}",
|
|
519
|
+
"stepCompleted": "â
{stepName} terminé",
|
|
520
|
+
"stepCompletedWithDuration": "â
{stepName} terminé en {duration}ms",
|
|
521
|
+
"stepFailed": "â {stepName} a Ă©chouĂ© : {error}",
|
|
522
|
+
"stepFailedWithDetails": "â {stepName} a Ă©chouĂ© :\n Erreur : {error}",
|
|
523
|
+
"requiredStepFailed": "đ Ătape requise a Ă©chouĂ©. ArrĂȘt de l'exĂ©cution.",
|
|
524
|
+
"optionalStepFailed": "â ïž Ătape optionnelle a Ă©chouĂ©. Continuation...",
|
|
525
|
+
"startingAutoRunWorkflow": "đ DĂ©marrage du Flux de Travail Auto-Run",
|
|
526
|
+
"workflowIncludes": "đ Le flux de travail comprend {stepCount} Ă©tapes:",
|
|
527
|
+
"stepListItem": " {index}. {stepName} {required}",
|
|
528
|
+
"startingExecution": "â±ïž DĂ©marrage de l'exĂ©cution...",
|
|
529
|
+
"workflowStopped": "đ Flux de travail arrĂȘtĂ© en raison de l'Ă©chec d'une Ă©tape requise.",
|
|
530
|
+
"runningSelectedSteps": "đŻ ExĂ©cution des Ătapes SĂ©lectionnĂ©es",
|
|
531
|
+
"invalidStepNumber": "â NumĂ©ro d'Ă©tape invalide: {stepNum}",
|
|
532
|
+
"executionReport": "đ RAPPORT D'EXĂCUTION",
|
|
533
|
+
"successfulSteps": "â
Réussies: {successful}",
|
|
534
|
+
"failedSteps": "â ĂchouĂ©es: {failed}",
|
|
535
|
+
"requiredFailedSteps": "đŽ Requises ĂchouĂ©es: {requiredFailed}",
|
|
536
|
+
"stepDetails": "đ DĂ©tails de l'Ătape:",
|
|
537
|
+
"stepResult": " {status} {required} {step}{duration}",
|
|
538
|
+
"stepError": " Erreur: {error}",
|
|
539
|
+
"reportSaved": "đŸ Rapport sauvegardĂ© dans: {reportPath}",
|
|
540
|
+
"overallStatus": "đ Ătat GĂ©nĂ©ral: {status}",
|
|
541
|
+
"customSettingsConfiguration": "đ§ Configuration des ParamĂštres PersonnalisĂ©s",
|
|
542
|
+
"pressEnterForDefaults": "Appuyez sur Entrée pour utiliser les valeurs par défaut ou tapez de nouvelles valeurs:",
|
|
543
|
+
"settingsUpdatedSuccessfully": "â
ParamĂštres mis Ă jour avec succĂšs!",
|
|
544
|
+
"errorConfiguringSettings": "â Erreur lors de la configuration des paramĂštres: {error}",
|
|
545
|
+
"autoRunScriptTitle": "đ€ Script d'Auto-ExĂ©cution I18N",
|
|
546
|
+
"usageInstructions": "Utilisation:",
|
|
547
|
+
"runAllSteps": " node auto-run.js # Exécuter toutes les étapes",
|
|
548
|
+
"configureFirst": " node auto-run.js --config # Configurer les paramĂštres d'abord",
|
|
549
|
+
"runSpecificSteps": " node auto-run.js --steps 1,2,3 # Exécuter des étapes spécifiques",
|
|
550
|
+
"showHelp": " node auto-run.js --help # Afficher cette aide",
|
|
551
|
+
"availableSteps": "Ătapes Disponibles:",
|
|
552
|
+
"stepListHelp": " {index}. {stepName} {required}",
|
|
553
|
+
"examplesTitle": "Exemples:",
|
|
554
|
+
"configurationComplete": "đ Configuration terminĂ©e! Vous pouvez maintenant exĂ©cuter l'auto-runner avec:",
|
|
555
|
+
"runAutoRunner": " node auto-run.js",
|
|
556
|
+
"configurationFailed": "â Configuration Ă©chouĂ©e: {error}",
|
|
557
|
+
"noValidStepNumbers": "â Aucun numĂ©ro d'Ă©tape valide fourni",
|
|
558
|
+
"autoRunFailed": "â Auto-exĂ©cution Ă©chouĂ©e: {error}",
|
|
559
|
+
"stepRunning": "đ ExĂ©cution de l'Ă©tape: {stepName}",
|
|
560
|
+
"selectOptionPrompt": "Sélectionnez une option (0-13): ",
|
|
561
|
+
"selectDebugToolPrompt": "Sélectionnez un outil de débogage (0-6): ",
|
|
562
|
+
"pressEnterToContinue": "đ Appuyez sur EntrĂ©e pour continuer...",
|
|
563
|
+
"selectLogPrompt": "Sélectionnez un log à afficher (1-{count}) ou 0 pour revenir: ",
|
|
564
|
+
"workflowCompleted": "đ Flux de travail terminĂ©!"
|
|
565
|
+
},
|
|
566
|
+
"help": {
|
|
567
|
+
"usage": "Utilisation :",
|
|
568
|
+
"interactiveMode": " node i18ntk-manage.js # Mode interactif",
|
|
569
|
+
"initProject": " node i18ntk-manage.js init # Initialiser le projet",
|
|
570
|
+
"analyzeTranslations": " node i18ntk-manage.js analyze # Analyser les traductions",
|
|
571
|
+
"validateTranslations": " node i18ntk-manage.js validate # Valider les traductions",
|
|
572
|
+
"checkUsage": " node i18ntk-manage.js usage # Vérifier l'utilisation",
|
|
573
|
+
"showHelp": " node i18ntk-manage.js help # Afficher l'aide",
|
|
574
|
+
"availableCommands": "\nCommandes Disponibles :",
|
|
575
|
+
"initCommand": " init - Initialiser la structure i18n",
|
|
576
|
+
"analyzeCommand": " analyze - Analyser la complétude des traductions",
|
|
577
|
+
"validateCommand": " validate - Valider les fichiers de traduction",
|
|
578
|
+
"usageCommand": " usage - Vérifier l'utilisation des clés de traduction",
|
|
579
|
+
"sizingCommand": " sizing - Analyser la taille des traductions",
|
|
580
|
+
"completeCommand": " complete - Compléter les traductions manquantes",
|
|
581
|
+
"summaryCommand": " summary - Générer un rapport de résumé",
|
|
582
|
+
"debugCommand": "debug - Exécuter l'analyse de débogage"
|
|
583
|
+
},
|
|
584
|
+
"complete": {
|
|
585
|
+
"nextStep1": "1. Vérifier l'analyse d'utilisation :",
|
|
586
|
+
"nextStep2": "2. Valider les traductions :",
|
|
587
|
+
"nextStep3": "3. Analyser la complétude :",
|
|
588
|
+
"andMore": "... et {count} de plus"
|
|
589
|
+
},
|
|
590
|
+
"usage": {
|
|
591
|
+
"analysisCompletedSuccessfully": "â
Analyse d'utilisation terminée avec succÚs",
|
|
592
|
+
"analysisFailedError": "â Analyse d'utilisation Ă©chouĂ©e :",
|
|
593
|
+
"detectedSourceDirectory": "đ RĂ©pertoire source dĂ©tectĂ© :",
|
|
594
|
+
"detectedI18nDirectory": "đ RĂ©pertoire i18n dĂ©tectĂ© :",
|
|
595
|
+
"foundTranslationFiles": "đ {count} fichiers de traduction trouvĂ©s",
|
|
596
|
+
"invalidPattern": "Motif invalide :",
|
|
597
|
+
"patternMatchLimitReached": "Limite de correspondance de motif atteinte pour le fichier :",
|
|
598
|
+
"patternExecutionFailed": "Exécution du motif échouée pour",
|
|
599
|
+
"failedToExtractKeys": "Ăchec de l'extraction des clĂ©s de",
|
|
600
|
+
"failedToProcessFile": "Ăchec du traitement du fichier",
|
|
601
|
+
"errorReadingI18nDirectory": "Erreur lors de la lecture du répertoire i18n :",
|
|
602
|
+
"notTranslatedKeysTotal": "đ ClĂ©s NON_TRADUITES : {total}",
|
|
603
|
+
"reviewNotTranslatedKeys": "đ Examiner {total} clĂ©s NON_TRADUITES dans toutes les langues",
|
|
604
|
+
"analysisCompletedSuccessfullySimple": "\nâ
Analyse terminée avec succÚs",
|
|
605
|
+
"analysisFailedResult": "\nâ Analyse Ă©chouĂ©e :",
|
|
606
|
+
"analysisFailedGeneral": "\nâ Analyse Ă©chouĂ©e :",
|
|
607
|
+
"title": "RAPPORT D'ANALYSE D'UTILISATION I18N",
|
|
608
|
+
"generatedAt": "Généré le : {timestamp}",
|
|
609
|
+
"sourceDirectory": "Répertoire source : {sourceDir}",
|
|
610
|
+
"i18nDirectory": "Répertoire I18n : {i18nDir}",
|
|
611
|
+
"sourceFilesScanned": "Fichiers source analysés : {count}",
|
|
612
|
+
"translationFilesFound": "Fichiers de traduction trouvés : {count}",
|
|
613
|
+
"availableKeys": "Clés de traduction disponibles : {count}",
|
|
614
|
+
"usedKeys": "Clés de traduction utilisées : {count}",
|
|
615
|
+
"dynamicKeys": "Clés dynamiques détectées : {count}",
|
|
616
|
+
"unusedKeys": "Clés de traduction inutilisées : {count}",
|
|
617
|
+
"missingKeys": "Clés de traduction manquantes : {count}",
|
|
618
|
+
"notTranslatedKeys": "Clés NON_TRADUITES : {count}",
|
|
619
|
+
"translationCompleteness": "COMPLĂTUDE DE TRADUCTION",
|
|
620
|
+
"translationFilesDiscovered": "FICHIERS DE TRADUCTION DĂCOUVERTS",
|
|
621
|
+
"unusedKeysSection": "CLĂS DE TRADUCTION INUTILISĂES",
|
|
622
|
+
"unusedKeysDescription": "Ces clés existent dans les fichiers de traduction mais ne sont pas utilisées dans le code source :",
|
|
623
|
+
"missingKeysSection": "CLĂS DE TRADUCTION MANQUANTES",
|
|
624
|
+
"missingKeysDescription": "Ces clés sont utilisées dans le code source mais manquent dans les fichiers de traduction :",
|
|
625
|
+
"dynamicKeysSection": "CLĂS DE TRADUCTION DYNAMIQUES",
|
|
626
|
+
"dynamicKeysDescription": "Ces clés sont générées dynamiquement et peuvent nécessiter une vérification manuelle :",
|
|
627
|
+
"fileUsageBreakdown": "RĂPARTITION DE L'UTILISATION DES FICHIERS",
|
|
628
|
+
"fileUsageDescription": "Utilisation des clés de traduction par fichier source :",
|
|
629
|
+
"reportSavedTo": "đ Rapport enregistrĂ© dans : {reportPath}",
|
|
630
|
+
"failedToSaveReport": "â Ăchec de l'enregistrement du rapport : {error}",
|
|
631
|
+
"analysisFailed": "â Analyse d'utilisation Ă©chouĂ©e",
|
|
632
|
+
"unusedKeysCount": "â ClĂ©s inutilisĂ©es : {count}",
|
|
633
|
+
"missingKeysCount": "â ïž ClĂ©s manquantes : {count}",
|
|
634
|
+
"translationCompletenessTitle": "đ ComplĂ©tude de traduction :",
|
|
635
|
+
"languageCompletenessStats": " {language} : {completeness}% complĂšte ({translated}/{total})"
|
|
636
|
+
}
|
|
637
|
+
}
|