i18ntk 2.0.4 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +38 -60
  2. package/main/i18ntk-analyze.js +49 -44
  3. package/main/i18ntk-complete.js +75 -74
  4. package/main/i18ntk-fixer.js +3 -3
  5. package/main/i18ntk-init.js +5 -5
  6. package/main/i18ntk-scanner.js +2 -2
  7. package/main/i18ntk-sizing.js +35 -35
  8. package/main/i18ntk-summary.js +4 -4
  9. package/main/i18ntk-ui.js +54 -8
  10. package/main/i18ntk-usage.js +14 -14
  11. package/main/i18ntk-validate.js +6 -5
  12. package/main/manage/commands/AnalyzeCommand.js +40 -35
  13. package/main/manage/commands/FixerCommand.js +2 -2
  14. package/main/manage/commands/ScannerCommand.js +2 -2
  15. package/main/manage/commands/ValidateCommand.js +9 -9
  16. package/main/manage/index.js +147 -75
  17. package/main/manage/managers/LanguageMenu.js +7 -2
  18. package/main/manage/services/UsageService.js +7 -7
  19. package/package.json +269 -290
  20. package/settings/settings-cli.js +3 -3
  21. package/ui-locales/de.json +161 -166
  22. package/ui-locales/en.json +13 -18
  23. package/ui-locales/es.json +171 -184
  24. package/ui-locales/fr.json +155 -161
  25. package/ui-locales/ja.json +192 -243
  26. package/ui-locales/ru.json +145 -196
  27. package/ui-locales/zh.json +179 -185
  28. package/utils/cli-helper.js +26 -98
  29. package/utils/extractors/regex.js +39 -12
  30. package/utils/i18n-helper.js +88 -40
  31. package/{scripts → utils}/locale-optimizer.js +61 -60
  32. package/utils/security-check-improved.js +16 -13
  33. package/utils/security.js +6 -4
  34. package/main/i18ntk-go.js +0 -283
  35. package/main/i18ntk-java.js +0 -380
  36. package/main/i18ntk-js.js +0 -512
  37. package/main/i18ntk-manage.js +0 -1694
  38. package/main/i18ntk-php.js +0 -462
  39. package/main/i18ntk-py.js +0 -379
  40. package/main/i18ntk-settings.js +0 -23
  41. package/main/manage/index-fixed.js +0 -1447
  42. package/main/manage/services/ConfigurationService-fixed.js +0 -449
  43. package/scripts/build-lite.js +0 -279
  44. package/scripts/deprecate-versions.js +0 -317
  45. package/scripts/export-translations.js +0 -84
  46. package/scripts/fix-all-i18n.js +0 -215
  47. package/scripts/fix-and-purify-i18n.js +0 -213
  48. package/scripts/fix-locale-control-chars.js +0 -110
  49. package/scripts/lint-locales.js +0 -80
  50. package/scripts/prepublish.js +0 -348
  51. package/scripts/security-check.js +0 -117
  52. package/scripts/sync-translations.js +0 -151
  53. package/scripts/sync-ui-locales.js +0 -20
  54. package/scripts/validate-all-translations.js +0 -139
  55. package/scripts/verify-deprecations.js +0 -157
  56. package/scripts/verify-translations.js +0 -63
  57. package/utils/security-fixed.js +0 -607
@@ -53,8 +53,8 @@
53
53
  "errors": {
54
54
  "errors": "Fehler:",
55
55
  "genericError": "❌ Fehler: {error}",
56
- "initializationCancelled": "🚫 Initialisierung wurde vom Benutzer abgebrochen.",
57
56
  "initializationFailed": "❌ Initialisierung fehlgeschlagen: {error}",
57
+ "initializationCancelled": "🚫 Initialisierung wurde vom Benutzer abgebrochen.",
58
58
  "translationKeyNotFound": "Übersetzungsschlüssel nicht gefunden: {key}",
59
59
  "sourceDirectoryNotFound": "Quellverzeichnis nicht gefunden: {directory}",
60
60
  "configLoadingFailed": "Konfigurationsladung fehlgeschlagen",
@@ -101,15 +101,67 @@
101
101
  "settings": "Einstellungen",
102
102
  "startingSettings": "🎛️ Einstellungs-CLI wird gestartet...",
103
103
  "confirm": "Bestätigen",
104
- "errorExiting": "Error while exiting."
104
+ "errorExiting": "Fehler beim Beenden."
105
105
  },
