i18ntk 4.7.0 → 4.7.2

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 (40) hide show
  1. package/CHANGELOG.md +34 -1
  2. package/README.md +15 -4
  3. package/main/i18ntk-ui.js +35 -30
  4. package/main/i18ntk-usage.js +2 -2
  5. package/main/i18ntk-validate.js +1 -1
  6. package/main/manage/commands/ValidateCommand.js +1 -1
  7. package/main/manage/index.js +52 -47
  8. package/main/manage/managers/LanguageMenu.js +3 -1
  9. package/main/manage/services/ConfigurationService.js +1 -1
  10. package/main/manage/services/FrameworkDetectionService.js +1 -1
  11. package/main/manage/services/UsageService.js +2 -2
  12. package/package.json +11 -7
  13. package/settings/settings-manager.js +19 -3
  14. package/ui-locales/ar.json +2636 -0
  15. package/ui-locales/cs.json +2636 -0
  16. package/ui-locales/de.json +17 -1
  17. package/ui-locales/el.json +2636 -0
  18. package/ui-locales/en.json +17 -1
  19. package/ui-locales/es.json +17 -1
  20. package/ui-locales/fr.json +17 -1
  21. package/ui-locales/he.json +2636 -0
  22. package/ui-locales/hi.json +2636 -0
  23. package/ui-locales/hu.json +2636 -0
  24. package/ui-locales/it.json +2636 -0
  25. package/ui-locales/ja.json +17 -1
  26. package/ui-locales/ko.json +2636 -0
  27. package/ui-locales/nl.json +2636 -0
  28. package/ui-locales/pl.json +2636 -0
  29. package/ui-locales/pt.json +2636 -0
  30. package/ui-locales/ru.json +17 -1
  31. package/ui-locales/sv.json +2636 -0
  32. package/ui-locales/th.json +2636 -0
  33. package/ui-locales/tr.json +2636 -0
  34. package/ui-locales/uk.json +2636 -0
  35. package/ui-locales/vi.json +2636 -0
  36. package/ui-locales/zh.json +17 -1
  37. package/utils/config-helper.js +2 -2
  38. package/utils/config-manager.js +3 -4
  39. package/utils/env-manager.js +1 -1
  40. package/utils/locale-optimizer.js +1 -1
