UNPKG

i18ntk

Version:

🚀 The fastest i18n toolkit with 97% performance boost! Zero-dependency, enterprise-grade internationalization for React, Vue, Angular, Python, Java, PHP & more. Features PIN protection, auto framework detection, 7+ UI languages, and comprehensive transla

716 lines ‱ 153 kB
{ "meta": { "version": "1.10.0", "updated": "2025-08-16" }, "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}", "errors": { "errors": "Erreurs :", "genericError": "❌ Erreur : {error}", "initializationFailed": "❌ Initialisation Ă©chouĂ©e : {error}", "translationKeyNotFound": "ClĂ© de traduction non trouvĂ©e : {key}", "sourceDirectoryNotFound": "RĂ©pertoire source non trouvĂ© : {directory}", "configLoadingFailed": "Chargement de la configuration Ă©chouĂ©", "invalidSourceDirectory": "RĂ©pertoire source invalide : {directory}", "securityViolation": "Violation de sĂ©curitĂ© dĂ©tectĂ©e", "authenticationFailed": "Authentification Ă©chouĂ©e", "sourceEqualsI18nWarn": "⚠ sourceDir equals i18nDir ({sourceDir}). Falling back to {fallback} for source scanning." }, "errorGeneratingStatusSummary": "Erreur lors de la gĂ©nĂ©ration du rĂ©sumĂ© d'Ă©tat : {error}", "errorRunningDebugTool": "Erreur lors de l'exĂ©cution de l'outil de dĂ©bogage '{displayName}' : {error}", "errorReadingDebugLogs": "Erreur lors de la lecture des journaux de dĂ©bogage : {error}", "errorAnalyzingLogFile": "Erreur lors de l'analyse du fichier journal : {error}", "errorAnalyzingTranslationKeys": "Erreur lors de l'analyse des clĂ©s de traduction : {error}", "errorAnalyzingTranslationCompleteness": "Erreur lors de l'analyse de l'exhaustivitĂ© des traductions : {error}", "analyzingTranslationCompleteness": "Analyse de l'exhaustivitĂ© des traductions pour toutes les langues...", "i18nDirectoryNotFound": "⚠ RĂ©pertoire i18n introuvable : {i18nDir}", "translationCompletenessAnalysisFailed": "⚠ L'analyse de l'exhaustivitĂ© des traductions a Ă©chouĂ© : {error}", "failedToAnalyzeLanguage": "❌ Échec de l'analyse de la langue {language} : {error}", "errorReadingI18nDirectory": "❌ Erreur lors de la lecture du rĂ©pertoire i18n : ", "languageCompletenessTitle": "📈 EXHAUSTIVITÉ DES TRADUCTIONS PAR LANGUE", "errorAnalyzingTranslationFormat": "Erreur lors de l'analyse du format de traduction : {error}", "errorAnalyzingTranslationType": "Erreur lors de l'analyse du type de traduction : {error}", "errorAnalyzingTranslationStructure": "Erreur lors de l'analyse de la structure de traduction : {error}", "errorAnalyzingTranslationFormatMismatch": "Erreur lors de l'analyse des incohĂ©rences de format de traduction : {error}", "errorAnalyzingTranslationTypeMismatch": "Erreur lors de l'analyse des incohĂ©rences de type de traduction : {error}", "errorAnalyzingTranslationStructureMismatch": "Erreur lors de l'analyse des incohĂ©rences de structure de traduction : {error}", "errorAnalyzingTranslationSameAsSource": "Erreur lors de l'analyse des traductions identiques Ă  la 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 !", "warnings": "Avertissements :", "completedKeys": "ClĂ©s complĂ©tĂ©es :", "missingKeys": "ClĂ©s manquantes :", "partialKeys": "ClĂ©s partielles :", "home": "Accueil", "settings": "ParamĂštres", "startingSettings": "đŸŽ›ïž DĂ©marrage de la CLI des ParamĂštres...", "confirm": "Confirmer" }, "errors": { "readlineClosed": "Flux d'entrĂ©e fermĂ©; exĂ©cution en mode non interactif.", "noPackageJson": "Aucun fichier package.json trouvĂ©. Impossible de dĂ©tecter automatiquement le framework i18n.", "noI18nDir": "Aucun rĂ©pertoire i18n trouvĂ© dans la racine du projet.", "noI18nConfig": "Aucun fichier de configuration i18n trouvĂ© dans la racine du projet." }, "fixer": { "help_message": "\nCorrecteur de Traduction I18n\n\nUtilisation: node i18ntk-fixer.js [options]\n\nOptions:\n --source-dir <dir> RĂ©pertoire source Ă  analyser (par dĂ©faut: ./locales)\n --languages <langs> Liste sĂ©parĂ©e par virgules des langues Ă  corriger\n --markers <markers> Liste sĂ©parĂ©e par virgules des marqueurs Ă  traiter comme non traduits\n --no-backup Sauter la crĂ©ation de sauvegarde automatique\n --help Afficher cette aide\n\nExemples:\n node i18ntk-fixer.js --languages de,fr\n node i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED\n node i18ntk-fixer.js --no-backup\n", "starting": "🚀 DĂ©marrage de la correction de traduction pour les langues: {languages}", "sourceDirectory": "📁 RĂ©pertoire source: {sourceDir}", "sourceLanguage": "đŸ”€ Langue source: {sourceLanguage}", "markers": "đŸ·ïž Marqueurs Ă  corriger: {markers}", "scanningLanguage": "📊 Analyse de {language}...", "noLanguages": "❌ Aucune langue spĂ©cifiĂ©e pour la correction.", "allComplete": "🎉 Toutes les traductions sont dĂ©jĂ  complĂštes!", "fullReportSaved": "📊 Rapport complet sauvegardĂ© dans: {reportPath}", "reviewReport": "Veuillez examiner le rapport avant de continuer.", "backupCreated": "đŸ’Ÿ Sauvegarde créée avec succĂšs.", "applyingFixes": "🔄 Application des corrections...", "fixingComplete": "✅ Correction de traduction terminĂ©e!", "operationCancelled": "❌ OpĂ©ration annulĂ©e par l'utilisateur.", "analysisTitle": "🔍 ANALYSE DE CORRECTION DE TRADUCTION", "analysisSeparator": "==================================================", "totalIssues": "Total de problĂšmes trouvĂ©s: {totalIssues}", "missingTranslations": "Traductions manquantes: {missing}", "placeholderTranslations": "Traductions avec marqueurs: {placeholder}", "noIssues": "✅ Aucun problĂšme trouvĂ©. Toutes les traductions sont complĂštes.", "detailedIssues": "📋 PROBLÈMES DÉTAILLÉS:", "detailedSeparator": "--------------------------------------------------", "filePath": "📄 {file} → {path}", "missingKey": "❌ MANQUANT: {source} → {new}", "placeholderKey": "⚠ MARQUEUR: \"{target}\" → \"{new}\"", "moreIssues": "... et {count} problĂšmes supplĂ©mentaires. Consultez le fichier de rapport pour les dĂ©tails complets.", "confirmationTitle": "đŸ€” Voulez-vous procĂ©der avec ces corrections?", "confirmationOptions": "Options:", "optionYes": "o - Oui, appliquer toutes les corrections", "optionNo": "n - Non, annuler l'opĂ©ration", "optionShow": "d - Afficher les problĂšmes dĂ©taillĂ©s", "choicePrompt": "Votre choix (o/n/d): ", "nonInteractiveMode": "⚡ Mode non interactif dĂ©tectĂ© - application automatique des corrections...", "reportGenerated": "📊 Rapport de correction gĂ©nĂ©rĂ©: {path}", "summary": { "totalIssues": "Total des problĂšmes : {total}", "missingKeys": "ClĂ©s manquantes : {missing}", "placeholderKeys": "ClĂ©s avec marqueurs : {placeholder}", "languages": "Langues : {languages}" }, "welcome": { "title": "🎯 Bienvenue dans l'Outil de RĂ©paration des Traductions !", "description": "Cet outil vous aidera Ă  corriger les traductions brisĂ©es et les marqueurs dans vos fichiers de langue." }, "markerPrompt": { "title": "đŸ·ïž Configurer les Marqueurs de Placeholder", "description": "Entrez les marqueurs qui indiquent le texte non traduit (sĂ©parĂ©s par des virgules) :", "currentDefaults": "Marqueurs par dĂ©faut : {markers}", "input": "Marqueurs (ou appuyez sur EntrĂ©e pour utiliser les dĂ©fauts) : " }, "languagePrompt": { "title": "🌍 SĂ©lectionner les Langues Ă  RĂ©parer", "available": "Langues disponibles : {languages}", "description": "Entrez les langues Ă  rĂ©parer (sĂ©parĂ©es par des virgules) ou appuyez sur EntrĂ©e pour toutes :", "input": "Langues : ", "noLanguages": "Aucune langue trouvĂ©e Ă  rĂ©parer." }, "directoryPrompt": { "title": "📁 SĂ©lectionner le RĂ©pertoire", "current": "RĂ©pertoire actuel : {dir}", "description": "Entrez le rĂ©pertoire contenant vos fichiers de langue (ou appuyez sur EntrĂ©e pour le rĂ©pertoire actuel, 0 pour annuler) :", "input": "RĂ©pertoire : " } }, "autorun": { "stepAnalyzeTranslations": "Analyser les traductions", "stepCompletedWithIcon": "✅ Étape '{stepName}' terminĂ©e.", "stepValidateTranslations": "Valider les traductions", "stepRunning": "L'Ă©tape '{stepName}' est en cours
", "separator": "==================================================", "stepFailed": "L'Ă©tape '{stepName}' a Ă©chouĂ©.", "errorLabel": "Erreur : {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", "examplesTitle": "Exemples :", "configExample": "node i18ntk-autorun.js --config", "stepsExample1": "node i18ntk-autorun.js --steps 1,2,3", "stepsExample2": "node i18ntk-autorun.js --all", "customSettingsConfiguration": "Configuration des paramĂštres personnalisĂ©s", "availableSteps": "Étapes disponibles :", "startingAutoRunWorkflow": "DĂ©marrage du workflow Auto-Run
", "workflowIncludesSteps": "Le workflow comprend {count} Ă©tapes :", "missingRequiredFile": "Fichier requis manquant : {file}", "workflowStopped": "Workflow arrĂȘtĂ©.", "workflowCompleted": "Workflow terminĂ©.", "successfulSteps": "Étapes rĂ©ussies : {count}", "failedSteps": "Étapes Ă©chouĂ©es : {count}", "stepInitializeProject": "Initialiser le projet", "stepCheckUsage": "VĂ©rifier l'utilisation", "stepGenerateSummary": "GĂ©nĂ©ration du rapport rĂ©sumé ", "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}", "stepCompletedWithTime": "L'Ă©tape '{stepName}' terminĂ©e en {duration} ms.", "stepCompleted": "L'Ă©tape '{stepName}' terminĂ©e.", "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.", "stepRequired": "(Requise)", "stepOptional": "(Facultative)", "startingExecution": "DĂ©marrage de l'exĂ©cution
", "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 :", "requiredFailedSteps": "Étapes requises Ă©chouĂ©es : {count}", "stepDetails": "DĂ©tails de l'Ă©tape :", "reportSavedTo": "Rapport enregistrĂ© dans : {path}", "overallStatusSuccess": "SUCCÈS", "overallStatusFailed": "ÉCHEC", "overallStatus": "Statut global : {status}", "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}", "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}", "stepCompleteTranslations": "ComplĂ©ter les traductions", "stepAnalyzeSizing": "Analyser le dimensionnement", "stepCompletedIcon": "✅", "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] ExĂ©cution de l'Ă©tape '{stepName}'
", "stepFailedIcon": "❌", "translationLoadWarning": "Avertissement : impossible de charger les traductions {lang}", "configReadError": "Erreur de lecture de {file}" }, "analyze": { "help_message": "\nAnalyseur de Traduction I18n\nUtilisation: node i18ntk-analyze.js [options]\n\nOptions:\n --source-dir <dir> RĂ©pertoire source Ă  analyser (par dĂ©faut: ./locales)\n --i18n-dir <dir> RĂ©pertoire i18n (par dĂ©faut: ./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: ./i18ntk-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", "sourceLanguageNotFound": "Langue source non trouvĂ©e", "couldNotParseTarget": "Impossible de parser la cible", "couldNotParseSource": "Impossible de parser la source", "reportGenerated": "Rapport gĂ©nĂ©rĂ©", "generateReportPrompt": "GĂ©nĂ©rer un rapport dĂ©taillĂ© ? (y/N): ", "title": "🌍 COMPLÉTION DE TRADUCTION I18NTK", "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", "longer": "plus long", "shorter": "plus court", "review_translations": "ConsidĂ©rez la revue des traductions {lang} - elles sont {data.percentageDifference}% {data.comparison} que la rĂ©fĂ©rence", "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}", "human_report_saved": "Rapport lisible enregistrĂ©: {reportPath}", "folder_summary_title": "RĂ©sumĂ© du dossier", "folder_summary_table_header": "Langue Taille(KB) ClĂ©s Longueur Moyenne CaractĂšres Totaux", "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}", "language_comparison_title": "Comparaison des langues", "language_comparison_row": "{lang}: {diff} caractĂšres ({percent}%) {status}", "summary_stats": "📊 RĂ©sumĂ©: {totalLanguages} langues, {totalKeys} clĂ©s - Rapports enregistrĂ©s dans {reportPath}", "detailedKeysDescription": "Afficher l'analyse dĂ©taillĂ©e des clĂ©s dans la console", "too_many_keys_warning": "⚠ Trop de clĂ©s pour l'affichage console - voir le rapport dĂ©taillĂ© pour l'analyse complĂšte", "no_translation_files_found": "Aucun fichier de traduction trouvĂ©", "analysis_completed": "Analyse terminĂ©e en {duration}ms", "analysis_failed": "L'analyse a Ă©chouĂ© : {errorMessage}", "starting_analysis": "DĂ©marrage de l'analyse...", "found_files": "TrouvĂ© {count} fichiers", "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" } }, "usage": { "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", "source_directory_thissourcedir": "📁 RĂ©pertoire source: {sourceDir}", "translationCompletenessTitle": "🌍 ExhaustivitĂ© des traductions:", "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 sources...", "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", "errorReadingI18nDirectory": "⚠ Erreur de lecture du rĂ©pertoire i18n: {error}", "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 du fichier: {error}", "failedToExtractKeys": "❌ Échec de l'extraction des clĂ©s de {filePath}: {error}", "analysisFailedError": "Erreur: Impossible de terminer l'analyse - {error}", "analyzerInitialized": "Analyseur initialisĂ©", "analyzerInitFailed": "Échec de l'initialisation de l'analyseur: {error}", "argsParsed": "Arguments analysĂ©s", "processedFiles": "TraitĂ© {processedFiles} sur {totalFiles} fichiers.", "argsParseFailed": "Échec de l'analyse des arguments: {error}", "translationDiscoveryError": "Erreur de dĂ©couverte de traduction: {error}", "fileTraversalError": "Erreur de parcours des fichiers: {error}", "sourceEqualsI18nWarn": "⚠ Le rĂ©pertoire source et le rĂ©pertoire i18n sont identiques. Cela peut causer des problĂšmes avec l'analyse.", "i18nEqualsSourceWarn": "⚠ Le rĂ©pertoire i18n et le rĂ©pertoire source sont identiques. Cela peut causer des problĂšmes avec l'analyse.", "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 l'exhaustivitĂ© des traductions...", "unusedKeysCount": "⚠ ClĂ©s non utilisĂ©es: {count}", "usedKeysCount": "✅ ClĂ©s utilisĂ©es: {count}", "availableKeysCount": "ClĂ©s disponibles: {count}", "analysisResults": "RĂ©sultats de l'analyse:", "i18nDirectoryNotFound": "⚠ RĂ©pertoire i18n introuvable. Veuillez vĂ©rifier le chemin.", "sourceDirectoryNotFound": "⚠ RĂ©pertoire source introuvable: {dir}", "checkUsage": { "title": "🔍 ANALYSE D'UTILISATION I18NTK", "analyzing_source_files": "🔍 Analyse des fichiers sources...", "source_directory_thissourcedir": "📁 RĂ©pertoire source : {sourceDir}", "i18n_directory_thisi18ndir": "📁 RĂ©pertoire i18n : {i18nDir}", "found_files_in_source": "✅ TrouvĂ© {numFiles} fichiers dans le rĂ©pertoire source", "no_source_files_found": "⚠ Aucun fichier source trouvĂ© dans le rĂ©pertoire source.", "processedFiles": "📊 TraitĂ© {processedFiles} sur {totalFiles} fichiers", "failedToProcessFile": "❌ Échec du traitement de {filePath} : {error}", "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", "message": "Analyse de l'utilisation des clĂ©s de traduction dans votre projet...", "usage_analysis_results": "📊 RÉSULTATS D'ANALYSE D'UTILISATION", "source_files_scanned_thisfileu": "📁 Fichiers sources 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}", "translation_completeness_title": "📈 EXHAUSTIVITÉ DES TRADUCTIONS", "language_completeness_stats": "{language} : {translated}/{total} clĂ©s ({percentage}%)", "n_sample_unused_keys": "\nđŸ—‘ïž EXEMPLE DE CLÉS INUTILISÉES (5 premiĂšres) :", "key": " 🔑 {key}", "and_unusedkeyslength_5_more": "... et {count} autres clĂ©s inutilisĂ©es", "n_sample_missing_keys": "\n❌ EXEMPLE DE CLÉS MANQUANTES (5 premiĂšres) :", "and_missingkeyslength_5_more": "... et {count} autres clĂ©s manquantes", "n_generating_detailed_report": "\n📊 GĂ©nĂ©ration du rapport dĂ©taillĂ©...", "report_saved_reportpath": "📄 Rapport sauvegardĂ© : {reportPath}", "n_recommendations": "\n💡 RECOMMANDATIONS :", "consider_removing_unused_trans": " đŸ—‘ïž Envisagez de supprimer les traductions inutilisĂ©es pour rĂ©duire la taille du bundle", "add_missing_translation_keys_t": " ➕ Ajoutez les clĂ©s de traduction manquantes pour maintenir la cohĂ©rence", "review_dynamic_keys_manually_t": " 🔍 VĂ©rifiez manuellement les clĂ©s dynamiques (elles peuvent ĂȘtre valides)", "all_translation_keys_are_prope": "✅ Toutes les clĂ©s de traduction sont correctement utilisĂ©es !", "n_next_steps": "\n🎯 PROCHAINES ÉTAPES :", "2_check_the_detailed_report_fo": " 2. VĂ©rifiez le rapport dĂ©taillĂ© pour les problĂšmes spĂ©cifiques", "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", "1_review_the_analysis_results": "1. Examinez les rĂ©sultats d'analyse dans la console ou le rapport gĂ©nĂ©rĂ©.", "2_run_with_outputreport_for_de": "2. ExĂ©cutez avec --output-report pour un rapport dĂ©taillĂ©.", "3_remove_unused_keys_or_add_mi": "3. Supprimez les clĂ©s inutilisĂ©es ou ajoutez les clĂ©s manquantes Ă  votre code source.", "4_rerun_analysis_to_verify_imp": "4. Relancez l'analyse pour vĂ©rifier les amĂ©liorations.", "noSourceFilesFound": "Aucun fichier source trouvĂ© Ă  analyser.", "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 l'exhaustivitĂ© des traductions a Ă©chouĂ© : {error}", "n": "" }, "complete": { "configLoadedSuccessfully": "Configuration chargĂ©e avec succĂšs", "configLoadingFailed": "Échec du chargement de la configuration", "title": "🌍 COMPLÉTION DES TRADUCTIONS I18NTK", "separator": "============================================================", "sourceDir": "📁 RĂ©pertoire source : {sourceDir}", "sourceLanguage": "🌐 Langue source : {sourceLanguage}", "dryRunMode": "đŸ§Ș Mode simulation - aucune modification ne sera effectuĂ©e", "languages": "🌍 Langues disponibles : {languages}", "addingMissingKeys": "➕ Ajout des clĂ©s manquantes aux fichiers de traduction...", "processing": "🔄 Traitement de {language}...", "addedKeys": "✅ AjoutĂ© {count} clĂ©s manquantes", "changeDetails": "📝 {file} : {key}", "andMore": "...et {count} autres", "noChangesNeeded": "✅ Aucune modification nĂ©cessaire pour {language}", "summaryTitle": "📊 RÉSUMÉ DE LA COMPLÉTION", "totalChanges": "📝 Total des modifications : {totalChanges}", "languagesProcessed": "🌍 Langues traitĂ©es : {languagesProcessed}", "missingKeysAdded": "➕ ClĂ©s manquantes ajoutĂ©es : {missingKeysAdded}", "nextStepsTitle": "📋 PROCHAINES ÉTAPES", "nextStep1": "1. Lancer 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Ă©cutez 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 dans l'analyse d'utilisation", "couldNotParse": "❌ Impossible d'analyser le rapport d'utilisation. Utilisation des clĂ©s communes..." }, "noTranslationLanguagesFound": "Aucune langue de traduction trouvĂ©e", "failedToAnalyzeLanguage": "Échec de l'analyse de la langue", "translationCompletenessAnalysisFailed": "L'analyse de l'exhaustivitĂ© des traductions a Ă©chouĂ©" }, "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 : ./locales)\n --i18n-dir <dir> RĂ©pertoire I18n (par dĂ©faut : ./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 : ./i18ntk-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 configurĂ©e ; validation des cibles ignorĂ©e. Ajoutez des langues via \"i18ntk init --languages=de,fr\".", "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