106
106
  "errors": {
107
+ "invalidOption": "❌ Ungültige Option: {option}. Bitte versuchen Sie es erneut.",
107
108
  "readlineClosed": "Eingabestrom ist geschlossen; läuft im nicht-interaktiven Modus.",
108
109
  "noPackageJson": "Keine package.json gefunden. Kann i18n-Framework nicht automatisch erkennen.",
109
110
  "noI18nDir": "Kein i18n-Verzeichnis im Projekt-Root gefunden.",
110
111
  "noI18nConfig": "Keine i18n-Konfigurationsdatei im Projekt-Root gefunden.",
111
- "errorReadingDebugLogs": "Error reading debug logs: {error}",
112
- "invalidOption": "❌ Invalid option: {option}. Please try again."
112
+ "errorReadingDebugLogs": "Fehler beim Lesen der Debug-Protokolle: {error}"
113
+ },
114
+ "scanner": {
115
+ "help_message": "I18n Text-Scanner Verwendung: node i18ntk-scanner.js [optionen] Optionen: --source-dir <dir> Quellverzeichnis zu scannen (Standard: ./src) --output <file> Ausgabedatei für Ergebnisse (Standard: ./i18ntk-scanner-report.json) --framework <name> Ziel-Framework (react, vue, angular, vanilla) --patterns <patterns> Benutzerdefinierte Regex-Muster (durch Kommas getrennt) --include-tests Testdateien in den Scan einbeziehen --exclude-dirs <dirs> Auszuschließende Verzeichnisse (durch Kommas getrennt) --help Diese Hilfe anzeigen Beispiele: node i18ntk-scanner.js --source-dir=./src --framework=react node i18ntk-scanner.js --patterns 'console\\.log\\((.*?)\\)' --include-tests node i18ntk-scanner.js --output=./scan-ergebnisse.json",
116
+ "help_options": {
117
+ "source_dir": "Quellverzeichnis zu scannen",
118
+ "output_dir": "Ausgabedatei für Ergebnisse",
119
+ "framework": "Ziel-Framework (react, vue, angular, vanilla)",
120
+ "patterns": "Benutzerdefinierte Regex-Muster (durch Kommas getrennt)",
121
+ "exclude": "Auszuschließende Verzeichnisse (durch Kommas getrennt)",
122
+ "output_report": "Ausgabedatei für den Bericht",
123
+ "min_length": "Mindestlänge des einzubeziehenden Textes",
124
+ "max_length": "Maximallänge des einzubeziehenden Textes",
125
+ "include_tests": "Testdateien in den Scan einbeziehen"
126
+ },
127
+ "starting": "🔍 Starte Text-Scanner für Framework: {framework}",
128
+ "sourceDirectory": "📁 Scanne Verzeichnis: {sourceDir}",
129
+ "frameworkDetected": "🎯 Framework erkannt: {framework}",
130
+ "scanningFiles": "📊 Scanne {fileCount} Dateien...",
131
+ "foundTexts": "📝 {textCount} zu übersetzende Texte gefunden",
132
+ "generatingReport": "📊 Generiere detaillierten Bericht...",
133
+ "reportSaved": "💾 Scan-Bericht gespeichert in: {reportPath}",
134
+ "noTextsFound": "✅ Keine hartcodierten englischen Texte gefunden",
135
+ "scanComplete": "🎉 Scan erfolgreich abgeschlossen!",
136
+ "analysisTitle": "🔍 ÜBERSETZUNGSSCANNER-ANALYSE",
137
+ "fileSummary": "📄 {file}: {count} Texte gefunden",
138
+ "textLocation": "📍 Zeile {line}: {text}",
139
+ "foundText": "{count} potenzielle hartcodierte Textinstanzen gefunden",
140
+ "context": "📝 Kontext: {context}",
141
+ "severity": "⚠️ Schweregrad: {severity}",
142
+ "recommendation": "💡 Empfehlung: {recommendation}",
143
+ "welcome": {
144
+ "title": "🎯 Willkommen beim Text-Scanner!",
145
+ "description": "Dieses Tool scannt Ihren Quellcode nach hartcodierten englischen Texten, die möglicherweise übersetzt werden müssen."
146
+ },
147
+ "frameworkPrompt": {
148
+ "title": "🎯 Framework auswählen",
149
+ "available": "Verfügbare Frameworks: react, vue, angular, vanilla",
150
+ "description": "Framework-Typ eingeben (oder Enter für automatische Erkennung):",
151
+ "input": "Rahmen:"
152
+ },
153
+ "directoryPrompt": {
154
+ "title": "📁 Quellverzeichnis auswählen",
155
+ "current": "Aktuelles Verzeichnis: {dir}",
156
+ "description": "Verzeichnis zum Scannen eingeben (oder Enter für aktuelles Verzeichnis):",
157
+ "input": "Verzeichnis:"
158
+ },
159
+ "options": {
160
+ "includeTests": "Testdateien einbeziehen?",
161
+ "excludeDirs": "Auszuschließende Verzeichnisse (durch Kommas getrennt):",
162
+ "customPatterns": "Benutzerdefinierte Muster zu scannen (Regex):"
163
+ },
164
+ "reportGenerated": "Scanbericht generiert: {path}"
113
165
  },
114
166
  "fixer": {
115
167
  "help_message": "I18n Übersetzungs-Fixer Verwendung: node i18ntk-fixer.js [optionen] Optionen: --source-dir <dir> Quellverzeichnis zu analysieren (Standard: ./locales) --languages <langs> Komma-getrennte Liste der zu korrigierenden Sprachen --markers <markers> Komma-getrennte Liste der als nicht übersetzt zu behandelnden Markierungen --no-backup Automatische Backup-Erstellung überspringen --help Diese Hilfe anzeigen Beispiele: node i18ntk-fixer.js --languages de,fr node i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED node i18ntk-fixer.js --no-backup",
@@ -146,7 +198,7 @@
146
198
  "choicePrompt": "Ihre Wahl (j/n/d):",
147
199
  "nonInteractiveMode": "⚡ Nicht-interaktiver Modus erkannt - wende Korrekturen automatisch an...",
148
200
  "reportGenerated": "📊 Korrekturbericht generiert: {path}",
149
- "summary": "Fixer summary:",
201
+ "summary": "Fixer-Zusammenfassung:",
150
202
  "welcome": {
151
203
  "title": "🎯 Willkommen beim Übersetzungs-Fixer!",
152
204
  "description": "Dieses Tool hilft Ihnen, beschädigte Übersetzungen und Markierungen in Ihren Sprachdateien zu reparieren."
@@ -170,16 +222,16 @@
170
222
  "description": "Geben Sie das Verzeichnis mit Ihren Sprachdateien ein (oder Enter für aktuelles Verzeichnis, 0 zum Abbrechen):",
171
223
  "input": "Verzeichnis:"
172
224
  },
173
- "backupLocation": "Backup location: {dir}",
174
- "completed": "Fixing completed.",
175
- "creatingBackup": "Creating backup in {dir}...",
176
- "dryRunMode": "Dry run mode: {mode}",
177
- "error": "Fixer failed: {error}",
178
- "fixing": "Fixing {language}...",
179
- "foundLanguages": "Found {count} languages: {languages}",
180
- "languageFixed": "{language}: fixed {fixed} key(s), skipped {skipped}.",
181
- "running": "Running translation fixer...",
182
- "totalFixed": "Total fixed: {count}"
225
+ "backupLocation": "Backup-Speicherort: {dir}",
226
+ "completed": "Reparatur abgeschlossen.",
227
+ "creatingBackup": "Backup wird in {dir} erstellt...",
228
+ "dryRunMode": "Trockenlaufmodus: {mode}",
229
+ "error": "Fixer fehlgeschlagen: {error}",
230
+ "fixing": "{language} wird behoben...",
231
+ "foundLanguages": "{count} Sprachen gefunden: {languages}",
232
+ "languageFixed": "{language}: {fixed} Schlüssel korrigiert, {skipped} übersprungen.",
233
+ "running": "Übersetzungsfixer wird ausgeführt...",
234
+ "totalFixed": "Insgesamt behoben: {count}"
183
235
  },