@@ -0,0 +1,2636 @@
1
+ {
2
+ "meta": {
3
+ "version": "4.7.0",
4
+ "updated": "2026-07-07",
5
+ "lang": "sv"
6
+ },
7
+ "common": {
8
+ "welcome": "Välkomna",
9
+ "hello": "Hej",
10
+ "goodbye": "Adjö",
11
+ "yes": "Ja",
12
+ "no": "Inga",
13
+ "save": "Spara",
14
+ "cancel": "Avboka",
15
+ "delete": "Radera",
16
+ "edit": "Redigera",
17
+ "loading": "Belastning...",
18
+ "offlineTitle": "Du är offline",
19
+ "offlineMessage": "Kontrollera din internetanslutning",
20
+ "tryReconnect": "Försök att återansluta",
21
+ "logout": "Utloggning",
22
+ "login": "Inloggning",
23
+ "amount": "Belopp",
24
+ "success": "Framgång",
25
+ "error": "Fel",
26
+ "warning": "Varning",
27
+ "info": "Info:",
28
+ "debug": "Felsök",
29
+ "progress": "Framsteg:",
30
+ "remaining": "Återstående:",
31
+ "total": "Total:",
32
+ "completed": "7. Slutfört framgångsrikt!",
33
+ "missing": "Saknad",
34
+ "partial": "Partiell",
35
+ "sameAsSource": "Samma som källa:",
36
+ "formatMismatch": "Format som inte matchar:",
37
+ "typeMismatch": "Typ som inte matchar:",
38
+ "structureMismatch": "Strukturfel matchar:",
39
+ "invalidOption": "Ogiltigt alternativ",
40
+ "separator": "==================================================",
41
+ "initializationFailed": "❌ Initieringen misslyckades: {error}",
42
+ "stackTrace": "Stackspår: {stack}",
43
+ "pressEnterToContinue": "Tryck på Enter för att fortsätta...",
44
+ "pressEnterToReturn": "Tryck på Enter för att återgå till huvudmenyn...",
45
+ "stepCompleted": "Steg '{stepName}' slutfört.",
46
+ "stepFailed": "Steg '{stepName}' misslyckades.",
47
+ "runningStep": "Löpningssteg: {stepName}",
48
+ "command": "Kommando: {command}",
49
+ "startingWorkflow": "Startar arbetsflöde...",
50
+ "workflowCompleted": "Arbetsflödet avslutat.",
51
+ "checkReports": "Kontrollera rapporter för detaljer.",
52
+ "errorExecutingCommand": "Fel vid exekvering av kommando: {error}",
53
+ "genericError": "❌ Fel: {error}",
54
+ "errors": {
55
+ "errors": "Fel:",
56
+ "genericError": "❌ Fel: {error}",
57
+ "initializationFailed": "❌ Initieringen misslyckades: {error}",
58
+ "initializationCancelled": "❌ Initiering avbröts av användaren.",
59
+ "translationKeyNotFound": "Översättningsnyckel hittades inte: {key}",
60
+ "sourceDirectoryNotFound": "Källkatalogen hittades inte: {directory}",
61
+ "configLoadingFailed": "Konfigurationsladdningen misslyckades",
62
+ "invalidSourceDirectory": "Ogiltig källkatalog: {directory}",
63
+ "securityViolation": "Säkerhetsbrott upptäckt",
64
+ "authenticationFailed": "Autentiseringen misslyckades",
65
+ "sourceEqualsI18nWarn": "⚠️ sourceDir är lika med i18nDir ({sourceDir}). Faller tillbaka till {fallback} för källsökning."
66
+ },
67
+ "errorGeneratingStatusSummary": "Fel vid generering av statusöversikt: {error}",
68
+ "errorRunningDebugTool": "Fel vid körning av felsökningsverktyget{displayName}': {error}",
69
+ "errorReadingDebugLogs": "Fel vid läsning av felsökningsloggar: {error}",
70
+ "errorAnalyzingLogFile": "Fel vid analys av loggfil: {error}",
71
+ "errorAnalyzingTranslationKeys": "Fel vid analys av översättningsnycklar: {error}",
72
+ "errorAnalyzingTranslationCompleteness": "Det gick inte att analysera översättningens fullständighet: {error}",
73
+ "analyzingTranslationCompleteness": "Analyserar översättningens fullständighet på alla språk...",
74
+ "i18nDirectoryNotFound": "⚠️ i18n-katalogen hittades inte: {i18nDir}",
75
+ "translationCompletenessAnalysisFailed": "⚠️ Analys av översättningens fullständighet misslyckades: {error}",
76
+ "failedToAnalyzeLanguage": "❌ Det gick inte att analysera språket {language}: {error}",
77
+ "errorReadingI18nDirectory": "❌ Fel vid läsning av i18n-katalogen:",
78
+ "languageCompletenessTitle": "📈 ÖVERSÄTTNINGSFULLSTÄNDIGHET PÅ SPRÅK",
79
+ "errorAnalyzingTranslationFormat": "Fel vid analys av översättningsformat: {error}",
80
+ "errorAnalyzingTranslationType": "Fel vid analys av översättningstyp: {error}",
81
+ "errorAnalyzingTranslationStructure": "Fel vid analys av översättningsstruktur: {error}",
82
+ "errorAnalyzingTranslationFormatMismatch": "Fel vid analys av översättningsformat som inte matchar: {error}",
83
+ "errorAnalyzingTranslationTypeMismatch": "Fel vid analys av översättningstyp som inte matchar: {error}",
84
+ "errorAnalyzingTranslationStructureMismatch": "Det gick inte att analysera översättningsstruktur som inte matchar: {error}",
85
+ "errorAnalyzingTranslationSameAsSource": "Fel vid analys av översättning samma som källa: {error}",
86
+ "title": "Status",
87
+ "nextStep1": "1. Kontrollera användningsanalys:",
88
+ "nextStep2": "2. Validera översättningar:",
89
+ "nextStep3": "3. Analysera fullständighet:",
90
+ "nextStep4": "4. Komplettera saknade översättningar:",
91
+ "nextStep5": "5. Skapa en sammanfattande rapport:",
92
+ "nextStep6": "6. Granska och slutför översättningar:",
93
+ "generating": "Genererar sammanfattande rapport...",
94
+ "review": "Granskar översättningar...",
95
+ "finalizing": "Slutför översättningar...",
96
+ "finalized": "Slutfördes framgångsrikt!",
97
+ "warnings": "Varningar:",
98
+ "completedKeys": "Färdiga nycklar:",
99
+ "missingKeys": "Saknade nycklar:",
100
+ "partialKeys": "Delvis nycklar:",
101
+ "home": "Hem",
102
+ "settings": "Inställningar",
103
+ "startingSettings": "🎛️ Startinställningar CLI...",
104
+ "confirm": "Bekräfta",
105
+ "errorExiting": "Fel vid avslutandet."
106
+ },
107
+ "errors": {
108
+ "invalidOption": "❌ Ogiltigt alternativ: {option}. Försök igen.",
109
+ "readlineClosed": "Ingångsströmmen är stängd; körs i icke-interaktivt läge.",
110
+ "noPackageJson": "Inget package.json hittades. Kan inte automatiskt upptäcka i18n-ramverket.",
111
+ "noI18nDir": "Ingen i18n-katalog hittades i projektets rot.",
112
+ "noI18nConfig": "Ingen i18n-konfigurationsfil hittades i projektets rot.",
113
+ "errorReadingDebugLogs": "Fel vid läsning av felsökningsloggar: {error}"
114
+ },
115
+ "scanner": {
116
+ "help_message": "I18n Text Scanner Användning: nod i18ntk-scanner.js [options] Alternativ: --source-dir <dir> Källkatalog att skanna (standard: ./src) --output <file> Utdatafil för skanningsresultat (standard: ./i18ntk-scanner-report.json) --framework <name> Ramverk att rikta in sig på (reagera, vue, vinkel, vanilj) --mönster <patterns> Anpassade regexmönster (kommaseparerade) --include-tests Inkludera testfiler i scan --exclude-dirs <dirs> Kataloger att exkludera (kommaseparerade) --help Visa denna hjälp Exempel: nod i18ntk-scanner.js --source-dir=./src --framework=reagera nod i18ntk-scanner.js --patterns 'console.log\\((.*?)\\)' --include-tests nod iscanner.jtsk --output=./scan-results.json",
117
+ "help_options": {
118
+ "source_dir": "Källkatalog för att söka efter i18n-problem",
119
+ "output_dir": "Katalog för skanningsrapporter och resultat",
120
+ "framework": "Målramverk (reagera, vue, vinkel, vanilj)",
121
+ "patterns": "Anpassade regexmönster för textidentifiering",
122
+ "exclude": "Filmönster som ska uteslutas från skanning",
123
+ "output_report": "Skapa en detaljerad skanningsrapport",
124
+ "min_length": "Minsta textlängd att överväga för översättning",
125
+ "max_length": "Maximal textlängd att överväga för översättning",
126
+ "include_tests": "Inkludera testfiler i skanningsprocessen"
127
+ },
128
+ "starting": "🔍 Startar textskanner för ramverk: {framework}",
129
+ "sourceDirectory": "📁 Skanning av katalog: {sourceDir}",
130
+ "frameworkDetected": "🎯 Upptäckt ram: {framework}",
131
+ "scanningFiles": "📊 Skanning {fileCount} filer...",
132
+ "foundTexts": "📝 Hittade {textCount} texter som kräver översättning",
133
+ "generatingReport": "📊 Genererar detaljerad rapport...",
134
+ "reportSaved": "💾 Skanningsrapport sparad till: {reportPath}",
135
+ "noTextsFound": "✅ Inga hårdkodade engelska texter hittades",
136
+ "scanComplete": "🎉 Skanningen slutförd framgångsrikt!",
137
+ "analysisTitle": "🔍 ÖVERSÄTTNING SKANNA ANALYS",
138
+ "fileSummary": "📄 {file}: {count} texter hittade",
139
+ "textLocation": "📍 Linje {line}: {text}",
140
+ "foundText": "Hittade {count} potentiella hårdkodade textinstanser",
141
+ "context": "📝 Sammanhang: {context}",
142
+ "severity": "⚠️ Allvarlighetsgrad: {severity}",
143
+ "recommendation": "💡 Rekommendation: {recommendation}",
144
+ "welcome": {
145
+ "title": "🎯 Välkommen till textskannern!",
146
+ "description": "Det här verktyget skannar din källkod efter hårdkodad engelsk text som kan behöva översättas."
147
+ },
148
+ "frameworkPrompt": {
149
+ "title": "🎯 Välj Framework",
150
+ "available": "Tillgängliga ramverk: react, vue, angular, vanilj",
151
+ "description": "Ange ramtypen (eller tryck på Enter för automatisk upptäckt):",
152
+ "input": "Ram:"
153
+ },
154
+ "directoryPrompt": {
155
+ "title": "📁 Välj källkatalog",
156
+ "current": "Aktuell katalog: {dir}",
157
+ "description": "Gå in i katalogen för att skanna (eller tryck på Enter för aktuell):",
158
+ "input": "Katalog:"
159
+ },
160
+ "options": {
161
+ "includeTests": "Inkludera testfiler?",
162
+ "excludeDirs": "Kataloger att utesluta (kommaseparerade):",
163
+ "customPatterns": "Anpassade mönster att skanna efter (regex):"
164
+ },
165
+ "reportGenerated": "Skanningsrapport genererad: {path}"
166
+ },
167
+ "fixer": {
168
+ "help_message": "I18n Translation Fixer Användning: nod i18ntk-fixer.js [options] Alternativ: --source-dir <dir> Källkatalog att skanna (standard: ./locales) --languages <langs> Kommaseparerad lista över språk för att fixa --markers <markers> Kommaseparerade markörer att behandla som oöversatta --no-backup Hoppa över automatisk säkerhetskopiering --help Visa denna hjälp Exempel: node i18ntk-fixer.js --languages ​​de,fr nod i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED nod i18ntk-fixer.js ---no-fixerback.",
169
+ "starting": "🚀 Börjar fixa översättning för språk: {languages}",
170
+ "sourceDirectory": "📁 Källkatalog: {sourceDir}",
171
+ "sourceLanguage": "🔤 Källspråk: {sourceLanguage}",
172
+ "markers": "🏷️ Markörer att fixa: {markers}",
173
+ "scanningLanguage": "📊 Skanning {language}...",
174
+ "noLanguages": "❌ Inga språk specificerade för fixering.",
175
+ "allComplete": "🎉 Alla översättningar är redan klara!",
176
+ "fullReportSaved": "📊 Hela rapporten sparad till: {reportPath}",
177
+ "reviewReport": "Vänligen granska rapporten innan du fortsätter.",
178
+ "backupCreated": "💾 Säkerhetskopiering skapad framgångsrikt.",
179
+ "applyingFixes": "🔄 Tillämpar korrigeringar...",
180
+ "fixingComplete": "✅ Översättningsfixering klar!",
181
+ "operationCancelled": "❌ Operation avbruten av användaren.",
182
+ "analysisTitle": "🔍 ÖVERSÄTTNING FIXANDE ANALYS",
183
+ "analysisSeparator": "==================================================",
184
+ "totalIssues": "Totalt antal problem som hittades: {totalIssues}",
185
+ "missingTranslations": "Saknade översättningar: {missing}",
186
+ "placeholderTranslations": "Platshållaröversättningar: {placeholder}",
187
+ "noIssues": "✅ Inga problem hittades. Alla översättningar är färdiga.",
188
+ "detailedIssues": "📋 DETAILED ISSUES:",
189
+ "detailedSeparator": "--------------------------------------------------",
190
+ "filePath": "📄 {file} → {path}",
191
+ "missingKey": "❌ SAKNAS: {source} → {new}",
192
+ "placeholderKey": "⚠️ PLATSHÅLLARE: \"{target}\" → \"{new}\"",
193
+ "moreIssues": "... och {count} fler frågor. Kontrollera rapportfilen för fullständig information.",
194
+ "confirmationTitle": "🤔 Vill du fortsätta med dessa korrigeringar?",
195
+ "confirmationOptions": "Alternativ:",
196
+ "optionYes": "y - Ja, tillämpa alla korrigeringar",
197
+ "optionNo": "n - Nej, avbryt operationen",
198
+ "optionShow": "s - Visa detaljerade problem",
199
+ "choicePrompt": "Ditt val (y/n/s):",
200
+ "nonInteractiveMode": "⚡ Icke-interaktivt läge upptäckts - tillämpar korrigeringar automatiskt...",
201
+ "reportGenerated": "📊 Fixer rapport genererad: {path}",
202
+ "summary": "Fixer sammanfattning:",
203
+ "welcome": {
204
+ "title": "🎯 Välkommen till Translation Fixer!",
205
+ "description": "Det här verktyget hjälper dig att fixa trasiga översättningar och platshållare över dina språkfiler."
206
+ },
207
+ "markerPrompt": {
208
+ "title": "🏷️ Konfigurera platshållarmarkörer",
209
+ "description": "Ange markörerna som indikerar oöversatt text (kommaseparerad):",
210
+ "currentDefaults": "Standardmarkörer: {markers}",
211
+ "input": "Markörer (eller tryck på Enter för standardinställningar):"
212
+ },
213
+ "languagePrompt": {
214
+ "title": "🌍 Välj språk att fixa",
215
+ "available": "Tillgängliga språk: {languages}",
216
+ "description": "Ange språk att fixa (kommaseparerade) eller tryck på Retur för alla:",
217
+ "input": "Språk:",
218
+ "noLanguages": "Inga språk hittades att fixa."
219
+ },
220
+ "directoryPrompt": {
221
+ "title": "📁 Välj Katalog",
222
+ "current": "Aktuell katalog: {dir}",
223
+ "description": "Ange katalogen som innehåller dina språkfiler (eller tryck på Enter för aktuell):",
224
+ "input": "Katalog:"
225
+ },
226
+ "backupLocation": "Säkerhetskopieringsplats: {dir}",
227
+ "completed": "Fixering klar.",
228
+ "creatingBackup": "Skapar backup i {dir}...",
229
+ "dryRunMode": "Torrkörningsläge: {mode}",
230
+ "error": "Fixer misslyckades: {error}",
231
+ "fixing": "Fixering {language}...",
232
+ "foundLanguages": "Hittade {count} språk: {languages}",
233
+ "languageFixed": "{language}: fixat {fixed} nyckel(ar), överhoppad {skipped}.",
234
+ "running": "Kör översättningsfixer...",
235
+ "totalFixed": "Totalt fast: {count}"
236
+ },
237
+ "autorun": {
238
+ "stepAnalyzeTranslations": "Analysera översättningar",
239
+ "stepCompletedWithIcon": "✅ Avslutat: {stepName}",
240
+ "stepValidateTranslations": "Validera översättningar",
241
+ "stepRunning": "▶️ Steg {stepNumber}/{totalSteps}: {stepName}",
242
+ "separator": "==================================================",
243
+ "stepFailed": "❌ Misslyckades: {stepName}",
244
+ "errorLabel": "Fel",
245
+ "autoRunScriptTitle": "🧪 Autokör arbetsflöde",
246
+ "usageTitle": "Användande",
247
+ "runAllSteps": "Kör: nod i18ntk-autorun.js",
248
+ "configureSettingsFirst": "Config: i18ntk-config.json eller CLI-flaggor",
249
+ "runSpecificSteps": "Använd --steps=1,3 eller --list för att visa steg",
250
+ "showHelp": "--hjälp för mer info",
251
+ "examplesTitle": "Exempel",
252
+ "configExample": "nod i18ntk-autorun.js --ui-language=zh",
253
+ "stepsExample1": "nod i18ntk-autorun.js --steps=analysera, validera",
254
+ "stepsExample2": "nod i18ntk-autorun.js --list",
255
+ "customSettingsConfiguration": "Anpassade autoruninställningar",
256
+ "availableSteps": "Tillgängliga steg",
257
+ "startingAutoRunWorkflow": "🚀 Startar Auto-Run Workflow...",
258
+ "workflowIncludesSteps": "Arbetsflöde inkluderar {count} steg:",
259
+ "missingRequiredFile": "En obligatorisk fil saknas: {file}",
260
+ "workflowStopped": "Arbetsflödet stoppades på grund av ett fel.",
261
+ "workflowCompleted": "🎉 Arbetsflödet avslutat!",
262
+ "successfulSteps": "Framgångsrika steg: {count}",
263
+ "failedSteps": "Misslyckade steg: {count}",
264
+ "stepInitializeProject": "Initiera projektet",
265
+ "stepCheckUsage": "Kontrollera nyckelanvändningen",
266
+ "stepGenerateSummary": "Skapa sammanfattande rapport",
267
+ "runInitializationFirst": "Kör initiering först.",
268
+ "initializationCheckPassed": "Initieringskontrollen godkänd.",
269
+ "runningStep": "Löpningssteg: {stepName}",
270
+ "commandLabel": "Kommando: {command}",
271
+ "stepCompletedWithTime": "Steg '{stepName}' slutfört i {duration}ms.",
272
+ "stepCompleted": "Steg '{stepName}' slutfört.",
273
+ "stepFailedWithError": "Steg '{stepName}' misslyckades med fel: {error}",
274
+ "requiredStepFailed": "Det obligatoriska steget misslyckades. Stoppar arbetsflödet.",
275
+ "optionalStepFailed": "Valfritt steg misslyckades. Fortsatt arbetsflöde.",
276
+ "stepRequired": "(Nödvändig)",
277
+ "stepOptional": "(Frivillig)",
278
+ "startingExecution": "Börjar köra...",
279
+ "pressEnterToContinue": "Tryck på Enter för att fortsätta...",
280
+ "runningSelectedSteps": "Kör valda steg...",
281
+ "invalidStepNumber": "Ogiltigt stegnummer: {stepNum}",
282
+ "executionReport": "Utföranderapport:",
283
+ "requiredFailedSteps": "Nödvändiga steg misslyckades: {count}",
284
+ "stepDetails": "Stegdetaljer:",
285
+ "reportSavedTo": "Rapport sparad till: {path}",
286
+ "overallStatusSuccess": "SUCCESS",
287
+ "overallStatusFailed": "FAILED",
288
+ "overallStatus": "Övergripande status: {status}",
289
+ "pressEnterForDefaults": "Tryck på Enter för att använda standardinställningarna för valfri prompt.",
290
+ "sourceDirPrompt": "Ange källkatalog (standard: {default}):",
291
+ "sourceLangPrompt": "Ange källspråk (standard: {default}):",
292
+ "targetLangsPrompt": "Ange målspråk (kommaseparerade, standard: {default}):",
293
+ "translationMarkerPrompt": "Ange översättningsmarkör (standard: {default}):",
294
+ "outputDirPrompt": "Ange utdatakatalog för rapporter (standard: {default}):",
295
+ "settingsUpdatedSuccessfully": "Inställningarna har uppdaterats!",
296
+ "errorConfiguringSettings": "Fel vid konfigurering av inställningar: {error}",
297
+ "configurationComplete": "Konfigurationen är klar.",
298
+ "runAutoRunCommand": "Nu kan du köra kommandot auto-run.",
299
+ "configurationFailed": "Konfigurationen misslyckades: {error}",
300
+ "noValidStepNumbers": "Inga giltiga stegnummer har angetts.",
301
+ "autoRunFailed": "Automatisk körning misslyckades: {error}",
302
+ "stepCompleteTranslations": "Kompletta översättningar",
303
+ "stepAnalyzeSizing": "Analysera storlek",
304
+ "stepCompletedIcon": "✅",
305
+ "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Steg '{stepName}'springer...",
306
+ "stepFailedIcon": "❌",
307
+ "translationLoadWarning": "Varning: Kunde inte ladda {lang} översättningar",
308
+ "configReadError": "Fel vid läsning {file}"
309
+ },
310
+ "analyze": {
311
+ "help_message": "I18n Translation Analyzer Användning: nod i18ntk-analyze.js [options] Alternativ: --source-dir <dir> Källkatalog att skanna (standard: ./src) --i18n-dir <dir> I18n-katalog (standard: ./src/locales) --output-report Generera detaljerad rapport --output-dir <dir> Utdatakatalog för rapporter (standard: ./reports) --help Visa den här hjälpen Exempel: nod i18ntk-analyze.js --output-report nod i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales nod i18ntk-analyze.js --isreport-utmatning.",
312
+ "source_directory": "📁 Källkatalog: {sourceDir}",
313
+ "i18n_directory": "🌐 I18n-katalog: {i18nDir}",
314
+ "loading_translation_files": "📋 Laddar översättningsfiler...",
315
+ "sourceDirectoryLabel": "📁 Källkatalog: {sourceDir}",
316
+ "sourceLanguageLabel": "🌍 Källspråk: {sourceLanguage}",
317
+ "strictModeLabel": "⚙️ Strikt läge: {mode}",
318
+ "found_translation_files_count": "✅ Hittade {count} översättningsfiler",
319
+ "analyzing_translations": "🔍 Analyserar översättningar...",
320
+ "analysis_completed_successfully": "🎉 Analys slutförd framgångsrikt!",
321
+ "analysis_results": "📊 ANALYSIS RESULTS",
322
+ "language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}% översatta)",
323
+ "sample_missing_keys": "Exempel på saknade nycklar:",
324
+ "missing_key": "- {key}",
325
+ "and_more_missing": "...och {count} mer.",
326
+ "sample_unused_keys": "Exempel på oanvända nycklar:",
327
+ "unused_key": "- {key}",
328
+ "and_more_unused": "...och {count} mer.",
329
+ "recommendations": "📋 REKOMMENDATIONER",
330
+ "add_missing_translations": "💡 Lägg till saknade översättningar för att förbättra täckningen.",
331
+ "remove_unused_translations": "💡 Ta bort oanvända översättningar för att hålla ditt projekt rent.",
332
+ "next_steps": "📋 NEXT STEPS",
333
+ "review_analysis_results": "1. Granska analysresultaten i konsolen eller den genererade rapporten.",
334
+ "run_with_output_report": "2. Kör med --output-report för detaljerad rapport.",
335
+ "add_or_remove_translations": "3. Lägg till saknade översättningar eller ta bort oanvända.",
336
+ "rerun_analysis": "4. Kör analys igen för att verifiera förbättringar.",
337
+ "analysis_summary": "📊 ANALYSIS SUMMARY",
338
+ "source_files_scanned": "Skannade källfiler: {fileCount}",
339
+ "translation_files_checked": "Översättningsfiler kontrollerade: {translationFileCount}",
340
+ "total_keys": "Totalt antal nycklar: {totalKeys}",
341
+ "translated_keys": "Översatta nycklar: {translatedKeys}",
342
+ "missing_keys": "Saknade nycklar: {missingKeys}",
343
+ "unused_keys": "Oanvända nycklar: {unusedKeys}",
344
+ "translation_coverage": "Översättningstäckning: {coverage}%",
345
+ "analysis_passed_for_language": "✅ Analys godkänd {language}",
346
+ "analysis_failed_for_language": "❌ Analys misslyckades för {language} ({missingKeys} saknad, {unusedKeys} oanvänd)",
347
+ "starting": "🔍 Startar översättningsanalys...",
348
+ "foundLanguages": "📋 Hittade {count} Språk att analysera: {languages}",
349
+ "analyzing": "🔄 Analyserar {language}...",
350
+ "reportTitle": "📊 ÖVERSÄTTNINGSANALYS-RAPPORT",
351
+ "generated": "Genererad: {timestamp}",
352
+ "status": "Status: {translated}/{total} nycklar ({percentage}% översatta)",
353
+ "filesAnalyzed": "Filer analyserade: {analyzed}/{total}",
354
+ "keysNeedingTranslation": "Nycklar som behöver översättas: {count}",
355
+ "fileBreakdown": "📋 FILUPPLYSNING",
356
+ "error": "Fel",
357
+ "completed": "✅ Analys genomförd för {language}",
358
+ "progress": "📊 Övergripande framsteg: {translated}/{total} språk som bearbetas",
359
+ "reportSaved": "Rapport sparad: {reportPath}",
360
+ "summary": "📊 ANALYSIS SUMMARY",
361
+ "finished": "✅ Analys slutförd framgångsrikt!",
362
+ "statusFileMissing": "❌ Översättningsfil saknas",
363
+ "sourceKeys": "📊 Källnycklar: {count}",
364
+ "translation": "📊 Översättning: {translated}/{total} ({percentage}%)",
365
+ "structure": "🗂️ Struktur: {status}",
366
+ "consistent": "Konsekvent",
367
+ "inconsistent": "Inkonsekvent",
368
+ "missingKeys": "Saknade nycklar: {count}",
369
+ "extraKeys": "Extra nycklar: {count}",
370
+ "issues": "⚠️ Hittade problem: {count}",
371
+ "issueType": {
372
+ "not_translated": "Ej översatt: {count}",
373
+ "empty_value": "Tomma värden: {count}",
374
+ "partial_translation": "Partiella översättningar: {count}",
375
+ "format_mismatch": "Format som inte matchar: {count}",
376
+ "type_mismatch": "Typ som inte matchar: {count}",
377
+ "structure_mismatch": "Strukturfel matchar: {count}",
378
+ "same_as_source": "Samma som källa: {count}"
379
+ },
380
+ "keysToTranslate": "📋Nycklar att översätta",
381
+ "key": "Nyckel",
382
+ "english": "engelska",
383
+ "needsTranslation": "BEHÖVER ÖVERSÄTTNING",
384
+ "andMoreKeys": "...och {count} fler nycklar.",
385
+ "noLanguages": "⚠️ Inga målspråk hittades.",
386
+ "languageStats": "{language}: {percentage}% klar ({translated}/{total} nycklar)",
387
+ "invalidReportFilePath": "Ogiltig sökväg till rapportfilen",
388
+ "failedToWriteReportFile": "Det gick inte att skriva rapportfilen säkert"
389
+ },
390
+ "complete": {
391
+ "configLoadedSuccessfully": "Konfigurationen har lästs in",
392
+ "configLoadingFailed": "Konfigurationsladdningen misslyckades",
393
+ "sourceLanguageNotFound": "Källspråkskatalogen hittades inte: {sourceLanguage}",
394
+ "couldNotParseTarget": "Kunde inte analysera målfilen: {file}",
395
+ "couldNotParseSource": "Kunde inte analysera källfilen: {file}",
396
+ "reportGenerated": "Rapport genererad: {path}",
397
+ "generateReportPrompt": "Vill du ha en rapport genererad?",
398
+ "title": "🌍 I18NTK ÖVERSÄTTNING SLUTFÖRD",
399
+ "separator": "============================================================",
400
+ "sourceDir": "📁 Källkatalog: {sourceDir}",
401
+ "sourceLanguage": "🌐 Källspråk: {sourceLanguage}",
402
+ "dryRunMode": "🧪 Torrkörningsläge - inga ändringar kommer att göras",
403
+ "languages": "🌍 Tillgängliga språk: {languages}",
404
+ "addingMissingKeys": "➕ Lägger till saknade nycklar till översättningsfiler...",
405
+ "processing": "🔄 Bearbetning {language}...",
406
+ "addedKeys": "✅ Tillagd {count} saknade nycklar",
407
+ "noChangesNeeded": "✅ Inga ändringar behövs för {language}",
408
+ "summaryTitle": "📊 SAMMANFATTNING AV SLUTFÖRANDE",
409
+ "totalChanges": "📝 Totala ändringar: {totalChanges}",
410
+ "languagesProcessed": "🌍 Behandlade språk: {languagesProcessed}",
411
+ "missingKeysAdded": "➕ Saknade nycklar tillagda: {missingKeysAdded}",
412
+ "nextStepsTitle": "📋 NEXT STEPS",
413
+ "nextStep1": "1. Kör användningsanalys:",
414
+ "nextStep2": "nod i18ntk-usage.js --output-report",
415
+ "nextStep3": "2. Validera översättningar:",
416
+ "nextStep4": "nod i18ntk-validate.js",
417
+ "nextStep5": "3. Analysera mönster:",
418
+ "nextStep6": "nod i18ntk-analyze.js",
419
+ "allKeysAvailable": "🎉 Alla översättningsnycklar är nu tillgängliga!",
420
+ "runWithoutDryRun": "💡 Kör utan --torkkör för att tillämpa ändringar",
421
+ "deletingOldReport": "🗑️ Raderar gammal rapport...",
422
+ "generatingFreshAnalysis": "📊 Genererar färsk användningsanalys...",
423
+ "couldNotGenerate": "❌ Kunde inte generera användningsanalys",
424
+ "reportNotFound": "📋 Användningsrapport hittades inte. Använder vanliga nycklar...",
425
+ "foundMissingKeys": "📋 Hittade {count} saknade nycklar från användningsanalys",
426
+ "couldNotParse": "❌ Det gick inte att analysera användningsrapporten. Använder vanliga nycklar...",
427
+ "errorDuringCompletion": "❌ Fel under slutförandet: {error}",
428
+ "fatalError": "❌ Allvarligt fel: {error}",
429
+ "configurationValidationFailed": "Konfigurationsvalideringen misslyckades: obligatoriska fält saknas"
430
+ },
431
+ "sizing": {
432
+ "separator": "================================================================================",
433
+ "lineSeparator": "--------------------------------------------------------------------------------",
434
+ "analysisStats": "{stats}",
435
+ "sourceDirectoryLabel": "📁 Källkatalog: {sourceDir}",
436
+ "sourceLanguageLabel": "🌍 Källspråk: {sourceLanguage}",
437
+ "strictModeLabel": "⚙️ Strikt läge: {mode}",
438
+ "invalidSourceDirectoryError": "Ogiltig sökväg till källkatalogen: {sourceDir}",
439
+ "sourceDirectoryNotFoundError": "Källkatalogen hittades inte: {sourceDir}",
440
+ "invalidOutputDirectoryError": "Ogiltig sökväg för utdatakatalog: {outputDir}",
441
+ "invalidReportFileError": "Ogiltig sökväg till rapportfilen",
442
+ "problematic_keys": "Problematiska nycklar: {problematicKeys}",
443
+ "problematicKeysLabel": "Problematiska nycklar: {problematicKeys}",
444
+ "long_translations": "Långa översättningar: {longTranslations}",
445
+ "failedToSaveReportError": "Det gick inte att spara rapporten säkert",
446
+ "invalidCsvFileError": "Ogiltig CSV-filsökväg",
447
+ "failedToSaveCsvError": "Det gick inte att spara CSV-rapporten säkert",
448
+ "fatalError": "❌ Storleksanalys misslyckades: {error}",
449
+ "starting_i18n_sizing_analysis": "Startar i18n storleksanalys...",
450
+ "source_directory": "Källkatalog: {sourceDir}",
451
+ "found_languages": "Hittade språk: {languages}",
452
+ "analyzing_file_sizes": "Analyserar filstorlekar...",
453
+ "analyzing_translation_content": "Analyserar översättningsinnehåll...",
454
+ "generating_size_comparisons": "Genererar storleksjämförelser...",
455
+ "no_languages_found_for_comparison": "Inga språk hittades för jämförelse",
456
+ "sizing_analysis_results": "I18n Resultat av storleksanalys",
457
+ "file_sizes_title": "Filstorlekar",
458
+ "file_sizes_header": "Språkstorlek (KB) Rader Tecken",
459
+ "file_size_row": "{lang} {sizeKB} {lines} {characters}",
460
+ "language_statistics_title": "Språkstatistik",
461
+ "language_stats_header": "Språktangenter Tecken Genomsnittlig längd Maxlängd Tom Lång",
462
+ "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
463
+ "size_variations_title": "Storleksvariationer",
464
+ "size_variations_header": "Språk Char Diff % Diff Problematiskt",
465
+ "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
466
+ "problematic_yes": "Ja",
467
+ "problematic_no": "Inga",
468
+ "recommendations_title": "Rekommendationer",
469
+ "recommendation_item": "{index}. {recommendation}",
470
+ "problematic_key_detail": "{index}. Nyckel: '{key}' - Variationer: {variations}",
471
+ "generating_detailed_report": "Genererar detaljerad rapport...",
472
+ "keysHaveSignificantSizeVariations": "nycklar har betydande storleksvariationer",
473
+ "longTranslationsDetected": "${lang} har ${data.longKeys} översättningar längre än 100 tecken - överväg att dela upp dem",
474
+ "longer": "längre",
475
+ "shorter": "kortare",
476
+ "review_translations": "Överväg att granska {lang} översättningar - de är {percentageDifference}% {comparison} än baslinjen",
477
+ "report_saved_to": "Rapport sparad till: {reportPath}",
478
+ "considerReviewingTranslations": "Överväg att granska ${lang} översättningar - de är ${data.percentageDifference}% längre än baslinjen",
479
+ "csv_report_saved_to": "CSV-rapport sparad till: {csvPath}",
480
+ "human_report_saved": "Läsbar rapport sparad: {reportPath}",
481
+ "folder_summary_title": "Mappsammanfattning",
482
+ "folder_summary_table_header": "Språk Storlek (KB) Nycklar Genomsnittlig längd Totalt tecken",
483
+ "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
484
+ "language_comparison_title": "Språkjämförelse",
485
+ "language_comparison_row": "{lang}: {diff} tecken ({percent}%) {status}",
486
+ "summary_stats": "📊 Sammanfattning: {totalLanguages} språk, {totalKeys} nycklar - Rapporter sparade till {reportPath}",
487
+ "detailedKeysDescription": "Visa detaljerad analys på nyckelnivå i konsolen",
488
+ "too_many_keys_warning": "⚠️ För många nycklar för att visa i konsolen - kontrollera den detaljerade rapportfilen för fullständig analys",
489
+ "no_translation_files_found": "Inga översättningsfiler hittades",
490
+ "analysis_completed": "Analys genomförd i {duration}ms",
491
+ "analysis_failed": "Analys misslyckades: {errorMessage}",
492
+ "starting_analysis": "Startar analys...",
493
+ "found_files": "Hittade {count} filer",
494
+ "failed_to_parse_language_error": "Det gick inte att analysera {language} översättningar: {errorMessage}",
495
+ "recommendations": {
496
+ "keys_have_significant_size_variations": "nycklar har betydande storleksvariationer",
497
+ "consider_reviewing_translations": "Överväg att granska {lang} översättningar - de är {percentageDifference}% {comparison} än baslinjen",
498
+ "long_translations_detected": "{lang} har {longKeys} översättningar längre än {threshold} karaktärer – överväg att bryta ner dem"
499
+ },
500
+ "detailed_key_analysis_title": "Detaljerad nyckelanalys",
501
+ "key_analysis_detail": "{lang}: {length} tecken ({status}) - {translation}",
502
+ "key_analysis_header": "Nyckel: {key}",
503
+ "status_empty": "tömma",
504
+ "status_long": "lång",
505
+ "status_ok": "ok"
506
+ },
507
+ "usage": {
508
+ "help_message": "I18n Usage Analyzer Användning: nod i18ntk-usage.js [options] Alternativ: --source-dir <dir> Källkatalog att skanna (standard: ./src) --i18n-dir <dir> I18n-katalog (standard: ./src/locales) --output-report Generera detaljerad rapport --output-dir <dir> Utdatakatalog för rapporter (standard: ./reports) --help Visa den här hjälpen Exempel: nod i18ntk-usage.js --output-report nod i18ntk-usage.js --source-dir=./app --i18n-dir=./locales nod i18ntk-usage.js.=reputation-usage.js.",
509
+ "source_directory_thissourcedir": "📁 Källkatalog: {sourceDir}",
510
+ "translationCompletenessTitle": "🌍 Översättningens fullständighet:",
511
+ "i18n_directory_thisi18ndir": "🌐 I18n-katalog: {i18nDir}",
512
+ "failed_to_parse_filename_error": "⚠️ Det gick inte att tolka {fileName}: {errorMessage}",
513
+ "analyzing_source_files": "🔍 Analyserar källfiler...",
514
+ "found_files_in_source": "📂 Hittade {numFiles} filer i källkatalogen",
515
+ "found_thisusedkeyssize_unique_": "🎯 Hittade {usedKeysSize} unika begagnade nycklar",
516
+ "total_key_usages_totalkeysfoun": "📊 Totala nyckelanvändningar: {totalKeysFound}",
517
+ "loading_available_translation_": "📋 Laddar tillgängliga översättningsnycklar...",
518
+ "found_thisavailablekeyssize_av": "✅ Hittade {availableKeysSize} tillgängliga nycklar",
519
+ "foundTranslationFiles": "✅ Hittade {count} översättningsfiler",
520
+ "errorReadingI18nDirectory": "⚠️ Fel vid läsning av i18n-katalogen: {error}",
521
+ "pressEnterToReturnToMenu": "📝 Tryck på Enter för att återgå till huvudmenyn...",
522
+ "notTranslatedKeysTotal": "⚠️ Ej översatta nycklar: {total}",
523
+ "noSourceFilesFound": "⚠️ Inga källfiler hittades i källkatalogen.",
524
+ "reviewNotTranslatedKeys": "💡 Recension ej översatta nycklar",
525
+ "analysisCompletedSuccessfully": "🎉 Analys slutförd framgångsrikt!",
526
+ "detectedSourceDirectory": "Upptäckt källkatalog: {sourceDir}",
527
+ "detectedI18nDirectory": "Upptäckt i18n-katalog: {i18nDir}",
528
+ "fileInfo": "📄 {namespace}: {keys} nycklar",
529
+ "failedToAnalyzeUsage": "❌ Det gick inte att analysera användning: {error}",
530
+ "failedToAnalyzeFile": "❌ Det gick inte att analysera filen: {error}",
531
+ "failedToExtractKeys": "❌ Det gick inte att extrahera nycklar från {filePath}: {error}",
532
+ "analysisFailedError": "❌ Analys misslyckades: {error}",
533
+ "analyzerInitialized": "Analysatorn initierad",
534
+ "analyzerInitFailed": "Analysatorinitiering misslyckades: {error}",
535
+ "argsParsed": "Argument analyserade",
536
+ "processedFiles": "Bearbetas {processedFiles} av {totalFiles} filer.",
537
+ "argsParseFailed": "Parsning av argument misslyckades: {error}",
538
+ "translationDiscoveryError": "Översättningsupptäcktsfel: {error}",
539
+ "fileTraversalError": "Filövergångsfel: {error}",
540
+ "sourceEqualsI18nWarn": "{reason}. Användningsanalys kommer inte att skanna språkfiler som källkod.",
541
+ "i18nEqualsSourceWarn": "⚠️ I18n-katalogen och källkatalogen är samma. Detta kan orsaka problem med analysen.",
542
+ "usageAnalysisFailed": "⚠️ Användningsanalys misslyckades: {error}",
543
+ "translationFileParseError": "⚠️ Översättningsfilens analysfel: {error}",
544
+ "translationKeysLoadError": "⚠️ Översättningsnycklar laddningsfel: {error}",
545
+ "languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% översatta)",
546
+ "missingKeysCount": "⚠️ Saknade nycklar: {count}",
547
+ "analyzingTranslationCompleteness": "Analyserar översättningens fullständighet...",
548
+ "unusedKeysCount": "Oanvända nycklar: {count}",
549
+ "usedKeysCount": "Använda nycklar: {count}",
550
+ "availableKeysCount": "Tillgängliga nycklar: {count}",
551
+ "analysisResults": "Analysresultat:",
552
+ "i18nDirectoryNotFound": "⚠️ I18n-katalogen hittades inte. Kontrollera sökvägen.",
553
+ "sourceDirectoryNotFound": "⚠️ Källkatalogen hittades inte: {dir}",
554
+ "checkUsage": {
555
+ "title": "🔍 I18NTK USAGE ANALYSIS",
556
+ "analyzing_source_files": "🔍 Analyserar källfiler...",
557
+ "source_directory_thissourcedir": "📁 Källkatalog: {sourceDir}",
558
+ "i18n_directory_thisi18ndir": "📁 i18n-katalog: {i18nDir}",
559
+ "found_files_in_source": "✅ Hittade {numFiles} filer i källkatalogen",
560
+ "no_source_files_found": "⚠️ Inga källfiler hittades i den angivna katalogen",
561
+ "processedFiles": "📊 Bearbetad {processedFiles} av {totalFiles} filer",
562
+ "failedToProcessFile": "❌ Det gick inte att bearbeta",
563
+ "found_thisusedkeyssize_unique_": "🔍 Hittade {usedKeysSize} unika begagnade nycklar",
564
+ "total_key_usages_totalkeysfoun": "📊 Totala nyckelanvändningar: {totalKeysFound}",
565
+ "loading_available_translation_": "📂 Laddar tillgängliga översättningsnycklar...",
566
+ "found_thisavailablekeyssize_av": "✅ Hittade {availableKeysSize} tillgängliga nycklar",
567
+ "message": "Analyserar användningen av översättningsnyckeln i hela ditt projekt...",
568
+ "usage_analysis_results": "📊 USAGE ANALYSIS RESULTS",
569
+ "source_files_scanned_thisfileu": "📁 Skannade källfiler: {fileUsageSize}",
570
+ "available_translation_keys_thi": "✅ Tillgängliga översättningsnycklar: {availableKeysSize}",
571
+ "used_translation_keys_thisused": "🔍 Använda översättningsnycklar: {usedKeysSize}",
572
+ "dynamic_keys_detected_dynamick": "⚡ Dynamiska nycklar upptäckt: {dynamicKeysLength}",
573
+ "unused_keys_unusedkeyslength": "🗑️ Oanvända nycklar: {unusedKeysLength}",
574
+ "missing_keys_missingkeyslength": "❌ Saknade nycklar: {missingKeysLength}",
575
+ "translation_completeness_title": "📈 ÖVERSÄTTNINGSFULLSTÄNDIGHET",
576
+ "language_completeness_stats": "{language}: {translated}/{total} nycklar ({percentage}%)",
577
+ "n_sample_unused_keys": "🗑️ EXEMPEL OANVÄNDA NYCKLAR (de första 5):",
578
+ "key": "🔑 {key}",
579
+ "and_unusedkeyslength_5_more": "... och {count} fler oanvända nycklar",
580
+ "n_sample_missing_keys": "❌ EXEMPEL SAKNADE NYCKLAR (de första 5):",
581
+ "and_missingkeyslength_5_more": "... och {count} fler saknade nycklar",
582
+ "n_generating_detailed_report": "📊 Genererar detaljerad rapport...",
583
+ "report_saved_reportpath": "📄 Rapport sparad: {reportPath}",
584
+ "n_recommendations": "💡 REKOMMENDATIONER:",
585
+ "consider_removing_unused_trans": "🗑️ Överväg att ta bort oanvända översättningar för att minska paketstorleken",
586
+ "add_missing_translation_keys_t": "➕ Lägg till saknade översättningsnycklar för att upprätthålla konsekvens",
587
+ "review_dynamic_keys_manually_t": "🔍 Granska dynamiska nycklar manuellt (de kan vara giltiga)",
588
+ "all_translation_keys_are_prope": "✅ Alla översättningsnycklar används korrekt!",
589
+ "n_next_steps": "🎯 NEXT STEPS:",
590
+ "2_check_the_detailed_report_fo": "2. Kontrollera den detaljerade rapporten för specifika problem",
591
+ "help_message": "I18n Usage Analyzer Användning: nod i18ntk-usage.js [options] Alternativ: --source-dir <dir> Källkatalog att skanna (standard: ./src) --i18n-dir <dir> I18n-katalog (standard: ./src/locales) --output-report Generera detaljerad rapport --output-dir <dir> Utdatakatalog för rapporter (standard: ./reports) --help Visa den här hjälpen Exempel: nod i18ntk-usage.js --output-report nod i18ntk-usage.js --source-dir=./app --i18n-dir=./locales nod i18ntk-usage.js.=reputation-usage.js.",
592
+ "1_review_the_analysis_results": "1. Granska analysresultaten i konsolen eller den genererade rapporten.",
593
+ "2_run_with_outputreport_for_de": "2. Kör med --output-report för detaljerad rapport.",
594
+ "3_remove_unused_keys_or_add_mi": "3. Ta bort oanvända nycklar eller lägg till saknade nycklar till din källkod.",
595
+ "4_rerun_analysis_to_verify_imp": "4. Kör analys igen för att verifiera förbättringar.",
596
+ "noSourceFilesFound": "Inga källfiler hittades att analysera.",
597
+ "i18nDirectoryNotFound": "I18n-katalogen hittades inte: {i18nDir}",
598
+ "noTranslationLanguagesFound": "Inga översättningsspråk hittades.",
599
+ "failedToAnalyzeFile": "Det gick inte att analysera filen {filePath}: {error}",
600
+ "failedToAnalyzeLanguage": "Det gick inte att analysera språket {language}: {error}",
601
+ "translationCompletenessAnalysisFailed": "Analysen av översättningens fullständighet misslyckades: {error}",
602
+ "n": "\\n"
603
+ },
604
+ "complete": {
605
+ "configLoadedSuccessfully": "Konfigurationen har lästs in",
606
+ "configLoadingFailed": "Konfigurationsladdningen misslyckades",
607
+ "title": "🌍 I18NTK ÖVERSÄTTNING SLUTFÖRD",
608
+ "separator": "============================================================",
609
+ "sourceDir": "📁 Källkatalog: {sourceDir}",
610
+ "sourceLanguage": "🌐 Källspråk: {sourceLanguage}",
611
+ "dryRunMode": "🧪 Torrkörningsläge - inga ändringar kommer att göras",
612
+ "languages": "🌍 Tillgängliga språk: {languages}",
613
+ "addingMissingKeys": "➕ Lägger till saknade nycklar till översättningsfiler...",
614
+ "processing": "🔄 Bearbetning {language}...",
615
+ "addedKeys": "✅ Tillagd {count} saknade nycklar",
616
+ "changeDetails": "📝 {file}: {key}",
617
+ "andMore": "...och {count} mer",
618
+ "noChangesNeeded": "✅ Inga ändringar behövs för {language}",
619
+ "summaryTitle": "📊 SAMMANFATTNING AV SLUTFÖRANDE",
620
+ "totalChanges": "📝 Totala ändringar: {totalChanges}",
621
+ "languagesProcessed": "🌍 Behandlade språk: {languagesProcessed}",
622
+ "missingKeysAdded": "➕ Saknade nycklar tillagda: {missingKeysAdded}",
623
+ "nextStepsTitle": "📋 NEXT STEPS",
624
+ "nextStep1": "1. Kör användningsanalys:",
625
+ "nextStep2": "nod i18ntk-usage.js --output-report",
626
+ "nextStep3": "2. Validera översättningar:",
627
+ "nextStep4": "nod i18ntk-validate.js",
628
+ "nextStep5": "3. Analysera mönster:",
629
+ "nextStep6": "nod i18ntk-analyze.js",
630
+ "allKeysAvailable": "🎉 Alla översättningsnycklar är nu tillgängliga!",
631
+ "runWithoutDryRun": "💡 Kör utan --torkkör för att tillämpa ändringar",
632
+ "deletingOldReport": "🗑️ Raderar gammal rapport...",
633
+ "generatingFreshAnalysis": "📊 Genererar färsk användningsanalys...",
634
+ "couldNotGenerate": "❌ Kunde inte generera användningsanalys",
635
+ "reportNotFound": "📋 Användningsrapport hittades inte. Använder vanliga nycklar...",
636
+ "foundMissingKeys": "📋 Hittade {count} saknade nycklar från användningsanalys",
637
+ "couldNotParse": "❌ Det gick inte att analysera användningsrapporten. Använder vanliga nycklar..."
638
+ },
639
+ "noTranslationLanguagesFound": "Inga översättningsspråk hittades",
640
+ "failedToAnalyzeLanguage": "Det gick inte att analysera språket",
641
+ "translationCompletenessAnalysisFailed": "Analys av översättningens fullständighet misslyckades",
642
+ "failedToProcessFile": "Det gick inte att bearbeta filen:",
643
+ "failedToSaveReport": "Det gick inte att spara användningsrapporten: {error}",
644
+ "i18nDirectoryDoesNotExist": "I18n-katalogen finns inte: {dir}",
645
+ "reportSavedTo": "Användningsrapport sparad till: {reportPath}",
646
+ "sourceDirectoryDoesNotExist": "Källkatalogen finns inte: {dir}",
647
+ "noSourceDirectoryConfigured": "(ingen konfigurerad)"
648
+ },
649
+ "validate": {
650
+ "help_message": "I18n Translation Validator Användning: nod i18ntk-validate.js [options] Alternativ: --source-dir <dir> Källkatalog att skanna (standard: ./src) --i18n-dir <dir> I18n-katalog (standard: ./src/locales) --output-report Generera detaljerad rapport --output-dir <dir> Utdatakatalog för rapporter (standard: ./reports) --hjälp Visa denna hjälp Exempel: nod i18ntk-validate.js --output-report nod i18ntk-validate.js --source-dir=./app --i18n-dir=./locales nod i18ntk-output-analyskatalog ---port",
651
+ "title": "🔍 I18n Översättningsvalidator",
652
+ "message": "Startar valideringsprocessen...",
653
+ "sourceDirectory": "📁 Källkatalog: {dir}",
654
+ "sourceLanguage": "🌍 Källspråk: {sourceLanguage}",
655
+ "strictMode": "⚙️ Strikt läge: {mode}",
656
+ "noTargetLanguages": "Inga målspråk konfigurerade; hoppa över målvalidering. Lägg till språk via \"i18ntk init --languages=de,fr\".",
657
+ "validatingLanguages": "🌍 Validera språk: {langs}",
658
+ "validatingLanguage": "🔍 Validerande språk: {lang}",
659
+ "filesCount": "📄 Filer: {count}",
660
+ "keysCount": "🔑 Nycklar: {count}",
661
+ "missingFilesCount": "📁 Saknade filer: {count}",
662
+ "syntaxErrorsCount": "❌ Syntaxfel: {count}",
663
+ "translationPercentage": "🎯 Översättning: {percentage}% ({translated}/{total} nycklar)",
664
+ "validationSummary": "📊 SAMMANFATTNING AV VALIDERING",
665
+ "validation_failed": "❌ Validering misslyckades: {error}",
666
+ "totalErrors": "❌ Totalt antal fel: {count}",
667
+ "totalWarnings": "⚠️ Totala varningar: {count}",
668
+ "errorsSection": "❌ ERRORS",
669
+ "warningsSection": "⚠️ WARNINGS",
670
+ "recommendationsSection": "💡 REKOMMENDATIONER",
671
+ "fixErrorsFirst": "1. Åtgärda alla fel först",
672
+ "resolveMissingFilesAndSyntaxErrors": "1. Åtgärda saknade filer och syntaxfel",
673
+ "fixStructuralInconsistencies": "2. Åtgärda strukturella inkonsekvenser",
674
+ "completeMissingTranslations": "3. Komplettera saknade översättningar",
675
+ "rerunValidation": "4. Kör valideringen igen för att verifiera korrigeringar",
676
+ "addressWarnings": "Adressera varningar för att förbättra kvaliteten",
677
+ "reviewWarnings": "Granska varningar och fixa där det är lämpligt",
678
+ "considerRunningWithStrict": "2. Överväg att köra med flaggan --strict för strängare validering",
679
+ "allValidationsPassed": "🎉 Alla valideringar godkända!",
680
+ "considerRunningUsageAnalysis": "Överväg att köra användningsanalys: nod i18ntk-usage.js",
681
+ "deletedOldReport": "🗑️ Raderad gammal valideringsrapport",
682
+ "sourceDir": "📁 Källkatalog: {sourceDir}",
683
+ "i18nDir": "🌐 I18n-katalog: {i18nDir}",
684
+ "loadingTranslationFiles": "📋 Laddar översättningsfiler...",
685
+ "foundTranslationFilesCount": "✅ Hittade {count} översättningsfiler",
686
+ "analyzingTranslations": "🔍 Analyserar översättningar...",
687
+ "validationCompletedSuccessfully": "🎉 Validering slutförd framgångsrikt!",
688
+ "validationErrorsFound": "⚠️ Valideringsfel hittades: {count}",
689
+ "validationWarningsFound": "⚠️ Valideringsvarningar hittades: {count}",
690
+ "validationPassed": "✅ Validering godkänd utan fel",
691
+ "validationFailed": "Validering misslyckades: {error}",
692
+ "startingValidationProcess": "🔍 Startar valideringsprocessen...",
693
+ "validationProcessCompletedSuccessfully": "✅ Valideringsprocess slutförd framgångsrikt",
694
+ "stackTrace": "Stackspår: {stack}",
695
+ "authenticationFailed": "❌ Autentisering misslyckades. Åtkomst nekad.",
696
+ "fatalValidationError": "❌ Fatalt valideringsfel: {error}",
697
+ "configAccess": "Åtkomst till konfiguration för validering",
698
+ "configValidated": "Konfigurationen har validerats",
699
+ "configError": "Konfigurationsfel: {error}",
700
+ "validatorInit": "Initierar I18n validator",
701
+ "validatorInitialized": "I18n validator initierades framgångsrikt",
702
+ "validatorInitError": "Validatorinitieringsfel: {error}",
703
+ "argsParsing": "Parsar kommandoradsargument",
704
+ "argsParsed": "Kommandoradsargument tolkade framgångsrikt",
705
+ "argsParseError": "Argumenttolkningsfel: {error}",
706
+ "languagesScan": "Skannar tillgängliga språk",
707
+ "languagesFound": "Hittade {count} språk",
708
+ "languagesScanError": "Språkskanningsfel: {error}",
709
+ "filesScan": "Hittade {count} filer i {language}",
710
+ "filesScanError": "Filskanningsfel: {error}",
711
+ "jsonValidated": "JSON-syntax validerad: {filePath}",
712
+ "jsonValidationError": "JSON-valideringsfel: {error}",
713
+ "languageValidation": "Validerande språk: {language}",
714
+ "languageValidationError": "Språkvalideringsfel: {error}",
715
+ "fileDeleted": "Filen raderad",
716
+ "runStarted": "Startar valideringskörning",
717
+ "runCompleted": "Valideringskörningen slutfördes",
718
+ "runError": "Valideringskörningen misslyckades: {error}",
719
+ "scriptExecution": "Utförande av skript",
720
+ "validationCompleted": "Validering slutförd",
721
+ "validationError": "Valideringsfel: {error}",
722
+ "separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
723
+ "languageHeader": "🌐 Språk: {language}",
724
+ "validationResults": "📊 Valideringsresultat",
725
+ "noErrors": "✅ Inga fel hittades",
726
+ "noWarnings": "✅ Inga varningar hittades",
727
+ "summaryHeader": "📋 OVERALL SUMMARY",
728
+ "progressIndicator": "⏳ Bearbetar...",
729
+ "completedIndicator": "✅ Avslutad",
730
+ "errorIndicator": "❌ Fel",
731
+ "warningIndicator": "⚠️ Varning",
732
+ "infoIndicator": "ℹ️ Info",
733
+ "sourceDirNotConfigured": "Källkatalogen är inte konfigurerad",
734
+ "sourceLanguageNotConfigured": "Källspråket är inte konfigurerat",
735
+ "translationFunctionNotInitialized": "Översättningsfunktionen är inte korrekt initierad",
736
+ "sourceLanguageDirectoryNotFound": "Källspråkskatalogen hittades inte",
737
+ "specifiedLanguageNotFound": "Det angivna språket hittades inte",
738
+ "noJsonFilesFound": "Inga JSON-filer hittades i källkatalogen: {sourceDir}",
739
+ "i18nDirectoryNotFound": "I18n-katalogen hittades inte: {i18nDir}",
740
+ "invalidDirectoryPaths": "Ogiltiga katalogsökvägar upptäcktes",
741
+ "invalidSampleFilePath": "Ogiltig sökväg till exempelfil",
742
+ "failedToCreateSampleTranslationFile": "Det gick inte att skapa exempelöversättningsfil",
743
+ "invalidFilePathDetected": "Ogiltig sökväg har upptäckts",
744
+ "failedToWriteFile": "Det gick inte att skriva filen: {filePath}",
745
+ "invalidSourceDirectory": "Ogiltig källkatalog: {sourceDir}",
746
+ "invalidSourceLanguageDirectory": "Ogiltig källspråkskatalog: {sourceDir}"
747
+ },
748
+ "adminCli": {
749
+ "setupPinProtectionTitle": "🔐 Konfigurera Admin PIN-skydd",
750
+ "setupPinProtectionDescription": "Detta kräver en 4-6-siffrig PIN-kod för administrativa åtgärder.",
751
+ "enablePinProtectionPrompt": "Vill du aktivera admin PIN-skydd?",
752
+ "setupCancelled": "Administratörs-PIN-skyddet avbröts.",
753
+ "enterPinPrompt": "Ange en 4-6-siffrig PIN-kod:",
754
+ "pinFormatError": "❌ PIN-koden måste vara 4-6 siffror. Försök igen.",
755
+ "confirmPinPrompt": "Bekräfta PIN:",
756
+ "pinMismatchError": "❌ PIN-koderna stämmer inte överens. Försök igen.",
757
+ "pinProtectionEnabledSuccess": "✅ Admin PIN-skydd har aktiverats framgångsrikt!",
758
+ "pinRecoveryWarning": "⚠️ Kom ihåg din PIN-kod - den kan inte återställas om den tappas bort.",
759
+ "setupPinProtectionFailed": "❌ Det gick inte att ställa in admin PIN-skydd.",
760
+ "errorSettingUpPin": "❌ Fel vid inställning av administratörs-PIN: {message}",
761
+ "authRequiredForOperation": "🔐 Adminautentisering krävs för: {operation}",
762
+ "invalidPinFormat": "❌ Ogiltigt PIN-format. PIN-koden måste vara 4-6 siffror.",
763
+ "authenticationSuccess": "✅ Autentisering lyckad!",
764
+ "invalidPinAttemptsRemaining": "❌ Ogiltig PIN-kod. {remaining} försök kvar.",
765
+ "authenticationFailedAccessDenied": "❌ Autentisering misslyckades. Åtkomst nekad.",
766
+ "authenticationError": "❌ Autentiseringsfel: {message}",
767
+ "pinProtectionNotEnabled": "Admin PIN-skydd är för närvarande inte aktiverat.",
768
+ "disablingPinProtectionTitle": "🔓 Inaktiverar Admin PIN-skydd",
769
+ "confirmDisablePinProtection": "Är du säker på att du vill inaktivera administratörs-PIN-skydd?",
770
+ "operationCancelled": "Åtgärden avbröts.",
771
+ "pinProtectionDisabledSuccess": "✅ Admin PIN-skydd inaktiverat.",
772
+ "disablePinProtectionFailed": "❌ Det gick inte att inaktivera admin PIN-skydd.",
773
+ "errorDisablingPinProtection": "❌ Fel när administratörsskyddet inaktiverades: {message}",
774
+ "adminProtectionStatusTitle": "🔐 Adminskyddsstatus",
775
+ "statusEnabled": "Status: ✅ AKTIVERAD",
776
+ "protectionDetails": "Skydd: 4-6-siffrig PIN-kod krävs för administratörsfunktioner",
777
+ "lockoutDetails": "Lockout: 3 misslyckade försök = 15 minuters lockout",
778
+ "statusDisabled": "Status: ❌ INaktiverad",
779
+ "noAuthRequired": "Skydd: Ingen autentisering krävs",
780
+ "unprotectedRisk": "Risk: Administrativ verksamhet är oskyddad",
781
+ "errorCheckingAdminStatus": "❌ Fel vid kontroll av administratörsstatus: {message}",
782
+ "authRequired": "🔐 Adminautentisering krävs.",
783
+ "invalidPin": "❌ Ogiltig PIN-kod.",
784
+ "authSuccess": "✅ Autentisering lyckad!",
785
+ "adminPinSetupCli": "admin_pin_setup_cli",
786
+ "adminAuthFailedCli": "admin_auth_failed_cli",
787
+ "adminAuthDisabledCli": "admin_auth_disabled_cli",
788
+ "protectedAccess": "Skyddad åtkomst: Admin-autentisering krävs för känsliga åtgärder.",
789
+ "enterPin": "Ange administratörs-PIN:",
790
+ "accessGranted": "Tillträde beviljad."
791
+ },
792
+ "adminPin": {
793
+ "setup_title": "🔐 Inställning av administratörs-PIN",
794
+ "setup_separator": "============================================================",
795
+ "setup_description": "Skapa en 4-6-siffrig PIN-kod för administratörsåtkomst till känsliga inställningar.",
796
+ "required_for_title": "Denna PIN-kod kommer att krävas för:",
797
+ "required_for_1": "• Ändra säkerhetsinställningar",
798
+ "required_for_2": "• Ändra avancerade konfigurationer",
799
+ "required_for_3": "• Åtkomst till felsökningsverktyg",
800
+ "required_for_4": "• Återställa inställningar",
801
+ "setup_note": "💡 Obs: Du kommer att se asterisker (*) när du skriver - dessa är bara maskeringstecken.",
802
+ "setup_digits_only": "Endast nummer 0-9 accepteras som PIN-siffror.",
803
+ "invalid_pin_length": "❌ Ogiltig PIN-kod. Måste vara 4-6 siffror (endast nummer 0-9).",
804
+ "invalid_pin_example": "Exempel: 1234 eller 567890",
805
+ "pins_do_not_match": "❌ PIN-koderna stämmer inte överens.",
806
+ "setup_success": "✅ Admin PIN har ställts in!",
807
+ "setup_warning": "⚠️ Förvara denna PIN-kod säkert. Den kan inte återställas om den försvinner.",
808
+ "setup_error": "❌ Fel vid inställning av PIN:",
809
+ "session_expired": "⏰ Administratörssessionen löpte ut på grund av inaktivitet.",
810
+ "no_pin_set_setting_up": "⚠️ Ingen administratörs-PIN inställd. Konfigurerar PIN...",
811
+ "no_pin_configured_access_denied": "⚠️ Ingen administratörs-PIN konfigurerad. Åtkomst nekad.",
812
+ "use_admin_settings_to_set_pin": "💡 Använd administratörsinställningarna för att ställa in en PIN-kod först.",
813
+ "locked_out": "🔒 Adminåtkomst är låst på grund av för många misslyckade försök.",
814
+ "wait_before_retry": "Vänta 5 minuter innan du försöker igen.",
815
+ "access_granted": "✅ Adminåtkomst beviljad.",
816
+ "incorrect_pin": "❌ Felaktig PIN-kod. {attempts} försök kvar.",
817
+ "verify_pin_error": "❌ Fel vid verifiering av PIN-koden:",
818
+ "already_configured": "✅ Admin-PIN är redan konfigurerad.",
819
+ "optional_setup_title": "🔐 Admin PIN-inställning (valfritt)",
820
+ "optional_setup_description": "Admin PIN-skydd ger säkerhet för känsliga operationer som:",
821
+ "setup_prompt": "Vill du ställa in en administratörs-PIN? (år/n):",
822
+ "skipping_setup": "⏭️ Hoppa över admin PIN-inställning. Du kan ställa in det senare i inställningarna.",
823
+ "setup_prompt_error": "❌ Fel under uppmaning om PIN-inställning:",
824
+ "protectedAccess": "Skyddad åtkomst: Admin-autentisering krävs för känsliga åtgärder.",
825
+ "enterPin": "Ange administratörs-PIN:",
826
+ "accessGranted": "Tillträde beviljad.",
827
+ "invalidPin": "❌ Ogiltig PIN-kod. Försök igen.",
828
+ "weak_pin_warning": "⚠️ VARNING: Denna PIN-kod verkar vara svag eller vanlig.",
829
+ "weak_pin_suggestion": "💡 Överväg att använda en starkare PIN-kod med olika siffror.",
830
+ "use_anyway_prompt": "Skriv \"ja\" för att använda ändå, eller tryck på Enter för att välja en annan PIN-kod:",
831
+ "enter_new_pin": "Ange ny administratörs-PIN (4-6 siffror):",
832
+ "confirm_pin": "Bekräfta administratörs-PIN:",
833
+ "not_set": "Ej inställd",
834
+ "pin_display_mask": "####"
835
+ },
836
+ "debug": {
837
+ "title": "🔧 Felsökningsverktyg",
838
+ "separator": "============================================================",
839
+ "mainDebuggerSystemDiagnostics": "1. Systemdiagnostik",
840
+ "_consoleTranslationsCheck": "// 2. Kontroll av konsolöversättningar",
841
+ "_exportMissingKeys": "// 3. Exportera saknade översättningsnycklar",
842
+ "_replaceHardcodedConsole": "// 4. Ersätt hårdkodade konsolsträngar",
843
+ "_consoleKeyChecker": "// 5. Konsolnyckelkontroll",
844
+ "debugLogs": "2. Felsökningsloggar",
845
+ "backToMainMenu": "0. Tillbaka till huvudmenyn",
846
+ "selectOption": "Välj ett felsökningsverktyg:",
847
+ "runningDebugTool": "Spring {displayName}...",
848
+ "debugToolNotFound": "❌ Felsökningsverktyget hittades inte: {toolName}",
849
+ "errorRunningDebugTool": "Fel vid körning av felsökningsverktyget{displayName}': {error}",
850
+ "recentDebugLogs": "📄 Senaste felsökningsloggar",
851
+ "noDebugLogsFound": "❌ Inga felsökningsloggar hittades.",
852
+ "debugLogsDirectoryNotFound": "❌ Mappen för felsökningsloggar hittades inte.",
853
+ "selectLogPrompt": "Välj loggfil att visa (1-{count}):",
854
+ "invalidChoiceSelectRange": "Ogiltigt val. Välj från det tillgängliga sortimentet.",
855
+ "contentOf": "📄 Innehåll i {filename}:",
856
+ "pressEnterToContinue": "Tryck på Enter för att fortsätta..."
857
+ },
858
+ "detect_language_mismatches": {
859
+ "tool_title": "🔍 Verktyg för upptäckt av missmatchning av språk",
860
+ "separator": "=====================================",
861
+ "analyzing_file": "📄 Analyserar {language}.json...",
862
+ "error_analyzing_file": "❌ Fel vid analys {filename}: {errorMessage}",
863
+ "results_title": "📊 RESULTAT FÖR DETEKTION AV SPRÅKFELMATNING",
864
+ "results_separator": "========================================",
865
+ "summary_title": "📋 SUMMARY:",
866
+ "total_files_analyzed": "Totalt antal analyserade filer: {totalFiles}",
867
+ "files_with_mismatches": "Filer som inte matchar: {filesWithMismatches}",
868
+ "total_mismatches_found": "Totala missmatchningar hittades: {totalMismatches}",
869
+ "no_mismatches_found": "✅ Inga språköverensstämmelser hittades! Alla översättningar verkar vara på sina korrekta språk.",
870
+ "detailed_results_title": "🔍 DETAILED RESULTS:",
871
+ "file_mismatch_header": "📄 {filename} ({language})",
872
+ "mismatches_count": "Hittade {count} missmatch(ar):",
873
+ "mismatch_details": "{index}. Nyckel: {key}",
874
+ "mismatch_value": "Värde: \"{value}\"",
875
+ "mismatch_issue": "Utfärda: {description}",
876
+ "recommendations_title": "💡 REKOMMENDATIONER:",
877
+ "recommendation_1": "1. Granska och översätt alla poster markerade med [ÖVERSÄTT]",
878
+ "recommendation_2": "2. Ersätt språkprefix (t.ex. [DE], [FR]) med korrekta översättningar",
879
+ "recommendation_3": "3. Översätt engelsk text till lämpligt målspråk",
880
+ "recommendation_4": "4. Använd motsvarigheter på modersmål för all text som vänder sig till användaren",
881
+ "recommendation_5": "5. Kör det här verktyget igen efter att ha gjort korrigeringar för att verifiera korrigeringar",
882
+ "detailed_report_saved": "📄 Detaljerad rapport sparad till: {reportPath}",
883
+ "error_saving_report": "❌ Fel när rapporten skulle sparas: {errorMessage}",
884
+ "auto_fix_mode": "🔧 Autofix-läge {dryRun}",
885
+ "auto_fix_separator": "=====================================",
886
+ "fixed_file": "✅ Fixat {filename}",
887
+ "auto_fix_summary_title": "📊 Sammanfattning av autofix:",
888
+ "total_fixes_applied": "Totalt antal korrigeringar som tillämpats: {count}",
889
+ "preview_fixes_title": "🔍 Förhandsgranskning av korrigeringar:",
890
+ "fix_details": "{file}: {key} Gammal: \"{old}\"Ny:\"{new}\"",
891
+ "more_fixes": "... och {count} fler korrigeringar",
892
+ "run_with_apply_fixes": "💡 Kör med --apply för att tillämpa dessa korrigeringar",
893
+ "error_general": "❌ Fel:",
894
+ "mainDebuggerSystemDiagnostics": "Huvudfelsökning / Systemdiagnostik",
895
+ "exportMissingKeys": "Exportera saknade nycklar",
896
+ "replaceHardcodedConsole": "Byt ut hårdkodad konsol",
897
+ "consoleKeyChecker": "Konsolnyckelkontroll",
898
+ "debugLogs": "Felsökningsloggar",
899
+ "backToMainMenu": "Tillbaka till huvudmenyn",
900
+ "invalidChoiceSelectRange": "❌ Ogiltigt val. Välj ett nummer inom det visade intervallet.",
901
+ "runningDebugTool": "Kör felsökningsverktyg: {displayName}",
902
+ "debugToolNotFound": "Felsökningsverktyg '{toolName}' inte hittat.",
903
+ "recentDebugLogs": "Senaste felsökningsloggar",
904
+ "noDebugLogsFound": "Inga felsökningsloggar hittades.",
905
+ "logEntry": "Loggpost: {timestamp} - {message}",
906
+ "debugLogsDirectoryNotFound": "Mappen för felsökningsloggar hittades inte."
907
+ },
908
+ "help": {
909
+ "title": "📊 I18NTK LEDNINGSHJÄLP",
910
+ "usage": "Användning: node main/manage/index.js [alternativ]",
911
+ "interactiveMode": "💡 Använd: node main/manage/index.js --command=<command> för direkt utförande",
912
+ "showHelp": "📖 Använd: node main/manage/index.js --hjälp för tillgängliga kommandon",
913
+ "availableCommands": "📖 Tillgängliga kommandon:",
914
+ "initProject": "🚀 Initiera nya språk",
915
+ "analyzeTranslations": "🔍 Analysera översättningar",
916
+ "validateTranslations": "✅ Validera översättningar",
917
+ "checkUsage": "📊 Kontrollera nyckelanvändning",
918
+ "initCommand": "init - Initiera nya språk",
919
+ "analyzeCommand": "analysera - Analysera översättningar",
920
+ "validateCommand": "validera - Validera översättningar",
921
+ "usageCommand": "användning - Kontrollera nyckelanvändning",
922
+ "sizingCommand": "dimensionering - Analysera dimensionering",
923
+ "completeCommand": "komplett - Kompletta översättningar (100 % täckning)",
924
+ "summaryCommand": "sammanfattning - Visa projektstatus",
925
+ "debugCommand": "debug - Felsök översättningsproblem",
926
+ "scannerCommand": "skanner - Sök efter nycklar",
927
+ "translateCommand": "översätt - Översätt lokala filer automatiskt",
928
+ "menu": {
929
+ "pressEnterToContinue": "Tryck på Enter för att fortsätta...",
930
+ "title": "🌐 I18NTK MANAGEMENT MENY",
931
+ "description": "Interaktiv meny för att hantera internationalisering",
932
+ "exit": "🚪 Avsluta"
933
+ },
934
+ "commands": {
935
+ "init": "init - Initiera nya språk",
936
+ "analyze": "analysera - Analysera översättningar",
937
+ "validate": "validera - Validera översättningar",
938
+ "usage": "användning - Kontrollera nyckelanvändning",
939
+ "sizing": "dimensionering - Analysera dimensionering",
940
+ "complete": "komplett - Kompletta översättningar (100 % täckning)",
941
+ "summary": "sammanfattning - Visa projektstatus",
942
+ "debug": "debug - Felsök översättningsproblem"
943
+ },
944
+ "options": {
945
+ "sourceDir": "--source-dir <dir> Källkatalog att analysera",
946
+ "output": "--produktion <file> Utdatafil för rapporten",
947
+ "verbose": "--verbose, -v Visa detaljerad information",
948
+ "keepReports": "--keep-reports Behåll befintliga rapporter",
949
+ "deleteReports": "--delete-reports Ta bort befintliga rapporter",
950
+ "help": "--help, -h Visa denna hjälp"
951
+ },
952
+ "examples": {
953
+ "title": "Exempel:",
954
+ "example1": "nod i18ntk-manage.js",
955
+ "example2": "nod i18ntk-manage.js --source-dir ./locales",
956
+ "example3": "nod i18ntk-manage.js --output summary-report.txt",
957
+ "example4": "nod i18ntk-manage.js --verbose",
958
+ "example5": "nod i18ntk-manage.js --source-dir ./locales --output report.json"
959
+ },
960
+ "features": {
961
+ "initProject": "🚀 Initiera nya språk",
962
+ "analyzeTranslations": "🔍 Analysera översättningar",
963
+ "validateTranslations": "✅ Validera översättningar",
964
+ "checkUsage": "📊 Kontrollera nyckelanvändning",
965
+ "completeTranslations": "🎯 Kompletta översättningar (100 % täckning)",
966
+ "showSizing": "📏 Analysera storlek",
967
+ "runWorkflow": "🔄 Kör fullt arbetsflöde",
968
+ "showStatus": "📋 Visa projektstatus",
969
+ "deleteReports": "🗑️ Radera alla rapporter",
970
+ "changeLanguage": "🌍 Ändra UI-språk",
971
+ "settings": "⚙️ Inställningar",
972
+ "showHelp": "❓ Hjälp",
973
+ "debugTools": "🔧 Felsökningsverktyg"
974
+ },
975
+ "messages": {
976
+ "selectOption": "Välj ett alternativ:",
977
+ "invalidOption": "Ogiltigt alternativ. Försök igen.",
978
+ "operationCompleted": "✅ Operation slutförd framgångsrikt!",
979
+ "pressEnter": "Tryck på Enter för att fortsätta...",
980
+ "goodbye": "👋 Adjö!",
981
+ "unknownCommand": "Okänt kommando: {command}",
982
+ "nonInteractive": "⚠️ Icke-interaktivt läge upptäcktes. Menyn visas endast för referens."
983
+ },
984
+ "i18n_helper": {
985
+ "translation_file_not_found": "Översättningsfilen hittades inte: {translationFile}",
986
+ "error_loading_translations": "Det gick inte att läsa in översättningar: {errorMessage}",
987
+ "translation_not_found": "Översättning hittades inte för nyckel: {key}",
988
+ "translation_key_not_string": "Översättningsnyckel löser sig inte till en sträng: {key}",
989
+ "error_reading_locales_directory": "Fel vid läsning av språkkatalogen: {errorMessage}"
990
+ }
991
+ },
992
+ "init": {
993
+ "initializationTitle": "🚀 i18n Management Toolkit - Projektinitiering",
994
+ "initializationCancelled": "🚫 Initiering avbröts av användaren.",
995
+ "sourceDirectoryLabel": "📁 Källkatalog: {dir}",
996
+ "requiredTitle": "Initiering krävs",
997
+ "requiredBody": "Detta projekt måste initieras innan det här kommandot körs.",
998
+ "promptRunNow": "Vill du köra initiering nu? (år/n):",
999
+ "sourceLanguageLabel": "🌍 Källspråk: {language}",
1000
+ "detectedI18nFrameworks": "🔍 Upptäckt i18n-ramverk: {frameworks}",
1001
+ "pinMustBe4Digits": "🔐 PIN-koden måste vara fyrasiffrig.",
1002
+ "existingDirectoriesFound": "📁 Befintliga översättningskataloger hittades:",
1003
+ "useExistingDirectoryPrompt": "Vill du använda den befintliga katalogen? (å/n)",
1004
+ "selectDirectoryPrompt": "Välj en katalog genom att ange numret (eller välj 'Skapa ny katalog')",
1005
+ "enterNewDirectoryName": "Ange namnet på din nya översättningskatalog",
1006
+ "createdNewDirectory": "✅ Skapat ny katalog: {dir}",
1007
+ "directoryAlreadyExists": "⚠️ Katalog finns redan: {dir}",
1008
+ "invalidDirectoryName": "❌ Ogiltigt katalognamn har angetts.",
1009
+ "usingExistingDirectory": "Använda befintlig katalog: {dir}",
1010
+ "adminPinSetupOptional": "🔐 Admin PIN-inställning valfri (rekommenderas för säkerhet)",
1011
+ "adminPinSeparator": "------------------------------",
1012
+ "adminPinDescription1": "Admin PIN: 4-siffrigt nummer för säker åtkomst",
1013
+ "adminPinDescription2": "Lämna tomt för att hoppa över PIN-inställningen",
1014
+ "adminPinDescription3": "Om du ställer in en PIN-kod kommer den att krävas för alla framtida säkra åtgärder.",
1015
+ "adminPinDescription4": "AES-256-GCM-kryptering används för säker lagring av PIN-koden.",
1016
+ "adminPinSetupPrompt": "Ange administratörs-PIN (4 siffror) eller lämna tomt för att hoppa över:",
1017
+ "skippingAdminPinSetup": "Hoppar över administratörs-PIN-konfiguration...",
1018
+ "settingUpAdminPin": "🔐 Konfigurerar admin PIN...",
1019
+ "enterAdminPin": "Ange administratörs-PIN:",
1020
+ "confirmAdminPin": "Bekräfta administratörs-PIN:",
1021
+ "pinMismatch": "PIN-koderna stämmer inte överens. Försök igen.",
1022
+ "adminPinSetupSuccess": "🔐 Inställningen av administratörs-PIN lyckades!",
1023
+ "adminPinSetupFailure": "🔐 Konfiguration av administratörs-PIN misslyckades. Försök igen.",
1024
+ "adminProtectionEnabled": "🔐 Adminskydd aktiverat. Alla åtgärder kräver PIN-autentisering.",
1025
+ "adminProtectionDisabled": "🔐 Adminskydd inaktiverat. Alla åtgärder är nu tillgängliga utan PIN-kod.",
1026
+ "autoDetectedI18nDirectory": "Automatiskt upptäckt i18n-katalog: {directory}",
1027
+ "initializingProject": "⚙️ Initierar projektkonfiguration...",
1028
+ "createdSampleTranslationFile": "✅ Skapade exempelöversättningsfil: {file}",
1029
+ "languageSelectionTitle": "🌐 Språkkonfiguration",
1030
+ "available": "Tillgänglig",
1031
+ "defaultLanguages": "📝 Standardspråk: {languages}",
1032
+ "enterLanguageCodes": "🎯 Ange målspråkskoder (kommaseparerade, t.ex. de, es, fr, ru):",
1033
+ "targetLanguages": "🌍 Målspråk",
1034
+ "foundSourceFiles": "📄 Hittade {count} källfiler att analysera",
1035
+ "processingLanguage": "🔄 Bearbetningsspråk: {language}",
1036
+ "fileProcessingResult": "✅ Bearbetad {file}: {translated}/{total} nycklar ({percentage}%)",
1037
+ "overallProgress": "📊 Övergripande framsteg: {translated}/{total} nycklar bearbetade ({percentage}%)",
1038
+ "initializationSummaryTitle": "📋 Sammanfattning av initialisering",
1039
+ "languageSummary": "{icon} {name} ({code}): {percentage}% klar",
1040
+ "languageFiles": "📄 Filer: {count}",
1041
+ "languageKeys": "🔤 Nycklar: {translated}/{total}",
1042
+ "languageMissing": "⚠️ Saknas: {count}",
1043
+ "initializationCompletedSuccessfully": "🎉 Projektinitieringen slutförd framgångsrikt!",
1044
+ "nextStepsTitle": "🚀 Nästa steg",
1045
+ "nextStep1": "1. Granska de genererade översättningsfilerna i din lokaler/katalog",
1046
+ "nextStep2": "2. Lägg till översättningar för varje målspråk",
1047
+ "nextStep3": "3. Kör 'npm run i18ntk' igen för att validera översättningar",
1048
+ "detectedFrameworks": "✅ Upptäckt i18n-ramverk: {frameworks}",
1049
+ "setup": {
1050
+ "title": "Inställning",
1051
+ "question": "Inställningsfråga",
1052
+ "opt_single": "Enstaka fil",
1053
+ "opt_modular": "Modul",
1054
+ "opt_existing": "Existerande",
1055
+ "choice_prompt": "Välj ett alternativ:",
1056
+ "opt_confirm": "Bekräfta",
1057
+ "opt_cancel": "Avboka",
1058
+ "apply_all_prompt": "Vill du tillämpa den här strukturen på alla språk? (år/n):",
1059
+ "per_language_intro": "Du har valt att konfigurera språk individuellt. Här är de tillgängliga språken:",
1060
+ "available_languages": "Tillgängliga språk: {languages}",
1061
+ "include_prompt": "Ange kommaseparerade språkkoder som ska inkluderas (t.ex. 'de,fr,es'):"
1062
+ },
1063
+ "warnings": {
1064
+ "noPackageJson": "Inget package.json hittades. Kan inte automatiskt upptäcka i18n-ramverket."
1065
+ },
1066
+ "errorsPackageJsonRead": "Fel vid läsning av package.json: {error}",
1067
+ "errorsNoFramework": "Inget i18n-ramverk upptäcktes. Installera en eller ange manuellt.",
1068
+ "suggestions": {
1069
+ "noFramework": "Inget i18n-ramverk upptäcktes. Överväg att använda något av följande:",
1070
+ "installFramework": "För att installera ett ramverk, kör: npm install <paketnamn>"
1071
+ },
1072
+ "frameworks": {
1073
+ "react": "- React i18next (react-i18next)",
1074
+ "vue": "- Vue i18n (vue-i18n)",
1075
+ "i18next": "- i18next (i18next)",
1076
+ "nuxt": "- Nuxt i18n (@nuxtjs/i18n)",
1077
+ "svelte": "- Svelte i18n (svelte-i18n)"
1078
+ },
1079
+ "continueWithoutI18nPrompt": "Inget i18n-ramverk upptäcktes. Vill du fortsätta utan en? (år/n):",
1080
+ "detectedI18nFramework": "Upptäckt i18n-ramverk: {frameworks}",
1081
+ "existingDirectoryItem": "{index}. {location}",
1082
+ "usingExistingStructure": "Använda befintlig struktur: {dir}",
1083
+ "creatingSourceDirectory": "Skapar källkatalog: {dir}",
1084
+ "creatingSourceLanguageDirectory": "Skapar källspråkskatalog: {dir}",
1085
+ "errors": {
1086
+ "errorExecutingCommand": "Fel vid exekvering av kommando: {error}",
1087
+ "sourceDirectoryNotFound": "Källkatalogen hittades inte: {dir}",
1088
+ "sourceLanguageDirectoryNotFound": "Källspråkskatalogen hittades inte: {dir}",
1089
+ "noJsonFilesInSourceDirectory": "Inga JSON-filer hittades i källkatalogen: {dir}",
1090
+ "invalidFilePathDetected": "Ogiltig sökväg har upptäckts",
1091
+ "initializationFailed": "Initieringen misslyckades: {error}",
1092
+ "noFramework": "Inget i18n-ramverk upptäcktes. Fortsätt med generiskt läge.",
1093
+ "packageJsonRead": "Fel vid läsning av package.json."
1094
+ },
1095
+ "processingFile": "Bearbetning {file} för {language}...",
1096
+ "fileAlreadyExistsMerging": "Fil {file} finns redan. Slår ihop nya nycklar.",
1097
+ "createdNewFile": "Skapat ny fil: {file}",
1098
+ "updatedFile": "Uppdaterad fil: {file}",
1099
+ "skippingExcludedFile": "Hoppa över {file} för {language} eftersom det är uteslutet.",
1100
+ "continuingWithoutAdminPin": "Fortsätter utan admin PIN-inställning.",
1101
+ "createdSourceLanguageDirectory": "Skapat källspråkskatalog: {dir}",
1102
+ "errorSettingUpAdminPin": "Fel vid inställning av administratörs-PIN: {error}",
1103
+ "noTargetLanguagesSpecified": "Inga målspråk har angetts.",
1104
+ "translationFilesCreatedWarning": "Översättningsfiler skapades med platshållare; se över innan produktionsanvändning.",
1105
+ "warningCannotReadSourceDir": "Varning: kan inte läsa källkatalogen {dir}: {error}",
1106
+ "warningInvalidLanguageCodes": "Varning: ogiltiga språkkoder ignoreras: {languages}",
1107
+ "warningProceedingWithoutFramework": "Fortsätter utan upptäckt i18n-ramverk.",
1108
+ "backup": {
1109
+ "title": "Säkerhetskopieringsinställningar",
1110
+ "description": "Säkerhetskopieringar är inaktiverade som standard för att undvika backup-rekursioner och repo-föroreningar.",
1111
+ "enablePrompt": "Vill du aktivera automatisk säkerhetskopiering? (år/n):",
1112
+ "keepPrompt": "Hur många säkerhetskopior ska sparas automatiskt (1-3, standard 1):"
1113
+ },
1114
+ "completionSummaryTitle": "Sammanfattning av slutförande",
1115
+ "completionSummaryBasicTitle": "Sammanfattning av slutförande (grundläggande)",
1116
+ "totalChanges": "Totala ändringar: {count}",
1117
+ "languagesProcessed": "Behandlade språk: {count}",
1118
+ "missingKeysAdded": "Saknade nycklar har lagts till: {count}",
1119
+ "reportPrompt": "Vill du ha en rapport genererad? (Y/n):",
1120
+ "reportGenerated": "Rapport genererad: {reportPath}",
1121
+ "reportFailed": "Det gick inte att skapa rapporten: {error}",
1122
+ "completionError": "Fel under slutförandet: {error}",
1123
+ "optimize": {
1124
+ "title": "Optimering av paketstorlek",
1125
+ "preview": "Kör förhandsvisning av språkoptimering...",
1126
+ "reduceTip": "Du kan minska paketstorleken genom att bara välja de språk du behöver.",
1127
+ "prompt": "Vill du köra interaktiv optimering nu? (å/n):",
1128
+ "starting": "Startar interaktiv språkoptimering...",
1129
+ "completed": "Paketoptimeringen slutförd.",
1130
+ "later": "Du kan köra språkoptimering senare med:",
1131
+ "unavailable": "Kunde inte erbjuda lokal optimering: {error}"
1132
+ }
1133
+ },
1134
+ "language": {
1135
+ "title": "🌍 Ändra språk",
1136
+ "separator": "============================================================",
1137
+ "current": "Aktuellt språk: {language}",
1138
+ "available": "Tillgängliga språk:",
1139
+ "languageOption": "{index}. {displayName}{current}",
1140
+ "backToMainMenu": "Tillbaka till huvudmenyn",
1141
+ "prompt": "Välj ett språk (0-8):",
1142
+ "cancelled": "Språkbytet avbröts.",
1143
+ "invalid": "Ogiltigt val. Försök igen.",
1144
+ "changed": "Språk ändrat till: {language}",
1145
+ "changeFailed": "Det gick inte att ändra språk: {error}",
1146
+ "pressEnterToContinue": "Tryck på Enter för att fortsätta..."
1147
+ },
1148
+ "maintainLanguagePurity": {
1149
+ "workflow_title": "🚀 Arbetsflöde för underhåll av språkrenhet",
1150
+ "step1_title": "📊 STEG 1: Inledande språkrenhetsbedömning",
1151
+ "step2_title": "🔧 STEG 2: Upptäck och åtgärda språkfel överensstämmer automatiskt",
1152
+ "step3_title": "🌐 STEG 3: Använd automatiska översättningar",
1153
+ "step4_title": "✅ STEG 4: Slutlig språkrenhetsbedömning",
1154
+ "workflow_error": "❌ Arbetsflödesfel: {errorMessage}",
1155
+ "running_initial_validation": "Kör initial språkrenhetsvalidering...",
1156
+ "initial_assessment_complete": "✅ Inledande bedömning klar: {count} upptäckta överträdelser",
1157
+ "initial_assessment_warnings": "⚠️ Inledande bedömning avslutad med varningar",
1158
+ "detecting_fixing_mismatches": "Upptäcker och åtgärdar språkfel...",
1159
+ "detection_complete_applying_fixes": "Detektering klar. Tillämpar automatiska korrigeringar...",
1160
+ "mismatch_fixes_complete": "✅ Språkfelmatchningskorrigeringar slutförda: {count} korrigeringar tillämpas",
1161
+ "mismatch_fixes_warnings": "⚠️ Språkfelmatchningskorrigeringar kompletterade med varningar",
1162
+ "applying_automatic_translations": "Tillämpar automatiska översättningar...",
1163
+ "translation_preview_complete": "Förhandsgranskningen av översättningen är klar. Tillämpar översättningar..."
1164
+ },
1165
+ "menu": {
1166
+ "title": "🌐 I18NTK MANAGEMENT MENY",
1167
+ "separator": "============================================================",
1168
+ "options": {
1169
+ "init": "🚀 Initiera nya språk",
1170
+ "analyze": "🔍 Analysera översättningar",
1171
+ "validate": "✅ Validera översättningar",
1172
+ "usage": "📊 Kontrollera nyckelanvändning",
1173
+ "complete": "🎯 Kompletta översättningar (100 % täckning)",
1174
+ "sizing": "📏 Analysera storlek",
1175
+ "fix": "🛠️ Fixa platshållaröversättningar",
1176
+ "scanner": "🔍 Sök efter i18n-problem",
1177
+ "translate": "🌐 Översätt automatiskt",
1178
+ "workflow": "🔄 Kör fullt arbetsflöde",
1179
+ "status": "📋 Visa projektstatus",
1180
+ "delete": "🗑️ Radera alla rapporter",
1181
+ "language": "🌍 Ändra UI-språk",
1182
+ "settings": "⚙️ Inställningar",
1183
+ "help": "❓ Hjälp",
1184
+ "debug": "🔧 Felsökningsverktyg",
1185
+ "exit": "🚪 Avsluta"
1186
+ },
1187
+ "update": "📦 Uppdateringspaket",
1188
+ "goodbye": "👋 Adjö!",
1189
+ "invalidChoice": "Ogiltigt val. Välj 0-15.",
1190
+ "returning": "Återgår till huvudmenyn...",
1191
+ "invalidOption": "Ogiltigt alternativ. Försök igen.",
1192
+ "nonInteractiveModeWarning": "Icke-interaktivt läge upptäcktes. Menyn visas endast för referens.",
1193
+ "useDirectExecution": "Använd: node main/manage/index.js --command=<command> för direkt utförande.",
1194
+ "useHelpForCommands": "Använd: node main/manage/index.js --help för tillgängliga kommandon.",
1195
+ "returnToMainMenu": "Tryck på Enter för att återgå till huvudmenyn.",
1196
+ "pressEnterToContinue": "Tryck på Enter för att fortsätta...",
1197
+ "selectOptionPrompt": "Välj ett alternativ:",
1198
+ "selectDebugToolPrompt": "Välj ett felsökningsverktyg:",
1199
+ "selectLogPrompt": "Välj en loggfil (1-{count}):",
1200
+ "autoDetectedI18nDirectory": "Automatiskt upptäckt i18n-katalog: {directory}",
1201
+ "executingCommand": "Utför kommando: {command}",
1202
+ "unknownCommand": "Okänt kommando: {command}",
1203
+ "languageOption": "{index}. {displayName}{current}",
1204
+ "debugTools": {
1205
+ "1": "Loggfilsanalys",
1206
+ "2": "Översättningsnyckelanvändningsanalys",
1207
+ "3": "Analys av översättningens fullständighet",
1208
+ "4": "Analys av översättningsformat",
1209
+ "5": "Analys av översättningstyp",
1210
+ "6": "Analys av översättningsstruktur"
1211
+ },
1212
+ "native_translations": {
1213
+ "exact_translation_found": "✅ {keyPath}: {value}",
1214
+ "no_exact_translation": "⚠️ Ingen exakt översättning för '{keyPath}', hittade liknande nycklar:",
1215
+ "similar_key": "- {key} ({similarity}% matchning)",
1216
+ "processing_language_files": "🔄 Bearbetning {count} språkfiler...",
1217
+ "file_not_found": "⚠️ Filen hittades inte: {file}",
1218
+ "processing_translations": "🌍 Bearbetning {code} översättningar...",
1219
+ "backup_created": "📋 Säkerhetskopiering skapad: {filename}",
1220
+ "error_parsing_json": "❌ Fel vid analys {code}.json: {errorMessage}",
1221
+ "existing_keys_found": "📊 {code}: Hittade {count} befintliga nycklar",
1222
+ "error_writing_json": "❌ Fel vid skrivning {code}.json: {errorMessage}",
1223
+ "translations_replaced": "📊 {code}: {count} översättningar ersatta",
1224
+ "translation_replacement_complete": "✅ Översättningsersättning klar!",
1225
+ "total_replacements": "📊 Totala ersättningar: {count}",
1226
+ "dry_run_mode": "⚠️ DRY RUN MODE - Inga filer har ändrats",
1227
+ "tool_title": "🌍 Native Translation Replacer v1.9.1",
1228
+ "tool_separator": "======================================",
1229
+ "dry_run_warning": "⚠️ Körs i DRY RUN-läge - inga filer kommer att ändras",
1230
+ "error_during_replacement": "❌ Fel under översättningsersättning:"
1231
+ }
1232
+ },
1233
+ "config": {
1234
+ "dirFallbackWarning": "⚠️ Katalog {dir} hittades inte. Använder {fallback}.",
1235
+ "dirInvalidError": "❌ Ogiltig katalog: {dir}"
1236
+ },
1237
+ "operations": {
1238
+ "completed": "✅ Operation slutförd framgångsrikt!",
1239
+ "deleteReportsTitle": "🗑️ Ta bort rapporter, loggar och cache",
1240
+ "scanningForFiles": "🔍 Söker efter filer att radera...",
1241
+ "noFilesFoundToDelete": "✅ Inga filer hittades att radera.",
1242
+ "availableDirectories": "📁 Tillgängliga kataloger:",
1243
+ "allDirectories": "Alla kataloger",
1244
+ "andMore": "och mer...",
1245
+ "cancelOption": "Avboka",
1246
+ "cancelReportOption": "Avbryt / Återgå till menyn",
1247
+ "invalidSelection": "❌ Ogiltigt val.",
1248
+ "foundFilesInSelectedDirectories": "📊 Hittade {count} filer i valda kataloger:",
1249
+ "deletionOptions": "🗑️ Raderingsalternativ:",
1250
+ "deleteAllFiles": "Ta bort alla filer",
1251
+ "keepLast3Files": "Behåll de tre senaste filerna (efter datum)",
1252
+ "keepLast5Files": "Behåll de senaste 5 filerna (efter datum)",
1253
+ "noFilesToDelete": "✅ Inga filer att radera.",
1254
+ "filesToDeleteCount": "📋 Filer att radera: {count}",
1255
+ "filesToKeepCount": "📋 Filer att behålla: {count}",
1256
+ "confirmDeletion": "⚠️ Är du säker på att du vill ta bort dessa filer? (år/n):",
1257
+ "deletedFile": "✅ Raderat: {filename}",
1258
+ "failedToDeleteFile": "❌ Det gick inte att radera {filename}: {error}",
1259
+ "cancelled": "❌ Operation avbruten.",
1260
+ "init": {
1261
+ "title": "🚀 Initiera nytt språk"
1262
+ },
1263
+ "usage": {
1264
+ "title": "📊 Kontrollera nyckelanvändning",
1265
+ "noUsedKeysHint": "Hittade översättningar men ingen användning i källan. Kontrollera --source-dir och translationPatterns."
1266
+ },
1267
+ "analyze": {
1268
+ "title": "🔍 Analysera översättningar"
1269
+ },
1270
+ "validate": {
1271
+ "title": "✅ Validera översättningar"
1272
+ },
1273
+ "settings": {
1274
+ "title": "⚙️ Inställningshantering",
1275
+ "separator": "============================================================"
1276
+ },
1277
+ "complete": {
1278
+ "deletingOldReport": "🗑️ Tar bort gammal användningsrapport för ny analys",
1279
+ "generatingFreshAnalysis": "🔄 Genererar färsk användningsanalys...",
1280
+ "couldNotGenerate": "⚠️ Kunde inte generera användningsanalys. Använder vanliga saknade nycklar.",
1281
+ "reportNotFound": "⚠️ Användningsrapport hittades inte. Genererar ny analys...",
1282
+ "foundMissingKeys": "🔍 Hittade {count} saknade nycklar från användningsanalys",
1283
+ "couldNotParse": "⚠️ Det gick inte att analysera användningsrapporten. Använder vanliga saknade nycklar.",
1284
+ "title": "🎯 SLUTFÖR ÖVERSÄTTNINGAR",
1285
+ "separator": "============================================================",
1286
+ "sourceDir": "📁 Källkatalog: {sourceDir}",
1287
+ "sourceLanguage": "🔤 Källspråk: {sourceLanguage}",
1288
+ "dryRunMode": "🧪 DRY RUN MODE - Inga filer kommer att ändras",
1289
+ "languages": "🎯 Målspråk: {languages}",
1290
+ "addingMissingKeys": "➕ Lägger till saknade nycklar till översättningsfiler...",
1291
+ "processing": "🔄 Bearbetning {language}...",
1292
+ "addedKeys": "✅ Tillagd {count} nycklar",
1293
+ "changeDetails": "📝 {file}: {key}",
1294
+ "noChangesNeeded": "✅ Inga ändringar behövs för {language}",
1295
+ "summaryTitle": "📊 SAMMANFATTNING AV SLUTFÖRANDE",
1296
+ "totalChanges": "📝 Totala ändringar: {totalChanges}",
1297
+ "languagesProcessed": "🌐 Språk som behandlas: {languagesProcessed}",
1298
+ "missingKeysAdded": "➕ Saknade nycklar tillagda: {missingKeysAdded}",
1299
+ "nextStepsTitle": "📋 NEXT STEPS",
1300
+ "nextStep1": "1. Kör användningsanalys:",
1301
+ "nextStep2": "2. Validera översättningar:",
1302
+ "nextStep3": "3. Analysera fullständighet:",
1303
+ "allKeysAvailable": "🎉 Alla översättningsnycklar är nu tillgängliga!",
1304
+ "runWithoutDryRun": "💡 Kör utan --torkkör för att tillämpa ändringar",
1305
+ "pressEnterToContinue": "Tryck på Enter för att fortsätta..."
1306
+ },
1307
+ "updatePackage": {
1308
+ "title": "📦 Uppdatera i18n-toolkit-paketet",
1309
+ "description": "Detta kommer att uppdatera i18n-toolkit-paketet till den senaste versionen tillgänglig på npm.",
1310
+ "command": "Kommando för att köra",
1311
+ "confirm": "Är du säker på att du vill fortsätta med uppdateringen? (år/n):",
1312
+ "updating": "Uppdaterar paket... Detta kan ta en stund.",
1313
+ "success": "✅ i18n-verktygssatsen har uppdaterats framgångsrikt!",
1314
+ "error": "❌ Det gick inte att uppdatera i18n-toolkit",
1315
+ "cancelled": "❌ Uppdateringen avbröts."
1316
+ }
1317
+ },
1318
+ "security": {
1319
+ "pathValidationFailed": "path_validation_failed",
1320
+ "invalidInputType": "invalid_input_type",
1321
+ "pathTraversalAttempt": "path_traversal_attempt",
1322
+ "pathValidated": "✅ Sökväg validerad framgångsrikt",
1323
+ "pathValidationError": "path_validation_error",
1324
+ "fileTooLarge": "Säkerhet: Filen är för stor: {filePath}",
1325
+ "fileReadError": "Säkerhet: Filläsfel: {errorMessage}",
1326
+ "contentTooLargeForFile": "Säkerhet: Innehållet är för stort för filen: {filePath}",
1327
+ "fileWriteError": "Säkerhet: Filskrivfel: {errorMessage}",
1328
+ "jsonStringTooLarge": "Säkerhet: JSON-strängen är för stor",
1329
+ "jsonParseError": "Säkerhet: JSON-tolkningsfel: {errorMessage}",
1330
+ "inputContainsDisallowedCharacters": "Säkerhet: Indata innehåller otillåtna tecken",
1331
+ "unknownCommandArgument": "Säkerhet: Okänt kommandoargument: {key}",
1332
+ "unknown_command_argument": "Säkerhet: Okänt kommandoargument: {key}",
1333
+ "unknownConfigKey": "Säkerhet: Okänd konfigurationsnyckel: {key}",
1334
+ "unknown_config_key": "Säkerhet: Okänd konfigurationsnyckel: {key}",
1335
+ "securityAlert": "[SÄKERHETSVARNING] {timestamp}: {event}",
1336
+ "contentTooLarge": "Säkerhet: Innehållet är för stort för filen: {validatedPath}",
1337
+ "inputDisallowedCharacters": "Säkerhet: Indata innehåller otillåtna tecken",
1338
+ "unknownCommandArg": "Okänt kommandoargument",
1339
+ "logMessage": "[SÄKERHET {level}] {timestamp}: {event}",
1340
+ "alertMessage": "[SÄKERHETSVARNING] {timestamp}: {event}",
1341
+ "securityWarning": "[SÄKERHETSVARNING] {timestamp}: {event}",
1342
+ "json_parse_error": "Säkerhet: JSON-tolkningsfel: {errorMessage}",
1343
+ "file_too_large": "Filen är för stor",
1344
+ "file_read_error": "Filläsfel",
1345
+ "content_too_large_for_file": "Innehållet är för stort för filen",
1346
+ "file_write_error": "Filskrivfel",
1347
+ "json_string_too_large": "Json-strängen är för stor",
1348
+ "recursion_detected": "Rekursion upptäckts i {operation}",
1349
+ "operation_timeout": "Operation timeout: {operation}",
1350
+ "operation_error": "Driftfel i {operation}: {error}",
1351
+ "directory_read_error": "Katalogläsfel: {errorMessage}",
1352
+ "security_alert": "Säkerhetslarm"
1353
+ },
1354
+ "settings-cli": {
1355
+ "settings": {
1356
+ "mainMenu": {
1357
+ "title": "Huvudmeny:",
1358
+ "uiSettings": "UI-inställningar",
1359
+ "uiSettingsDesc": "Språk, tema och gränssnittsalternativ",
1360
+ "directorySettings": "Kataloginställningar",
1361
+ "directorySettingsDesc": "Käll- och utdatakatalogsökvägar",
1362
+ "scriptDirectorySettings": "Skriptkataloginställningar",
1363
+ "scriptDirectorySettingsDesc": "Katalogsökvägar för enskilda skriptoperationer",
1364
+ "processingSettings": "Bearbetningsinställningar",
1365
+ "processingSettingsDesc": "Batchstorlek, samtidighet och prestanda",
1366
+ "advancedSettings": "Avancerade inställningar",
1367
+ "advancedSettingsDesc": "Validering, loggning och expertalternativ",
1368
+ "viewAllSettings": "Visa alla inställningar",
1369
+ "viewAllSettingsDesc": "Visa aktuell konfiguration",
1370
+ "importExport": "Import/Export",
1371
+ "importExportDesc": "Säkerhetskopiera och återställa inställningar",
1372
+ "resetToDefaults": "Återställ till standardvärden",
1373
+ "resetToDefaultsDesc": "Återställ fabriksinställningarna",
1374
+ "reportBug": "Rapportera bugg",
1375
+ "reportBugDesc": "Skicka en problemrapport på GitHub",
1376
+ "saveChanges": "Spara ändringar",
1377
+ "saveChangesDesc": "Spara aktuella inställningar i filen",
1378
+ "updatePackage": "Uppdatera paket",
1379
+ "updatePackageDesc": "Uppdatera i18n-toolkit-paketet via npm",
1380
+ "help": "Hjälp",
1381
+ "helpDesc": "Visa detaljerad hjälpinformation",
1382
+ "quit": "Sluta",
1383
+ "quitDesc": "Avsluta inställningar (med spara-prompt om det behövs)",
1384
+ "unsavedChangesWarning": "⚠️ Du har osparade ändringar",
1385
+ "saveChangesBeforeQuit": "Vill du spara ändringar innan du avslutar? (år/n):",
1386
+ "selectOption": "Välj ett alternativ:",
1387
+ "goodbyeMessage": "Tack för att du använder i18n inställningshanteraren!"
1388
+ },
1389
+ "goodbyeMessage": "Tack för att du använder i18n inställningshanteraren!",
1390
+ "relativePathHint": "Använd relativa sökvägar från den här katalogen (t.ex. ./src/i18n/locales)",
1391
+ "currentDirectory": "Aktuell projektkatalog"
1392
+ },
1393
+ "settings_manager": {
1394
+ "error_loading_settings": "❌ Fel vid laddning av inställningar:",
1395
+ "error_saving_settings": "❌ Fel när inställningarna skulle sparas:",
1396
+ "error_setting_value": "❌ Felinställningsvärde:",
1397
+ "missing_required_setting": "❌ Obligatorisk inställning saknas: {prop}",
1398
+ "invalid_language": "❌ Ogiltigt språk: {language}",
1399
+ "invalid_source_language": "❌ Ogiltigt källspråk: {sourceLanguage}",
1400
+ "default_languages_must_be_array": "❌ defaultLanguages ​​måste vara en array",
1401
+ "invalid_date_format": "❌ Ogiltigt datumformat: {dateFormat}. Giltiga format: {validFormats}",
1402
+ "invalid_time_format": "❌ Ogiltigt tidsformat: {timeFormat}. Giltiga format: {validFormats}",
1403
+ "notifications_types_must_be_object": "❌ notifications.types måste vara ett objekt",
1404
+ "exclude_files_must_be_array": "❌ excludeFiles måste vara en array",
1405
+ "exclude_dirs_must_be_array": "❌ excludeDirs måste vara en array",
1406
+ "include_extensions_must_be_array": "❌ includeExtensions måste vara en array",
1407
+ "invalid_batch_size": "❌ Ogiltig batchstorlek. Måste vara ett positivt tal",
1408
+ "invalid_max_concurrent_files": "❌ Ogiltiga max samtidiga filer. Måste vara ett positivt tal",
1409
+ "invalid_sizing_threshold": "❌ Ogiltig storlekströskel. Måste vara ett positivt tal",
1410
+ "invalid_timeout": "❌ Ogiltig timeout. Måste vara minst 1000ms",
1411
+ "invalid_sizing_format": "❌ Ogiltigt storleksformat: {sizingFormat}. Giltiga format: {validFormats}",
1412
+ "error_validating_settings": "❌ Fel vid validering av inställningar:",
1413
+ "backup_created": "📋 Säkerhetskopiering skapad: {backupPath}",
1414
+ "error_creating_backup": "❌ Fel vid skapande av säkerhetskopia:",
1415
+ "language_not_supported": "Språk '{language}' stöds inte. Tillgänglig: {availableLanguages}",
1416
+ "ui_language_set": "🌍 UI-språk inställt på: {language}"
1417
+ }
1418
+ },
1419
+ "settings": {
1420
+ "title": "⚙️ Inställningshantering",
1421
+ "separator": "============================================================",
1422
+ "goodbyeMessage": "Tack för att du använder i18ntk-inställningshanteraren!",
1423
+ "relativePathHint": "Använd relativa sökvägar från den här katalogen (t.ex. ./src/i18n/locales)",
1424
+ "currentDirectory": "Aktuell projektkatalog",
1425
+ "startingSettings": "Startinställningar:",
1426
+ "pin": "PIN:",
1427
+ "reportBug": {
1428
+ "title": "Rapportera bugg",
1429
+ "description": "Rapportera eventuella problem eller buggar du stöter på",
1430
+ "guidance": "Så här rapporterar du problem effektivt:",
1431
+ "checkLogs": "1. Kontrollera felsökningsloggarna i din projektkatalog",
1432
+ "documentIssue": "2. Dokumentera problemet med steg för att återskapa",
1433
+ "contactSupport": "3. Kontakta din systemadministratör eller supportteam",
1434
+ "completed": "Felrapporteringsvägledning visas",
1435
+ "instructions": "Följ instruktionerna ovan för att rapportera felet."
1436
+ },
1437
+ "mainMenu": {
1438
+ "title": "Huvudmeny:",
1439
+ "uiSettings": "UI-inställningar",
1440
+ "uiSettingsDesc": "Språk, tema och gränssnittsalternativ",
1441
+ "directorySettings": "Kataloginställningar",
1442
+ "directorySettingsDesc": "Käll- och utdatakatalogsökvägar",
1443
+ "processingSettings": "Bearbetningsinställningar",
1444
+ "processingSettingsDesc": "Batchstorlek, samtidighet och prestanda",
1445
+ "advancedSettings": "Avancerade inställningar",
1446
+ "advancedSettingsDesc": "Validering, loggning och expertalternativ",
1447
+ "viewAllSettings": "Visa alla inställningar",
1448
+ "viewAllSettingsDesc": "Visa aktuell konfiguration",
1449
+ "importExport": "Import/Export",
1450
+ "updatePackage": "Uppdatera paket",
1451
+ "updatePackageDesc": "Uppdatera i18n-toolkit-paketet via npm",
1452
+ "importExportDesc": "Säkerhetskopiera och återställa inställningar",
1453
+ "resetToDefaults": "Återställ till standardvärden",
1454
+ "resetToDefaultsDesc": "Återställ fabriksinställningarna",
1455
+ "reportBug": "Rapportera bugg",
1456
+ "reportBugDesc": "Skicka en problemrapport på GitHub",
1457
+ "saveChanges": "Spara ändringar",
1458
+ "saveChangesDesc": "Spara aktuella inställningar i filen",
1459
+ "help": "Hjälp",
1460
+ "helpDesc": "Visa detaljerad hjälpinformation",
1461
+ "quit": "Sluta",
1462
+ "quitDesc": "Avsluta inställningar (med spara-prompt om det behövs)",
1463
+ "unsavedChangesWarning": "⚠️ Du har osparade ändringar",
1464
+ "saveChangesBeforeQuit": "Vill du spara ändringar innan du avslutar? (år/n):",
1465
+ "selectOption": "Välj ett alternativ:",
1466
+ "goodbyeMessage": "Tack för att du använder i18n inställningshanteraren!",
1467
+ "selectSettingPrompt": "Välj en inställning att redigera (eller \"b\" för att gå tillbaka):",
1468
+ "enterNewValue": "Ange nytt värde:",
1469
+ "updatedSuccessfully": "{setting} uppdaterad framgångsrikt!",
1470
+ "scriptDirectorySettings": "Skriptkataloginställningar",
1471
+ "scriptDirectoryDesc": "Ange anpassade kataloger för varje skript",
1472
+ "scriptDirectorySettingsDesc": "Du kan ställa in anpassade kataloger för varje skript. Om inte inställt kommer globala inställningar att användas.",
1473
+ "currentDirectory": "Aktuell projektkatalog",
1474
+ "securitySettings": "Säkerhetsinställningar",
1475
+ "securitySettingsDesc": "Admin PIN och andra säkerhetsalternativ",
1476
+ "backupSettings": "Säkerhetskopieringsinställningar",
1477
+ "backupSettingsDesc": "Säkerhetskopiera och återställa konfigurationsinställningar",
1478
+ "autoTranslate": "Översätt automatiskt",
1479
+ "autoTranslateDesc": "Justera platshållarhantering, samtidighet, batchning och rapporter"
1480
+ },
1481
+ "updatePackage": {
1482
+ "title": "Uppdatera paket",
1483
+ "description": "Uppdatera i18n-toolkit-paketet via npm",
1484
+ "command": "npm-uppdatering i18ntk -g",
1485
+ "success": "Uppdateringen har slutförts.",
1486
+ "failed": "Uppdateringen misslyckades.",
1487
+ "prompt": "Vill du uppdatera paketet nu? (år/n):",
1488
+ "promptDesc": "Obs: Detta kommer att uppdatera i18ntk-paketet till den senaste versionen.",
1489
+ "confirm": "y",
1490
+ "cancelled": "Uppdateringen avbröts.",
1491
+ "error": "Det gick inte att uppdatera paketet",
1492
+ "updating": "Uppdaterar paket..."
1493
+ },
1494
+ "admin": {
1495
+ "selectOption": "Välj alternativ:",
1496
+ "updateSuccess": "Administratörs-PIN har uppdaterats!",
1497
+ "updateFailed": "Det gick inte att uppdatera administratörs-PIN.",
1498
+ "protectionRemoved": "Admin PIN-skydd har tagits bort.",
1499
+ "configSuccess": "Admin-PIN har konfigurerats!",
1500
+ "configFailed": "Det gick inte att konfigurera administratörs-PIN.",
1501
+ "setupPinPrompt": "Vill du ställa in en administratörs-PIN? (år/n):",
1502
+ "pinUpdatedSuccess": "Administratörs-PIN har uppdaterats!",
1503
+ "pinUpdatedFailed": "Det gick inte att uppdatera administratörs-PIN.",
1504
+ "pinRemoved": "Admin PIN-skydd har tagits bort.",
1505
+ "pinConfiguredSuccess": "Admin-PIN har konfigurerats!",
1506
+ "pinConfiguredFailed": "Det gick inte att konfigurera administratörs-PIN.",
1507
+ "accessDenied": "❌ Åtkomst nekad. Återgår till menyn.",
1508
+ "setupPin": "🔐 Konfigurerar admin PIN...",
1509
+ "setupFailed": "❌ Det gick inte att ställa in administratörs-PIN. Inställningen inte ändrad.",
1510
+ "pinConfigured": "📌 Admin-PIN är för närvarande konfigurerad.",
1511
+ "options": "Alternativ:",
1512
+ "changePin": "1) Ändra befintlig PIN-kod",
1513
+ "removePin": "2) Ta bort PIN-skyddet",
1514
+ "cancel": "3) Avbryt",
1515
+ "verifyCurrentPin": "🔐 Verifiera den aktuella PIN-koden först:",
1516
+ "settingNewPin": "🔄 Konfigurerar ny PIN-kod...",
1517
+ "verifyToRemove": "🔐 Verifiera nuvarande PIN-kod för att ta bort skyddet:",
1518
+ "noPinConfigured": "🔓 Ingen admin-PIN är för närvarande konfigurerad.",
1519
+ "pinBenefits": "Om du ställer in en administratörs-PIN ökar säkerheten för:",
1520
+ "benefitSecurity": "• Ändra säkerhetsinställningar",
1521
+ "benefitAdvanced": "• Ändra avancerade konfigurationer",
1522
+ "benefitDebug": "• Åtkomst till felsökningsverktyg",
1523
+ "benefitReset": "• Återställa inställningar",
1524
+ "setupCancelled": "⏭️ Inställning av administratörs-PIN avbröts.",
1525
+ "operationCancelled": "❌ Operation avbruten.",
1526
+ "startingSettings": "🎛️ Startinställningar CLI...",
1527
+ "authRequired": "🔒 Adminautentisering krävs för: {label}",
1528
+ "pinSetupTitle": "Admin PIN-inställning",
1529
+ "browserOpenFailed": "Det gick inte att öppna webbläsaren automatiskt.",
1530
+ "manualVisit": "Vänligen besök manuellt: {url}",
1531
+ "browserOpened": "✅ Webbläsaren har öppnats framgångsrikt!"
1532
+ },
1533
+ "importExport": {
1534
+ "title": "Inställningar för import/export",
1535
+ "export": "Exportinställningar",
1536
+ "import": "Importera inställningar",
1537
+ "backup": "Skapa säkerhetskopia",
1538
+ "enterFilename": "Ange filnamn (eller tryck på Enter för standard):",
1539
+ "exportSuccess": "Inställningar exporterade till {file}",
1540
+ "exportFailed": "Det gick inte att exportera inställningar: {error}",
1541
+ "importFilename": "Ange filnamn för att importera:",
1542
+ "fileNotFound": "Filen hittades inte.",
1543
+ "invalidFormat": "Ogiltigt filformat för inställningar.",
1544
+ "confirmImport": "Detta kommer att ersätta alla nuvarande inställningar. Fortsätta? (år/n):",
1545
+ "importSuccess": "Inställningarna har importerats.",
1546
+ "importFailed": "Det gick inte att importera inställningar: {error}",
1547
+ "backupSuccess": "Säkerhetskopiering skapad: {file}",
1548
+ "backupFailed": "Det gick inte att skapa säkerhetskopia: {error}",
1549
+ "exportFilenamePrompt": "Ange exportfilnamn:",
1550
+ "importConfirm": "Importera den här inställningsfilen? (år/n):",
1551
+ "importFilenamePrompt": "Ange importfilnamn:",
1552
+ "manageBackups": "Hantera säkerhetskopior",
1553
+ "restore": "Återställ inställningar"
1554
+ },
1555
+ "selectOption": "Välj ett alternativ:",
1556
+ "resetToDefaultsTitle": "Återställ inställningarna till standardinställningarna",
1557
+ "resetWarning1": "⚠️ Detta kommer att återställa ALLA inställningar till sina standardvärden.",
1558
+ "resetWarning2": "Denna åtgärd kan inte ångras.",
1559
+ "resetConfirm": "Är du säker på att du vill fortsätta? (år/n):",
1560
+ "resetSuccess": "Inställningarna har återställts till standardinställningarna.",
1561
+ "resetFailed": "Det gick inte att återställa inställningarna: {error}",
1562
+ "resetDone": "Inställningarna har återställts till standardinställningarna.",
1563
+ "resetScriptDirsDone": "Skriptkataloger har återställts till systemets standardinställningar.",
1564
+ "saveSuccess": "Inställningarna har sparats.",
1565
+ "saveFailed": "Det gick inte att spara inställningarna.",
1566
+ "saveError": "Ogiltiga inställningar har angetts",
1567
+ "pressEnter": "Tryck på Enter för att fortsätta...",
1568
+ "initFailed": "Det gick inte att initiera inställningarna: {error}",
1569
+ "invalidValueFormat": "Ogiltigt värdeformat.",
1570
+ "help": {
1571
+ "title": "Inställningar Hjälp",
1572
+ "navigationTitle": "Navigering",
1573
+ "navigation1": "1. Allmänna inställningar - Konfigurera UI-språk, tema och grundläggande inställningar",
1574
+ "navigation2": "2. Kataloginställningar - Ställ in käll- och utdatakataloger för översättningsfiler",
1575
+ "navigation3": "3. Bearbetningsinställningar - Konfigurera batchstorlek, samtidighet och prestandaalternativ",
1576
+ "navigation4": "4. Avancerade inställningar - Få åtkomst till alternativ för validering, loggning och expertkonfiguration",
1577
+ "categoriesTitle": "Inställningar Kategorier",
1578
+ "categoryUI": "• Användargränssnittsinställningar: Gränssnittsspråk, färgtema och visningsinställningar",
1579
+ "categoryDirectory": "• Kataloginställningar: Källfilers plats och utdatarapportkataloger",
1580
+ "categoryProcessing": "• Bearbetningsinställningar: Batchbearbetning, filgränser och prestandajustering",
1581
+ "categoryAdvanced": "• Avancerade inställningar: Felsökningsläge, granskningsloggning och säkerhetsalternativ",
1582
+ "envVarsTitle": "Miljövariabler",
1583
+ "envVar1": "• I18N_SOURCE_DIR: Åsidosätt standardsökvägen till källkatalogen",
1584
+ "envVar2": "• I18N_OUTPUT_DIR: Åsidosätt standard sökväg för utdatakatalog",
1585
+ "envVar3": "• I18N_DEBUG: Aktivera felsökningsläge (true/false)",
1586
+ "cliUsageTitle": "Exempel på CLI-användning",
1587
+ "cliUsage1": "• npx i18ntk --inställningar: Öppna interaktiv inställningsmeny",
1588
+ "cliUsage2": "• npx i18ntk --inställningar --lang de: Öppna inställningar på tyska",
1589
+ "cliUsage3": "• npx i18ntk --reset-settings: Återställ alla inställningar till standardvärden",
1590
+ "navigation": "Använd siffertangenterna för att välja alternativ, 'b' för att gå tillbaka",
1591
+ "editing": "Ange nya värden när du uppmanas, eller tryck på Enter för att hålla dig aktuell",
1592
+ "saving": "Använd 's' för att spara ändringar innan du avslutar",
1593
+ "reset": "Använd alternativ 7 för att återställa alla inställningar till standardvärden"
1594
+ },
1595
+ "categories": {
1596
+ "uiSettings": "UI-inställningar",
1597
+ "directorySettings": "Kataloginställningar",
1598
+ "processingSettings": "Bearbetningsinställningar",
1599
+ "advancedSettings": "Avancerade inställningar",
1600
+ "scriptDirectorySettings": "Skriptkataloginställningar",
1601
+ "securitySettings": "Säkerhetsinställningar",
1602
+ "autoTranslate": "Inställningar för automatisk översättning"
1603
+ },
1604
+ "security": {
1605
+ "title": "🔐 Säkerhetsinställningar",
1606
+ "description": "Konfigurera admin PIN-skydd och säkerhetsalternativ",
1607
+ "currentPin": "Aktuell PIN-kod:",
1608
+ "pinConfigured": "✅ Konfigurerad",
1609
+ "pinNotConfigured": "❌ Ej konfigurerad",
1610
+ "pinDisplay": "PIN-display:",
1611
+ "menu": {
1612
+ "enableDisable": "1) Aktivera/inaktivera Admin PIN",
1613
+ "setupChange": "2) Ställ in/Ändra Admin PIN",
1614
+ "sessionTimeout": "3) Timeout för session",
1615
+ "maxAttempts": "4) Max misslyckade försök",
1616
+ "lockoutDuration": "5) Lockout-varaktighet",
1617
+ "back": "b) Tillbaka till huvudmenyn"
1618
+ },
1619
+ "prompts": {
1620
+ "enablePin": "Aktivera administratörs-PIN-skydd? (år/n):",
1621
+ "disablePin": "Inaktivera administratörs-PIN-skydd? (år/n):",
1622
+ "enterTimeout": "Ange sessionstimeout (minuter):",
1623
+ "enterMaxAttempts": "Ange max misslyckade försök:",
1624
+ "enterLockoutDuration": "Ange spärrtid (minuter):"
1625
+ },
1626
+ "messages": {
1627
+ "pinEnabled": "Admin PIN-skydd aktiverat",
1628
+ "pinDisabled": "Admin PIN-skydd inaktiverat",
1629
+ "timeoutUpdated": "Session timeout uppdaterad till {minutes} minuter",
1630
+ "maxAttemptsUpdated": "Max misslyckade försök uppdateras till {attempts}",
1631
+ "lockoutDurationUpdated": "Lockout-varaktighet uppdaterad till {minutes} minuter"
1632
+ }
1633
+ },
1634
+ "fields": {
1635
+ "backup.enabled": {
1636
+ "label": "Enable Backup",
1637
+ "description": "Enable automatic backup of settings",
1638
+ "help": "Enable/disable backup feature"
1639
+ },
1640
+ "backup.singleFileMode": {
1641
+ "label": "Single File Mode",
1642
+ "description": "Use single file for backups",
1643
+ "help": "Backup settings in a single file"
1644
+ },
1645
+ "backup.singleBackupFile": {
1646
+ "label": "Backup File Path",
1647
+ "description": "Path to the backup file",
1648
+ "help": "Path to the single backup file"
1649
+ },
1650
+ "backup.retentionDays": {
1651
+ "label": "Retention Period",
1652
+ "description": "Days to keep backup files",
1653
+ "help": "Number of days to retain old backup files"
1654
+ },
1655
+ "backup.maxBackups": {
1656
+ "label": "Maximum Backups",
1657
+ "description": "Maximum backup files to keep",
1658
+ "help": "Maximum number of backup files to keep"
1659
+ },
1660
+ "backup.confirm": {
1661
+ "label": "Confirm Backup",
1662
+ "description": "Require confirmation for backup operations",
1663
+ "help": "Confirm backup operation"
1664
+ },
1665
+ "i18nDir": {
1666
+ "label": "I18n Katalog",
1667
+ "description": "Katalog som innehåller översättningsfiler",
1668
+ "current": "Nuvarande: {value}",
1669
+ "help": "Sökväg till katalog med översättningsfiler"
1670
+ },
1671
+ "projectRoot": {
1672
+ "label": "Projektrot",
1673
+ "description": "Projektets rotkatalog",
1674
+ "current": "Nuvarande: {value}",
1675
+ "help": "Sökväg till projektets rotkatalog"
1676
+ },
1677
+ "checkUsage": {
1678
+ "usage_analysis_failed": "Användningsanalys misslyckades",
1679
+ "usage_analysis_success": "Användningsanalys framgångsrik",
1680
+ "usage_analysis_complete": "Användningsanalys klar",
1681
+ "usage_analysis_in_progress": "Användningsanalys pågår",
1682
+ "usage_analysis_started": "Användningsanalys startade",
1683
+ "usage_analysis_skipped": "Användningsanalys hoppade över"
1684
+ },
1685
+ "language": {
1686
+ "label": "Gränssnittsspråk",
1687
+ "description": "Språk för användargränssnittet",
1688
+ "current": "Nuvarande: {value}",
1689
+ "help": "Välj önskat gränssnittsspråk"
1690
+ },
1691
+ "scriptDirectories": {
1692
+ "analyzeLabel": "Analysera skriptkataloger",
1693
+ "analyzeHelp": "Analysera skriptkataloger för problem",
1694
+ "completeLabel": "Kompletta installationskataloger",
1695
+ "initLabel": "Initiera skriptkataloger",
1696
+ "manageLabel": "Hantera skriptkataloger",
1697
+ "sizingLabel": "Dimensionering av skriptkataloger",
1698
+ "summaryLabel": "Sammanfattande rapportkataloger",
1699
+ "usageLabel": "Kataloger för användningsrapporter",
1700
+ "validateLabel": "Validera skriptkataloger"
1701
+ },
1702
+ "theme": {
1703
+ "label": "Färgtema",
1704
+ "description": "UI-tema preferens",
1705
+ "current": "Nuvarande: {value}",
1706
+ "help": "Välj mellan ljusa och mörka teman"
1707
+ },
1708
+ "dateFormat": {
1709
+ "label": "Datumformat",
1710
+ "description": "Format för att visa datum",
1711
+ "current": "Nuvarande: {value}",
1712
+ "help": "Välj hur datum ska visas i rapporter"
1713
+ },
1714
+ "notifications": {
1715
+ "enabled": {
1716
+ "label": "Aktivera aviseringar",
1717
+ "description": "Visa skrivbordsaviseringar",
1718
+ "current": "Nuvarande: {value}",
1719
+ "help": "Aktivera skrivbordsaviseringar för slutförda operationer"
1720
+ }
1721
+ },
1722
+ "sourceDir": {
1723
+ "label": "Källkatalog",
1724
+ "description": "Katalog som innehåller översättningsfiler",
1725
+ "current": "Nuvarande: {value}",
1726
+ "help": "Sökväg till katalog med källöversättningsfiler"
1727
+ },
1728
+ "sourceLanguage": {
1729
+ "label": "Källspråk",
1730
+ "description": "Primärt språk för översättningar",
1731
+ "current": "Nuvarande: {value}",
1732
+ "help": "Det primära språket som används som källa för översättningar"
1733
+ },
1734
+ "outputDir": {
1735
+ "label": "Utdatakatalog",
1736
+ "description": "Katalog för genererade rapporter",
1737
+ "current": "Nuvarande: {value}",
1738
+ "help": "Där rapporter och bearbetade filer kommer att sparas"
1739
+ },
1740
+ "batchSize": {
1741
+ "label": "Batchstorlek",
1742
+ "description": "Antal bearbetade artiklar per batch",
1743
+ "current": "Nuvarande: {value}",
1744
+ "help": "Hur många filer som ska bearbetas i varje batch"
1745
+ },
1746
+ "maxConcurrentFiles": {
1747
+ "label": "Max samtidiga filer",
1748
+ "description": "Maximalt antal filer som bearbetas samtidigt",
1749
+ "current": "Nuvarande: {value}",
1750
+ "help": "Maximalt antal filer att bearbeta samtidigt"
1751
+ },
1752
+ "sizingThreshold": {
1753
+ "label": "Storlekströskel (%)",
1754
+ "description": "Tröskel för storleksvariationer",
1755
+ "current": "Nuvarande: {value}%",
1756
+ "help": "Procentuell tröskel för att upptäcka storleksfel"
1757
+ },
1758
+ "strictMode": {
1759
+ "label": "Strikt valideringsläge",
1760
+ "description": "Aktivera strikt valideringsläge",
1761
+ "current": "Nuvarande: {value}",
1762
+ "help": "Aktivera strikt validering för översättningsfiler"
1763
+ },
1764
+ "enableAuditLog": {
1765
+ "label": "Aktivera revisionslogg",
1766
+ "description": "Spåra alla översättningsändringar",
1767
+ "current": "Nuvarande: {value}",
1768
+ "help": "Logga alla ändringar som gjorts i översättningsfiler"
1769
+ },
1770
+ "backupBeforeChanges": {
1771
+ "label": "Automatisk säkerhetskopiering",
1772
+ "description": "Skapa säkerhetskopior före ändringar",
1773
+ "current": "Nuvarande: {value}",
1774
+ "help": "Skapa säkerhetskopior automatiskt innan du gör ändringar"
1775
+ },
1776
+ "advanced_maxConcurrentFiles": {
1777
+ "label": "Max samtidiga filer",
1778
+ "description": "Maximalt antal filer som bearbetas samtidigt",
1779
+ "current": "Nuvarande: {value}",
1780
+ "help": "Maximalt antal filer att bearbeta samtidigt"
1781
+ },
1782
+ "advanced_strictMode": {
1783
+ "label": "Strikt valideringsläge",
1784
+ "description": "Aktivera strikt valideringsläge",
1785
+ "current": "Nuvarande: {value}",
1786
+ "help": "Aktivera strikt validering för översättningsfiler"
1787
+ },
1788
+ "adminPinEnabled": {
1789
+ "label": "Admin PIN-skydd",
1790
+ "description": "Aktivera administratörs-PIN-autentisering för känsliga inställningar",
1791
+ "current": "Nuvarande: {value}",
1792
+ "help": "Kräv administratörs-PIN för att ändra säkerhet och avancerade inställningar"
1793
+ },
1794
+ "sessionTimeout": {
1795
+ "label": "Timeout för session",
1796
+ "description": "Adminsession timeout på minuter",
1797
+ "current": "Nuvarande: {value} minuter",
1798
+ "help": "Hur länge administratörssessioner förblir aktiva innan de kräver ny autentisering"
1799
+ },
1800
+ "maxFailedAttempts": {
1801
+ "label": "Max misslyckade försök",
1802
+ "description": "Maximalt antal misslyckade PIN-försök före låsning",
1803
+ "current": "Nuvarande: {value} försök",
1804
+ "help": "Antal misslyckade PIN-försök tillåtna före tillfällig lockout"
1805
+ },
1806
+ "lockoutDuration": {
1807
+ "label": "Lockoutens varaktighet",
1808
+ "description": "Lockoutens varaktighet efter misslyckade försök",
1809
+ "current": "Nuvarande: {value} minuter",
1810
+ "help": "Hur länge systemet förblir låst efter max misslyckade försök"
1811
+ },
1812
+ "scriptDirectories_analyze": {
1813
+ "label": "Analysera skriptkataloger",
1814
+ "description": "Anpassade kataloger för analysskript",
1815
+ "current": "Nuvarande: {value}",
1816
+ "help": "Ange anpassad källkatalog för analysskriptet. Lämna tomt för att använda global inställning."
1817
+ },
1818
+ "scriptDirectories_complete": {
1819
+ "label": "Kompletta installationskataloger",
1820
+ "description": "Anpassade kataloger för komplett installationsskript",
1821
+ "current": "Nuvarande: {value}",
1822
+ "help": "Ange anpassad källkatalog för hela installationsskriptet. Lämna tomt för att använda global inställning."
1823
+ },
1824
+ "scriptDirectories_init": {
1825
+ "label": "Initiera skriptkataloger",
1826
+ "description": "Anpassade kataloger för initialiseringsskript",
1827
+ "current": "Nuvarande: {value}",
1828
+ "help": "Ange anpassad källkatalog för initialiseringsskriptet. Lämna tomt för att använda global inställning."
1829
+ },
1830
+ "scriptDirectories_manage": {
1831
+ "label": "Hantera skriptkataloger",
1832
+ "description": "Anpassade kataloger för hantera skript",
1833
+ "current": "Nuvarande: {value}",
1834
+ "help": "Ange anpassad källkatalog för hanteringsskriptet. Lämna tomt för att använda global inställning."
1835
+ },
1836
+ "scriptDirectories_sizing": {
1837
+ "label": "Dimensionering av skriptkataloger",
1838
+ "description": "Anpassade kataloger för storlek på skript",
1839
+ "current": "Nuvarande: {value}",
1840
+ "help": "Ange anpassad källkatalog för storleksskriptet. Lämna tomt för att använda global inställning."
1841
+ },
1842
+ "scriptDirectories_summary": {
1843
+ "label": "Sammanfattande rapportkataloger",
1844
+ "description": "Anpassade kataloger för sammanfattningsrapportskript",
1845
+ "current": "Nuvarande: {value}",
1846
+ "help": "Ange anpassad källkatalog för sammanfattningsrapportskriptet. Lämna tomt för att använda global inställning."
1847
+ },
1848
+ "scriptDirectories_usage": {
1849
+ "label": "Kataloger för användningsrapporter",
1850
+ "description": "Anpassade kataloger för användningsrapportskript",
1851
+ "current": "Nuvarande: {value}",
1852
+ "help": "Ange anpassad källkatalog för användningsrapportskriptet. Lämna tomt för att använda global inställning."
1853
+ },
1854
+ "scriptDirectories_validate": {
1855
+ "label": "Validera skriptkataloger",
1856
+ "description": "Anpassade kataloger för validering av skript",
1857
+ "current": "Nuvarande: {value}",
1858
+ "help": "Ange anpassad källkatalog för valideringsskriptet. Lämna tomt för att använda global inställning."
1859
+ },
1860
+ "security_adminPinEnabled": {
1861
+ "label": "Admin PIN-skydd",
1862
+ "description": "Aktivera administratörs-PIN-autentisering för känsliga inställningar",
1863
+ "current": "Nuvarande: {value}",
1864
+ "help": "Kräv administratörs-PIN för att ändra säkerhet och avancerade inställningar"
1865
+ },
1866
+ "fields": {
1867
+ "adminPinEnabled": {
1868
+ "label": "Admin PIN-skydd",
1869
+ "description": "Aktivera administratörs-PIN-autentisering för känsliga inställningar",
1870
+ "help": "Kräv administratörs-PIN för att ändra säkerhet och avancerade inställningar"
1871
+ }
1872
+ },
1873
+ "security_pinProtection_enabled": {
1874
+ "label": "PIN-skydd",
1875
+ "description": "Aktivera PIN-skydd för känsliga inställningar",
1876
+ "current": "Nuvarande: {value}",
1877
+ "help": "Kräv PIN-kod för att ändra säkerhet och avancerade inställningar"
1878
+ },
1879
+ "pinProtection_configure": {
1880
+ "label": "Konfigurera PIN-skyddade skript",
1881
+ "description": "Konfigurera vilka skript som kräver PIN-skydd",
1882
+ "help": "Välj individuella skript som kräver PIN-autentisering"
1883
+ },
1884
+ "pinProtection_debugMenu": {
1885
+ "label": "Menyn för felsökningsverktyg",
1886
+ "description": "Kräv PIN-kod för felsökningsverktygsmenyn",
1887
+ "current": "Nuvarande: {value}",
1888
+ "help": "Aktivera PIN-skydd för åtkomst av felsökningsverktyg"
1889
+ },
1890
+ "pinProtection_deleteReports": {
1891
+ "label": "Ta bort rapporter",
1892
+ "description": "Kräv PIN-kod för att ta bort rapporter",
1893
+ "current": "Nuvarande: {value}",
1894
+ "help": "Aktivera PIN-skydd för att radera rapporter"
1895
+ },
1896
+ "pinProtection_summaryReports": {
1897
+ "label": "Sammanfattande rapporter",
1898
+ "description": "Kräv PIN-kod för sammanfattningsrapporter",
1899
+ "current": "Nuvarande: {value}",
1900
+ "help": "Aktivera PIN-skydd för att generera sammanfattande rapporter"
1901
+ },
1902
+ "pinProtection_settingsMenu": {
1903
+ "label": "Inställningsmeny",
1904
+ "description": "Kräv PIN-kod för Inställningsmenyn",
1905
+ "current": "Nuvarande: {value}",
1906
+ "help": "Aktivera PIN-skydd för åtkomst till inställningar"
1907
+ },
1908
+ "pinProtection_initScript": {
1909
+ "label": "Initiera skript",
1910
+ "description": "Kräv PIN-kod för Initialize Script",
1911
+ "current": "Nuvarande: {value}",
1912
+ "help": "Aktivera PIN-skydd för att köra initialiseringsskriptet"
1913
+ },
1914
+ "pinProtection_resetDefaults": {
1915
+ "label": "Återställ PIN-skydd",
1916
+ "description": "Återställ alla PIN-skyddsinställningar till standardinställningarna",
1917
+ "help": "Återställ alla individuella skript-PIN-skydd till standardvärden"
1918
+ },
1919
+ "removeUiLanguages": {
1920
+ "label": "Ta bort UI-språk",
1921
+ "description": "Ta bort UI-språk som inte är installerade",
1922
+ "help": "Ta bort UI-språk som inte är installerade på systemet"
1923
+ },
1924
+ "${helperKey}": {
1925
+ "help": "Hjälp"
1926
+ },
1927
+ "reports_format": {
1928
+ "label": "Rapportformat",
1929
+ "help": "Välj markdown för läsbara rapporter, json för automatisering eller text för vanliga loggar."
1930
+ },
1931
+ "autoTranslate_placeholderMode": {
1932
+ "label": "Platshållarhanteringsläge",
1933
+ "help": "Hur platshållarbärande strängar hanteras under automatisk översättning."
1934
+ },
1935
+ "autoTranslate_concurrency": {
1936
+ "label": "Samtidiga översättningsförfrågningar",
1937
+ "help": "Maximalt antal samtidiga leverantörsbegäranden. Google stöder upp till 100 i i18ntk; DeepL och LibreTranslate har ett lägre tak."
1938
+ },
1939
+ "autoTranslate_batchSize": {
1940
+ "label": "Textsegment per batch",
1941
+ "help": "Antal schemalagda textsegment per batch."
1942
+ },
1943
+ "autoTranslate_progressInterval": {
1944
+ "label": "Intervall för förloppsuppdatering",
1945
+ "help": "Slutförda textsegment mellan förloppsuppdateringar."
1946
+ },
1947
+ "autoTranslate_retryCount": {
1948
+ "label": "Försök att räkna igen",
1949
+ "help": "Maximalt antal försök per misslyckad begäran."
1950
+ },
1951
+ "autoTranslate_retryDelay": {
1952
+ "label": "Försök igen (ms)",
1953
+ "help": "Basfördröjning i millisekunder."
1954
+ },
1955
+ "autoTranslate_timeout": {
1956
+ "label": "Begär timeout (ms)",
1957
+ "help": "Timeout för begäran av översättningsleverantör."
1958
+ },
1959
+ "autoTranslate_dryRunFirst": {
1960
+ "label": "Förhandsgranskning av torrkörning först",
1961
+ "help": "Förhandsgranska vad som kommer att översättas innan du skriver filer."
1962
+ },
1963
+ "autoTranslate_onlyMissingOrEnglish": {
1964
+ "label": "Endast saknade eller engelska nycklar",
1965
+ "help": "Behåll befintliga översatta målvärden och översätt endast saknade, markör, källkopia eller troliga engelska värden."
1966
+ },
1967
+ "autoTranslate_reportStdout": {
1968
+ "label": "Skriv ut rapport till terminalen",
1969
+ "help": "Skriv ut rapporten efter översättningen till stdout."
1970
+ },
1971
+ "autoTranslate_bom": {
1972
+ "label": "Skriv UTF-8 BOM",
1973
+ "help": "Skriv översatta JSON-filer med en UTF-8 BOM."
1974
+ },
1975
+ "autoTranslate_protectionEnabled": {
1976
+ "label": "Skydda varumärkestermer, nycklar, värderingar",
1977
+ "help": "Aktivera användarredigerbara skyddade termer, nycklar, värden och mönster."
1978
+ },
1979
+ "autoTranslate_protectionFile": {
1980
+ "label": "Skydds JSON-fil",
1981
+ "help": "Projekt JSON-fil som innehåller skyddsregler för automatisk översättning."
1982
+ },
1983
+ "autoTranslate_promptProtectionSetup": {
1984
+ "label": "Be om att skapa skyddsfil",
1985
+ "help": "Be att få skapa skyddsfilen när Auto Translate körs."
1986
+ },
1987
+ "autoTranslate_promptProtectionUpdate": {
1988
+ "label": "Be att få uppdatera skyddsreglerna",
1989
+ "help": "Fråga om du ska uppdatera skyddsreglerna innan chefsöversättningar."
1990
+ },
1991
+ "backup": {
1992
+ "enabled": {
1993
+ "label": "Aktivera säkerhetskopiering",
1994
+ "description": "Aktivera automatisk säkerhetskopiering av inställningar",
1995
+ "help": "Aktivera/inaktivera säkerhetskopieringsfunktionen"
1996
+ },
1997
+ "singleFileMode": {
1998
+ "label": "Enkel filläge",
1999
+ "description": "Använd en enda fil för säkerhetskopiering",
2000
+ "help": "Säkerhetskopieringsinställningar i en enda fil"
2001
+ },
2002
+ "singleBackupFile": {
2003
+ "label": "Sökväg för säkerhetskopiering av fil",
2004
+ "description": "Sökväg till säkerhetskopian",
2005
+ "help": "Sökväg till den enda säkerhetskopieringsfilen"
2006
+ },
2007
+ "retentionDays": {
2008
+ "label": "Lagringsperiod",
2009
+ "description": "Dagar för att spara säkerhetskopior",
2010
+ "help": "Antal dagar för att spara gamla säkerhetskopior"
2011
+ },
2012
+ "maxBackups": {
2013
+ "label": "Maximalt antal säkerhetskopior",
2014
+ "description": "Maximalt antal säkerhetskopior att behålla",
2015
+ "help": "Maximalt antal säkerhetskopior att behålla"
2016
+ },
2017
+ "confirm": {
2018
+ "label": "Bekräfta säkerhetskopiering",
2019
+ "description": "Kräv bekräftelse för säkerhetskopiering",
2020
+ "help": "Bekräfta säkerhetskopiering"
2021
+ }
2022
+ }
2023
+ },
2024
+ "actions": {
2025
+ "editSetting": "Redigera {setting}:",
2026
+ "settingUpdated": "✅ {setting} uppdaterad framgångsrikt!",
2027
+ "invalidValue": "❌ Ogiltigt värde. Försök igen.",
2028
+ "pressEnter": "Tryck på Enter för att fortsätta...",
2029
+ "backToMenu": "Tillbaka till huvudmenyn",
2030
+ "saveSuccess": "✅ Inställningar sparade framgångsrikt!",
2031
+ "saveFailed": "❌ Det gick inte att spara inställningarna: {error}",
2032
+ "resetConfirm": "Är du säker på att du vill återställa alla inställningar till standardinställningarna? (år/n):",
2033
+ "resetSuccess": "✅ Inställningarna har återställts till standardinställningarna framgångsrikt!",
2034
+ "importSuccess": "✅ Inställningar importerade framgångsrikt!",
2035
+ "exportSuccess": "✅ Inställningar exporterade framgångsrikt!",
2036
+ "fileNotFound": "❌ Filen hittades inte: {path}",
2037
+ "invalidFormat": "❌ Ogiltigt filformat för inställningar",
2038
+ "pinProtectionUpdated": "✅ PIN-skydd för {script} uppdaterad framgångsrikt!",
2039
+ "pinProtectionReset": "✅ Alla PIN-skyddsinställningar återställs till standardinställningarna!",
2040
+ "pinProtectionConfigure": "Konfigurera PIN-skydd för enskilda skript",
2041
+ "pinProtectionSelectScript": "Välj ett skript för att växla PIN-skydd:",
2042
+ "pinProtectionCurrentStatus": "Aktuell status: {status}",
2043
+ "pinProtectionEnabled": "Aktiverad",
2044
+ "pinProtectionDisabled": "Inaktiverad",
2045
+ "pinProtectionToggle": "Växla PIN-skydd",
2046
+ "pinProtectionResetAll": "Återställ alla till standardinställningar",
2047
+ "pinProtectionBack": "Tillbaka till Säkerhetsinställningar"
2048
+ },
2049
+ "themes": {
2050
+ "light": "Ljus",
2051
+ "dark": "Mörk",
2052
+ "system": "System"
2053
+ },
2054
+ "languages": {
2055
+ "en": "engelska",
2056
+ "de": "tyska",
2057
+ "es": "spanska",
2058
+ "fr": "franska",
2059
+ "ru": "ryska",
2060
+ "ja": "japanska",
2061
+ "zh": "kinesiska",
2062
+ "it": "Italienska",
2063
+ "pt": "Portugisiska",
2064
+ "nl": "Nederländska",
2065
+ "pl": "Polska",
2066
+ "sv": "Svenska",
2067
+ "uk": "Ukrainska",
2068
+ "cs": "Tjeckiska",
2069
+ "tr": "Turkiska",
2070
+ "ko": "Koreanska",
2071
+ "ar": "Arabiska",
2072
+ "hi": "Hindi",
2073
+ "th": "Thailändska",
2074
+ "vi": "Vietnamesiska",
2075
+ "he": "Hebreiska",
2076
+ "el": "Grekiska",
2077
+ "hu": "Ungerska"
2078
+ },
2079
+ "viewAll": {
2080
+ "title": "Visa alla inställningar"
2081
+ },
2082
+ "current": "Nuvarande",
2083
+ "back": "Tillbaka till huvudmenyn",
2084
+ "selectSettingPrompt": "Välj inställning att redigera (eller b för tillbaka, r för återställning):",
2085
+ "invalidOption": "Ogiltigt alternativ.",
2086
+ "editing": "Redigering",
2087
+ "enterNewValue": "Ange ett nytt värde (eller tryck på Enter för att hålla dig aktuell, skriv 'default' för att använda systemstandard):",
2088
+ "validOptions": "Giltiga alternativ",
2089
+ "updatedSuccessfully": "uppdaterad framgångsrikt!",
2090
+ "noHelp": "Ingen hjälp tillgänglig för den här inställningen",
2091
+ "resetScriptDirectories": "Återställ till standardvärden",
2092
+ "resetScriptDirectoriesTitle": "Återställ skriptkataloger till standardvärden",
2093
+ "resetScriptDirectoriesWarning1": "Detta kommer att återställa alla skriptkatalogkonfigurationer till deras systemstandard.",
2094
+ "resetScriptDirectoriesWarning2": "Alla anpassade katalogsökvägar kommer att rensas. Denna åtgärd kan inte ångras.",
2095
+ "resetScriptDirectoriesConfirm": "Är du säker på att du vill återställa alla skriptkataloger till standardinställningarna? (år/n):",
2096
+ "backup": {
2097
+ "title": "Säkerhetskopieringsinställningar",
2098
+ "description": "Säkerhetskopiera aktuella inställningar till en fil",
2099
+ "confirm": "Är du säker på att du vill säkerhetskopiera nuvarande inställningar? (år/n):",
2100
+ "success": "✅ Inställningar säkerhetskopierades framgångsrikt till {backupFile}",
2101
+ "failed": "❌ Det gick inte att säkerhetskopiera inställningar: {error}",
2102
+ "enabled": "Aktivera säkerhetskopiering",
2103
+ "enabledHelp": "Aktivera/inaktivera säkerhetskopieringsfunktionen",
2104
+ "singleFileMode": "Enkel filläge",
2105
+ "singleFileModeHelp": "Säkerhetskopieringsinställningar i en enda fil",
2106
+ "singleBackupFile": "Enskild säkerhetskopieringsfil",
2107
+ "singleBackupFileHelp": "Sökväg till den enda säkerhetskopieringsfilen",
2108
+ "retentionDays": "Retentionsdagar",
2109
+ "retentionDaysHelp": "Antal dagar för att spara gamla säkerhetskopior",
2110
+ "maxBackups": "Max säkerhetskopior",
2111
+ "maxBackupsHelp": "Maximalt antal säkerhetskopior att behålla",
2112
+ "confirmHelp": "Bekräfta säkerhetskopiering",
2113
+ "confirmYes": "Ja",
2114
+ "confirmNo": "Inga"
2115
+ },
2116
+ "validation": {
2117
+ "valid": "Giltig",
2118
+ "validatingPaths": "Validerar konfigurerade sökvägar...",
2119
+ "validationComplete": "Sökvägsvalidering slutförd: {valid}/{total} giltig."
2120
+ }
2121
+ },
2122
+ "summary": {
2123
+ "separator": "============================================================",
2124
+ "configurationTitle": "🔧 Konfiguration:",
2125
+ "sourceLanguage": "Källspråk: {sourceLanguage}",
2126
+ "supportedExtensions": "Tillägg som stöds: {extensions}",
2127
+ "excludedFiles": "Exkluderade filer: {files}",
2128
+ "reportContent": "{report}",
2129
+ "fatalError": "❌ Allvarligt fel: {error}",
2130
+ "helpTitle": "📊 I18NTK SAMMANFATTANDE RAPPORTGENERATOR",
2131
+ "helpDescription": "Analyserar i18n-mappstrukturen och genererar en omfattande sammanfattande rapport inklusive nyckelstatistik, filstrukturanalys och valideringskontroller.",
2132
+ "helpUsage": "Användning: nod i18ntk-summary.js [alternativ]",
2133
+ "helpOptions": "--source-dir <dir> Källkatalog att analysera",
2134
+ "helpSourceDir": "--source-dir <dir> Källkatalog att analysera",
2135
+ "helpOutput": "--produktion <file> Utdatafil för rapporten",
2136
+ "helpVerbose": "--verbose, -v Visa detaljerad information",
2137
+ "helpKeepReports": "--keep-reports Behåll befintliga rapporter",
2138
+ "helpDeleteReports": "--delete-reports Ta bort befintliga rapporter",
2139
+ "helpHelp": "--help, -h Visa denna hjälp",
2140
+ "helpExamples": "Exempel:",
2141
+ "helpExample1": "nod i18ntk-summary.js",
2142
+ "helpExample2": "nod i18ntk-summary.js --source-dir ./locales",
2143
+ "helpExample3": "nod i18ntk-summary.js --output summary-report.txt",
2144
+ "helpExample4": "nod i18ntk-summary.js --verbose",
2145
+ "helpExample5": "nod i18ntk-summary.js --source-dir ./locales --output report.json",
2146
+ "couldNotReadFile": "⚠️ Kunde inte läsa filen: {filePath}",
2147
+ "couldNotParseJSFile": "⚠️ Kunde inte tolka JS/TS-fil: {filePath}",
2148
+ "errorReadingFile": "⚠️ Fel vid läsning av filen {filePath}: {error}",
2149
+ "analyzingFolder": "🔍 Analyserar mappstruktur...",
2150
+ "noLanguageDirectoriesFound": "❌ Inga språkkataloger hittades i den angivna källkatalogen.",
2151
+ "foundLanguages": "✅ Hittade {count} språk: {languages}",
2152
+ "referenceLanguageFiles": "📁 Referensspråk '{language}' har {count} filer",
2153
+ "analyzingLanguage": "🌍 Analysera språk: {language}",
2154
+ "keysInFiles": "📊 Hittade {keys} nycklar över {files} filer",
2155
+ "checkingInconsistentKeys": "🔍 Söker efter inkonsekventa nycklar på olika språk...",
2156
+ "generatingSummaryReport": "📝 Genererar sammanfattande rapport...",
2157
+ "reportTitle": "📊 I18NTK SUMMARY REPORT",
2158
+ "generated": "Genererad: {timestamp}",
2159
+ "sourceDirectory": "Källkatalog: {dir}",
2160
+ "overview": "📈 OVERVIEW",
2161
+ "languagesCount": "Språk: {count}",
2162
+ "totalFiles": "Totalt antal filer: {count}",
2163
+ "totalKeys": "Totalt antal nycklar: {count}",
2164
+ "avgKeysPerLanguage": "Genomsnittliga nycklar per språk: {count}",
2165
+ "languagesBreakdown": "🌍 UPPDELNING AV SPRÅK",
2166
+ "languageBreakdown": "{language}: {files} filer, {keys} nycklar",
2167
+ "fileStructure": "📁 FILSTRUKTUR",
2168
+ "fileKeys": "{file}: {keys} nycklar",
2169
+ "missingInLanguages": "⚠️ Saknas i: {languages}",
2170
+ "issuesFound": "❌ ISSUES FOUND",
2171
+ "missingFiles": "📁 Saknade filer:",
2172
+ "emptyFiles": "📄 Tomma filer:",
2173
+ "malformedFiles": "⚠️ Felaktiga filer:",
2174
+ "duplicateKeys": "🔑 Duplicera nycklar:",
2175
+ "inconsistentKeys": "🔍 Inkonsekventa nycklar:",
2176
+ "missingKeys": "Saknad: {keys}{more}",
2177
+ "extraKeys": "Extra: {keys}{more}",
2178
+ "noIssuesFound": "✅ NO ISSUES FOUND",
2179
+ "allFilesConsistent": "Alla översättningsfiler är konsekventa på olika språk.",
2180
+ "recommendations": "💡 REKOMMENDATIONER",
2181
+ "createMissingFiles": "• Skapa saknade översättningsfiler",
2182
+ "addContentToEmptyFiles": "• Lägg till innehåll i tomma översättningsfiler",
2183
+ "fixMalformedFiles": "• Åtgärda felaktiga JSON/JS-filer",
2184
+ "removeDuplicateKeys": "• Ta bort dubbletter av nycklar från filer",
2185
+ "synchronizeKeys": "• Synkronisera nycklar på alla språk",
2186
+ "splitLargeFiles": "• Överväg att dela upp stora filer i mindre namnutrymmen",
2187
+ "addMoreLanguages": "• Överväg att lägga till fler språk",
2188
+ "nextSteps": "🎯 NEXT STEPS",
2189
+ "nextStep1": "1. Åtgärda eventuella problem som identifierats ovan",
2190
+ "nextStep2": "2. Kör validering för att säkerställa konsekvens",
2191
+ "nextStep3": "3. Överväg att använda i18ntk-validate för detaljerad validering",
2192
+ "nextStep4": "4. Regelbunden övervakning rekommenderas",
2193
+ "couldNotFindI18nDirectory": "❌ Kunde inte hitta i18n-katalogen. Vänligen ange --source-dir.",
2194
+ "sourceDirectoryDoesNotExist": "❌ Källkatalogen finns inte: {dir}",
2195
+ "i18nSummaryReportGenerator": "📊 I18N Sammanfattningsrapportgenerator",
2196
+ "analysisComplete": "✅ Analysen är klar",
2197
+ "analyzedLanguages": "📊 Analyserade språk: {count}",
2198
+ "processedFiles": "📁 Bearbetade filer: {count}",
2199
+ "foundTranslationKeys": "🔑 Hittade översättningsnycklar: {count}",
2200
+ "foundIssues": "❌ Hittade {count} frågor",
2201
+ "noIssuesConsole": "✅ Inga problem hittades - alla filer är konsekventa!",
2202
+ "errorDuringAnalysis": "❌ Fel under analys: {error}",
2203
+ "usageReportTitle": "📊 I18NTK USAGE REPORT",
2204
+ "usageReportGenerated": "Genererad: {timestamp}",
2205
+ "usageReportSourceDir": "Källkatalog: {sourceDir}",
2206
+ "usageReportI18nDir": "I18n katalog: {i18nDir}",
2207
+ "usageReportSummary": "📈 SUMMARY",
2208
+ "usageReportSourceFilesScanned": "Skannade källfiler: {count}",
2209
+ "usageReportTranslationFilesFound": "Översättningsfiler hittades: {count}",
2210
+ "usageReportAvailableKeys": "Tillgängliga översättningsnycklar: {count}",
2211
+ "usageReportUsedKeys": "Använda översättningsnycklar: {count}",
2212
+ "usageReportDynamicKeys": "Dynamiska översättningsnycklar: {count}",
2213
+ "usageReportUnusedKeys": "Oanvända översättningsnycklar: {count}",
2214
+ "usageReportMissingKeys": "Översättningsnycklar saknas: {count}",
2215
+ "usageReportNotTranslatedKeys": "Ej översatta nycklar: {count}",
2216
+ "usageReportTranslationCompleteness": "🌍 ÖVERSÄTTNINGSFULLSTÄNDIGHET",
2217
+ "usageReportLanguageCompleteness": "{language}: {completeness}% ({translated}/{total})",
2218
+ "usageReportNotTranslatedInLanguage": "Ej översatt: {count} nycklar",
2219
+ "usageReportTranslationFilesDiscovered": "📁 ÖVERSÄTTNINGSFILER",
2220
+ "usageReportFileInfo": "{relativePath} (namnutrymme: {namespace}, typ: {type})",
2221
+ "usageReportUnusedTranslationKeys": "🗑️ OANVÄNDA ÖVERSÄTTNINGSNYCKLAR",
2222
+ "usageReportUnusedKeysDescription": "Dessa nycklar finns i översättningsfiler men används inte i källkoden:",
2223
+ "usageReportUnusedKey": "• {key}",
2224
+ "usageReportMoreUnusedKeys": "... och {count} fler oanvända nycklar",
2225
+ "usageReportMissingTranslationKeys": "❌ ÖVERSÄTTNINGSNYCKLAR SAKNAS",
2226
+ "usageReportMissingKeysDescription": "Dessa nycklar används i källkoden men saknas i översättningsfiler:",
2227
+ "usageReportMissingKey": "• {key}",
2228
+ "usageReportUsedIn": "Används i: {filePath}",
2229
+ "usageReportMoreFiles": "... och {count} fler filer",
2230
+ "usageReportDynamicTranslationKeys": "⚡ DYNAMISKA ÖVERSÄTTNINGSNYCKLAR",
2231
+ "usageReportDynamicKeysDescription": "Dessa nycklar används dynamiskt (konstruerade under körning):",
2232
+ "usageReportDynamicKey": "• {key}",
2233
+ "usageReportFileUsageBreakdown": "📊 FÖRDELNING AV FILANVÄNDNING",
2234
+ "usageReportFileUsage": "{filePath}: {count} nycklar",
2235
+ "status": {
2236
+ "generating": "⏳ Genererar...",
2237
+ "completed": "✅ Avslutad"
2238
+ },
2239
+ "help": {
2240
+ "usage": "Användning: node main/manage/index.js [alternativ]",
2241
+ "interactiveMode": "💡 Använd: node main/manage/index.js --command=<command> för direkt utförande",
2242
+ "initProject": "🚀 Initiera nya språk",
2243
+ "analyzeTranslations": "🔍 Analysera översättningar",
2244
+ "validateTranslations": "✅ Validera översättningar",
2245
+ "checkUsage": "📊 Kontrollera nyckelanvändning",
2246
+ "showHelp": "📖 Använd: node main/manage/index.js --hjälp för tillgängliga kommandon",
2247
+ "availableCommands": "📖 Tillgängliga kommandon:",
2248
+ "initCommand": "init - Initiera nya språk",
2249
+ "analyzeCommand": "analysera - Analysera översättningar",
2250
+ "validateCommand": "validera - Validera översättningar",
2251
+ "usageCommand": "användning - Kontrollera nyckelanvändning",
2252
+ "sizingCommand": "dimensionering - Analysera dimensionering",
2253
+ "completeCommand": "komplett - Kompletta översättningar (100 % täckning)",
2254
+ "summaryCommand": "sammanfattning - Visa projektstatus",
2255
+ "scannerCommand": "skanner - Sök efter i18n-problem",
2256
+ "translateCommand": "översätt - Översätt lokala filer automatiskt",
2257
+ "debugCommand": "debug - Felsök översättningsproblem"
2258
+ },
2259
+ "test_complete_system": {
2260
+ "starting_test": "🧪 Startar komplett systemtest",
2261
+ "separator": "=",
2262
+ "testing_ui_translations": "📝 Testar UI-översättningar...",
2263
+ "testing_settings_manager": "⚙️ Testar Inställningshanteraren...",
2264
+ "testing_main_scripts": "🔧 Testar huvudskript...",
2265
+ "checking_translation_consistency": "🌐 Kontrollerar översättningskonsistens...",
2266
+ "non_critical_missing_keys": "ℹ️ {file}: {count} icke-kritiskt saknade nycklar",
2267
+ "extra_keys": "ℹ️ {file}: {count} extra nycklar",
2268
+ "generating_report": "📊 Genererar rapport...",
2269
+ "final_test_report_title": "📋 FINAL TEST REPORT",
2270
+ "passed": "✅ Godkänd: {passed}",
2271
+ "failed": "❌ Misslyckades: {failed}",
2272
+ "warnings": "⚠️ Varningar: {warnings}",
2273
+ "missing_translations_title": "🔍 Översättningar saknas ({count}):",
2274
+ "missing_translation_key": "- {key}",
2275
+ "missing_translations_more": "... och {count} mer",
2276
+ "errors_title": "❌ Fel:",
2277
+ "error_message": "- {error}",
2278
+ "overall_status": "📊 Övergripande status: {status}",
2279
+ "success_message": "✅ {message}",
2280
+ "failure_message": "❌ {message}",
2281
+ "failure_error_message": "{errorMessage}",
2282
+ "warning_message": "⚠️ {message}",
2283
+ "test_runner_failed": "❌ Testlöpare misslyckades:",
2284
+ "recommendations": {
2285
+ "add_missing_translation_keys": "Lägg till saknade översättningsnycklar för att bibehålla konsekvens",
2286
+ "fix_failing_scripts": "Åtgärda felaktiga skript före distribution",
2287
+ "review_warning_messages": "Granska och adressera varningsmeddelanden",
2288
+ "system_ready_for_deployment": "Systemet är redo för driftsättning"
2289
+ },
2290
+ "hardcodedTexts": {
2291
+ "addMissingTranslationKeys": "Lägg till saknade översättningsnycklar för att bibehålla konsekvens",
2292
+ "fixFailingScripts": "Åtgärda felaktiga skript före distribution",
2293
+ "reviewWarningMessages": "Granska och adressera varningsmeddelanden",
2294
+ "systemReadyForDeployment": "Systemet är redo för driftsättning"
2295
+ }
2296
+ },
2297
+ "testConsoleI18n": {
2298
+ "found_target_file": "Hittade målfil: {fileName}",
2299
+ "scanning_files_for_console_statements": "Skannar filer efter konsoluttalanden...",
2300
+ "found_javascript_files": "Hittade {count} JavaScript-filer.",
2301
+ "console_i18n_analysis_results": "Konsol I18n analysresultat",
2302
+ "total_console_statements": "Totalt konsoluttalanden: {count}",
2303
+ "translated_statements": "Översatta uttalanden: {count}",
2304
+ "hardcoded_statements": "Hårdkodade uttalanden: {count}",
2305
+ "translation_coverage": "Översättningstäckning: {percentage}%",
2306
+ "coverage_by_file": "Täckning per fil:",
2307
+ "file_coverage_stats": "{emoji} {fileName}: {coverage}% ({translated}/{total})",
2308
+ "hardcoded_console_statements": "Hårdkodade konsolutlåtanden:",
2309
+ "file_header": "Fil: {file}",
2310
+ "line_statement": "Linje {line}: {statement}",
2311
+ "suggested_key": "Föreslagen nyckel: {key}",
2312
+ "suggested_replacement": "Föreslagen ersättning: {replacement}",
2313
+ "recommendations": "Rekommendationer:",
2314
+ "recommendation_1": "1. Ersätt hårdkodade strängar med i18n.t()-anrop.",
2315
+ "recommendation_2": "2. Lägg till nya nycklar till relevanta JSON-översättningsfiler.",
2316
+ "recommendation_3": "3. Se till att alla konsolmeddelanden är vända mot användaren och kräver översättning.",
2317
+ "recommendation_4": "4. Använd malllitterals eller strängsammansättning för dynamiska meddelanden, skicka variabler till i18n.t().",
2318
+ "translation_keys_to_add": "Föreslagna översättningsnycklar att lägga till:",
2319
+ "add_keys_instruction": "Kopiera följande JSON-struktur till dina översättningsfiler:",
2320
+ "perfect_translation_coverage": "Perfekt översättningstäckning!",
2321
+ "all_statements_using_translation": "Alla konsoluttryck använder översättningssystemet.",
2322
+ "i18n_console_translation_checker": "I18n Console Translation Checker",
2323
+ "script_description_line1": "Det här skriptet skannar alla JavaScript-filer efter konsoluttryck",
2324
+ "script_description_line2": "och kontrollerar om de använder översättningssystemet.",
2325
+ "analysis_completed_in_duration": "Analys genomförd i {duration} sekunder.",
2326
+ "report_saved_to_path": "Rapport sparad till: {path}",
2327
+ "found_hardcoded_messages": "Hittade {count} hårdkodade meddelanden. Avsluta med felkod 1.",
2328
+ "all_console_messages_use_translation": "Alla konsolmeddelanden använder översättning. Avsluta med kod 0.",
2329
+ "consoleTranslationsCheck": "Kontroll av konsolöversättningar"
2330
+ },
2331
+ "translate_mismatches": {
2332
+ "title": "🌐 Översättningshjälp {dryRun}",
2333
+ "separator": "=====================================",
2334
+ "processing_file": "📄 Bearbetning {language}.json...",
2335
+ "translation_summary_title": "📊 Översättningssammanfattning:",
2336
+ "total_translations_applied": "Totalt antal tillämpade översättningar: {totalTranslations}",
2337
+ "run_with_apply_instruction": "💡 Kör med --apply för att tillämpa dessa översättningar",
2338
+ "no_translation_mappings": "⚠️ Inga översättningskartläggningar tillgängliga för {language}",
2339
+ "translation_applied": "✅ {key}: \"{oldValue}\" → \"{newValue}\"",
2340
+ "saved_translations": "💾 Sparad {count} översättningar till {filename}",
2341
+ "found_translatable_items": "🔍 Hittade {count} översättbara föremål",
2342
+ "no_automatic_translations": "✨ Inga automatiska översättningar tillgängliga",
2343
+ "error_processing_file": "❌ Felbearbetning {filename}: {errorMessage}",
2344
+ "coverage_report_title": "📊 Översättningstäckningsrapport",
2345
+ "coverage_report_separator": "===============================",
2346
+ "file_header": "📄 {filename}:",
2347
+ "total_keys": "Totalt antal nycklar: {total}",
2348
+ "translated_keys": "Översatt: {translated}",
2349
+ "untranslated_markers": "Oöversatta markörer: {untranslated}",
2350
+ "contains_english": "Innehåller engelska: {hasEnglish}",
2351
+ "coverage_percentage": "Rapportering: {coverage}%",
2352
+ "error_general": "❌ Fel:",
2353
+ "use_help": "Använd --help för användningsinformation"
2354
+ },
2355
+ "cleaningUpReportFiles": "Rensar gamla rapportfiler...",
2356
+ "couldNotDelete": "Kunde inte radera {file}: {error}",
2357
+ "deletedOldReportFiles": "Raderad {count} gamla rapportfil(er).",
2358
+ "errorCleaningUpReports": "Fel vid rengöring av rapporter: {error}",
2359
+ "noOldReportFilesToDelete": "Inga gamla rapportfiler att radera.",
2360
+ "reportFilesPreserved": "Rapportfiler bevarade.",
2361
+ "reportSaveFailed": "Det gick inte att spara rapporten till: {reportPath}",
2362
+ "reportSaved": "Rapport sparad till: {reportPath}"
2363
+ },
2364
+ "ui": {
2365
+ "autoDetectedI18nDirectory": "Automatiskt upptäckt i18n-katalog: {path}",
2366
+ "executingCommand": "Utför kommando: {command}",
2367
+ "unknownCommand": "Okänt kommando: {command}",
2368
+ "errorExecutingCommand": "Fel vid exekvering av kommando: {error}",
2369
+ "errorLoadingTranslationFile": "Det gick inte att läsa in översättningsfilen för '{language}': {error}",
2370
+ "errorSavingLanguagePreference": "Det gick inte att spara språkinställning: {error}",
2371
+ "noActiveReadlineInterface": "Inget aktivt läslinjegränssnitt tillgängligt",
2372
+ "uiLanguageUpdated": "UI-språket uppdaterat till: {language}",
2373
+ "selectOptionPrompt": "Välj ett alternativ:",
2374
+ "pressEnterToReturn": "Tryck på Enter för att återgå till huvudmenyn...",
2375
+ "detectedSourceDirectory": "Upptäckt källkatalog: {sourceDir}",
2376
+ "detectedI18nDirectory": "Upptäckt i18n-katalog: {directory}",
2377
+ "toolkitTitle": "i18ntk - Enterprise i18n Management Toolkit",
2378
+ "versionInfo": "Version: {version}",
2379
+ "releaseDate": "Releasedatum: {date}",
2380
+ "maintainer": "Underhållare: {maintainer}",
2381
+ "nodeVersion": "Node.js: {version}",
2382
+ "license": "Licens: {license}",
2383
+ "whatsNew": "✨ Vad är nytt i v{version}:",
2384
+ "changeItem": "{change}",
2385
+ "documentation": "📚 Dokumentation: {url}",
2386
+ "issues": "🐛 Problem: {url}",
2387
+ "versionInfoUnavailable": "i18ntk-versionsinformation är inte tillgänglig",
2388
+ "versionInfoError": "Fel: {error}"
2389
+ },
2390
+ "validateLanguagePurity": {
2391
+ "phrase_debug_tools": "felsökningsverktyg",
2392
+ "phrase_settings": "inställningar",
2393
+ "phrase_configuration": "konfiguration",
2394
+ "phrase_invalid_choice": "ogiltigt val",
2395
+ "phrase_please_select": "vänligen välj",
2396
+ "phrase_back_to_main_menu": "tillbaka till huvudmenyn",
2397
+ "phrase_error": "fel",
2398
+ "phrase_warning": "varning",
2399
+ "phrase_success": "framgång",
2400
+ "phrase_failed": "misslyckades",
2401
+ "phrase_loading": "belastning",
2402
+ "phrase_saving": "sparande",
2403
+ "phrase_full_system_debug": "fullständig systemfelsökning",
2404
+ "phrase_configuration_debug": "konfigurationsfelsökning",
2405
+ "phrase_translation_debug": "översättningsfelsökning",
2406
+ "phrase_performance_debug": "prestandafelsökning",
2407
+ "phrase_admin_pin_setup": "admin pin-inställning",
2408
+ "phrase_enter_admin_pin": "ange admin pin",
2409
+ "phrase_confirm_admin_pin": "bekräfta admin pin",
2410
+ "phrase_authentication_failed": "autentisering misslyckades",
2411
+ "phrase_access_denied": "åtkomst nekad",
2412
+ "phrase_security_log": "säkerhetslogg",
2413
+ "language_german": "tyska",
2414
+ "language_french": "franska",
2415
+ "language_spanish": "spanska",
2416
+ "language_russian": "ryska",
2417
+ "language_japanese": "japanska",
2418
+ "language_chinese": "kinesiska",
2419
+ "validator_title": "🔍 Language Purity Validator",
2420
+ "validating_file": "📄 Validerar {language}.json ({name})...",
2421
+ "valid_file_message": "✅ Giltigt - Inga kränkningar av språkrenhet",
2422
+ "invalid_file_message": "❌ Ogiltig - {count} upptäckta överträdelser",
2423
+ "no_validation_rules": "Inga valideringsregler definierade för språk: {language}",
2424
+ "error_reading_file": "Fel vid läsning av filen: {errorMessage}",
2425
+ "issue_forbidden_marker": "Innehåller förbjuden markör: {marker}",
2426
+ "issue_english_phrase": "Innehåller engelsk fras: \"{phrase}\"",
2427
+ "issue_english_words": "Innehåller engelska ord: {words}",
2428
+ "issue_missing_cyrillic": "Lång text ska innehålla kyrilliska tecken för ryska",
2429
+ "issue_missing_japanese": "Lång text ska innehålla japanska tecken",
2430
+ "issue_missing_chinese": "Lång text ska innehålla kinesiska tecken",
2431
+ "summary_title": "📊 SAMMANFATTNING AV VALIDERING",
2432
+ "overall_results_header": "📋 Totala resultat:",
2433
+ "total_files_validated": "Totalt antal validerade filer: {count}",
2434
+ "valid_files": "Giltiga filer: {count}",
2435
+ "invalid_files": "Ogiltiga filer: {count}",
2436
+ "total_violations": "Totalt antal överträdelser: {count}",
2437
+ "violations_by_file_header": "❌ BROTT PER FIL:"
2438
+ },
2439
+ "workflow": {
2440
+ "title": "Arbetsflödeshantering",
2441
+ "description": "Hantera i18n-arbetsflöden.",
2442
+ "select_workflow_file": "Välj en arbetsflödesfil att köra:",
2443
+ "no_workflow_files": "Inga arbetsflödesfiler hittades i arbetsflödeskatalogen.",
2444
+ "invalid_selection": "Ogiltigt val. Please enter a number corresponding to a workflow file.",
2445
+ "workflow_execution_started": "Starta arbetsflöde: {workflowName}",
2446
+ "workflow_execution_completed": "Arbetsflöde slutfört: {workflowName}",
2447
+ "workflow_execution_failed": "Arbetsflöde misslyckades: {workflowName} - {error}",
2448
+ "workflow_cancelled": "Arbetsflödeskörning avbröts.",
2449
+ "press_enter_to_continue": "Tryck på Enter för att fortsätta!",
2450
+ "starting": "🚀 Startar arbetsflöde...",
2451
+ "completed": "✅ Arbetsflöde slutfört framgångsrikt!",
2452
+ "checkReports": "📄 Kontrollera rapporter för detaljer.",
2453
+ "exitingCompleted": "📝 Arbetsflödet avslutat. Avslutar...",
2454
+ "summary": {
2455
+ "title": "📋 WORKFLOW SUMMARY",
2456
+ "separator": "===================",
2457
+ "completedAt": "🕐 Arbetsflöde slutfört på: {timestamp}",
2458
+ "initialViolations": "📊 Inledande överträdelser: {count}",
2459
+ "finalViolations": "📉 Slutliga överträdelser: {count}",
2460
+ "totalFixes": "🔧 Totala korrigeringar tillämpade: {count}",
2461
+ "improvement": "📈 Förbättring: {percentage}%",
2462
+ "stepResults": "📝 STEP RESULTS:",
2463
+ "stepDetail": "{number}. {status} {stepName}",
2464
+ "violations": "Överträdelser: {count}",
2465
+ "fixesApplied": "Tillämpade korrigeringar: {count}",
2466
+ "nextSteps": "💡 NEXT STEPS:",
2467
+ "congratulations": "🎉 Grattis! Alla språkfiler har nu perfekt språkrenhet!",
2468
+ "cicdIntegration": "✅ Överväg att integrera validatorn i din CI/CD-pipeline",
2469
+ "automatedChecks": "✅ Ställ in automatiska kontroller för nya översättningar",
2470
+ "greatProgress": "🎯 Stora framsteg! De flesta problem har lösts.",
2471
+ "manualReview": "🔍 Granska återstående överträdelser manuellt",
2472
+ "addMappings": "🌐 Överväg att lägga till fler översättningsmappningar för kantfall",
2473
+ "goodProgress": "📈 Bra framsteg gjorts, men mer arbete behövs.",
2474
+ "expandMappings": "🔧 Utöka automatiska översättningsmappningar",
2475
+ "professionalReview": "👥 Överväg manuell granskning av komplexa översättningar",
2476
+ "runAgain": "🔄 Kör arbetsflödet igen efter att ha lagt till fler mappningar",
2477
+ "limitedProgress": "⚠️ Begränsade framsteg. Manuell ingripande kan behövas.",
2478
+ "reviewMappings": "🔍 Granska översättningskartläggningar och lägg till saknade",
2479
+ "professionalServices": "👥 Överväg professionella översättningstjänster",
2480
+ "checkIssues": "🔧 Kontrollera om det finns systematiska problem i språkfiler",
2481
+ "success": "✅",
2482
+ "warning": "⚠️"
2483
+ }
2484
+ },
2485
+ "consoleI18nTester": {
2486
+ "found_target_file": "Hittade målfilen",
2487
+ "scanning_files_for_console_statements": "Skanna filer efter konsoluttalanden",
2488
+ "found_javascript_files": "Hittade javascript-filer",
2489
+ "console_i18n_analysis_results": "Analysresultat för konsol i18n",
2490
+ "total_console_statements": "Totalt konsoluttalanden",
2491
+ "translated_statements": "Översatta uttalanden",
2492
+ "hardcoded_statements": "Hårdkodade uttalanden",
2493
+ "translation_coverage": "Översättningstäckning",
2494
+ "coverage_by_file": "Täckning per fil",
2495
+ "file_coverage_stats": "Filtäckningsstatistik",
2496
+ "hardcoded_console_statements": "Hårdkodade konsoluttalanden",
2497
+ "file_header": "Filhuvud",
2498
+ "line_statement": "Linjeuppgift",
2499
+ "suggested_key": "Föreslagen nyckel",
2500
+ "suggested_replacement": "Föreslagen ersättning",
2501
+ "recommendations": "Rekommendationer",
2502
+ "recommendation_1": "Rekommendation 1",
2503
+ "recommendation_2": "Rekommendation 2",
2504
+ "recommendation_3": "Rekommendation 3",
2505
+ "recommendation_4": "Rekommendation 4",
2506
+ "translation_keys_to_add": "Översättningsnycklar att lägga till",
2507
+ "add_keys_instruction": "Lägg till nycklar instruktion",
2508
+ "perfect_translation_coverage": "Perfekt översättningstäckning",
2509
+ "all_statements_using_translation": "Alla uttalanden använder översättning",
2510
+ "i18n_console_translation_checker": "I18n konsolöversättningskontroll",
2511
+ "script_description_line1": "Skriptbeskrivningsrad1",
2512
+ "script_description_line2": "Skriptbeskrivningsrad2",
2513
+ "analysis_completed_in_duration": "Analys slutförd i varaktighet",
2514
+ "report_saved_to_path": "Rapport sparad till sökväg",
2515
+ "found_hardcoded_messages": "Hittade hårdkodade meddelanden",
2516
+ "all_console_messages_use_translation": "Alla konsolmeddelanden använder översättning"
2517
+ },
2518
+ "exportTranslations": {
2519
+ "createdDirectory": "Skapat katalog",
2520
+ "foundFiles": "Hittade filer",
2521
+ "createdTemplate": "Skapat mall",
2522
+ "skippedExisting": "Hoppade över existerande",
2523
+ "title": "Titel",
2524
+ "creatingTemplates": "Skapa mallar",
2525
+ "summary": "Sammanfattning",
2526
+ "summaryLanguages": "Sammanfattning Språk",
2527
+ "summaryFilesPerLanguage": "Sammanfattningsfiler per språk",
2528
+ "summaryTotalFiles": "Sammanfattning Totalt antal filer",
2529
+ "success": "Framgång",
2530
+ "location": "Plats",
2531
+ "nextSteps": "Nästa steg"
2532
+ },
2533
+ "dashboard": {
2534
+ "title": "Titel",
2535
+ "overview": "Översikt"
2536
+ },
2537
+ "auth": {
2538
+ "title": "Titel",
2539
+ "email": "E-post",
2540
+ "password": "Lösenord",
2541
+ "signIn": "Logga in",
2542
+ "forgotPassword": "Glömt lösenord",
2543
+ "signUp": "Registrera dig"
2544
+ },
2545
+ "checkUsage": {
2546
+ "usage_analysis_failed": "Användningsanalys misslyckades."
2547
+ },
2548
+ "completeTranslations": {
2549
+ "warning_could_not_parse_filepa": "Varning: kunde inte analysera filsökvägen: {filePath}"
2550
+ },
2551
+ "pressEnterToContinue": "Tryck på Enter för att fortsätta...",
2552
+ "status": {
2553
+ "exitingCompleted": "Arbetsflödet avslutat. Avslutar..."
2554
+ },
2555
+ "prompt": {
2556
+ "yesTokens": [
2557
+ "y",
2558
+ "ja"
2559
+ ],
2560
+ "noTokens": [
2561
+ "n",
2562
+ "inga"
2563
+ ]
2564
+ },
2565
+ "translate": {
2566
+ "title": "Översätt automatiskt",
2567
+ "sourceDirectory": {
2568
+ "title": "Källlokalkatalog",
2569
+ "currentProject": "Pågående projekt: {dir}",
2570
+ "accepted": "Godkänd: en absolut sökväg, eller en väg i förhållande till det aktuella projektet.",
2571
+ "localeRootExample": "./locales (välj sedan källspråk: sv)",
2572
+ "folderHint": "Mappen kan innehålla JSON-filer direkt, eller språkmappar som ./locales/en.",
2573
+ "defaultNotFound": "Standardkatalogen hittades inte: {dir}",
2574
+ "enterExisting": "Ange en befintlig katalog med JSON-lokalfiler.",
2575
+ "directoryNotFound": "Katalog hittades inte: {dir}",
2576
+ "enterFolderExample": "Ange en befintlig mapp, till exempel ./locales/en.",
2577
+ "notDirectory": "Inte en katalog: {dir}",
2578
+ "using": "Använda källkatalogen: {dir}"
2579
+ },
2580
+ "targetLanguages": {
2581
+ "title": "Målspråk",
2582
+ "allConfigured": "a) Alla konfigurerade målspråk: {languages}",
2583
+ "noneConfigured": "a) Alla konfigurerade målspråk: inga konfigurerade",
2584
+ "enterCodes": "Eller ange en eller flera komma-/mellanslagsseparerade språkkoder.",
2585
+ "sourceExcluded": "Källspråk \"{lang}\" kommer att exkluderas automatiskt.",
2586
+ "noneSelected": "Inga giltiga målspråk har valts. Avbryter.",
2587
+ "configureHint": "Konfigurera defaultLanguages ​​i .i18ntk-config, eller ange målkoder manuellt.",
2588
+ "selected": "Målspråk: {languages}"
2589
+ },
2590
+ "protection": {
2591
+ "title": "Skyddade termer och nycklar"
2592
+ },
2593
+ "common": {
2594
+ "default": "Standard: {value}",
2595
+ "examples": "Exempel:",
2596
+ "exampleValue": "Exempel: {value}",
2597
+ "examplesInline": "Exempel: {examples}",
2598
+ "pressEnterDefault": "Tryck på Enter för att använda standardinställningen.",
2599
+ "usingDefault": "Använder standard: {value}"
2600
+ },
2601
+ "sourceLanguage": {
2602
+ "title": "Källspråkskod",
2603
+ "hint": "Detta bör matcha språket för källans JSON-värden.",
2604
+ "using": "Använda källspråk: {lang}",
2605
+ "invalid": "Ogiltig språkkod. Använd 2+ tecken (t.ex. en, de, fr)."
2606
+ },
2607
+ "files": {
2608
+ "title": "Vilken fil/filer ska översättas?",
2609
+ "all": "a) Alla JSON-filer ({count}: {files})",
2610
+ "choicePrompt": "Val [a/all eller filnummer]:",
2611
+ "invalidChoice": "Ogiltigt val. Avbryter."
2612
+ },
2613
+ "dryRun": {
2614
+ "previewFor": "Torrkörningsförhandsvisning för \"{lang}\"..."
2615
+ },
2616
+ "confirm": {
2617
+ "proceed": "Fortsätt med faktisk översättning?",
2618
+ "yesNoPrompt": "[y]es / [n]o:",
2619
+ "cancelled": "Översättningen avbröts."
2620
+ },
2621
+ "run": {
2622
+ "translatingTo": "Översätta till \"{lang}\"...",
2623
+ "failedFor": "Misslyckades för \"{lang}\": {error}"
2624
+ },
2625
+ "summary": {
2626
+ "title": "Sammanfattning:",
2627
+ "complete": "Översättning klar!"
2628
+ },
2629
+ "nonInteractive": {
2630
+ "useDirect": "Icke-interaktivt läge. Använd direkt CLI istället:"
2631
+ },
2632
+ "errors": {
2633
+ "sourceDirectoryNotFound": "Källlokalkatalogen hittades inte: {dir}"
2634
+ }
2635
+ }
2636
+ }