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
788 lines (787 loc) โข 136 kB
JSON
{
"meta": {
"version": "1.10.0",
"updated": "2025-08-16"
},
"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}",
"errors": {
"errors": "Errors:",
"genericError": "โ Error: {error}",
"initializationFailed": "โ Initialization failed: {error}",
"initializationCancelled": "โ Initialization cancelled by user.",
"translationKeyNotFound": "Translation key not found: {key}",
"sourceDirectoryNotFound": "Source directory not found: {directory}",
"configLoadingFailed": "Configuration loading failed",
"invalidSourceDirectory": "Invalid source directory: {directory}",
"securityViolation": "Security violation detected",
"authenticationFailed": "Authentication failed",
"sourceEqualsI18nWarn": "โ ๏ธ sourceDir equals i18nDir ({sourceDir}). Falling back to {fallback} for source scanning."
},
"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}",
"analyzingTranslationCompleteness": "Analyzing translation completeness across all languages...",
"i18nDirectoryNotFound": "โ ๏ธ i18n directory not found: {i18nDir}",
"translationCompletenessAnalysisFailed": "โ ๏ธ Translation completeness analysis failed: {error}",
"failedToAnalyzeLanguage": "โ Failed to analyze language {language}: {error}",
"errorReadingI18nDirectory": "โ Error reading i18n directory: ",
"languageCompletenessTitle": "๐ TRANSLATION COMPLETENESS BY LANGUAGE",
"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!",
"warnings": "Warnings:",
"completedKeys": "Completed keys:",
"missingKeys": "Missing keys:",
"partialKeys": "Partial keys:",
"home": "Home",
"settings": "Settings",
"startingSettings": "๐๏ธ Starting Settings CLI...",
"confirm": "Confirm"
},
"errors": {
"invalidOption": "โ Invalid option: {option}. Please try again.",
"readlineClosed": "Input stream is closed; running in non-interactive mode.",
"noPackageJson": "No package.json found. Cannot auto-detect i18n framework.",
"noI18nDir": "No i18n directory found in the project root.",
"noI18nConfig": "No i18n configuration file found in the project root."
},
"scanner": {
"help_message": "\nI18n Text Scanner\n\nUsage: node i18ntk-scanner.js [options]\n\nOptions:\n --source-dir <dir> Source directory to scan (default: ./src)\n --output <file> Output file for scan results (default: ./i18ntk-scanner-report.json)\n --framework <name> Framework to target (react, vue, angular, vanilla)\n --patterns <patterns> Custom regex patterns (comma-separated)\n --include-tests Include test files in scan\n --exclude-dirs <dirs> Directories to exclude (comma-separated)\n --help Show this help\n\nExamples:\n node i18ntk-scanner.js --source-dir=./src --framework=react\n node i18ntk-scanner.js --patterns 'console.log\\((.*?)\\)' --include-tests\n node i18ntk-scanner.js --output=./scan-results.json\n",
"help_options": {
"source_dir": "Source directory to scan for i18n issues",
"output_dir": "Directory for scan reports and results",
"framework": "Target framework (react, vue, angular, vanilla)",
"patterns": "Custom regex patterns for text detection",
"exclude": "File patterns to exclude from scanning",
"output_report": "Generate detailed scan report",
"min_length": "Minimum text length to consider for translation",
"max_length": "Maximum text length to consider for translation",
"include_tests": "Include test files in the scanning process"
},
"starting": "๐ Starting text scanner for framework: {framework}",
"sourceDirectory": "๐ Scanning directory: {sourceDir}",
"frameworkDetected": "๐ฏ Detected framework: {framework}",
"scanningFiles": "๐ Scanning {fileCount} files...",
"foundTexts": "๐ Found {textCount} texts requiring translation",
"generatingReport": "๐ Generating detailed report...",
"reportSaved": "๐พ Scan report saved to: {reportPath}",
"noTextsFound": "โ
No hardcoded English texts found",
"scanComplete": "๐ Scan completed successfully!",
"analysisTitle": "๐ TRANSLATION SCAN ANALYSIS",
"fileSummary": "๐ {file}: {count} texts found",
"textLocation": "๐ Line {line}: {text}",
"foundText": "Found {count} potential hardcoded text instances",
"context": "๐ Context: {context}",
"severity": "โ ๏ธ Severity: {severity}",
"recommendation": "๐ก Recommendation: {recommendation}",
"welcome": {
"title": "๐ฏ Welcome to the Text Scanner!",
"description": "This tool scans your source code for hardcoded English text that may need translation."
},
"frameworkPrompt": {
"title": "๐ฏ Select Framework",
"available": "Available frameworks: react, vue, angular, vanilla",
"description": "Enter the framework type (or press Enter for auto-detection):",
"input": "Framework: "
},
"directoryPrompt": {
"title": "๐ Select Source Directory",
"current": "Current directory: {dir}",
"description": "Enter the directory to scan (or press Enter for current):",
"input": "Directory: "
},
"options": {
"includeTests": "Include test files?",
"excludeDirs": "Directories to exclude (comma-separated):",
"customPatterns": "Custom patterns to scan for (regex):"
}
},
"fixer": {
"help_message": "\nI18n Translation Fixer\n\nUsage: node i18ntk-fixer.js [options]\n\nOptions:\n --source-dir <dir> Source directory to scan (default: ./locales)\n --languages <langs> Comma separated list of languages to fix\n --markers <markers> Comma separated markers to treat as untranslated\n --no-backup Skip automatic backup creation\n --help Show this help\n\nExamples:\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": "๐ Starting translation fixing for languages: {languages}",
"sourceDirectory": "๐ Source directory: {sourceDir}",
"sourceLanguage": "๐ค Source language: {sourceLanguage}",
"markers": "๐ท๏ธ Markers to fix: {markers}",
"scanningLanguage": "๐ Scanning {language}...",
"noLanguages": "โ No languages specified for fixing.",
"allComplete": "๐ All translations are already complete!",
"fullReportSaved": "๐ Full report saved to: {reportPath}",
"reviewReport": "Please review the report before proceeding.",
"backupCreated": "๐พ Backup created successfully.",
"applyingFixes": "๐ Applying fixes...",
"fixingComplete": "โ
Translation fixing complete!",
"operationCancelled": "โ Operation cancelled by user.",
"analysisTitle": "๐ TRANSLATION FIXING ANALYSIS",
"analysisSeparator": "==================================================",
"totalIssues": "Total issues found: {totalIssues}",
"missingTranslations": "Missing translations: {missing}",
"placeholderTranslations": "Placeholder translations: {placeholder}",
"noIssues": "โ
No issues found. All translations are complete.",
"detailedIssues": "๐ DETAILED ISSUES:",
"detailedSeparator": "--------------------------------------------------",
"filePath": "๐ {file} โ {path}",
"missingKey": "โ MISSING: {source} โ {new}",
"placeholderKey": "โ ๏ธ PLACEHOLDER: \"{target}\" โ \"{new}\"",
"moreIssues": "... and {count} more issues. Check the report file for complete details.",
"confirmationTitle": "๐ค Do you want to proceed with these fixes?",
"confirmationOptions": "Options:",
"optionYes": "y - Yes, apply all fixes",
"optionNo": "n - No, cancel operation",
"optionShow": "s - Show detailed issues",
"choicePrompt": "Your choice (y/n/s): ",
"nonInteractiveMode": "โก Non-interactive mode detected - applying fixes automatically...",
"reportGenerated": "๐ Fixer report generated: {path}",
"summary": {
"totalIssues": "Total issues: {total}",
"missingKeys": "Missing keys: {missing}",
"placeholderKeys": "Placeholder keys: {placeholder}",
"languages": "Languages: {languages}"
},
"welcome": {
"title": "๐ฏ Welcome to the Translation Fixer!",
"description": "This tool will help you fix broken translations and placeholders across your locale files."
},
"markerPrompt": {
"title": "๐ท๏ธ Configure Placeholder Markers",
"description": "Enter the markers that indicate untranslated text (comma-separated):",
"currentDefaults": "Default markers: {markers}",
"input": "Markers (or press Enter for defaults): "
},
"languagePrompt": {
"title": "๐ Select Languages to Fix",
"available": "Available languages: {languages}",
"description": "Enter languages to fix (comma-separated) or press Enter for all:",
"input": "Languages: ",
"noLanguages": "No languages found to fix."
},
"directoryPrompt": {
"title": "๐ Select Directory",
"current": "Current directory: {dir}",
"description": "Enter the directory containing your locale files (or press Enter for current):",
"input": "Directory: "
}
},
"autorun": {
"stepAnalyzeTranslations": "Analyze translations",
"stepCompletedWithIcon": "โ
Completed: {stepName}",
"stepValidateTranslations": "Validate translations",
"stepRunning": "โถ๏ธ Step {stepNumber}/{totalSteps}: {stepName}",
"separator": "==================================================",
"stepFailed": "โ Failed: {stepName}",
"errorLabel": "Error",
"autoRunScriptTitle": "๐งช Auto-Run Workflow",
"usageTitle": "Usage",
"runAllSteps": "Run: node i18ntk-autorun.js",
"configureSettingsFirst": "Config: i18ntk-config.json or CLI flags",
"runSpecificSteps": "Use --steps=1,3 or --list to show steps",
"showHelp": "--help for more info",
"examplesTitle": "Examples",
"configExample": "node i18ntk-autorun.js --ui-language=zh",
"stepsExample1": "node i18ntk-autorun.js --steps=analyze,validate",
"stepsExample2": "node i18ntk-autorun.js --list",
"customSettingsConfiguration": "Custom autorun settings",
"availableSteps": "Available steps",
"startingAutoRunWorkflow": "๐ Starting Auto-Run Workflow...",
"workflowIncludesSteps": "Workflow includes {count} steps:",
"missingRequiredFile": "Missing required file: {file}",
"workflowStopped": "Workflow stopped due to a failure.",
"workflowCompleted": "๐ Workflow completed!",
"successfulSteps": "Successful steps: {count}",
"failedSteps": "Failed steps: {count}",
"stepInitializeProject": "Initialize project",
"stepCheckUsage": "Check key usage",
"stepGenerateSummary": "Generate summary report",
"runInitializationFirst": "Please run initialization first.",
"initializationCheckPassed": "Initialization check passed.",
"runningStep": "Running step: {stepName}",
"commandLabel": "Command: {command}",
"stepCompletedWithTime": "Step '{stepName}' completed in {duration}ms.",
"stepCompleted": "Step '{stepName}' completed.",
"stepFailedWithError": "Step '{stepName}' failed with error: {error}",
"requiredStepFailed": "Required step failed. Stopping workflow.",
"optionalStepFailed": "Optional step failed. Continuing workflow.",
"stepRequired": "(Required)",
"stepOptional": "(Optional)",
"startingExecution": "Starting execution...",
"pressEnterToContinue": "Press Enter to continue...",
"runningSelectedSteps": "Running selected steps...",
"invalidStepNumber": "Invalid step number: {stepNum}",
"executionReport": "Execution Report:",
"requiredFailedSteps": "Required steps failed: {count}",
"stepDetails": "Step Details:",
"reportSavedTo": "Report saved to: {path}",
"overallStatusSuccess": "SUCCESS",
"overallStatusFailed": "FAILED",
"overallStatus": "Overall Status: {status}",
"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}",
"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}",
"stepCompleteTranslations": "Complete Translations",
"stepAnalyzeSizing": "Analyze Sizing",
"stepCompletedIcon": "โ
",
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Step '{stepName}' running...",
"stepFailedIcon": "โ",
"translationLoadWarning": "Warning: Could not load {lang} translations",
"configReadError": "Error reading {file}"
},
"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",
"sourceLanguageNotFound": "Source language directory not found: {sourceLanguage}",
"couldNotParseTarget": "Could not parse target file: {file}",
"couldNotParseSource": "Could not parse source file: {file}",
"reportGenerated": "Report generated: {path}",
"generateReportPrompt": "Would you like a report generated?",
"title": "๐ I18NTK 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",
"longer": "longer",
"shorter": "shorter",
"review_translations": "Consider reviewing {lang} translations - they are {percentageDifference}% {comparison} than baseline",
"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}",
"human_report_saved": "Human-readable report saved: {reportPath}",
"folder_summary_title": "Folder Summary",
"folder_summary_table_header": "Language Size(KB) Keys Avg Length Total Chars",
"folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
"language_comparison_title": "Language Comparison",
"language_comparison_row": "{lang}: {diff} chars ({percent}%) {status}",
"summary_stats": "๐ Summary: {totalLanguages} languages, {totalKeys} keys - Reports saved to {reportPath}",
"detailedKeysDescription": "Show detailed key-level analysis in console",
"too_many_keys_warning": "โ ๏ธ Too many keys to display in console - check the detailed report file for full analysis",
"no_translation_files_found": "No translation files found",
"analysis_completed": "Analysis completed in {duration}ms",
"analysis_failed": "Analysis failed: {errorMessage}",
"starting_analysis": "Starting analysis...",
"found_files": "Found {count} files",
"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"
}
},
"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",
"errorReadingI18nDirectory": "โ ๏ธ Error reading i18n directory: {error}",
"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}",
"failedToExtractKeys": "โ Failed to extract keys from {filePath}: {error}",
"analysisFailedError":"โ Analysis failed: {error}",
"analyzerInitialized": "Analyzer initialized",
"analyzerInitFailed": "Analyzer initialization failed: {error}",
"argsParsed": "Arguments parsed",
"processedFiles": "Processed {processedFiles} of {totalFiles} files.",
"argsParseFailed": "Argument parsing failed: {error}",
"translationDiscoveryError": "Translation discovery error: {error}",
"fileTraversalError": "File traversal error: {error}",
"sourceEqualsI18nWarn": "โ ๏ธ Source directory and i18n directory are the same. This may cause issues with the analysis.",
"i18nEqualsSourceWarn": "โ ๏ธ I18n directory and source directory are the same. This may cause issues with the analysis.",
"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:",
"i18nDirectoryNotFound": "โ ๏ธ I18n directory not found. Please check the path.",
"sourceDirectoryNotFound": "โ ๏ธ Source directory not found: {dir}",
"checkUsage": {
"title": "๐ I18NTK USAGE ANALYSIS",
"analyzing_source_files": "๐ Analyzing source files...",
"source_directory_thissourcedir": "๐ Source directory: {sourceDir}",
"i18n_directory_thisi18ndir": "๐ i18n directory: {i18nDir}",
"found_files_in_source": "โ
Found {numFiles} files in source directory",
"no_source_files_found": "โ ๏ธ No source files found in the specified directory",
"processedFiles": "๐ Processed {processedFiles} of {totalFiles} files",
"failedToProcessFile": "โ Failed to process",
"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",
"message": "Analyzing translation key usage across your project...",
"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}",
"translation_completeness_title": "๐ TRANSLATION COMPLETENESS",
"language_completeness_stats": "{language}: {translated}/{total} keys ({percentage}%)",
"n_sample_unused_keys": "\n๐๏ธ SAMPLE UNUSED KEYS (first 5):",
"key": " ๐ {key}",
"and_unusedkeyslength_5_more": "... and {count} more unused keys",
"n_sample_missing_keys": "\nโ SAMPLE MISSING KEYS (first 5):",
"and_missingkeyslength_5_more": "... and {count} more missing keys",
"n_generating_detailed_report": "\n๐ Generating detailed report...",
"report_saved_reportpath": "๐ Report saved: {reportPath}",
"n_recommendations": "\n๐ก RECOMMENDATIONS:",
"consider_removing_unused_trans": " ๐๏ธ Consider removing unused translations to reduce bundle size",
"add_missing_translation_keys_t": " โ Add missing translation keys to maintain consistency",
"review_dynamic_keys_manually_t": " ๐ Review dynamic keys manually (they may be valid)",
"all_translation_keys_are_prope": "โ
All translation keys are properly used!",
"n_next_steps": "\n๐ฏ NEXT STEPS:",
"2_check_the_detailed_report_fo": " 2. Check the detailed report for specific issues",
"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",
"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.",
"noSourceFilesFound": "No source files found to analyze.",
"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": "๐ I18NTK 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",
"changeDetails": "๐ {file}: {key}",
"andMore": "...and {count} more",
"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..."
},
"noTranslationLanguagesFound": "No Translation Languages Found",
"failedToAnalyzeLanguage": "Failed To Analyze Language",
"translationCompletenessAnalysisFailed": "Translation Completeness Analysis Failed"
},
"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 configured; skipping target validation. Add languages via \"i18ntk init --languages=de,fr\".",
"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": "โ ๏ธ