184
236
  "autorun": {
185
237
  "stepAnalyzeTranslations": "Übersetzungen analysieren",
@@ -221,7 +273,7 @@
221
273
  "requiredStepFailed": "Erforderlicher Schritt fehlgeschlagen. Workflow wird gestoppt.",
222
274
  "optionalStepFailed": "Optionaler Schritt fehlgeschlagen. Workflow wird fortgesetzt.",
223
275
  "stepRequired": "(Erforderlich)",
224
- "stepOptional": "(Optional)",
276
+ "stepOptional": "(Optionaler Schritt)",
225
277
  "startingExecution": "Starte Ausführung...",
226
278
  "pressEnterToContinue": "Drücken Sie Enter, um fortzufahren...",
227
279
  "runningSelectedSteps": "Ausgewählte Schritte werden ausgeführt...",
@@ -403,13 +455,13 @@
403
455
  "sizing_analysis_results": "I18n Größenanalyse Ergebnisse",
404
456
  "file_sizes_title": "Dateigrößen",
405
457
  "file_sizes_header": "Sprache Größe(KB) Zeilen Zeichen",
406
- "file_size_row": "{lang} {sizeKB} {lines} {characters}",
458
+ "file_size_row": "{lang} {sizeKB} {lines} {characters}",
407
459
  "language_statistics_title": "Sprachstatistiken",
408
460
  "language_stats_header": "Sprache Schlüssel Zeichen Ø Länge Max Länge Leer Lang",
409
- "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
461
+ "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
410
462
  "size_variations_title": "Größenvariationen",
411
463
  "size_variations_header": "Sprache Zeichen Diff % Diff Problematisch",
412
- "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
464
+ "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
413
465
  "problematic_yes": "Ja",
414
466
  "problematic_no": "Nein",
415
467
  "recommendations_title": "Empfehlungen",
@@ -427,7 +479,7 @@
427
479
  "human_report_saved": "Menschenlesbarer Bericht gespeichert: {reportPath}",
428
480
  "folder_summary_title": "Ordner-Zusammenfassung",
429
481
  "folder_summary_table_header": "Sprache Größe(KB) Schlüssel Ø Länge Gesamtzeichen",
430
- "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
482
+ "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
431
483
  "language_comparison_title": "Sprachvergleich",
432
484
  "language_comparison_row": "{lang}: {diff} Zeichen ({percent}%) {status}",
433
485
  "summary_stats": "📊 Zusammenfassung: {totalLanguages} Sprachen, {totalKeys} Schlüssel - Berichte gespeichert unter {reportPath}",
@@ -444,12 +496,12 @@
444
496
  "consider_reviewing_translations": "Überprüfung der {lang} Übersetzungen in Betracht ziehen - sie sind {percentageDifference}% {comparison} als die Grundlage",
445
497
  "long_translations_detected": "{lang} hat {longKeys} Übersetzungen länger als {threshold} Zeichen - in Betracht ziehen, sie aufzuteilen"
446
498
  },
447
- "detailed_key_analysis_title": "Detailed Key Analysis",
448
- "key_analysis_detail": "{lang}: {length} chars ({status}) - {translation}",
449
- "key_analysis_header": "Key: {key}",
450
- "status_empty": "empty",
451
- "status_long": "long",
452
- "status_ok": "ok"
499
+ "detailed_key_analysis_title": "Detaillierte Schlüsselanalyse",
500
+ "key_analysis_detail": "{lang}: {length} Zeichen ({status}) - {translation}",
501
+ "key_analysis_header": "Schlüssel: {key}",
502
+ "status_empty": "leer",
503
+ "status_long": "lang",
504
+ "status_ok": "OK"
453
505
  },
454
506
  "usage": {
455
507
  "help_message": "I18n-Nutzungsanalysator Verwendung: node i18ntk-usage.js [Optionen] Optionen: --source-dir <dir> Quellverzeichnis zum Scannen (Standard: ./locales) --i18n-dir <dir> I18n-Verzeichnis (Standard: ./locales) --output-report Detaillierten Bericht erstellen --output-dir <dir> Ausgabeverzeichnis für Berichte (Standard: ./i18ntk-reports) --help Diese Hilfe anzeigen Beispiele: node i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./analysis --output-report",
@@ -546,7 +598,7 @@
546
598
  "failedToAnalyzeFile": "Analyse der Datei {filePath} fehlgeschlagen: {error}",
547
599
  "failedToAnalyzeLanguage": "Analyse der Sprache {language} fehlgeschlagen: {error}",
548
600
  "translationCompletenessAnalysisFailed": "Analyse der Übersetzungsvollständigkeit fehlgeschlagen: {error}",
549
- "n": ""
601
+ "n": "\\n"
550
602
  },
