UNPKG

i18ntk

Version:

i18ntk (i18n Toolkit) - A comprehensive, enterprise-grade internationalization (i18n) management toolkit for JavaScript/TypeScript projects with advanced analysis, validation, and automation features

795 lines โ€ข 115 kB
{ "meta": { "version": "1.5.3", "consolidated": "2025-08-06T14:36:37.465Z", "sourceFiles": 256 }, "common": { "welcome": "Welcome", "hello": "Hello", "goodbye": "Goodbye", "yes": "Yes", "no": "No", "save": "Save", "cancel": "Cancel", "delete": "Delete", "edit": "Edit", "loading": "Loading...", "offlineTitle": "You are offline", "offlineMessage": "Please check your internet connection", "tryReconnect": "Try to reconnect", "logout": "Logout", "login": "Login", "amount": "Amount", "success": "Success", "error": "Error", "warning": "Warning", "info": "Info:", "debug": "Debug", "progress": "Progress:", "remaining": "Remaining:", "total": "Total:", "completed": "7. Completed successfully!", "missing": "Missing", "partial": "Partial", "sameAsSource": "Same as source:", "formatMismatch": "Format mismatch:", "typeMismatch": "Type mismatch:", "structureMismatch": "Structure mismatch:", "invalidOption": "Invalid option", "separator": "==================================================", "initializationFailed": "โŒ Initialization failed: {error}", "stackTrace": "Stack trace: {stack}", "pressEnterToContinue": "Press Enter to continue...", "pressEnterToReturn": "Press Enter to return to main menu...", "stepCompleted": "Step '{stepName}' completed.", "stepFailed": "Step '{stepName}' failed.", "runningStep": "Running step: {stepName}", "command": "Command: {command}", "startingWorkflow": "Starting workflow...", "workflowCompleted": "Workflow completed.", "checkReports": "Check reports for details.", "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": "Status", "nextStep1": "1. Check usage analysis:", "nextStep2": "2. Validate translations:", "nextStep3": "3. Analyze completeness:", "nextStep4": "4. Complete missing translations:", "nextStep5": "5. Generate summary report:", "nextStep6": "6. Review and finalize translations:", "generating": "Generating summary report...", "review": "Reviewing translations...", "finalizing": "Finalizing translations...", "finalized": "Finalized successfully!", "errors": "Errors:", "warnings": "Warnings:", "completedKeys": "Completed keys:", "missingKeys": "Missing keys:", "partialKeys": "Partial keys:" }, "analyze": { "help_message": "\nI18n Translation Analyzer\n\nUsage: node i18ntk-analyze.js [options]\n\nOptions:\n --source-dir <dir> Source directory to scan (default: ./src)\n --i18n-dir <dir> I18n directory (default: ./src/locales)\n --output-report Generate detailed report\n --output-dir <dir> Output directory for reports (default: ./reports)\n --help Show this help\n\nExamples:\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": "๐Ÿ“ Source directory: {sourceDir}", "i18n_directory": "๐ŸŒ I18n directory: {i18nDir}", "loading_translation_files": "๐Ÿ“‹ Loading translation files...", "sourceDirectoryLabel": "๐Ÿ“ Source Directory: {{sourceDir}}", "sourceLanguageLabel": "๐ŸŒ Source Language: {{sourceLanguage}}", "strictModeLabel": "โš™๏ธ Strict Mode: {{mode}}\n", "found_translation_files_count": "โœ… Found {count} translation files", "analyzing_translations": "๐Ÿ” Analyzing translations...", "analysis_completed_successfully": "๐ŸŽ‰ Analysis completed successfully!", "analysis_results": "๐Ÿ“Š ANALYSIS RESULTS", "language_analysis_stats": " {language}: {translatedKeys}/{totalKeys} ({percentage}% translated)", "sample_missing_keys": "\nSample missing keys:", "missing_key": "- {key}", "and_more_missing": "...and {count} more.", "sample_unused_keys": "\nSample unused keys:", "unused_key": "- {key}", "and_more_unused": "...and {count} more.", "recommendations": "\n๐Ÿ“‹ RECOMMENDATIONS", "add_missing_translations": "๐Ÿ’ก Add missing translations to improve coverage.", "remove_unused_translations": "๐Ÿ’ก Remove unused translations to keep your project clean.", "next_steps": "\n๐Ÿ“‹ NEXT STEPS", "review_analysis_results": "1. Review the analysis results in the console or generated report.", "run_with_output_report": "2. Run with --output-report for detailed report.", "add_or_remove_translations": "3. Add missing translations or remove unused ones.", "rerun_analysis": "4. Re-run analysis to verify improvements.", "analysis_summary": "๐Ÿ“Š ANALYSIS SUMMARY", "source_files_scanned": "Source files scanned: {fileCount}", "translation_files_checked": "Translation files checked: {translationFileCount}", "total_keys": "Total keys: {totalKeys}", "translated_keys": "Translated keys: {translatedKeys}", "missing_keys": "Missing keys: {missingKeys}", "unused_keys": "Unused keys: {unusedKeys}", "translation_coverage": "Translation coverage: {coverage}%", "analysis_passed_for_language": "โœ… Analysis passed for {language}", "analysis_failed_for_language": "โŒ Analysis failed for {language} ({missingKeys} missing, {unusedKeys} unused)", "starting": "๐Ÿ” Starting translation analysis...", "foundLanguages": "๐Ÿ“‹ Found {count} languages to analyze: {languages}", "analyzing": "๐Ÿ”„ Analyzing {language}...", "reportTitle": "๐Ÿ“Š TRANSLATION ANALYSIS REPORT", "generated": "Generated: {timestamp}", "status": "Status: {translated}/{total} keys ({percentage}% translated)", "filesAnalyzed": "Files analyzed: {analyzed}/{total}", "keysNeedingTranslation": "Keys needing translation: {count}", "fileBreakdown": "๐Ÿ“‹ FILE BREAKDOWN", "error": "Error", "completed": "โœ… Analysis completed for {language}", "progress": "๐Ÿ“Š Overall Progress: {translated}/{total} languages processed", "reportSaved": " Report saved: {reportPath}", "summary": "๐Ÿ“Š ANALYSIS SUMMARY", "finished": "โœ… Analysis completed successfully!", "statusFileMissing": "โŒ Translation file missing", "sourceKeys": "๐Ÿ“Š Source keys: {count}", "translation": "๐Ÿ“Š Translation: {translated}/{total} ({percentage}%)", "structure": "๐Ÿ—‚๏ธ Structure: {status}", "consistent": "Consistent", "inconsistent": "Inconsistent", "missingKeys": "Missing keys: {count}", "extraKeys": "Extra keys: {count}", "issues": "โš ๏ธ Issues found: {count}", "issueType": { "not_translated": "Not translated: {count}", "empty_value": "Empty values: {count}", "partial_translation": "Partial translations: {count}", "format_mismatch": "Format mismatches: {count}", "type_mismatch": "Type mismatches: {count}", "structure_mismatch": "Structure mismatches: {count}", "same_as_source": "Same as source: {count}" }, "keysToTranslate": "๐Ÿ“‹ KEYS TO TRANSLATE", "key": "Key", "english": "English", "needsTranslation": "NEEDS TRANSLATION", "andMoreKeys": "...and {count} more keys.", "noLanguages": "โš ๏ธ No target languages found.", "languageStats": "{language}: {percentage}% complete ({translated}/{total} keys)", "invalidReportFilePath": "Invalid report file path", "failedToWriteReportFile": "Failed to write report file securely" }, "complete": { "configLoadedSuccessfully": "Configuration loaded successfully", "configLoadingFailed": "Configuration loading failed", "title": "๐ŸŒ I18N TRANSLATION COMPLETION", "separator": "============================================================", "sourceDir": "๐Ÿ“ Source directory: {sourceDir}", "sourceLanguage": "๐ŸŒ Source language: {sourceLanguage}", "dryRunMode": "๐Ÿงช Dry run mode - no changes will be made", "languages": "๐ŸŒ Available languages: {languages}", "addingMissingKeys": "โž• Adding missing keys to translation files...", "processing": "๐Ÿ”„ Processing {language}...", "addedKeys": "โœ… Added {count} missing keys", "noChangesNeeded": "โœ… No changes needed for {language}", "summaryTitle": "๐Ÿ“Š COMPLETION SUMMARY", "totalChanges": "๐Ÿ“ Total changes: {totalChanges}", "languagesProcessed": "๐ŸŒ Languages processed: {languagesProcessed}", "missingKeysAdded": "โž• Missing keys added: {missingKeysAdded}", "nextStepsTitle": "๐Ÿ“‹ NEXT STEPS", "nextStep1": "1. Run usage analysis:", "nextStep2": " node i18ntk-usage.js --output-report", "nextStep3": "2. Validate translations:", "nextStep4": " node i18ntk-validate.js", "nextStep5": "3. Analyze patterns:", "nextStep6": " node i18ntk-analyze.js", "allKeysAvailable": "๐ŸŽ‰ All translation keys are now available!", "runWithoutDryRun": "๐Ÿ’ก Run without --dry-run to apply changes", "deletingOldReport": "๐Ÿ—‘๏ธ Deleting old report...", "generatingFreshAnalysis": "๐Ÿ“Š Generating fresh usage analysis...", "couldNotGenerate": "โŒ Could not generate usage analysis", "reportNotFound": "๐Ÿ“‹ Usage report not found. Using common keys...", "foundMissingKeys": "๐Ÿ“‹ Found {count} missing keys from usage analysis", "couldNotParse": "โŒ Could not parse usage report. Using common keys...", "errorDuringCompletion": "โŒ Error during completion: {error}", "fatalError": "โŒ Fatal error: {error}", "configurationValidationFailed": "Configuration validation failed: missing required fields" }, "sizing": { "separator": "================================================================================", "lineSeparator": "--------------------------------------------------------------------------------", "analysisStats": "{{stats}}", "sourceDirectoryLabel": "๐Ÿ“ Source directory: {{sourceDir}}", "sourceLanguageLabel": "๐ŸŒ Source language: {{sourceLanguage}}", "strictModeLabel": "โš™๏ธ Strict mode: {{mode}}", "invalidSourceDirectoryError": "Invalid source directory path: {{sourceDir}}", "sourceDirectoryNotFoundError": "Source directory not found: {{sourceDir}}", "invalidOutputDirectoryError": "Invalid output directory path: {{outputDir}}", "invalidReportFileError": "Invalid report file path", "problematic_keys": "Problematic keys: {problematicKeys}", "problematicKeysLabel": "Problematic keys: {problematicKeys}", "long_translations": "Long translations: {longTranslations}", "failedToSaveReportError": "Failed to save report securely", "invalidCsvFileError": "Invalid CSV file path", "failedToSaveCsvError": "Failed to save CSV report securely", "fatalError": "โŒ Sizing analysis failed: {{error}}", "starting_i18n_sizing_analysis": "Starting i18n sizing analysis...", "source_directory": "Source directory: {{sourceDir}}", "found_languages": "Found languages: {{languages}}", "analyzing_file_sizes": "Analyzing file sizes...", "analyzing_translation_content": "Analyzing translation content...", "generating_size_comparisons": "Generating size comparisons...", "no_languages_found_for_comparison": "No languages found for comparison", "sizing_analysis_results": "I18n Sizing Analysis Results", "file_sizes_title": "File Sizes", "file_sizes_header": "Language Size(KB) Lines Characters", "file_size_row": "{{lang}} {{sizeKB}} {{lines}} {{characters}}", "language_statistics_title": "Language Statistics", "language_stats_header": "Language Keys Characters Avg Length Max Length Empty Long", "language_stats_row": "{{lang}} {{totalKeys}} {{totalCharacters}} {{averageKeyLength}} {{maxKeyLength}} {{emptyKeys}} {{longKeys}}", "size_variations_title": "Size Variations", "size_variations_header": "Language Char Diff % Diff Problematic", "size_variation_row": "{{lang}} {{characterDifference}} {{percentageDifference}}% {{problematic}}", "problematic_yes": "Yes", "problematic_no": "No", "recommendations_title": "Recommendations", "recommendation_item": "{{index}}. {{recommendation}}", "problematic_key_detail": " {{index}}. Key: '{{key}}' - Variations: {{variations}}", "generating_detailed_report": "Generating detailed report...", "keysHaveSignificantSizeVariations": "keys have significant size variations", "longTranslationsDetected": "${lang} has ${data.longKeys} translations longer than 100 characters - consider breaking them down", "report_saved_to": "Report saved to: {{reportPath}}", "considerReviewingTranslations": "Consider reviewing ${lang} translations - they are ${data.percentageDifference}% longer than baseline", "csv_report_saved_to": "CSV report saved to: {{csvPath}}", "no_translation_files_found": "No translation files found", "analysis_completed": "Analysis completed in {{duration}}ms", "analysis_failed": "Analysis failed: {{errorMessage}}", "failed_to_parse_language_error": "Failed to parse {{language}} translations: {{errorMessage}}", "recommendations": { "keys_have_significant_size_variations": "keys have significant size variations", "consider_reviewing_translations": "Consider reviewing {{lang}} translations - they are {{percentageDifference}}% {{comparison}} than baseline", "long_translations_detected": "{{lang}} has {{longKeys}} translations longer than {{threshold}} characters - consider breaking them down" }, "hardcodedTexts": { "keysHaveSignificantSizeVariations": "keys have significant size variations", "considerReviewingTranslations": "Consider reviewing {{lang}} translations - they are {{percentageDifference}}% {{comparison}} than baseline", "longTranslationsDetected": "{{lang}} has {{longKeys}} translations longer than {{threshold}} characters - consider breaking them down" } }, "usage": { "help_message": "\nI18n Usage Analyzer\n\nUsage: node i18ntk-usage.js [options]\n\nOptions:\n --source-dir <dir> Source directory to scan (default: ./src)\n --i18n-dir <dir> I18n directory (default: ./src/locales)\n --output-report Generate detailed report\n --output-dir <dir> Output directory for reports (default: ./reports)\n --help Show this help\n\nExamples:\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": "๐Ÿ“ Source directory: {sourceDir}", "translationCompletenessTitle": "๐ŸŒ Translation Completeness:", "i18n_directory_thisi18ndir": "๐ŸŒ I18n directory: {i18nDir}", "failed_to_parse_filename_error": "โš ๏ธ Failed to parse {fileName}: {errorMessage}", "analyzing_source_files": "๐Ÿ” Analyzing source files...", "found_files_in_source": "๐Ÿ“‚ Found {numFiles} files in source directory", "found_thisusedkeyssize_unique_": "๐ŸŽฏ Found {usedKeysSize} unique used keys", "total_key_usages_totalkeysfoun": "๐Ÿ“Š Total key usages: {totalKeysFound}", "loading_available_translation_": "๐Ÿ“‹ Loading available translation keys...", "found_thisavailablekeyssize_av": "โœ… Found {availableKeysSize} available keys", "foundTranslationFiles": "โœ… Found {count} translation files", "pressEnterToReturnToMenu": "๐Ÿ“ Press Enter to return to the main menu...", "notTranslatedKeysTotal": "โš ๏ธ Not translated keys: {total}", "noSourceFilesFound": "โš ๏ธ No source files found in the source directory.", "reviewNotTranslatedKeys": "๐Ÿ’ก Review not translated keys", "analysisCompletedSuccessfully": "๐ŸŽ‰ Analysis completed successfully!", "detectedSourceDirectory": "Detected source directory: {{sourceDir}}", "detectedI18nDirectory": "Detected i18n directory: {i18nDir}", "fileInfo": " ๐Ÿ“„ {namespace}: {keys} keys", "failedToAnalyzeUsage": "โŒ Failed to analyze usage: {error}", "failedToAnalyzeFile": "โŒ Failed to analyze file: {error}", "analyzerInitialized": "Analyzer initialized", "analyzerInitFailed": "Analyzer initialization failed: {error}", "argsParsed": "Arguments parsed", "argsParseFailed": "Argument parsing failed: {error}", "translationDiscoveryError": "Translation discovery error: {error}", "fileTraversalError": "File traversal error: {error}", "usageAnalysisFailed": "Usage analysis failed: {error}", "translationFileParseError": "Translation file parse error: {error}", "translationKeysLoadError": "Translation keys load error: {error}", "languageCompletenessStats": "{language}: {translated}/{total} ({completeness}% translated)", "missingKeysCount": "Missing keys: {count}", "analyzingTranslationCompleteness": "Analyzing translation completeness...", "unusedKeysCount": "Unused keys: {count}", "usedKeysCount": "Used keys: {count}", "availableKeysCount": "Available keys: {count}", "analysisResults": "Analysis results:", "checkUsage": { "title": "๐Ÿ” I18N USAGE ANALYSIS", "message": "Analyzing i18n key usage across your project.", "help_message": "\nI18n Usage Analyzer\n\nUsage: node i18ntk-usage.js [options]\n\nOptions:\n --source-dir <dir> Source directory to scan (default: ./src)\n --i18n-dir <dir> I18n directory (default: ./src/locales)\n --output-report Generate detailed report\n --output-dir <dir> Output directory for reports (default: ./reports)\n --help Show this help\n\nExamples:\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": "๐Ÿ“ Source directory: {sourceDir}", "i18n_directory_thisi18ndir": "๐ŸŒ I18n directory: {i18nDir}", "loading_available_translation_": "๐Ÿ“‹ Loading available translation keys...", "found_thisavailablekeyssize_av": "โœ… Found {availableKeysSize} available keys", "analyzing_source_files": "๐Ÿ” Analyzing source files...", "found_files_in_source": "๐Ÿ“‚ Found {numFiles} files in source directory", "found_thisusedkeyssize_unique_": "๐ŸŽฏ Found {usedKeysSize} unique used keys", "total_key_usages_totalkeysfoun": "๐Ÿ“Š Total key usages: {totalKeysFound}", "translation_completeness_title": "๐Ÿ“Š TRANSLATION COMPLETENESS", "language_completeness_stats": " {language}: {translated}/{total} ({completeness}% translated)", "n_sample_unused_keys": "\nSample unused keys:", "key": "- {key}", "and_unusedkeyslength_5_more": "...and {count} more.", "n_recommendations": "\n๐Ÿ“‹ RECOMMENDATIONS", "consider_removing_unused_trans": "๐Ÿ’ก Consider removing unused translations to keep your project clean.", "n_next_steps": "\n๐Ÿ“‹ NEXT STEPS", "1_review_the_analysis_results": "1. Review the analysis results in the console or generated report.", "2_run_with_outputreport_for_de": "2. Run with --output-report for detailed report.", "3_remove_unused_keys_or_add_mi": "3. Remove unused keys or add missing keys to your source code.", "4_rerun_analysis_to_verify_imp": "4. Re-run analysis to verify improvements.", "usage_analysis_results": "๐Ÿ“Š USAGE ANALYSIS RESULTS", "source_files_scanned_thisfileu": "Source files scanned: {fileUsageSize}", "available_translation_keys_thi": "Available translation keys: {availableKeysSize}", "used_translation_keys_thisused": "Used translation keys: {usedKeysSize}", "dynamic_keys_detected_dynamick": "Dynamic keys detected: {dynamicKeysLength}", "unused_keys_unusedkeyslength": "Unused keys: {unusedKeysLength}", "missing_keys_missingkeyslength": "Missing keys: {missingKeysLength}", "noSourceFilesFound": "No source files found to analyze.", "processedFiles": "Processed {processedFiles} of {totalFiles} files.", "i18nDirectoryNotFound": "I18n directory not found: {i18nDir}", "noTranslationLanguagesFound": "No translation languages found.", "failedToAnalyzeFile": "Failed to analyze file {filePath}: {error}", "failedToAnalyzeLanguage": "Failed to analyze language {language}: {error}", "translationCompletenessAnalysisFailed": "Translation completeness analysis failed: {error}", "n": "" }, "complete": { "configLoadedSuccessfully": "Configuration loaded successfully", "configLoadingFailed": "Configuration loading failed", "title": "๐ŸŒ I18N TRANSLATION COMPLETION", "separator": "============================================================", "sourceDir": "๐Ÿ“ Source directory: {sourceDir}", "sourceLanguage": "๐ŸŒ Source language: {sourceLanguage}", "dryRunMode": "๐Ÿงช Dry run mode - no changes will be made", "languages": "๐ŸŒ Available languages: {languages}", "addingMissingKeys": "โž• Adding missing keys to translation files...", "processing": "๐Ÿ”„ Processing {language}...", "addedKeys": "โœ… Added {count} missing keys", "noChangesNeeded": "โœ… No changes needed for {language}", "summaryTitle": "๐Ÿ“Š COMPLETION SUMMARY", "totalChanges": "๐Ÿ“ Total changes: {totalChanges}", "languagesProcessed": "๐ŸŒ Languages processed: {languagesProcessed}", "missingKeysAdded": "โž• Missing keys added: {missingKeysAdded}", "nextStepsTitle": "๐Ÿ“‹ NEXT STEPS", "nextStep1": "1. Run usage analysis:", "nextStep2": " node i18ntk-usage.js --output-report", "nextStep3": "2. Validate translations:", "nextStep4": " node i18ntk-validate.js", "nextStep5": "3. Analyze patterns:", "nextStep6": " node i18ntk-analyze.js", "allKeysAvailable": "๐ŸŽ‰ All translation keys are now available!", "runWithoutDryRun": "๐Ÿ’ก Run without --dry-run to apply changes", "deletingOldReport": "๐Ÿ—‘๏ธ Deleting old report...", "generatingFreshAnalysis": "๐Ÿ“Š Generating fresh usage analysis...", "couldNotGenerate": "โŒ Could not generate usage analysis", "reportNotFound": "๐Ÿ“‹ Usage report not found. Using common keys...", "foundMissingKeys": "๐Ÿ“‹ Found {count} missing keys from usage analysis", "couldNotParse": "โŒ Could not parse usage report. Using common keys..." } }, "validate": { "help_message": "\nI18n Translation Validator\n\nUsage: node i18ntk-validate.js [options]\n\nOptions:\n --source-dir <dir> Source directory to scan (default: ./src)\n --i18n-dir <dir> I18n directory (default: ./src/locales)\n --output-report Generate detailed report\n --output-dir <dir> Output directory for reports (default: ./reports)\n --help Show this help\n\nExamples:\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": "๐Ÿ” I18n Translation Validator", "message": "Starting validation process...", "sourceDirectory": "๐Ÿ“ Source directory: {dir}", "sourceLanguage": "๐ŸŒ Source language: {sourceLanguage}", "strictMode": "โš™๏ธ Strict mode: {mode}", "noTargetLanguages": "โš ๏ธ No target languages found to validate", "validatingLanguages": "๐ŸŒ Validating languages: {langs}", "validatingLanguage": "๐Ÿ” Validating language: {lang}", "filesCount": "๐Ÿ“„ Files: {count}", "keysCount": "๐Ÿ”‘ Keys: {count}", "missingFilesCount": "๐Ÿ“ Missing files: {count}", "syntaxErrorsCount": "โŒ Syntax errors: {count}", "translationPercentage": "๐ŸŽฏ Translation: {percentage}% ({translated}/{total} keys)", "validationSummary": "๐Ÿ“Š VALIDATION SUMMARY", "validation_failed": "โŒ Validation failed: {error}", "totalErrors": "โŒ Total errors: {count}", "totalWarnings": "โš ๏ธ Total warnings: {count}", "errorsSection": "โŒ ERRORS", "warningsSection": "โš ๏ธ WARNINGS", "recommendationsSection": "๐Ÿ’ก RECOMMENDATIONS", "fixErrorsFirst": "1. Fix all errors first", "resolveMissingFilesAndSyntaxErrors": "1. Resolve missing files and syntax errors", "fixStructuralInconsistencies": "2. Fix structural inconsistencies", "completeMissingTranslations": "3. Complete missing translations", "rerunValidation": "4. Rerun validation to verify fixes", "addressWarnings": "Address warnings to improve quality", "reviewWarnings": "Review warnings and fix where appropriate", "considerRunningWithStrict": "2. Consider running with --strict flag for stricter validation", "allValidationsPassed": "๐ŸŽ‰ All validations passed!", "considerRunningUsageAnalysis": "Consider running usage analysis: node i18ntk-usage.js", "deletedOldReport": "๐Ÿ—‘๏ธ Deleted old validation report", "sourceDir": "๐Ÿ“ Source directory: {sourceDir}", "i18nDir": "๐ŸŒ I18n directory: {i18nDir}", "loadingTranslationFiles": "๐Ÿ“‹ Loading translation files...", "foundTranslationFilesCount": "โœ… Found {count} translation files", "analyzingTranslations": "๐Ÿ” Analyzing translations...", "validationCompletedSuccessfully": "๐ŸŽ‰ Validation completed successfully!", "validationErrorsFound": "โš ๏ธ Validation errors found: {count}", "validationWarningsFound": "โš ๏ธ Validation warnings found: {count}", "validationPassed": "โœ… Validation passed with no errors", "validationFailed": "Validation failed: {error}", "startingValidationProcess": "๐Ÿ” Starting validation process...", "validationProcessCompletedSuccessfully": "โœ… Validation process completed successfully", "stackTrace": "Stack trace: {{stack}}", "authenticationFailed": "โŒ Authentication failed. Access denied.", "fatalValidationError": "โŒ Fatal validation error: {{error}}", "configAccess": "Accessing configuration for validation", "configValidated": "Configuration validated successfully", "configError": "Configuration error: {error}", "validatorInit": "Initializing I18n validator", "validatorInitialized": "I18n validator initialized successfully", "validatorInitError": "Validator initialization error: {error}", "argsParsing": "Parsing command line arguments", "argsParsed": "Command line arguments parsed successfully", "argsParseError": "Argument parsing error: {error}", "languagesScan": "Scanning available languages", "languagesFound": "Found {count} languages", "languagesScanError": "Language scanning error: {error}", "filesScan": "Found {count} files in {language}", "filesScanError": "File scanning error: {error}", "jsonValidated": "JSON syntax validated: {filePath}", "jsonValidationError": "JSON validation error: {error}", "languageValidation": "Validating language: {language}", "languageValidationError": "Language validation error: {error}", "fileDeleted": "File deleted", "runStarted": "Starting validation run", "runCompleted": "Validation run completed successfully", "runError": "Validation run failed: {error}", "scriptExecution": "Script execution", "validationCompleted": "Validation completed", "validationError": "Validation error: {error}", "separator": "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”", "languageHeader": "๐ŸŒ Language: {language}", "validationResults": "๐Ÿ“Š Validation Results", "noErrors": "โœ… No errors found", "noWarnings": "โœ… No warnings found", "summaryHeader": "๐Ÿ“‹ OVERALL SUMMARY", "progressIndicator": "โณ Processing...", "completedIndicator": "โœ… Completed", "errorIndicator": "โŒ Error", "warningIndicator": "โš ๏ธ Warning", "infoIndicator": "โ„น๏ธ Info", "sourceDirNotConfigured": "Source directory not configured", "sourceLanguageNotConfigured": "Source language not configured", "translationFunctionNotInitialized": "Translation function not properly initialized", "sourceLanguageDirectoryNotFound": "Source language directory not found", "specifiedLanguageNotFound": "Specified language not found", "noJsonFilesFound": "No JSON files found in source directory: {sourceDir}", "i18nDirectoryNotFound": "I18n directory not found: {i18nDir}", "invalidDirectoryPaths": "Invalid directory paths detected", "invalidSampleFilePath": "Invalid sample file path", "failedToCreateSampleTranslationFile": "Failed to create sample translation file", "invalidFilePathDetected": "Invalid file path detected", "failedToWriteFile": "Failed to write file: {filePath}" }, "adminCli": { "setupPinProtectionTitle": "\n๐Ÿ” Setting up Admin PIN Protection", "setupPinProtectionDescription": "This will require a 4-6 digit PIN for administrative operations.", "enablePinProtectionPrompt": "Do you want to enable admin PIN protection?", "setupCancelled": "Admin PIN protection setup cancelled.", "enterPinPrompt": "Enter a 4-6 digit PIN: ", "pinFormatError": "โŒ PIN must be 4-6 digits. Please try again.", "confirmPinPrompt": "Confirm PIN: ", "pinMismatchError": "โŒ PINs do not match. Please try again.", "pinProtectionEnabledSuccess": "โœ… Admin PIN protection enabled successfully!", "pinRecoveryWarning": "โš ๏ธ Remember your PIN - it cannot be recovered if lost.", "setupPinProtectionFailed": "โŒ Failed to setup admin PIN protection.", "errorSettingUpPin": "โŒ Error setting up admin PIN: {message}", "authRequiredForOperation": "\n๐Ÿ” Admin authentication required for: {operation}", "invalidPinFormat": "โŒ Invalid PIN format. PIN must be 4-6 digits.", "authenticationSuccess": "โœ… Authentication successful!", "invalidPinAttemptsRemaining": "โŒ Invalid PIN. {remaining} attempts remaining.", "authenticationFailedAccessDenied": "โŒ Authentication failed. Access denied.", "authenticationError": "โŒ Authentication error: {message}", "pinProtectionNotEnabled": "Admin PIN protection is not currently enabled.", "disablingPinProtectionTitle": "\n๐Ÿ”“ Disabling Admin PIN Protection", "confirmDisablePinProtection": "Are you sure you want to disable admin PIN protection?", "operationCancelled": "Operation cancelled.", "pinProtectionDisabledSuccess": "โœ… Admin PIN protection disabled.", "disablePinProtectionFailed": "โŒ Failed to disable admin PIN protection.", "errorDisablingPinProtection": "โŒ Error disabling admin protection: {message}", "adminProtectionStatusTitle": "\n๐Ÿ” Admin Protection Status", "statusEnabled": "Status: โœ… ENABLED", "protectionDetails": "Protection: 4-6 digit PIN required for admin operations", "lockoutDetails": "Lockout: 3 failed attempts = 15 minute lockout", "statusDisabled": "Status: โŒ DISABLED", "noAuthRequired": "Protection: No authentication required", "unprotectedRisk": "Risk: Administrative operations are unprotected", "errorCheckingAdminStatus": "โŒ Error checking admin status: {message}", "authRequired": "๐Ÿ” Admin authentication required.", "invalidPin": "โŒ Invalid PIN.", "authSuccess": "โœ… Authentication successful!", "adminPinSetupCli": "admin_pin_setup_cli", "adminAuthFailedCli": "admin_auth_failed_cli", "adminAuthDisabledCli": "admin_auth_disabled_cli", "protectedAccess": "Protected access: Admin authentication required for sensitive operations.", "enterPin": "Enter admin PIN: ", "accessGranted": "Access granted." }, "adminPin": { "setup_title": "๐Ÿ” Admin PIN Setup", "setup_separator": "============================================================", "setup_description": "Create a 4-6 digit PIN for admin access to sensitive settings.", "required_for_title": "This PIN will be required for:", "required_for_1": " โ€ข Changing security settings", "required_for_2": " โ€ข Modifying advanced configurations", "required_for_3": " โ€ข Accessing debug tools", "required_for_4": " โ€ข Resetting settings", "setup_note": "๐Ÿ’ก Note: You will see asterisks (*) as you type - these are just masking characters.", "setup_digits_only": " Only numbers 0-9 are accepted as PIN digits.", "invalid_pin_length": "โŒ Invalid PIN. Must be 4-6 digits (numbers 0-9 only).", "invalid_pin_example": " Example: 1234 or 567890", "pins_do_not_match": "โŒ PINs do not match.", "setup_success": "โœ… Admin PIN has been set successfully!", "setup_warning": "โš ๏ธ Keep this PIN secure. It cannot be recovered if lost.", "setup_error": "โŒ Error setting up PIN:", "session_expired": "\nโฐ Admin session expired due to inactivity.", "no_pin_set_setting_up": "โš ๏ธ No admin PIN set. Setting up PIN...", "no_pin_configured_access_denied": "โš ๏ธ No admin PIN configured. Access denied.", "use_admin_settings_to_set_pin": "๐Ÿ’ก Use the admin settings to set up a PIN first.", "locked_out": "๐Ÿ”’ Admin access is locked due to too many failed attempts.", "wait_before_retry": "Please wait 5 minutes before trying again.", "access_granted": "โœ… Admin access granted.", "incorrect_pin": "โŒ Incorrect PIN. {attempts} attempts remaining.", "verify_pin_error": "โŒ Error verifying PIN:", "already_configured": "โœ… Admin PIN is already configured.", "optional_setup_title": "\n๐Ÿ” Admin PIN Setup (Optional)", "optional_setup_description": "Admin PIN protection adds security for sensitive operations like:", "setup_prompt": "Would you like to set up an admin PIN? (y/N): ", "skipping_setup": "โญ๏ธ Skipping admin PIN setup. You can set it up later in settings.", "setup_prompt_error": "โŒ Error during PIN setup prompt:", "protectedAccess": "Protected access: Admin authentication required for sensitive operations.", "enterPin": "Enter admin PIN: ", "accessGranted": "Access granted.", "invalidPin": "โŒ Invalid PIN. Please try again.", "weak_pin_warning": "โš ๏ธ WARNING: This PIN appears to be weak or common.", "weak_pin_suggestion": "๐Ÿ’ก Consider using a stronger PIN with varied digits.", "use_anyway_prompt": "Type \"yes\" to use anyway, or press Enter to choose a different PIN: ", "enter_new_pin": "Enter new admin PIN (4-6 digits): ", "confirm_pin": "Confirm admin PIN: ", "not_set": "Not Set", "pin_display_mask": "####" }, "autorun": { "missingRequiredFile": "Missing required file: {file}", "runInitializationFirst": "Please run initialization first.", "initializationCheckPassed": "Initialization check passed.", "runningStep": "Running step: {stepName}", "commandLabel": "Command: {command}", "stepRunning": "Step '{stepName}' running...", "stepCompletedWithTime": "Step '{stepName}' completed in {duration}ms.", "stepCompleted": "Step '{stepName}' completed.", "stepFailed": "Step '{stepName}' failed.", "errorLabel": "Error: {error}", "stepFailedWithError": "Step '{stepName}' failed with error: {error}", "requiredStepFailed": "Required step failed. Stopping workflow.", "optionalStepFailed": "Optional step failed. Continuing workflow.", "startingAutoRunWorkflow": "Starting Auto-Run Workflow...", "workflowIncludesSteps": "Workflow includes {count} steps:", "stepRequired": "(Required)", "stepOptional": "(Optional)", "startingExecution": "Starting execution...", "workflowStopped": "Workflow stopped.", "workflowCompleted": "Workflow completed.", "pressEnterToContinue": "Press Enter to continue...", "runningSelectedSteps": "Running selected steps...", "invalidStepNumber": "Invalid step number: {stepNum}", "executionReport": "Execution Report:", "successfulSteps": "Successful steps: {count}", "failedSteps": "Failed steps: {count}", "requiredFailedSteps": "Required steps failed: {count}", "stepDetails": "Step Details:", "errorDetails": "Error: {error}", "reportSavedTo": "Report saved to: {path}", "overallStatusSuccess": "SUCCESS", "overallStatusFailed": "FAILED", "overallStatus": "Overall Status: {status}", "customSettingsConfiguration": "Custom Settings Configuration", "pressEnterForDefaults": "Press Enter to use default settings for any prompt.", "sourceDirPrompt": "Enter source directory (default: {default}): ", "sourceLangPrompt": "Enter source language (default: {default}): ", "targetLangsPrompt": "Enter target languages (comma-separated, default: {default}): ", "translationMarkerPrompt": "Enter translation marker (default: {default}): ", "outputDirPrompt": "Enter output directory for reports (default: {default}): ", "settingsUpdatedSuccessfully": "Settings updated successfully!", "errorConfiguringSettings": "Error configuring settings: {error}", "autoRunScriptTitle": "Auto-Run Script", "usageTitle": "Usage:", "runAllSteps": "node i18ntk-autorun.js --all - Run all steps defined in i18ntk-config.json", "configureSettingsFirst": "node i18ntk-autorun.js --config - Configure settings for the workflow", "runSpecificSteps": "node i18ntk-autorun.js --steps <step_numbers> - Run specific steps (e.g., --steps 1,3,5)", "showHelp": "node i18ntk-autorun.js --help - Show this help message", "availableSteps": "Available Steps:", "examplesTitle": "Examples:", "configExample": "node i18ntk-autorun.js --config", "stepsExample1": "node i18ntk-autorun.js --steps 1,2,3", "stepsExample2": "node i18ntk-autorun.js --all", "configurationComplete": "Configuration complete.", "runAutoRunCommand": "Now you can run the auto-run command.", "configurationFailed": "Configuration failed: {error}", "noValidStepNumbers": "No valid step numbers provided.", "autoRunFailed": "Auto-run failed: {error}", "stepInitializeProject": "Initialize Project", "stepAnalyzeTranslations": "Analyze Translations", "stepValidateTranslations": "Validate Translations", "stepCheckUsage": "Checked Usage", "stepCompleteTranslations": "Complete Translations", "stepAnalyzeSizing": "Analyze Sizing", "stepGenerateSummary": "Generating summary report...", "stepCompletedIcon": "โœ…", "stepCompletedWithIcon": "โœ… Step '{stepName}' completed.", "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Step '{stepName}' running...", "stepFailedIcon": "โŒ", "translationLoadWarning": "Warning: Could not load {lang} translations", "configReadError": "Error reading {file}", "separator": "==================================================" }, "debug": { "title": "๐Ÿ”ง Debug Tools", "separator": "============================================================", "mainDebuggerSystemDiagnostics": "1. System Diagnostics", "_consoleTranslationsCheck": "// 2. Console Translations Check", "_exportMissingKeys": "// 3. Export Missing Translation Keys", "_replaceHardcodedConsole": "// 4. Replace Hardcoded Console Strings", "_consoleKeyChecker": "// 5. Console Key Checker", "debugLogs": "2. Debug Logs", "backToMainMenu": "0. Back to Main Menu", "selectOption": "Select a debug tool: ", "runningDebugTool": "Running {displayName}...", "debugToolNotFound": "โŒ Debug tool not found: {toolName}", "errorRunningDebugTool": "Error running debug tool '{displayName}': {error}", "recentDebugLogs": "๐Ÿ“„ Recent Debug Logs", "noDebugLogsFound": "โŒ No debug logs found.", "debugLogsDirectoryNotFound": "โŒ Debug logs directory not found.", "selectLogPrompt": "Select log file to view (1-{count}): ", "invalidChoiceSelectRange": "Invalid choice. Please select from the available range.", "contentOf": "๐Ÿ“„ Content of {filename}:", "pressEnterToContinue": "Press Enter to continue..." }, "detect_language_mismatches": { "tool_title": "๐Ÿ” Language Mismatch Detection Tool", "separator": "=====================================\n", "analyzing_file": "๐Ÿ“„ Analyzing {language}.json...", "error_analyzing_file": "โŒ Error analyzing {filename}: {errorMessage}", "results_title": "๐Ÿ“Š LANGUAGE MISMATCH DETECTION RESULTS", "results_separator": "========================================\n", "summary_title": "๐Ÿ“‹ SUMMARY:", "total_files_analyzed": " Total files analyzed: {totalFiles}", "files_with_mismatches": " Files with mismatches: {filesWithMismatches}", "total_mismatches_found": " Total mismatches found: {totalMismatches}\n", "no_mismatches_found": "โœ… No language mismatches found! All translations appear to be in their correct languages.\n", "detailed_results_title": "๐Ÿ” DETAILED RESULTS:\n", "file_mismatch_header": "๐Ÿ“„ {filename} ({language})", "mismatches_count": " Found {count} mismatch(es):\n", "mismatch_details": " {index}. Key: {key}", "mismatch_value": " Value: \"{value}\"", "mismatch_issue": " Issue: {description}", "recommendations_title": "๐Ÿ’ก RECOMMENDATIONS:\n", "recommendation_1": "1. Review and translate all entries marked with [TRANSLATE]", "recommendation_2": "2. Replace language prefixes (e.g., [DE], [FR]) with proper translations", "recommendation_3": "3. Translate English text to the appropriate target language", "recommendation_4": "4. Use native language equivalents for all user-facing text", "recommendation_5": "5. Run this tool again after making corrections to verify fixes\n", "detailed_report_saved": "๐Ÿ“„ Detailed report saved to: {reportPath}\n", "error_saving_report": "โŒ Error saving report: {errorMessage}\n", "auto_fix_mode": "๐Ÿ”ง Auto-fix mode {dryRun}", "auto_fix_separator": "=====================================\n", "fixed_file": "โœ… Fixed {filename}", "auto_fix_summary_title": "\n๐Ÿ“Š Auto-fix Summary:", "total_fixes_applied": " Total fixes applied: {count}", "preview_fixes_title": "\n๐Ÿ” Preview of fixes:", "fix_details": " {file}: {key}\n Old: \"{old}\"\n New: \"{new}\"\n", "more_fixes": " ... and {count} more fixes\n", "run_with_apply_fixes": "๐Ÿ’ก Run with --apply to apply these fixes\n", "error_general": "โŒ Error:", "mainDebuggerSystemDiagnostics": "Main Debugger / System Diagnostics", "exportMissingKeys": "Export Missing Keys", "replaceHardcodedConsole": "Replace Hardcoded Console", "consoleKeyChecker": "Console Key Checker", "debugLogs": "Debug Logs", "backToMainMenu": "Back to Main Menu", "invalidChoiceSelectRange": "โŒ Invalid choice. Please select a number within the displayed range.", "runningDebugTool": "Running debug tool: {displayName}", "debugToolNotFound": "Debug tool '{toolName}' not found.", "recentDebugLogs": "Recent Debug Logs", "noDebugLogsFound": "No debug logs found.", "logEntry": "Log Entry: {timestamp} - {message}", "debugLogsDirectoryNotFound": "Debug logs directory not found." }, "help": { "title": "๐Ÿ“Š I18N MANAGEMENT HELP\n\n", "usage": "Usage: node i18ntk-manage.js [options]\n", "interactiveMode": "\n๐Ÿ’ก Use: node i18ntk-manage.js --command=<command> for direct execution\n", "showHelp": "\n๐Ÿ“– Use: node i18ntk-manage.js --help for available commands\n", "availableCommands": "\n๐Ÿ“– Available Commands:\n", "initProject": "๐Ÿš€ Initialize new languages", "analyzeTranslations": "๐Ÿ” Analyze translations", "validateTranslations": "โœ… Validate translations", "checkUsage": "๐Ÿ“Š Check key usage", "initCommand": " init - Initialize new languages", "analyzeCommand": " analyze - Analyze translations", "validateCommand": " validate - Validate translations", "usageCommand": " usage - Check key usage", "sizingCommand": " sizing - Analyze sizing", "completeCommand": " complete - Complete translations (100% coverage)", "summaryCommand": " summary - Show project status", "debugCommand": " debug - Debug translation issues", "menu": { "title": "\n๐ŸŒ I18N MANAGEMENT MENU\n", "description": "Interactive menu for managing internationalization\n", "exit": "\n๐Ÿšช Exit" }, "commands": { "init": "\n init - Initialize new languages", "analyze": " analyze - Analyze translations", "validate": " validate - Validate translations", "usage": " usage - Check key usage", "sizing": " sizing - Analyze sizing", "complete": " complete - Complete translations (100% coverage)", "summary": " summary - Show project status", "debug": " debug - Debug translation issues" }, "options": { "sourceDir": "\n --source-dir <dir> Source directory to analyze", "output": " --output <file> Output file for the report", "verbose": " --verbose, -v Show detailed information", "keepReports": " --keep-reports Keep existing reports", "deleteReports": " --delete-reports Delete existing reports", "help": " --help, -h Show this help" }, "examples": { "title": "\nExamples:\n", "example1": " node i18ntk-manage.js", "example2": " node i18ntk-manage.js --source-dir ./locales", "example3": " node i18ntk-manage.js --output summary-report.txt", "example4": " node i18ntk-manage.js --verbose", "example5": " node i18ntk-manage.js --source-dir ./locales --output report.json" }, "features": { "initProject": "๐Ÿš€ Initialize new languages", "analyzeTranslations": "๐Ÿ” Analyze translations", "validateTranslations": "โœ… Validate translations", "checkUsage": "๐Ÿ“Š Check key usage", "completeTranslations": "๐ŸŽฏ Complete translations (100% coverage)", "showSizing": "๐Ÿ“ Analyze sizing", "runWorkflow": "๐Ÿ”„ Run full workflow", "showStatus": "๐Ÿ“‹ Show project status", "deleteReports": "๐Ÿ—‘๏ธ Delete all reports", "changeLanguage": "๐ŸŒ Change UI language", "settings": "โš™๏ธ Settings", "showHelp": "โ“ Help", "debugTools": "๐Ÿ”ง Debug Tools" }, "messages": { "selectOption": "Select an option:", "invalidOption": "โŒ Invalid option. Please try again.", "operationCompleted": "โœ… Operation completed successfully!", "pressEnter": "Press Enter to continue...", "goodbye": "๐Ÿ‘‹ Goodbye!", "unknownCommand": "Unknown command: {{command}}", "nonInteractive": "โš ๏ธ Non-interactive mode detected. Menu displayed for reference only." }, "i18n_helper": { "translation_file_not_found": "Translation file not found: {translationFile}", "error_loading_translations": "Error loading translations: {errorMessage}", "translation_not_found": "Translation not found for key: {key}", "translation_key_not_string": "Translation key does not resolve to a string: {key}", "error_reading_locales_directory": "Error reading locales directory: {errorMessage}" } }, "init": { "initializationTitle": "๐Ÿš€ i18n Management Toolkit - Project Initialization", "sourceDirectoryLabel": "๐Ÿ“ Source Directory: {dir}", "sourceLanguageLabel": "๐ŸŒ Source Language: {language}", "detectedI18nFrameworks": "๐Ÿ” Detected i18n framework(s): {frameworks}", "existingDirectoriesFound": "๐Ÿ“ Existing translation directories found:", "useExistingDirectoryPrompt": "Do you want to use the existing directory? (y/n)", "autoDetectedI18nDirectory": "๐Ÿ“‚ Auto-detected i18n directory: {directory}", "initializingProject": "โš™๏ธ Initializing project configuration...", "createdSampleTranslationFile": "โœ… Cre