i18ntk
Version:
i18ntk (i18n Toolkit) - A comprehensive, enterprise-grade internationalization (i18n) management toolkit for JavaScript/TypeScript projects with advanced analysis, validation, and automation features
740 lines • 123 kB
JSON
{
"meta": {
"version": "1.5.3",
"consolidated": "2025-08-06T14:36:37.494Z",
"sourceFiles": 256
},
"common": {
"welcome": "Bienvenue",
"hello": "Bonjour",
"goodbye": "Au revoir",
"yes": "Oui",
"no": "Non",
"save": "Sauvegarder",
"cancel": "Annuler",
"delete": "Supprimer",
"edit": "Éditer",
"loading": "Chargement...",
"offlineTitle": "Vous êtes hors ligne",
"offlineMessage": "Vous êtes hors ligne",
"tryReconnect": "Essayer de se reconnecter",
"logout": "Déconnexion",
"login": "Connexion",
"amount": "Montant",
"success": "Succès",
"error": "Erreur",
"warning": "Avertissement",
"info": "Info :",
"debug": "Débogage",
"progress": "Progression :",
"remaining": "Restant :",
"total": "Total :",
"completed": "7. Terminé avec succès !",
"missing": "Manquant",
"partial": "Partiel",
"sameAsSource": "Identique à la source :",
"formatMismatch": "Format non correspondant :",
"typeMismatch": "Type non correspondant :",
"structureMismatch": "Structure non correspondante :",
"invalidOption": "Option invalide",
"separator": "==================================================",
"initializationFailed": "❌ Échec de l'initialisation : {error}",
"stackTrace": "Trace de pile : {stack}",
"pressEnterToContinue": "Appuyez sur Entrée pour continuer...",
"pressEnterToReturn": "Appuyez sur Entrée pour revenir au menu principal...",
"stepCompleted": "Étape '{stepName}' terminée.",
"stepFailed": "Étape '{stepName}' échouée.",
"runningStep": "Exécution de l'étape : {stepName}",
"command": "Commande : {command}",
"startingWorkflow": "Démarrage du flux de travail...",
"workflowCompleted": "Flux de travail terminé.",
"checkReports": "Vérifiez les rapports pour plus de détails.",
"errorExecutingCommand": "Error executing command: {error}",
"genericError": "❌ Error: {{error}}",
"errorGeneratingStatusSummary": "Error generating status summary: {error}",
"errorRunningDebugTool": "Error running debug tool '{displayName}': {error}",
"errorReadingDebugLogs": "Error reading debug logs: {error}",
"errorAnalyzingLogFile": "Error analyzing log file: {error}",
"errorAnalyzingTranslationKeys": "Error analyzing translation keys: {error}",
"errorAnalyzingTranslationCompleteness": "Error analyzing translation completeness: {error}",
"errorAnalyzingTranslationFormat": "Error analyzing translation format: {error}",
"errorAnalyzingTranslationType": "Error analyzing translation type: {error}",
"errorAnalyzingTranslationStructure": "Error analyzing translation structure: {error}",
"errorAnalyzingTranslationFormatMismatch": "Error analyzing translation format mismatch: {error}",
"errorAnalyzingTranslationTypeMismatch": "Error analyzing translation type mismatch: {error}",
"errorAnalyzingTranslationStructureMismatch": "Error analyzing translation structure mismatch: {error}",
"errorAnalyzingTranslationSameAsSource": "Error analyzing translation same as source: {error}",
"title": "Statut",
"nextStep1": "1. Vérifier l'analyse d'utilisation :",
"nextStep2": "2. Valider les traductions :",
"nextStep3": "3. Analyser l'exhaustivité :",
"nextStep4": "4. Compléter les traductions manquantes :",
"nextStep5": "5. Générer le rapport de synthèse :",
"nextStep6": "6. Réviser et finaliser les traductions :",
"generating": "Génération du rapport de synthèse...",
"review": "Révision des traductions...",
"finalizing": "Finalisation des traductions...",
"finalized": "Finalisé avec succès !",
"errors": "Erreurs :",
"warnings": "Avertissements :",
"completedKeys": "Clés complétées :",
"missingKeys": "Clés manquantes :",
"partialKeys": "Clés partielles :"
},
"analyze": {
"help_message": "\nAnalyseur de Traduction I18n\n\nUtilisation: node i18ntk-analyze.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-analyze.js --output-report\n node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-analyze.js --output-dir=./analysis --output-report\n",
"source_directory": "📁 Répertoire source: {sourceDir}",
"i18n_directory": "🌐 Répertoire i18n: {i18nDir}",
"loading_translation_files": "📋 Chargement des fichiers de traduction...",
"sourceDirectoryLabel": "📁 Répertoire Source: {{sourceDir}}",
"sourceLanguageLabel": "🌍 Langue Source: {{sourceLanguage}}",
"strictModeLabel": "⚙️ Mode Strict: {{mode}}\n",
"found_translation_files_count": "✅ Trouvés {count} fichiers de traduction",
"analyzing_translations": "🔍 Analyse des traductions...",
"analysis_completed_successfully": "🎉 Analyse terminée avec succès !",
"analysis_results": "📊 RÉSULTATS DE L'ANALYSE",
"language_analysis_stats": " {language}: {translatedKeys}/{totalKeys} ({percentage}% traduit)",
"sample_missing_keys": "\nExemple de clés manquantes:",
"missing_key": "- {key}",
"and_more_missing": "...et {count} de plus.",
"sample_unused_keys": "\nExemple de clés inutilisées:",
"unused_key": "- {key}",
"and_more_unused": "...et {count} de plus.",
"recommendations": "\n📋 RECOMMANDATIONS",
"add_missing_translations": "💡 Ajouter les traductions manquantes pour améliorer la couverture.",
"remove_unused_translations": "💡 Supprimer les traductions inutilisées pour garder votre projet propre.",
"next_steps": "\n📋 PROCHAINES ÉTAPES",
"review_analysis_results": "1. Examiner les résultats de l'analyse dans la console ou le rapport généré.",
"run_with_output_report": "2. Exécuter avec --output-report pour un rapport détaillé.",
"add_or_remove_translations": "3. Ajouter les traductions manquantes ou supprimer les inutilisées.",
"rerun_analysis": "4. Relancer l'analyse pour vérifier les améliorations.",
"analysis_summary": "📊 RÉSUMÉ DE L'ANALYSE",
"source_files_scanned": "Fichiers source analysés: {fileCount}",
"translation_files_checked": "Fichiers de traduction vérifiés: {translationFileCount}",
"total_keys": "Clés totales: {totalKeys}",
"translated_keys": "Clés traduites: {translatedKeys}",
"missing_keys": "Clés manquantes: {missingKeys}",
"unused_keys": "Clés inutilisées: {unusedKeys}",
"translation_coverage": "Couverture de traduction: {coverage}%",
"analysis_passed_for_language": "✅ Analyse réussie pour {language}",
"analysis_failed_for_language": "❌ Analyse échouée pour {language} ({missingKeys} manquantes, {unusedKeys} inutilisées)",
"starting": "🔍 Démarrage de l'analyse de traduction...",
"foundLanguages": "📋 Trouvées {count} langues à analyser: {languages}",
"analyzing": "🔄 Analyse de {language}...",
"reportTitle": "📊 RAPPORT D'ANALYSE DE TRADUCTION",
"generated": "Généré: {timestamp}",
"status": "Statut: {translated}/{total} clés ({percentage}% traduit)",
"filesAnalyzed": "Fichiers analysés: {analyzed}/{total}",
"keysNeedingTranslation": "Clés nécessitant une traduction: {count}",
"fileBreakdown": "📋 DÉCOMPOSITION DES FICHIERS",
"error": "Erreur",
"completed": "✅ Analyse terminée pour {language}",
"progress": "📊 Progression Globale: {translated}/{total} langues traitées",
"reportSaved": " Rapport sauvegardé: {reportPath}",
"summary": "📊 RÉSUMÉ DE L'ANALYSE",
"finished": "✅ Analyse terminée avec succès !",
"statusFileMissing": "❌ Fichier de traduction manquant",
"sourceKeys": "📊 Clés source: {count}",
"translation": "📊 Traduction: {translated}/{total} ({percentage}%)",
"structure": "🗂️ Structure: {status}",
"consistent": "Consistente",
"inconsistent": "Inconsistante",
"missingKeys": "Clés manquantes: {count}",
"extraKeys": "Clés supplémentaires: {count}",
"issues": "⚠️ Problèmes trouvés: {count}",
"issueType": {
"not_translated": "Non traduit: {count}",
"empty_value": "Valeurs vides: {count}",
"partial_translation": "Traductions partielles: {count}",
"format_mismatch": "Discordances de format: {count}",
"type_mismatch": "Discordances de type: {count}",
"structure_mismatch": "Discordances de structure: {count}",
"same_as_source": "Identique à la source: {count}"
},
"keysToTranslate": "📋 CLÉS À TRADUIRE",
"key": "Clé",
"english": "Anglais",
"needsTranslation": "BESOIN DE TRADUCTION",
"andMoreKeys": "...et {count} clés supplémentaires.",
"noLanguages": "⚠️ Aucune langue cible trouvée.",
"languageStats": "{language}: {percentage}% complet ({translated}/{total} clés)",
"invalidReportFilePath": "Chemin de fichier de rapport invalide",
"failedToWriteReportFile": "Échec de l'écriture sécurisée du fichier de rapport"
},
"complete": {
"configLoadedSuccessfully": "Configuration chargée avec succès",
"configLoadingFailed": "Échec du chargement de la configuration",
"title": "🌍 COMPLÉTION DE TRADUCTION I18N",
"separator": "============================================================",
"sourceDir": "📁 Répertoire source : {sourceDir}",
"sourceLanguage": "🌐 Langue source : {sourceLanguage}",
"dryRunMode": "🧪 Mode test - aucune modification ne sera appliquée",
"languages": "🌍 Langues disponibles : {languages}",
"addingMissingKeys": "➕ Ajout des clés manquantes aux fichiers de traduction...",
"processing": "🔄 Traitement de {language}...",
"addedKeys": "✅ {count} clés manquantes ajoutées",
"noChangesNeeded": "✅ Aucune modification nécessaire pour {language}",
"summaryTitle": "📊 RÉSUMÉ DE COMPLÉTION",
"totalChanges": "📝 Modifications totales : {totalChanges}",
"languagesProcessed": "🌍 Langues traitées : {languagesProcessed}",
"missingKeysAdded": "➕ Clés manquantes ajoutées : {missingKeysAdded}",
"nextStepsTitle": "📋 ÉTAPES SUIVANTES",
"nextStep1": "1. Exécuter l'analyse d'utilisation :",
"nextStep2": " node i18ntk-usage.js --output-report",
"nextStep3": "2. Valider les traductions :",
"nextStep4": " node i18ntk-validate.js",
"nextStep5": "3. Analyser les motifs :",
"nextStep6": " node i18ntk-analyze.js",
"allKeysAvailable": "🎉 Toutes les clés de traduction sont maintenant disponibles !",
"runWithoutDryRun": "💡 Exécuter sans --dry-run pour appliquer les modifications",
"deletingOldReport": "🗑️ Suppression de l'ancien rapport...",
"generatingFreshAnalysis": "📊 Génération d'une nouvelle analyse d'utilisation...",
"couldNotGenerate": "❌ Impossible de générer l'analyse d'utilisation",
"reportNotFound": "📋 Rapport d'utilisation introuvable. Utilisation des clés communes...",
"foundMissingKeys": "📋 Trouvé {count} clés manquantes depuis l'analyse d'utilisation",
"couldNotParse": "❌ Impossible d'analyser le rapport d'utilisation. Utilisation des clés communes...",
"errorDuringCompletion": "❌ Erreur lors de la finalisation : {error}",
"fatalError": "❌ Erreur fatale : {error}",
"configurationValidationFailed": "Échec de la validation de configuration : champs requis manquants"
},
"sizing": {
"separator": "================================================================================",
"lineSeparator": "--------------------------------------------------------------------------------",
"analysisStats": "{{stats}}",
"sourceDirectoryLabel": "📁 Répertoire source : {{sourceDir}}",
"sourceLanguageLabel": "🌍 Langue source : {{sourceLanguage}}",
"strictModeLabel": "⚙️ Mode strict : {{mode}}",
"invalidSourceDirectoryError": "Chemin du répertoire source invalide : {{sourceDir}}",
"sourceDirectoryNotFoundError": "Répertoire source introuvable : {{sourceDir}}",
"invalidOutputDirectoryError": "Chemin du répertoire de sortie invalide : {{outputDir}}",
"invalidReportFileError": "Chemin du fichier de rapport invalide",
"problematic_keys": "Clés problématiques : {problematicKeys}",
"problematicKeysLabel": "Clés problématiques : {problematicKeys}",
"long_translations": "Traductions longues : {longTranslations}",
"failedToSaveReportError": "Échec de l'enregistrement sécurisé du rapport",
"invalidCsvFileError": "Chemin du fichier CSV invalide",
"failedToSaveCsvError": "Échec de l'enregistrement sécurisé du rapport CSV",
"fatalError": "❌ L'analyse du dimensionnement a échoué : {{error}}",
"starting_i18n_sizing_analysis": "Démarrage de l'analyse du dimensionnement i18n...",
"source_directory": "Répertoire source : {{sourceDir}}",
"found_languages": "Langues trouvées : {{languages}}",
"analyzing_file_sizes": "Analyse des tailles de fichiers...",
"analyzing_translation_content": "Analyse du contenu des traductions...",
"generating_size_comparisons": "Génération des comparaisons de taille...",
"no_languages_found_for_comparison": "Aucune langue trouvée pour la comparaison",
"sizing_analysis_results": "Résultats de l'analyse du dimensionnement I18n",
"file_sizes_title": "Tailles des fichiers",
"file_sizes_header": "Langue Taille(Ko) Lignes Caractères",
"file_size_row": "{{lang}} {{sizeKB}} {{lines}} {{characters}}",
"language_statistics_title": "Statistiques des langues",
"language_stats_header": "Langue Clés Caractères Long. moy. Long. max Vides Longs",
"language_stats_row": "{{lang}} {{totalKeys}} {{totalCharacters}} {{averageKeyLength}} {{maxKeyLength}} {{emptyKeys}} {{longKeys}}",
"size_variations_title": "Variations de taille",
"size_variations_header": "Langue Diff. car. % Diff Problématique",
"size_variation_row": "{{lang}} {{characterDifference}} {{percentageDifference}}% {{problematic}}",
"problematic_yes": "Oui",
"problematic_no": "Non",
"recommendations_title": "Recommandations",
"recommendation_item": "{{index}}. {{recommendation}}",
"problematic_key_detail": " {{index}}. Clé: '{{key}}' - Variations: {{variations}}",
"generating_detailed_report": "Génération du rapport détaillé...",
"keysHaveSignificantSizeVariations": "les clés présentent des variations de taille significatives",
"longTranslationsDetected": "{{lang}} a {{data.longKeys}} traductions de plus de 100 caractères - envisagez de les décomposer",
"report_saved_to": "Rapport enregistré dans : {{reportPath}}",
"considerReviewingTranslations": "Envisagez de revoir les traductions {{lang}} - elles sont {{data.percentageDifference}}% plus longues que la référence",
"csv_report_saved_to": "Rapport CSV enregistré dans : {{csvPath}}",
"no_translation_files_found": "Aucun fichier de traduction trouvé",
"analysis_completed": "Analyse terminée en {{duration}}ms",
"analysis_failed": "L'analyse a échoué : {{errorMessage}}",
"failed_to_parse_language_error": "Échec de l'analyse des traductions {{language}} : {{errorMessage}}",
"recommendations": {
"keys_have_significant_size_variations": "les clés présentent des variations de taille significatives",
"consider_reviewing_translations": "Envisagez de revoir les traductions {{lang}} - elles sont {{percentageDifference}}% {{comparison}} que la référence",
"long_translations_detected": "{{lang}} a {{longKeys}} traductions de plus de {{threshold}} caractères - envisagez de les décomposer"
},
"hardcodedTexts": {
"keysHaveSignificantSizeVariations": "les clés présentent des variations de taille significatives",
"considerReviewingTranslations": "Envisagez de revoir les traductions {{lang}} - elles sont {{percentageDifference}}% {{comparison}} que la référence",
"longTranslationsDetected": "{{lang}} a {{longKeys}} traductions de plus de {{threshold}} caractères - envisagez de les décomposer"
}
},
"usage": {
"help_message": "\nAnalyseur d'utilisation I18n\n\nUsage : node i18ntk-usage.js [options]\n\nOptions :\n --source-dir <dir> Répertoire source à analyser (défaut : ./src)\n --i18n-dir <dir> Répertoire I18n (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 (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",
"source_directory_thissourcedir": "📁 Répertoire source : {sourceDir}",
"translationCompletenessTitle": "🌍 Complétude de la traduction :",
"i18n_directory_thisi18ndir": "🌐 Répertoire I18n : {i18nDir}",
"failed_to_parse_filename_error": "⚠️ Échec de l'analyse de {fileName} : {errorMessage}",
"analyzing_source_files": "🔍 Analyse des fichiers source...",
"found_files_in_source": "📂 Trouvé {numFiles} fichiers dans le répertoire source",
"found_thisusedkeyssize_unique_": "🎯 Trouvé {usedKeysSize} clés uniques utilisées",
"total_key_usages_totalkeysfoun": "📊 Total des utilisations de clés : {totalKeysFound}",
"loading_available_translation_": "📋 Chargement des clés de traduction disponibles...",
"found_thisavailablekeyssize_av": "✅ Trouvé {availableKeysSize} clés disponibles",
"foundTranslationFiles": "✅ Trouvé {count} fichiers de traduction",
"pressEnterToReturnToMenu": "Appuyez sur Entrée pour revenir au menu principal",
"notTranslatedKeysTotal": "⚠️ Clés non traduites : {total}",
"noSourceFilesFound": "⚠️ Aucun fichier source trouvé dans le répertoire source.",
"reviewNotTranslatedKeys": "💡 Examiner les clés non traduites",
"analysisCompletedSuccessfully": "🎉 Analyse terminée avec succès !",
"detectedSourceDirectory": "Répertoire source détecté : {{sourceDir}}",
"detectedI18nDirectory": "Répertoire i18n détecté : {{i18nDir}}",
"fileInfo": " 📄 {namespace}: {keys} clés",
"failedToAnalyzeUsage": "❌ Échec de l'analyse d'utilisation : {error}",
"failedToAnalyzeFile": "❌ Échec de l'analyse de fichier : {error}",
"analyzerInitialized": "Analyseur initialisé",
"analyzerInitFailed": "Échec de l'initialisation de l'analyseur : {error}",
"argsParsed": "Arguments analysés",
"argsParseFailed": "Échec de l'analyse des arguments : {error}",
"translationDiscoveryError": "Erreur de découverte de traduction : {error}",
"fileTraversalError": "Erreur de parcours des fichiers : {error}",
"usageAnalysisFailed": "Échec de l'analyse d'utilisation : {error}",
"translationFileParseError": "Erreur d'analyse du fichier de traduction : {error}",
"translationKeysLoadError": "Erreur de chargement des clés de traduction : {error}",
"languageCompletenessStats": "{language}: {translated}/{total} ({completeness}% traduit)",
"missingKeysCount": "Clés manquantes : {count}",
"analyzingTranslationCompleteness": "Analyse de la complétude des traductions...",
"unusedKeysCount": "Clés inutilisées : {count}",
"usedKeysCount": "Clés utilisées : {count}",
"availableKeysCount": "Clés disponibles : {count}",
"analysisResults": "Résultats de l'analyse :",
"checkUsage": {
"title": "🔍 ANALYSE D'UTILISATION I18N",
"message": "Analyse de l'utilisation des clés i18n dans votre projet.",
"help_message": "\nAnalyseur d'utilisation I18n\n\nUsage : node i18ntk-usage.js [options]\n\nOptions :\n --source-dir <dir> Répertoire source à analyser (défaut : ./src)\n --i18n-dir <dir> Répertoire I18n (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 (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",
"source_directory_thissourcedir": "📁 Répertoire source : {sourceDir}",
"i18n_directory_thisi18ndir": "🌐 Répertoire I18n : {i18nDir}",
"loading_available_translation_": "📋 Chargement des clés de traduction disponibles...",
"found_thisavailablekeyssize_av": "✅ Trouvé {availableKeysSize} clés disponibles",
"analyzing_source_files": "🔍 Analyse des fichiers source...",
"found_files_in_source": "📂 Trouvé {numFiles} fichiers dans le répertoire source",
"found_thisusedkeyssize_unique_": "🎯 Trouvé {usedKeysSize} clés uniques utilisées",
"total_key_usages_totalkeysfoun": "📊 Total des utilisations de clés : {totalKeysFound}",
"translation_completeness_title": "📊 COMPLÉTUDE DE LA TRADUCTION",
"language_completeness_stats": " {language} : {translated}/{total} ({completeness}% traduit)",
"n_sample_unused_keys": "\nÉchantillon de clés inutilisées :",
"key": "- {key}",
"and_unusedkeyslength_5_more": "...et {count} de plus.",
"n_recommendations": "\n📋 RECOMMANDATIONS",
"consider_removing_unused_trans": "💡 Envisager de supprimer les traductions inutilisées pour garder votre projet propre.",
"n_next_steps": "\n📋 PROCHAINES ÉTAPES",
"1_review_the_analysis_results": "1. Examiner les résultats de l'analyse dans la console ou le rapport généré.",
"2_run_with_outputreport_for_de": "2. Exécuter avec --output-report pour un rapport détaillé.",
"3_remove_unused_keys_or_add_mi": "3. Supprimer les clés inutilisées ou ajouter les clés manquantes à votre code source.",
"4_rerun_analysis_to_verify_imp": "4. Ré-exécuter l'analyse pour vérifier les améliorations.",
"usage_analysis_results": "📊 RÉSULTATS DE L'ANALYSE D'UTILISATION",
"source_files_scanned_thisfileu": "Fichiers source analysés : {fileUsageSize}",
"available_translation_keys_thi": "Clés de traduction disponibles : {availableKeysSize}",
"used_translation_keys_thisused": "Clés de traduction utilisées : {usedKeysSize}",
"dynamic_keys_detected_dynamick": "Clés dynamiques détectées : {dynamicKeysLength}",
"unused_keys_unusedkeyslength": "Clés inutilisées : {unusedKeysLength}",
"missing_keys_missingkeyslength": "Clés manquantes : {missingKeysLength}",
"noSourceFilesFound": "Aucun fichier source trouvé à analyser.",
"processedFiles": "Traité {processedFiles} sur {totalFiles} fichiers.",
"i18nDirectoryNotFound": "Répertoire I18n introuvable : {i18nDir}",
"noTranslationLanguagesFound": "Aucune langue de traduction trouvée.",
"failedToAnalyzeFile": "Échec de l'analyse du fichier {filePath} : {error}",
"failedToAnalyzeLanguage": "Échec de l'analyse de la langue {language} : {error}",
"translationCompletenessAnalysisFailed": "L'analyse de complétude de traduction a échoué : {error}",
"n": ""
},
"complete": {
"configLoadedSuccessfully": "Configuration chargée avec succès",
"configLoadingFailed": "Échec du chargement de la configuration",
"title": "🌍 COMPLÉTION DE TRADUCTION I18N",
"separator": "============================================================",
"sourceDir": "📁 Répertoire source : {sourceDir}",
"sourceLanguage": "🌐 Langue source : {sourceLanguage}",
"dryRunMode": "🧪 Mode test - aucun changement ne sera appliqué",
"languages": "🌍 Langues disponibles : {languages}",
"addingMissingKeys": "➕ Ajout des clés manquantes aux fichiers de traduction...",
"processing": "🔄 Traitement de {language}...",
"addedKeys": "✅ Ajouté {count} clés manquantes",
"noChangesNeeded": "✅ Aucun changement nécessaire pour {language}",
"summaryTitle": "📊 RÉSUMÉ DE COMPLÉTION",
"totalChanges": "📝 Total des changements : {totalChanges}",
"languagesProcessed": "🌍 Langues traitées : {languagesProcessed}",
"missingKeysAdded": "➕ Clés manquantes ajoutées : {missingKeysAdded}",
"nextStepsTitle": "📋 PROCHAINES ÉTAPES",
"nextStep1": "1. Exécuter l'analyse d'utilisation :",
"nextStep2": " node i18ntk-usage.js --output-report",
"nextStep3": "2. Valider les traductions :",
"nextStep4": " node i18ntk-validate.js",
"nextStep5": "3. Analyser les modèles :",
"nextStep6": " node i18ntk-analyze.js",
"allKeysAvailable": "🎉 Toutes les clés de traduction sont maintenant disponibles !",
"runWithoutDryRun": "💡 Exécuter sans --dry-run pour appliquer les changements",
"deletingOldReport": "🗑️ Suppression de l'ancien rapport...",
"generatingFreshAnalysis": "📊 Génération d'une nouvelle analyse d'utilisation...",
"couldNotGenerate": "❌ Impossible de générer l'analyse d'utilisation",
"reportNotFound": "📋 Rapport d'utilisation introuvable. Utilisation des clés communes...",
"foundMissingKeys": "📋 Trouvé {count} clés manquantes depuis l'analyse d'utilisation",
"couldNotParse": "❌ Impossible d'analyser le rapport d'utilisation. Utilisation des clés communes..."
}
},
"validate": {
"help_message": "\nValidateur de traductions I18n\n\nUtilisation : node i18ntk-validate.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-validate.js --output-report\n node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-validate.js --output-dir=./analysis --output-report\n",
"title": "🔍 Validateur de traductions I18n",
"message": "Lancement du processus de validation...",
"sourceDirectory": "📁 Répertoire source : {dir}",
"sourceLanguage": "🌍 Langue source : {sourceLanguage}",
"strictMode": "⚙️ Mode strict : {mode}",
"noTargetLanguages": "⚠️ Aucune langue cible trouvée à valider",
"validatingLanguages": "🌍 Validation des langues : {langs}",
"validatingLanguage": "🔍 Validation de la langue : {lang}",
"filesCount": "📄 Fichiers : {count}",
"keysCount": "🔑 Clés : {count}",
"missingFilesCount": "📁 Fichiers manquants : {count}",
"syntaxErrorsCount": "❌ Erreurs de syntaxe : {count}",
"translationPercentage": "🎯 Traduction : {percentage}% ({translated}/{total} clés)",
"validationSummary": "📊 RÉCAPITULATIF DE LA VALIDATION",
"validation_failed": "❌ Validation échouée : {error}",
"totalErrors": "❌ Erreurs totales : {count}",
"totalWarnings": "⚠️ Avertissements totaux : {count}",
"errorsSection": "❌ ERREURS",
"warningsSection": "⚠️ AVERTISSEMENTS",
"recommendationsSection": "💡 RECOMMANDATIONS",
"fixErrorsFirst": "1. Corrigez d'abord toutes les erreurs",
"resolveMissingFilesAndSyntaxErrors": "1. Résolvez les fichiers manquants et les erreurs de syntaxe",
"fixStructuralInconsistencies": "2. Corrigez les incohérences structurelles",
"completeMissingTranslations": "3. Complétez les traductions manquantes",
"rerunValidation": "4. Relancez la validation pour vérifier les corrections",
"addressWarnings": "Traitez les avertissements pour améliorer la qualité",
"reviewWarnings": "Vérifiez les avertissements et corrigez-les si nécessaire",
"considerRunningWithStrict": "2. Envisagez d'exécuter avec l'option --strict pour une validation plus stricte",
"allValidationsPassed": "🎉 Toutes les validations sont réussies !",
"considerRunningUsageAnalysis": "Envisagez d'exécuter l'analyse d'utilisation : node i18ntk-usage.js",
"deletedOldReport": "🗑️ Ancien rapport de validation supprimé",
"sourceDir": "📁 Répertoire source : {sourceDir}",
"i18nDir": "🌐 Répertoire i18n : {i18nDir}",
"loadingTranslationFiles": "📋 Chargement des fichiers de traduction...",
"foundTranslationFilesCount": "✅ {count} fichiers de traduction trouvés",
"analyzingTranslations": "🔍 Analyse des traductions...",
"validationCompletedSuccessfully": "🎉 Validation terminée avec succès !",
"validationErrorsFound": "⚠️ Erreurs de validation trouvées : {count}",
"validationWarningsFound": "⚠️ Avertissements de validation trouvés : {count}",
"validationPassed": "✅ Validation réussie sans erreurs",
"validationFailed": "Validation échouée : {error}",
"startingValidationProcess": "🔍 Démarrage du processus de validation...",
"validationProcessCompletedSuccessfully": "✅ Processus de validation terminé avec succès",
"stackTrace": "Trace de la pile : {{stack}}",
"authenticationFailed": "❌ Authentification échouée. Accès refusé.",
"fatalValidationError": "❌ Erreur fatale de validation : {{error}}",
"configAccess": "Accès à la configuration pour la validation",
"configValidated": "Configuration validée avec succès",
"configError": "Erreur de configuration : {error}",
"validatorInit": "Initialisation du validateur I18n",
"validatorInitialized": "Validateur I18n initialisé avec succès",
"validatorInitError": "Erreur d'initialisation du validateur : {error}",
"argsParsing": "Analyse des arguments de la ligne de commande",
"argsParsed": "Arguments de la ligne de commande analysés avec succès",
"argsParseError": "Erreur d'analyse des arguments : {error}",
"languagesScan": "Analyse des langues disponibles",
"languagesFound": "{count} langues trouvées",
"languagesScanError": "Erreur lors de l'analyse des langues : {error}",
"filesScan": "{count} fichiers trouvés en {language}",
"filesScanError": "Erreur lors de l'analyse des fichiers : {error}",
"jsonValidated": "Syntaxe JSON validée : {filePath}",
"jsonValidationError": "Erreur de validation JSON : {error}",
"languageValidation": "Validation de la langue : {language}",
"languageValidationError": "Erreur de validation de la langue : {error}",
"fileDeleted": "Fichier supprimé",
"runStarted": "Démarrage de la validation",
"runCompleted": "Validation terminée avec succès",
"runError": "Exécution de la validation échouée : {error}",
"scriptExecution": "Exécution du script",
"validationCompleted": "Validation terminée",
"validationError": "Erreur de validation : {error}",
"separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
"languageHeader": "🌐 Langue : {language}",
"validationResults": "📊 Résultats de la validation",
"noErrors": "✅ Aucune erreur trouvée",
"noWarnings": "✅ Aucun avertissement trouvé",
"summaryHeader": "📋 RÉCAPITULATIF GÉNÉRAL",
"progressIndicator": "⏳ Traitement en cours...",
"completedIndicator": "✅ Terminé",
"errorIndicator": "❌ Erreur",
"warningIndicator": "⚠️ Avertissement",
"infoIndicator": "ℹ️ Info",
"sourceDirNotConfigured": "Répertoire source non configuré",
"sourceLanguageNotConfigured": "Langue source non configurée",
"translationFunctionNotInitialized": "Fonction de traduction non initialisée correctement",
"sourceLanguageDirectoryNotFound": "Répertoire de la langue source introuvable",
"specifiedLanguageNotFound": "Langue spécifiée introuvable",
"noJsonFilesFound": "Aucun fichier JSON trouvé dans le répertoire source : {sourceDir}",
"i18nDirectoryNotFound": "Répertoire i18n introuvable : {i18nDir}",
"invalidDirectoryPaths": "Chemins de répertoires invalides détectés",
"invalidSampleFilePath": "Chemin de fichier d'exemple invalide",
"failedToCreateSampleTranslationFile": "Échec de la création du fichier de traduction d'exemple",
"invalidFilePathDetected": "Chemin de fichier invalide détecté",
"failedToWriteFile": "Échec de l'écriture du fichier : {filePath}"
},
"adminCli": {
"setupPinProtectionTitle": "\n🔐 Configuration de la protection PIN Admin",
"setupPinProtectionDescription": "Cela exigera un PIN de 4 à 6 chiffres pour les opérations administratives.",
"enablePinProtectionPrompt": "Voulez-vous activer la protection PIN admin ?",
"setupCancelled": "Configuration de la protection PIN admin annulée.",
"enterPinPrompt": "Entrez un PIN de 4 à 6 chiffres : ",
"pinFormatError": "❌ Le PIN doit comporter 4 à 6 chiffres. Veuillez réessayer.",
"confirmPinPrompt": "Confirmez le PIN : ",
"pinMismatchError": "❌ Les PIN ne correspondent pas. Veuillez réessayer.",
"pinProtectionEnabledSuccess": "✅ Protection PIN admin activée avec succès !",
"pinRecoveryWarning": "⚠️ Retenez votre PIN - il ne peut pas être récupéré en cas de perte.",
"setupPinProtectionFailed": "❌ Échec de la configuration de la protection PIN admin.",
"errorSettingUpPin": "❌ Erreur lors de la configuration du PIN admin : {message}",
"authRequiredForOperation": "\n🔐 Authentification admin requise pour : {operation}",
"invalidPinFormat": "❌ Format de PIN invalide. Le PIN doit comporter 4 à 6 chiffres.",
"authenticationSuccess": "✅ Authentification réussie !",
"invalidPinAttemptsRemaining": "❌ PIN invalide. {remaining} tentatives restantes.",
"authenticationFailedAccessDenied": "❌ Authentification échouée. Accès refusé.",
"authenticationError": "❌ Erreur d'authentification : {message}",
"pinProtectionNotEnabled": "La protection PIN admin n'est pas activée actuellement.",
"disablingPinProtectionTitle": "\n🔓 Désactivation de la protection PIN Admin",
"confirmDisablePinProtection": "Êtes-vous sûr de vouloir désactiver la protection PIN admin ?",
"operationCancelled": "Opération annulée.",
"pinProtectionDisabledSuccess": "✅ Protection PIN admin désactivée.",
"disablePinProtectionFailed": "❌ Échec de la désactivation de la protection PIN admin.",
"errorDisablingPinProtection": "❌ Erreur lors de la désactivation de la protection admin : {message}",
"adminProtectionStatusTitle": "\n🔐 État de la protection admin",
"statusEnabled": "Statut : ✅ ACTIVÉ",
"protectionDetails": "Protection : PIN de 4 à 6 chiffres requis pour les opérations admin",
"lockoutDetails": "Verrouillage : 3 échecs = verrouillage de 15 minutes",
"statusDisabled": "Statut : ❌ DÉSACTIVÉ",
"noAuthRequired": "Protection : Aucune authentification requise",
"unprotectedRisk": "Risque : les opérations admin ne sont pas protégées",
"errorCheckingAdminStatus": "❌ Erreur lors de la vérification du statut admin : {message}",
"authRequired": "🔐 Authentification admin requise.",
"invalidPin": "❌ PIN invalide.",
"authSuccess": "✅ Authentification réussie !",
"adminPinSetupCli": "admin_pin_setup_cli",
"adminAuthFailedCli": "admin_auth_failed_cli",
"adminAuthDisabledCli": "admin_auth_disabled_cli",
"protectedAccess": "Accès protégé : authentification admin requise pour les opérations sensibles.",
"enterPin": "Entrez le PIN admin : ",
"accessGranted": "Accès accordé."
},
"adminPin": {
"setup_title": "🔐 Configuration du PIN admin",
"setup_separator": "============================================================",
"setup_description": "Créez un PIN de 4 à 6 chiffres pour l'accès admin aux paramètres sensibles.",
"required_for_title": "Ce PIN sera requis pour :",
"required_for_1": " • Modifier les paramètres de sécurité",
"required_for_2": " • Modifier des configurations avancées",
"required_for_3": " • Accéder aux outils de débogage",
"required_for_4": " • Réinitialiser les paramètres",
"setup_note": "💡 Remarque : vous verrez des astérisques (*) pendant la saisie : ils masquent simplement les caractères.",
"setup_digits_only": " Seuls les chiffres de 0 à 9 sont acceptés pour le PIN.",
"invalid_pin_length": "❌ PIN invalide. Doit comporter 4 à 6 chiffres (0-9 uniquement).",
"invalid_pin_example": " Exemple : 1234 ou 567890",
"pins_do_not_match": "❌ Les PIN ne correspondent pas.",
"setup_success": "✅ Le PIN admin a été configuré avec succès !",
"setup_warning": "⚠️ Conservez ce PIN en lieu sûr. Il ne peut pas être récupéré en cas de perte.",
"setup_error": "❌ Erreur lors de la configuration du PIN :",
"session_expired": "\n⏰ Session admin expirée en raison de l'inactivité.",
"no_pin_set_setting_up": "⚠️ Aucun PIN admin défini. Configuration du PIN en cours…",
"no_pin_configured_access_denied": "⚠️ Aucun PIN admin configuré. Accès refusé.",
"use_admin_settings_to_set_pin": "💡 Utilisez les paramètres admin pour configurer un PIN d'abord.",
"locked_out": "🔒 Accès admin verrouillé en raison de trop nombreuses tentatives infructueuses.",
"wait_before_retry": "Veuillez attendre 5 minutes avant de réessayer.",
"access_granted": "✅ Accès accordé.",
"incorrect_pin": "❌ PIN incorrect. {attempts} tentatives restantes.",
"verify_pin_error": "❌ Erreur lors de la vérification du PIN :",
"already_configured": "✅ Le PIN admin est déjà configuré.",
"optional_setup_title": "\n🔐 Configuration facultative du PIN admin",
"optional_setup_description": "La protection PIN admin ajoute de la sécurité pour des opérations sensibles telles que :",
"setup_prompt": "Souhaitez-vous configurer un PIN admin ? (y/N) : ",
"skipping_setup": "⏭️ Configuration du PIN facultative. Vous pouvez le configurer plus tard dans les paramètres.",
"setup_prompt_error": "❌ Erreur lors de l'invite de configuration du PIN :",
"protectedAccess": "Accès protégé : authentification admin requise pour les opérations sensibles.",
"enterPin": "Entrez le PIN admin : ",
"accessGranted": "Accès accordé.",
"invalidPin": "❌ PIN invalide. Veuillez réessayer.",
"weak_pin_warning": "⚠️ AVERTISSEMENT : Ce PIN semble être faible ou courant.",
"weak_pin_suggestion": "💡 Envisagez d'utiliser un PIN plus robuste avec des chiffres variés.",
"use_anyway_prompt": "Tapez \"yes\" pour l'utiliser quand même, ou appuyez sur Entrée pour choisir un autre PIN : ",
"enter_new_pin": "Entrez un nouveau PIN admin (4-6 chiffres) : ",
"confirm_pin": "Confirmez le PIN admin : ",
"not_set": "Non défini",
"pin_display_mask": "####"
},
"autorun": {
"missingRequiredFile": "Fichier requis manquant : {file}",
"runInitializationFirst": "Veuillez d'abord exécuter l'initialisation.",
"initializationCheckPassed": "Contrôle d'initialisation réussi.",
"runningStep": "Exécution de l'étape : {stepName}",
"commandLabel": "Commande : {command}",
"stepRunning": "L'étape '{stepName}' est en cours…",
"stepCompletedWithTime": "L'étape '{stepName}' terminée en {duration} ms.",
"stepCompleted": "L'étape '{stepName}' terminée.",
"stepFailed": "L'étape '{stepName}' a échoué.",
"errorLabel": "Erreur : {error}",
"stepFailedWithError": "L'étape '{stepName}' a échoué avec l'erreur : {error}",
"requiredStepFailed": "Étape requise échouée. Arrêt du workflow.",
"optionalStepFailed": "Étape facultative échouée. Poursuite du workflow.",
"startingAutoRunWorkflow": "Démarrage du workflow Auto-Run…",
"workflowIncludesSteps": "Le workflow comprend {count} étapes :",
"stepRequired": "(Requise)",
"stepOptional": "(Facultative)",
"startingExecution": "Démarrage de l'exécution…",
"workflowStopped": "Workflow arrêté.",
"workflowCompleted": "Workflow terminé.",
"pressEnterToContinue": "Appuyez sur Entrée pour continuer…",
"runningSelectedSteps": "Exécution des étapes sélectionnées…",
"invalidStepNumber": "Numéro d'étape invalide : {stepNum}",
"executionReport": "Rapport d'exécution :",
"successfulSteps": "Étapes réussies : {count}",
"failedSteps": "Étapes échouées : {count}",
"requiredFailedSteps": "Étapes requises échouées : {count}",
"stepDetails": "Détails de l'étape :",
"errorDetails": "Erreur : {error}",
"reportSavedTo": "Rapport enregistré dans : {path}",
"overallStatusSuccess": "SUCCÈS",
"overallStatusFailed": "ÉCHEC",
"overallStatus": "Statut global : {status}",
"customSettingsConfiguration": "Configuration des paramètres personnalisés",
"pressEnterForDefaults": "Appuyez sur Entrée pour utiliser les paramètres par défaut pour toute invite.",
"sourceDirPrompt": "Entrez le répertoire source (par défaut : {default}) : ",
"sourceLangPrompt": "Entrez la langue source (par défaut : {default}) : ",
"targetLangsPrompt": "Entrez les langues cibles (séparées par des virgules, par défaut : {default}) : ",
"translationMarkerPrompt": "Entrez le marqueur de traduction (par défaut : {default}) : ",
"outputDirPrompt": "Entrez le répertoire de sortie pour les rapports (par défaut : {default}) : ",
"settingsUpdatedSuccessfully": "Paramètres mis à jour avec succès !",
"errorConfiguringSettings": "Erreur lors de la configuration des paramètres : {error}",
"autoRunScriptTitle": "Script Auto-Run",
"usageTitle": "Utilisation :",
"runAllSteps": "node i18ntk-autorun.js --all - Exécuter toutes les étapes définies dans i18ntk-config.json",
"configureSettingsFirst": "node i18ntk-autorun.js --config - Configurer les paramètres du workflow",
"runSpecificSteps": "node i18ntk-autorun.js --steps <numéro_étapes> - Exécuter des étapes spécifiques (ex. --steps 1,3,5)",
"showHelp": "node i18ntk-autorun.js --help - Afficher cette aide",
"availableSteps": "Étapes disponibles :",
"examplesTitle": "Exemples :",
"configExample": "node i18ntk-autorun.js --config",
"stepsExample1": "node i18ntk-autorun.js --steps 1,2,3",
"stepsExample2": "node i18ntk-autorun.js --all",
"configurationComplete": "Configuration terminée.",
"runAutoRunCommand": "Vous pouvez maintenant exécuter la commande auto-run.",
"configurationFailed": "Configuration échouée : {error}",
"noValidStepNumbers": "Aucun numéro d'étape valide fourni.",
"autoRunFailed": "Exécution auto-run échouée : {error}",
"stepInitializeProject": "Initialiser le projet",
"stepAnalyzeTranslations": "Analyser les traductions",
"stepValidateTranslations": "Valider les traductions",
"stepCheckUsage": "Vérifier l'utilisation",
"stepCompleteTranslations": "Compléter les traductions",
"stepAnalyzeSizing": "Analyser le dimensionnement",
"stepGenerateSummary": "Génération du rapport résumé…",
"stepCompletedIcon": "✅",
"stepCompletedWithIcon": "✅ Étape '{stepName}' terminée.",
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Exécution de l'étape '{stepName}'…",
"stepFailedIcon": "❌",
"translationLoadWarning": "Avertissement : impossible de charger les traductions {lang}",
"configReadError": "Erreur de lecture de {file}",
"separator": "=================================================="
},
"debug": {
"title": "🔧 Outils de débogage",
"separator": "============================================================",
"mainDebuggerSystemDiagnostics": "1. Diagnostics système",
"_consoleTranslationsCheck": "// 2. Vérification des traductions console",
"_exportMissingKeys": "// 3. Exporter les clés de traduction manquantes",
"_replaceHardcodedConsole": "// 4. Remplacer les chaînes console en dur",
"_consoleKeyChecker": "// 5. Vérificateur de clés console",
"debugLogs": "2. Journaux de débogage",
"backToMainMenu": "0. Retour au menu principal",
"selectOption": "Sélectionnez un outil de débogage : ",
"runningDebugTool": "Exécution de {displayName}…",
"debugToolNotFound": "❌ Outil de débogage introuvable : {toolName}",
"recentDebugLogs": "📄 Journaux de débogage récents",
"noDebugLogsFound": "❌ Aucun journal de débogage trouvé.",
"debugLogsDirectoryNotFound": "❌ Répertoire des journaux de débogage introuvable.",
"selectLogPrompt": "Sélectionnez le fichier journal à afficher (1-{count}) : ",
"invalidChoiceSelectRange": "Choix invalide. Veuillez sélectionner dans la plage disponible.",
"contentOf": "📄 Contenu de {filename} :",
"pressEnterToContinue": "Appuyez sur Entrée pour continuer…"
},
"detect_language_mismatches": {
"tool_title": "🔍 Outil de détection des incohérences linguistiques",
"separator": "=====================================\n",
"analyzing_file": "📄 Analyse de {language}.json…",
"error_analyzing_file": "❌ Erreur lors de l’analyse de {filename} : {errorMessage}",
"results_title": "📊 RÉSULTATS DE DÉTECTION DES INCOHÉRENCES",
"results_separator": "========================================\n",
"summary_title": "📋 RÉCAPITULATIF :",
"total_files_analyzed": " Fichiers analysés au total : {totalFiles}",
"files_with_mismatches": " Fichiers avec incohérences : {filesWithMismatches}",
"total_mismatches_found": " Incohérences totales trouvées : {totalMismatches}\n",
"no_mismatches_found": "✅ Aucune incohérence linguistique trouvée ! Toutes les traductions semblent correctes.\n",
"detailed_results_title": "🔍 RÉSULTATS DÉTAILLÉS :\n",
"file_mismatch_header": "📄 {filename} ({language})",
"mismatches_count": " Incohérences trouvées : {count}\n",
"mismatch_details": " {index}. Clé : {key}",
"mismatch_value": " Valeur : « {value} »",
"mismatch_issue": " Problème : {description}",
"recommendations_title": "💡 RECOMMANDATIONS :\n",
"recommendation_1": "1. Vérifiez et traduisez toutes les entrées marquées [TRANSLATE]",
"recommendation_2": "2. Remplacez les préfixes de langue (ex. [DE], [FR]) par de vraies traductions",
"recommendation_3": "3. Traduisez le texte en anglais vers la langue cible appropriée",
"recommendation_4": "4. Utilisez des équivalents natifs pour tout texte destiné à l’utilisateur",
"recommendation_5": "5. Relancez cet outil après corrections pour vérifier les fixes\n",
"detailed_report_saved": "📄 Rapport détaillé enregistré : {reportPath}\n",
"error_saving_report": "❌ Erreur lors de la sauvegarde du rapport : {errorMessage}\n",
"auto_fix_mode": "🔧 Mode correction automatique {dryRun}",
"auto_fix_separator": "=====================================\n",
"fixed_file": "✅ Fichier corrigé : {filename}",
"auto_fix_summary_title": "\n📊 Récapitulatif des corrections :",
"total_fixes_applied": " Nombre total de corrections appliquées : {count}",
"preview_fixes_title": "\n🔍 Aperçu des corrections :",
"fix_details": " {file} : {key}\n Ancien : « {old} »\n Nouveau : « {new} »\n",
"more_fixes": " … et {count} corrections supplémentaires\n",
"run_with_apply_fixes": "💡 Exécutez avec --apply pour appliquer ces corrections\n",
"error_general": "❌ Erreur :",
"mainDebuggerSystemDiagnostics": "Diagnostics système principal",
"exportMissingKeys": "Exporter les clés manquantes",
"replaceHardcodedConsole": "Remplacer console en dur",
"consoleKeyChecker": "Vérificateur de clés console",
"debugLogs": "Journaux de débogage",
"backToMainMenu": "Retour au menu principal",
"invalidChoiceSelectRange": "❌ Choix invalide. Sélectionnez un nombre du menu affiché.",
"runningDebugTool": "Exécution de l’outil de débogage : {displayName}",
"debugToolNotFound": "Outil de débogage « {toolName} » introuvable.",
"recentDebugLogs": "Journaux de débogage récents",
"noDebugLogsFound": "Aucun journal de débogage trouvé.",
"logEntry": "Entrée journal : {timestamp} – {message}",
"debugLogsDirectoryNotFound": "Répertoire des journaux de débogage introuvable."
},
"help": {
"title": "📊 AIDE À LA GESTION I18N\n\n",
"usage": "Utilisation : node i18ntk-manage.js [options]\n",
"interactiveMode": "\n💡 Utilisez : node i18ntk-manage.js --command=<commande> pour exécuter directement\n",
"showHelp": "\n📖 Utilisez : node i18ntk-manage.js --help pour les commandes disponibles\n",
"availableCommands": "\n📖 Commandes disponibles :\n",
"initProject": "🚀 Initialiser de nouvelles langues",
"analyzeTranslations": "🔍 Analyser les traductions",
"validateTranslations": "✅ Valider les traductions",
"checkUsage": "📊 Vérifier l’utilisation des clés",
"initCommand": " init - Initialiser de nouvelles langues",
"analyzeCommand": " analyze - Analyser les traductions",
"validateCommand": " validate - Valider les traductions",
"usageCommand": " usage - Vérifier l’utilisation des clés",
"sizingCommand": " sizing - Analyser le dimensionnement",
"completeCommand": " complete - Compléter les traductions (100 % de couverture)",
"summaryCommand": " summary - Afficher le statut du projet",
"debugCommand": " debug - Déboguer les problèmes de traduction",
"menu": {
"title": "\n🌐 MENU DE GESTION I18N\n",
"description": "Menu interactif pour la gestion de l’internationalisation\n",
"exit": "\n🚪 Quitter"
},
"commands": {
"init": "\n init - Initialiser de nouvelles langues",
"analyze": " analyze - Analyser les traductions",
"validate": " validate - Valider les traductions",
"usage": " usage - Vérifier l’utilisation des clés",
"sizing": " sizing - Analyser le dimensionnement",
"complete": " complete - Compléter les traductions (100 % de couverture)",
"summary": " summary - Afficher le statut du projet",
"debug": " debug - Déboguer les problèmes de traduction"
},
"options": {
"sourceDir": "\n --source-dir <dir> Répertoire source à analyser",
"output": " --output <file> Fichier de sortie pour le rapport",
"verbose": " --verbose, -v Afficher les