551
603
  "complete": {
552
604
  "configLoadedSuccessfully": "Konfiguration erfolgreich geladen",
@@ -586,11 +638,11 @@
586
638
  "noTranslationLanguagesFound": "Keine Übersetzungssprachen gefunden.",
587
639
  "failedToAnalyzeLanguage": "Analyse der Sprache {language} fehlgeschlagen: {error}",
588
640
  "translationCompletenessAnalysisFailed": "Analyse der Übersetzungsvollständigkeit fehlgeschlagen: {error}",
589
- "failedToProcessFile": "Failed to process file:",
590
- "failedToSaveReport": "Failed to save usage report: {error}",
591
- "i18nDirectoryDoesNotExist": "I18n directory does not exist: {dir}",
592
- "reportSavedTo": "Usage report saved to: {reportPath}",
593
- "sourceDirectoryDoesNotExist": "Source directory does not exist: {dir}"
641
+ "failedToProcessFile": "Datei konnte nicht verarbeitet werden:",
642
+ "failedToSaveReport": "Nutzungsbericht konnte nicht gespeichert werden: {error}",
643
+ "i18nDirectoryDoesNotExist": "I18n-Verzeichnis existiert nicht: {dir}",
644
+ "reportSavedTo": "Nutzungsbericht gespeichert unter: {reportPath}",
645
+ "sourceDirectoryDoesNotExist": "Quellverzeichnis existiert nicht: {dir}"
594
646
  },
595
647
  "validate": {
596
648
  "help_message": "I18n-Übersetzungs-Validator Verwendung: node i18ntk-validate.js [Optionen] Optionen: --source-dir <dir> Quellverzeichnis zum Scannen (Standard: ./locales) --i18n-dir <dir> I18n-Verzeichnis (Standard: ./locales) --output-report Detaillierten Bericht erzeugen --output-dir <dir> Ausgabeordner für Berichte (Standard: ./i18ntk-reports) --help Diese Hilfe anzeigen Beispiele: node i18ntk-validate.js --output-report node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales node i18ntk-validate.js --output-dir=./analysis --output-report",
@@ -675,7 +727,7 @@
675
727
  "completedIndicator": "✅ Abgeschlossen",
676
728
  "errorIndicator": "❌ Fehler",
677
729
  "warningIndicator": "⚠️ Warnung",
678
- "infoIndicator": "ℹ️ Info",
730
+ "infoIndicator": "ℹ️ Infos",
679
731
  "sourceDirNotConfigured": "Quellverzeichnis nicht konfiguriert",
680
732
  "sourceLanguageNotConfigured": "Quellsprache nicht konfiguriert",
681
733
  "translationFunctionNotInitialized": "Übersetzungsfunktion nicht richtig initialisiert",
@@ -688,8 +740,8 @@
688
740
  "failedToCreateSampleTranslationFile": "Erstellen der Beispieldatei fehlgeschlagen",
689
741
  "invalidFilePathDetected": "Ungültiger Dateipfad erkannt",
690
742
  "failedToWriteFile": "Schreiben der Datei fehlgeschlagen: {filePath}",
691
- "invalidSourceDirectory": "Invalid source directory: {sourceDir}",
692
- "invalidSourceLanguageDirectory": "Invalid source language directory: {sourceDir}"
743
+ "invalidSourceDirectory": "Ungültiges Quellverzeichnis: {sourceDir}",
744
+ "invalidSourceLanguageDirectory": "Ungültiges Quellsprachenverzeichnis: {sourceDir}"
693
745
  },
694
746
  "adminCli": {
695
747
  "setupPinProtectionTitle": "🔐 Einrichtung des Admin-PIN-Schutzes",
@@ -936,13 +988,14 @@
936
988
  },
937
989
  "init": {
938
990
  "initializationTitle": "🚀 i18n-Management-Toolkit – Projektinitialisierung",
991
+ "initializationCancelled": "🚫 Initialisierung vom Benutzer abgebrochen.",
939
992
  "sourceDirectoryLabel": "📁 Quellverzeichnis: {dir}",
940
- "createdSourceLanguageDirectory": "✅ Quellverzeichnis für Sprache erstellt: {dir}",
941
993
  "requiredTitle": "Initialisierung erforderlich",
942
994
  "requiredBody": "Dieses Projekt muss vor dem Ausführen dieses Befehls initialisiert werden.",
943
995
  "promptRunNow": "Möchten Sie die Initialisierung jetzt ausführen? (j/N):",
944
996
  "sourceLanguageLabel": "🌍 Quellsprache: {language}",
945
997
  "detectedI18nFrameworks": "🔍 Erkanntes i18n-Framework: {frameworks}",
998
+ "pinMustBe4Digits": "PIN muss 4-stellig sein.",
946
999
  "existingDirectoriesFound": "📁 Vorhandene Übersetzungsverzeichnisse gefunden:",
947
1000
  "useExistingDirectoryPrompt": "Möchten Sie das vorhandene Verzeichnis verwenden? (j/n)",
948
1001
  "selectDirectoryPrompt": "Wählen Sie ein Verzeichnis durch Eingabe der Nummer (oder wählen Sie 'Neues Verzeichnis erstellen')",
@@ -977,7 +1030,6 @@
977
1030
  "targetLanguages": "🌍 Zielsprachen",
978
1031
  "foundSourceFiles": "📄 {count} Quelldateien zur Analyse gefunden",
979
1032
  "processingLanguage": "🔄 Verarbeite Sprache: {language}",
980
- "pinMustBe4Digits": "PIN muss 4-stellig sein.",
981
1033
  "fileProcessingResult": "✅ Verarbeitet {file}: {translated}/{total} Schlüssel ({percentage}%)",
982
1034
  "overallProgress": "📊 Gesamtfortschritt: {translated}/{total} Schlüssel verarbeitet ({percentage}%)",
983
1035
  "initializationSummaryTitle": "📋 Initialisierungsübersicht",
@@ -1015,10 +1067,10 @@
1015
1067
  "installFramework": "Um ein Framework zu installieren, führen Sie aus: npm install <package-name>"
1016
1068
  },
1017
1069
  "frameworks": {
1018
- "react": "- React i18next (react-i18next)",
1070
+ "react": "- Reagiere auf i18next (react-i18next)",
1019
1071
  "vue": "- Vue i18n (vue-i18n)",
1020
1072
  "i18next": "- i18next (i18next)",
1021
- "nuxt": "- Nuxt i18n (@nuxtjs/i18n)",
1073
+ "nuxt": "- Nuxt-Internationalisierung (@nuxtjs/i18n)",
1022
1074
  "svelte": "- Svelte i18n (svelte-i18n)"
1023
1075
  },
1024
1076
  "continueWithoutI18nPrompt": "Kein i18n-Framework erkannt. Möchten Sie trotzdem fortfahren? (j/N):",
@@ -1034,35 +1086,36 @@
1034
1086
  "noJsonFilesInSourceDirectory": "Keine JSON-Dateien im Quellverzeichnis gefunden: {dir}",
1035
1087
  "invalidFilePathDetected": "Ungültiger Dateipfad erkannt",
1036
1088
  "initializationFailed": "Initialisierung fehlgeschlagen: {error}",
1037
- "noFramework": "No i18n framework detected. Continue with generic mode.",
1038
- "packageJsonRead": "Error reading package.json."
1089
+ "noFramework": "Kein i18n-Framework erkannt. Fahren Sie mit dem generischen Modus fort.",
1090
+ "packageJsonRead": "Fehler beim Lesen von package.json."
1039
1091
  },
1040
1092
  "processingFile": "Verarbeite {file} für {language}...",
1041
1093
  "fileAlreadyExistsMerging": "Datei {file} existiert bereits. Neue Schlüssel werden zusammengeführt.",
1042
1094
  "createdNewFile": "Neue Datei erstellt: {file}",
1043
1095
  "updatedFile": "Datei aktualisiert: {file}",
1044
1096
  "skippingExcludedFile": "Überspringe {file} für {language}, da ausgeschlossen.",
1045
- "continuingWithoutAdminPin": "Continuing without admin PIN setup.",
1046
- "errorSettingUpAdminPin": "Error setting up admin PIN: {error}",
1047
- "noTargetLanguagesSpecified": "No target languages specified.",
1048
- "translationFilesCreatedWarning": "Translation files were created with placeholders; review before production use.",
1049
- "warningCannotReadSourceDir": "Warning: cannot read source directory {dir}: {error}",
1050
- "warningInvalidLanguageCodes": "Warning: invalid language codes ignored: {languages}",
1051
- "warningProceedingWithoutFramework": "Proceeding without detected i18n framework.",
1052
- "initializationCancelled": "🚫 Initialization cancelled by user."
1097
+ "continuingWithoutAdminPin": "Fortsetzung ohne Einrichtung der Admin-PIN.",
1098
+ "createdSourceLanguageDirectory": " Quellverzeichnis für Sprache erstellt: {dir}",
1099
+ "errorSettingUpAdminPin": "Fehler beim Einrichten der Administrator-PIN: {error}",
1100
+ "noTargetLanguagesSpecified": "Keine Zielsprachen angegeben.",
1101
+ "translationFilesCreatedWarning": "Übersetzungsdateien wurden mit Platzhaltern erstellt; Überprüfung vor dem Produktionseinsatz.",
1102
+ "warningCannotReadSourceDir": "Warnung: Quellverzeichnis {dir}: {error} kann nicht gelesen werden.",
1103
+ "warningInvalidLanguageCodes": "Warnung: Ungültige Sprachcodes werden ignoriert: {languages}",
1104
+ "warningProceedingWithoutFramework": "Fortfahren ohne erkanntes i18n-Framework."
1053
1105
  },
1054
1106
  "language": {
1055
- "title": "🌍 Sprache ändern",
1056
- "separator": "============================================================",
1057
- "current": "Aktuelle Sprache: {language}",
1058
- "available": "Verfügbare Sprachen:",
1059
- "languageOption": "{index}. {displayName}{current}",
1060
- "backToMainMenu": "Zurück zum Hauptmenü",
1061
- "prompt": "Wähle eine Sprache (0–8):",
1062
- "cancelled": "Sprachwechsel abgebrochen.",
1063
- "invalid": "Ungültige Auswahl. Bitte erneut versuchen.",
1064
- "changed": "Sprache geändert zu: {language}",
1065
- "pressEnterToContinue": "Drücke Enter, um fortzufahren..."
1107
+ "title": "🌍 Sprache ändern",
1108
+ "separator": "============================================================",
1109
+ "current": "Aktuelle Sprache: {language}",
1110
+ "available": "Verfügbare Sprachen:",
1111
+ "languageOption": "{index}. {displayName}{current}",
1112
+ "backToMainMenu": "Zurück zum Hauptmenü",
1113
+ "prompt": "Wähle eine Sprache (0–8):",
1114
+ "cancelled": "Sprachwechsel abgebrochen.",
1115
+ "invalid": "Ungültige Auswahl. Bitte erneut versuchen.",
1116
+ "changed": "Sprache geändert zu: {language}",
1117
+ "changeFailed": "Sprachwechsel fehlgeschlagen: {error}",
1118
+ "pressEnterToContinue": "Drücke Enter, um fortzufahren..."
1066
1119
  },
1067
1120
  "maintainLanguagePurity": {
1068
1121
  "workflow_title": "🚀 Workflow zur Wahrung der Sprachreinheit",
@@ -1092,6 +1145,7 @@
1092
1145
  "complete": "🎯 Übersetzungen vervollständigen (100% Abdeckung)",
1093
1146
  "sizing": "📏 Größenanalyse",
1094
1147
  "fix": "🛠️ Platzhalterübersetzungen reparieren",
1148
+ "scanner": "🔍 i18n-Probleme scannen",
1095
1149
  "workflow": "🔄 Gesamten Workflow ausführen",
1096
1150
  "status": "📋 Projektstatus anzeigen",
1097
1151
  "delete": "🗑️ Alle Berichte löschen",
@@ -1099,7 +1153,6 @@
1099
1153
  "settings": "⚙️ Einstellungen",
1100
1154
  "help": "❓ Hilfe",
1101
1155
  "debug": "🔧 Debug-Werkzeuge",
1102
- "scanner": "🔍 i18n-Probleme scannen",
1103
1156
  "exit": "🚪 Beenden"
1104
1157
  },
1105
1158
  "update": "📦 Paket aktualisieren",
@@ -1285,7 +1338,7 @@
1285
1338
  "advancedSettingsDesc": "Validierung, Protokollierung und Expertenoptionen",
1286
1339
  "viewAllSettings": "Alle Einstellungen anzeigen",
1287
1340
  "viewAllSettingsDesc": "Aktuelle Konfiguration anzeigen",
1288
- "importExport": "Import/Export",
1341
+ "importExport": "Importieren/Exportieren",
1289
1342
  "importExportDesc": "Einstellungen sichern und wiederherstellen",
1290
1343
  "resetToDefaults": "Zurücksetzen auf Standardwerte",
1291
1344
  "resetToDefaultsDesc": "Werkseinstellungen wiederherstellen",
@@ -1341,7 +1394,7 @@
1341
1394
  "relativePathHint": "Verwende relative Pfade ab diesem Verzeichnis (z. B. ./locales)",
1342
1395
  "currentDirectory": "Aktuelles Projektverzeichnis",
1343
1396
  "startingSettings": "Einstellungen werden gestartet:",
1344
- "pin": "PIN:",
1397
+ "pin": "STIFT:",
1345
1398
  "reportBug": {
1346
1399
  "title": "Fehler melden",
1347
1400
  "description": "Melden Sie alle auftretenden Probleme oder Fehler",
@@ -1364,7 +1417,7 @@
1364
1417
  "advancedSettingsDesc": "Validierung, Protokollierung und Expertenoptionen",
1365
1418
  "viewAllSettings": "Alle Einstellungen anzeigen",
1366
1419
  "viewAllSettingsDesc": "Aktuelle Konfiguration anzeigen",
1367
- "importExport": "Import/Export",
1420
+ "importExport": "Importieren/Exportieren",
1368
1421
  "updatePackage": "Paket aktualisieren",
1369
1422
  "updatePackageDesc": "i18n-toolkit-Paket über npm aktualisieren",
1370
1423
  "importExportDesc": "Einstellungen sichern und wiederherstellen",
@@ -1404,8 +1457,8 @@
1404
1457
  "promptDesc": "Hinweis: Das Paket wird auf die neueste Version aktualisiert.",
1405
1458
  "confirm": "j",
1406
1459
  "cancelled": "Aktualisierung abgebrochen.",
1407
- "error": "Failed to update package",
1408
- "updating": "Updating package..."
1460
+ "error": "Paket konnte nicht aktualisiert werden",
1461
+ "updating": "Paket wird aktualisiert..."
1409
1462
  },
1410
1463
  "admin": {
1411
1464
  "selectOption": "Option auswählen:",
@@ -1462,11 +1515,11 @@
1462
1515
  "importFailed": "Import der Einstellungen fehlgeschlagen: {error}",
1463
1516
  "backupSuccess": "Sicherung erstellt: {file}",
1464
1517
  "backupFailed": "Sicherung fehlgeschlagen: {error}",
1465
- "exportFilenamePrompt": "Enter export filename:",
1466
- "importConfirm": "Import this settings file? (y/N):",
1467
- "importFilenamePrompt": "Enter import filename:",
1468
- "manageBackups": "Manage backups",
1469
- "restore": "Restore settings"
1518
+ "exportFilenamePrompt": "Geben Sie den Namen der Exportdatei ein:",
1519
+ "importConfirm": "Diese Einstellungsdatei importieren? (J/N):",
1520
+ "importFilenamePrompt": "Geben Sie den Namen der Importdatei ein:",
1521
+ "manageBackups": "Backups verwalten",
1522
+ "restore": "Einstellungen wiederherstellen"
1470
1523
  },
1471
1524
  "selectOption": "Option auswählen:",
1472
1525
  "resetToDefaultsTitle": "🔄 Zurücksetzen auf Standardwerte",
@@ -1549,34 +1602,34 @@
1549
1602
  "fields": {
1550
1603
  "backup": {
1551
1604
  "enabled": {
1552
- "label": "Enable Backup",
1553
- "description": "Enable automatic backup of settings",
1554
- "help": "Enable/disable backup feature"
1605
+ "label": "Aktivieren Sie die Sicherung",
1606
+ "description": "Aktivieren Sie die automatische Sicherung der Einstellungen",
1607
+ "help": "Backup-Funktion aktivieren/deaktivieren"
1555
1608
  },
1556
1609
  "singleFileMode": {
1557
- "label": "Single File Mode",
1558
- "description": "Use single file for backups",
1559
- "help": "Backup settings in a single file"
1610
+ "label": "Einzeldateimodus",
1611
+ "description": "Verwenden Sie eine einzelne Datei für Backups",
1612
+ "help": "Sicherungseinstellungen in einer einzigen Datei"
1560
1613
  },
1561
1614
  "singleBackupFile": {
1562
- "label": "Backup File Path",
1563
- "description": "Path to the backup file",
1564
- "help": "Path to the single backup file"
1615
+ "label": "Pfad der Sicherungsdatei",
1616
+ "description": "Pfad zur Sicherungsdatei",
1617
+ "help": "Pfad zur einzelnen Sicherungsdatei"
1565
1618
  },
1566
1619
  "retentionDays": {
1567
- "label": "Retention Period",
1568
- "description": "Days to keep backup files",
1569
- "help": "Number of days to retain old backup files"
1620
+ "label": "Aufbewahrungsfrist",
1621
+ "description": "Tage, um Sicherungsdateien aufzubewahren",
1622
+ "help": "Anzahl der Tage, die alte Sicherungsdateien aufbewahrt werden sollen"
1570
1623
  },
1571
1624
  "maxBackups": {
1572
- "label": "Maximum Backups",
1573
- "description": "Maximum backup files to keep",
1574
- "help": "Maximum number of backup files to keep"
1625
+ "label": "Maximale Backups",
1626
+ "description": "Maximal aufzubewahrende Sicherungsdateien",
1627
+ "help": "Maximale Anzahl der aufzubewahrenden Sicherungsdateien"
1575
1628
  },
1576
1629
  "confirm": {
1577
- "label": "Confirm Backup",
1578
- "description": "Require confirmation for backup operations",
1579
- "help": "Confirm backup operation"
1630
+ "label": "Bestätigen Sie die Sicherung",
1631
+ "description": "Für Sicherungsvorgänge ist eine Bestätigung erforderlich",
1632
+ "help": "Bestätigen Sie den Sicherungsvorgang"
1580
1633
  }
1581
1634
  },
1582
1635
  "i18nDir": {
@@ -1834,9 +1887,9 @@
1834
1887
  "help": "Alle individuellen Skript-PIN-Schutz-Einstellungen auf Standardwerte zurücksetzen"
1835
1888
  },
1836
1889
  "removeUiLanguages": {
1837
- "label": "Remove UI Languages",
1838
- "description": "Remove UI languages that are not installed",
1839
- "help": "Remove UI languages that are not installed on the system"
1890
+ "label": "Entfernen Sie UI-Sprachen",
1891
+ "description": "Entfernen Sie nicht installierte UI-Sprachen",
1892
+ "help": "Entfernen Sie UI-Sprachen, die nicht auf dem System installiert sind"
1840
1893
  },
1841
1894
  "${helperKey}": {
1842
1895
  "help": "Hilfe"
@@ -1897,7 +1950,7 @@
1897
1950
  "resetScriptDirectoriesTitle": "Skriptverzeichnisse auf Standard zurücksetzen",
1898
1951
  "resetScriptDirectoriesWarning1": "Dies setzt alle Skriptverzeichnis-Konfigurationen auf die Systemstandards zurück.",
1899
1952
  "resetScriptDirectoriesWarning2": "Alle benutzerdefinierten Verzeichnispfade werden gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.",
1900
- "resetScriptDirectoriesConfirm": "Are you sure you want to reset all script directories to defaults? (y/N):",
1953
+ "resetScriptDirectoriesConfirm": "Sind Sie sicher, dass Sie alle Skriptverzeichnisse auf die Standardeinstellungen zurücksetzen möchten? (J/N):",
1901
1954
  "backup": {
1902
1955
  "title": "Sicherungseinstellungen",
1903
1956
  "description": "Aktuelle Einstellungen in eine Datei sichern",
@@ -1919,9 +1972,9 @@
1919
1972
  "confirmNo": "Nein"
1920
1973
  },
1921
1974
  "validation": {
1922
- "valid": "Valid",
1923
- "validatingPaths": "Validating configured paths...",
1924
- "validationComplete": "Path validation complete: {valid}/{total} valid."
1975
+ "valid": "Gültig",
1976
+ "validatingPaths": "Konfigurierte Pfade werden validiert...",
1977
+ "validationComplete": "Pfadvalidierung abgeschlossen: {valid}/{total} gültig."
1925
1978
  }
1926
1979
  },
1927
1980
  "summary": {
@@ -2156,14 +2209,14 @@
2156
2209
  "error_general": "⚠️ Allgemeiner Fehler: {error}",
2157
2210
  "use_help": "ℹ️ Verwenden Sie --help für weitere Informationen"
2158
2211
  },
2159
- "cleaningUpReportFiles": "Cleaning up old report files...",
2160
- "couldNotDelete": "Could not delete {file}: {error}",
2161
- "deletedOldReportFiles": "Deleted {count} old report file(s).",
2162
- "errorCleaningUpReports": "Error cleaning up reports: {error}",
2163
- "noOldReportFilesToDelete": "No old report files to delete.",
2164
- "reportFilesPreserved": "Report files preserved.",
2165
- "reportSaveFailed": "Failed to save report to: {reportPath}",
2166
- "reportSaved": "Report saved to: {reportPath}"
2212
+ "cleaningUpReportFiles": "Alte Berichtsdateien bereinigen...",
2213
+ "couldNotDelete": "{file} konnte nicht gelöscht werden: {error}",
2214
+ "deletedOldReportFiles": "{count} alte Berichtsdatei(en) gelöscht.",
2215
+ "errorCleaningUpReports": "Fehler beim Bereinigen der Berichte: {error}",
2216
+ "noOldReportFilesToDelete": "Keine alten Berichtsdateien zum Löschen.",
2217
+ "reportFilesPreserved": "Berichtsdateien bleiben erhalten.",
2218
+ "reportSaveFailed": "Der Bericht konnte nicht gespeichert werden unter: {reportPath}",
2219
+ "reportSaved": "Bericht gespeichert unter: {reportPath}"
2167
2220
  },
2168
2221
  "ui": {
2169
2222
  "autoDetectedI18nDirectory": "Automatisch erkanntes i18n-Verzeichnis: {path}",
@@ -2319,9 +2372,6 @@
2319
2372
  "found_hardcoded_messages": "Gefundene harcodierte Nachrichten",
2320
2373
  "all_console_messages_use_translation": "Alle Konsolennachrichten verwenden Übersetzung"
2321
2374
  },
2322
- "\\nSelect directory to clean (0-${availableDirs": {
2323
- "length + 1}): ": ""
2324
- },
2325
2375
  "exportTranslations": {
2326
2376
  "createdDirectory": "Erstelltes Verzeichnis",
2327
2377
  "foundFiles": "Gefundene Dateien",
@@ -2337,9 +2387,6 @@
2337
2387
  "location": "Ort",
2338
2388
  "nextSteps": "Nächste Schritte"
2339
2389
  },
2340
- ")) {\n console": {
2341
- "log(": "Log("
2342
- },
2343
2390
  "dashboard": {
2344
2391
  "title": "Titel",
2345
2392
  "overview": "Übersicht"
@@ -2352,66 +2399,14 @@
2352
2399
  "forgotPassword": "Passwort vergessen",
2353
2400
  "signUp": "Registrieren"
2354
2401
  },
2355
- "scanner": {
2356
- "help_message": "I18n Text-Scanner Verwendung: node i18ntk-scanner.js [optionen] Optionen: --source-dir <dir> Quellverzeichnis zu scannen (Standard: ./src) --output <file> Ausgabedatei für Ergebnisse (Standard: ./i18ntk-scanner-report.json) --framework <name> Ziel-Framework (react, vue, angular, vanilla) --patterns <patterns> Benutzerdefinierte Regex-Muster (durch Kommas getrennt) --include-tests Testdateien in den Scan einbeziehen --exclude-dirs <dirs> Auszuschließende Verzeichnisse (durch Kommas getrennt) --help Diese Hilfe anzeigen Beispiele: node i18ntk-scanner.js --source-dir=./src --framework=react node i18ntk-scanner.js --patterns 'console\\.log\\((.*?)\\)' --include-tests node i18ntk-scanner.js --output=./scan-ergebnisse.json",
2357
- "help_options": {
2358
- "source_dir": "Quellverzeichnis zu scannen",
2359
- "output_dir": "Ausgabedatei für Ergebnisse",
2360
- "framework": "Ziel-Framework (react, vue, angular, vanilla)",
2361
- "patterns": "Benutzerdefinierte Regex-Muster (durch Kommas getrennt)",
2362
- "exclude": "Auszuschließende Verzeichnisse (durch Kommas getrennt)",
2363
- "output_report": "Ausgabedatei für den Bericht",
2364
- "min_length": "Mindestlänge des einzubeziehenden Textes",
2365
- "max_length": "Maximallänge des einzubeziehenden Textes",
2366
- "include_tests": "Testdateien in den Scan einbeziehen"
2367
- },
2368
- "starting": "🔍 Starte Text-Scanner für Framework: {framework}",
2369
- "sourceDirectory": "📁 Scanne Verzeichnis: {sourceDir}",
2370
- "frameworkDetected": "🎯 Framework erkannt: {framework}",
2371
- "scanningFiles": "📊 Scanne {fileCount} Dateien...",
2372
- "foundTexts": "📝 {textCount} zu übersetzende Texte gefunden",
2373
- "generatingReport": "📊 Generiere detaillierten Bericht...",
2374
- "reportSaved": "💾 Scan-Bericht gespeichert in: {reportPath}",
2375
- "noTextsFound": "✅ Keine hartcodierten englischen Texte gefunden",
2376
- "scanComplete": "🎉 Scan erfolgreich abgeschlossen!",
2377
- "analysisTitle": "🔍 ÜBERSETZUNGSSCANNER-ANALYSE",
2378
- "fileSummary": "📄 {file}: {count} Texte gefunden",
2379
- "textLocation": "📍 Zeile {line}: {text}",
2380
- "context": "📝 Kontext: {context}",
2381
- "severity": "⚠️ Schweregrad: {severity}",
2382
- "recommendation": "💡 Empfehlung: {recommendation}",
2383
- "welcome": {
2384
- "title": "🎯 Willkommen beim Text-Scanner!",
2385
- "description": "Dieses Tool scannt Ihren Quellcode nach hartcodierten englischen Texten, die möglicherweise übersetzt werden müssen."
2386
- },
2387
- "frameworkPrompt": {
2388
- "title": "🎯 Framework auswählen",
2389
- "available": "Verfügbare Frameworks: react, vue, angular, vanilla",
2390
- "description": "Framework-Typ eingeben (oder Enter für automatische Erkennung):",
2391
- "input": "Framework:"
2392
- },
2393
- "directoryPrompt": {
2394
- "title": "📁 Quellverzeichnis auswählen",
2395
- "current": "Aktuelles Verzeichnis: {dir}",
2396
- "description": "Verzeichnis zum Scannen eingeben (oder Enter für aktuelles Verzeichnis):",
2397
- "input": "Verzeichnis:"
2398
- },
2399
- "options": {
2400
- "includeTests": "Testdateien einbeziehen?",
2401
- "excludeDirs": "Auszuschließende Verzeichnisse (durch Kommas getrennt):",
2402
- "customPatterns": "Benutzerdefinierte Muster zu scannen (Regex):"
2403
- },
2404
- "reportGenerated": "Scan report generated: {path}",
2405
- "foundText": "Found {count} potential hardcoded text instances"
2406
- },
2407
2402
  "checkUsage": {
2408
- "usage_analysis_failed": "Usage analysis failed."
2403
+ "usage_analysis_failed": "Die Nutzungsanalyse ist fehlgeschlagen."
2409
2404
  },
2410
2405
  "completeTranslations": {
2411
- "warning_could_not_parse_filepa": "Warning: could not parse file path: {filePath}"
2406
+ "warning_could_not_parse_filepa": "Warnung: Dateipfad konnte nicht analysiert werden: {filePath}"
2412
2407
  },
2413
- "pressEnterToContinue": "Press Enter to continue...",
2408
+ "pressEnterToContinue": "Drücken Sie die Eingabetaste, um fortzufahren...",
2414
2409
  "status": {
2415
- "exitingCompleted": "Workflow completed. Exiting..."
2410
+ "exitingCompleted": "Workflow abgeschlossen. Verlassen..."
2416
2411
  }
2417
2412
  }