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": "pt"
6
+ },
7
+ "common": {
8
+ "welcome": "Bem-vindo",
9
+ "hello": "Olá",
10
+ "goodbye": "Adeus",
11
+ "yes": "Sim",
12
+ "no": "Não",
13
+ "save": "Salvar",
14
+ "cancel": "Cancelar",
15
+ "delete": "Excluir",
16
+ "edit": "Editar",
17
+ "loading": "Carregando...",
18
+ "offlineTitle": "Você está off-line",
19
+ "offlineMessage": "Verifique sua conexão com a Internet",
20
+ "tryReconnect": "Tente se reconectar",
21
+ "logout": "Sair",
22
+ "login": "Conecte-se",
23
+ "amount": "Quantia",
24
+ "success": "Sucesso",
25
+ "error": "Erro",
26
+ "warning": "Aviso",
27
+ "info": "Informações:",
28
+ "debug": "Depurar",
29
+ "progress": "Progresso:",
30
+ "remaining": "Restante:",
31
+ "total": "Total:",
32
+ "completed": "7. Concluído com sucesso!",
33
+ "missing": "Ausente",
34
+ "partial": "Parcial",
35
+ "sameAsSource": "Igual à fonte:",
36
+ "formatMismatch": "Incompatibilidade de formato:",
37
+ "typeMismatch": "Incompatibilidade de tipo:",
38
+ "structureMismatch": "Incompatibilidade de estrutura:",
39
+ "invalidOption": "Opção inválida",
40
+ "separator": "==================================================",
41
+ "initializationFailed": "❌ Falha na inicialização: {error}",
42
+ "stackTrace": "Rastreamento de pilha: {stack}",
43
+ "pressEnterToContinue": "Pressione Enter para continuar...",
44
+ "pressEnterToReturn": "Pressione Enter para retornar ao menu principal...",
45
+ "stepCompleted": "Etapa '{stepName}' completou.",
46
+ "stepFailed": "Etapa '{stepName}' fracassado.",
47
+ "runningStep": "Etapa de execução: {stepName}",
48
+ "command": "Comando: {command}",
49
+ "startingWorkflow": "Iniciando fluxo de trabalho...",
50
+ "workflowCompleted": "Fluxo de trabalho concluído.",
51
+ "checkReports": "Verifique os relatórios para obter detalhes.",
52
+ "errorExecutingCommand": "Erro ao executar o comando: {error}",
53
+ "genericError": "❌ Erro: {error}",
54
+ "errors": {
55
+ "errors": "Erros:",
56
+ "genericError": "❌ Erro: {error}",
57
+ "initializationFailed": "❌ Falha na inicialização: {error}",
58
+ "initializationCancelled": "❌ Inicialização cancelada pelo usuário.",
59
+ "translationKeyNotFound": "Chave de tradução não encontrada: {key}",
60
+ "sourceDirectoryNotFound": "Diretório de origem não encontrado: {directory}",
61
+ "configLoadingFailed": "Falha no carregamento da configuração",
62
+ "invalidSourceDirectory": "Diretório de origem inválido: {directory}",
63
+ "securityViolation": "Violação de segurança detectada",
64
+ "authenticationFailed": "Falha na autenticação",
65
+ "sourceEqualsI18nWarn": "⚠️ sourceDir é igual a i18nDir ({sourceDir}). Caindo de volta para {fallback} para digitalização de origem."
66
+ },
67
+ "errorGeneratingStatusSummary": "Erro ao gerar resumo de status: {error}",
68
+ "errorRunningDebugTool": "Erro ao executar a ferramenta de depuração '{displayName}': {error}",
69
+ "errorReadingDebugLogs": "Erro ao ler logs de depuração: {error}",
70
+ "errorAnalyzingLogFile": "Erro ao analisar o arquivo de log: {error}",
71
+ "errorAnalyzingTranslationKeys": "Erro ao analisar chaves de tradução: {error}",
72
+ "errorAnalyzingTranslationCompleteness": "Erro ao analisar a conclusão da tradução: {error}",
73
+ "analyzingTranslationCompleteness": "Analisando a integridade da tradução em todos os idiomas...",
74
+ "i18nDirectoryNotFound": "⚠️ diretório i18n não encontrado: {i18nDir}",
75
+ "translationCompletenessAnalysisFailed": "⚠️ Falha na análise de integridade da tradução: {error}",
76
+ "failedToAnalyzeLanguage": "❌ Falha ao analisar o idioma {language}: {error}",
77
+ "errorReadingI18nDirectory": "❌ Erro ao ler o diretório i18n:",
78
+ "languageCompletenessTitle": "📈 INTEGRIDADE DA TRADUÇÃO POR LÍNGUA",
79
+ "errorAnalyzingTranslationFormat": "Erro ao analisar o formato da tradução: {error}",
80
+ "errorAnalyzingTranslationType": "Erro ao analisar o tipo de tradução: {error}",
81
+ "errorAnalyzingTranslationStructure": "Erro ao analisar a estrutura da tradução: {error}",
82
+ "errorAnalyzingTranslationFormatMismatch": "Erro ao analisar incompatibilidade de formato de tradução: {error}",
83
+ "errorAnalyzingTranslationTypeMismatch": "Erro ao analisar incompatibilidade de tipo de tradução: {error}",
84
+ "errorAnalyzingTranslationStructureMismatch": "Erro ao analisar incompatibilidade de estrutura de tradução: {error}",
85
+ "errorAnalyzingTranslationSameAsSource": "Erro ao analisar a tradução igual à fonte: {error}",
86
+ "title": "Status",
87
+ "nextStep1": "1. Verifique a análise de uso:",
88
+ "nextStep2": "2. Valide as traduções:",
89
+ "nextStep3": "3. Analise a integridade:",
90
+ "nextStep4": "4. Complete as traduções que faltam:",
91
+ "nextStep5": "5. Gere relatório resumido:",
92
+ "nextStep6": "6. Revise e finalize as traduções:",
93
+ "generating": "Gerando relatório resumido...",
94
+ "review": "Revendo traduções...",
95
+ "finalizing": "Finalizando traduções...",
96
+ "finalized": "Finalizado com sucesso!",
97
+ "warnings": "Avisos:",
98
+ "completedKeys": "Chaves concluídas:",
99
+ "missingKeys": "Chaves ausentes:",
100
+ "partialKeys": "Chaves parciais:",
101
+ "home": "Lar",
102
+ "settings": "Configurações",
103
+ "startingSettings": "🎛️ Iniciando Configurações CLI...",
104
+ "confirm": "Confirmar",
105
+ "errorExiting": "Erro ao sair."
106
+ },
107
+ "errors": {
108
+ "invalidOption": "❌ Opção inválida: {option}. Por favor, tente novamente.",
109
+ "readlineClosed": "O fluxo de entrada está fechado; rodando em modo não interativo.",
110
+ "noPackageJson": "Nenhum pacote.json encontrado. Não é possível detectar automaticamente a estrutura i18n.",
111
+ "noI18nDir": "Nenhum diretório i18n encontrado na raiz do projeto.",
112
+ "noI18nConfig": "Nenhum arquivo de configuração i18n encontrado na raiz do projeto.",
113
+ "errorReadingDebugLogs": "Erro ao ler logs de depuração: {error}"
114
+ },
115
+ "scanner": {
116
+ "help_message": "Uso do scanner de texto I18n: node i18ntk-scanner.js [opções] Opções: --source-dir <dir> Diretório de origem para verificar (padrão: ./src) --output <file> Arquivo de saída para resultados de verificação (padrão: ./i18ntk-scanner-report.json) --framework <name> Estrutura para destino (react, vue, angular, vanilla) --patterns <patterns> Padrões regex personalizados (separados por vírgula) --include-tests Inclui arquivos de teste na varredura --exclude-dirs <dirs> Diretórios a serem excluídos (separados por vírgula) --help Mostrar esta ajuda Exemplos: node i18ntk-scanner.js --source-dir=./src --framework=react node i18ntk-scanner.js --patterns 'console.log\\((.*?)\\)' --include-tests node i18ntk-scanner.js --output=./scan-results.json",
117
+ "help_options": {
118
+ "source_dir": "Diretório de origem para verificar problemas do i18n",
119
+ "output_dir": "Diretório para relatórios e resultados de verificação",
120
+ "framework": "Estrutura de destino (react, vue, angular, vanilla)",
121
+ "patterns": "Padrões regex personalizados para detecção de texto",
122
+ "exclude": "Padrões de arquivo a serem excluídos da verificação",
123
+ "output_report": "Gere relatório de verificação detalhado",
124
+ "min_length": "Comprimento mínimo do texto a considerar para tradução",
125
+ "max_length": "Comprimento máximo do texto a considerar para tradução",
126
+ "include_tests": "Incluir arquivos de teste no processo de digitalização"
127
+ },
128
+ "starting": "🔍 Iniciando o scanner de texto para estrutura: {framework}",
129
+ "sourceDirectory": "📁 Diretório de digitalização: {sourceDir}",
130
+ "frameworkDetected": "🎯 Estrutura detectada: {framework}",
131
+ "scanningFiles": "📊 Digitalização {fileCount} arquivos...",
132
+ "foundTexts": "📝 Encontrado {textCount} textos que requerem tradução",
133
+ "generatingReport": "📊 Gerando relatório detalhado...",
134
+ "reportSaved": "💾 Relatório de digitalização salvo em: {reportPath}",
135
+ "noTextsFound": "✅ Nenhum texto codificado em inglês encontrado",
136
+ "scanComplete": "🎉 Digitalização concluída com sucesso!",
137
+ "analysisTitle": "🔍 ANÁLISE DE VARREDURA DE TRADUÇÃO",
138
+ "fileSummary": "📄 {file}: {count} textos encontrados",
139
+ "textLocation": "📍Linha {line}: {text}",
140
+ "foundText": "Encontrado {count} possíveis instâncias de texto codificadas",
141
+ "context": "📝 Contexto: {context}",
142
+ "severity": "⚠️ Gravidade: {severity}",
143
+ "recommendation": "💡 Recomendação: {recommendation}",
144
+ "welcome": {
145
+ "title": "🎯 Bem-vindo ao Scanner de Texto!",
146
+ "description": "Esta ferramenta verifica seu código-fonte em busca de texto em inglês codificado que possa precisar de tradução."
147
+ },
148
+ "frameworkPrompt": {
149
+ "title": "🎯 Selecione Estrutura",
150
+ "available": "Estruturas disponíveis: react, vue, angular, vanilla",
151
+ "description": "Insira o tipo de estrutura (ou pressione Enter para detecção automática):",
152
+ "input": "Estrutura:"
153
+ },
154
+ "directoryPrompt": {
155
+ "title": "📁 Selecione o diretório de origem",
156
+ "current": "Diretório atual: {dir}",
157
+ "description": "Digite o diretório a ser verificado (ou pressione Enter para o atual):",
158
+ "input": "Diretório:"
159
+ },
160
+ "options": {
161
+ "includeTests": "Incluir arquivos de teste?",
162
+ "excludeDirs": "Diretórios a serem excluídos (separados por vírgula):",
163
+ "customPatterns": "Padrões personalizados para procurar (regex):"
164
+ },
165
+ "reportGenerated": "Relatório de verificação gerado: {path}"
166
+ },
167
+ "fixer": {
168
+ "help_message": "Uso do I18n Translation Fixer: node i18ntk-fixer.js [opções] Opções: --source-dir <dir> Diretório de origem para verificar (padrão: ./locales) --idiomas <langs> Lista separada por vírgulas de idiomas para corrigir --markers <markers> Marcadores separados por vírgula para tratar como não traduzidos --no-backup Ignorar a criação automática de backup --help Mostrar esta ajuda Exemplos: node i18ntk-fixer.js --languages ​​de,fr node i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED node i18ntk-fixer.js --no-backup",
169
+ "starting": "🚀 Iniciando correção de tradução para idiomas: {languages}",
170
+ "sourceDirectory": "📁 Diretório de origem: {sourceDir}",
171
+ "sourceLanguage": "🔤 Idioma de origem: {sourceLanguage}",
172
+ "markers": "🏷️ Marcadores para corrigir: {markers}",
173
+ "scanningLanguage": "📊 Digitalização {language}...",
174
+ "noLanguages": "❌ Nenhum idioma especificado para correção.",
175
+ "allComplete": "🎉 Todas as traduções já estão completas!",
176
+ "fullReportSaved": "📊 Relatório completo salvo em: {reportPath}",
177
+ "reviewReport": "Revise o relatório antes de prosseguir.",
178
+ "backupCreated": "💾 Backup criado com sucesso.",
179
+ "applyingFixes": "🔄 Aplicando correções...",
180
+ "fixingComplete": "✅ Correção da tradução concluída!",
181
+ "operationCancelled": "❌ Operação cancelada pelo usuário.",
182
+ "analysisTitle": "🔍 ANÁLISE DE FIXAÇÃO DE TRADUÇÃO",
183
+ "analysisSeparator": "==================================================",
184
+ "totalIssues": "Total de problemas encontrados: {totalIssues}",
185
+ "missingTranslations": "Traduções ausentes: {missing}",
186
+ "placeholderTranslations": "Traduções de espaço reservado: {placeholder}",
187
+ "noIssues": "✅ Nenhum problema encontrado. Todas as traduções estão completas.",
188
+ "detailedIssues": "📋 DETAILED ISSUES:",
189
+ "detailedSeparator": "--------------------------------------------------",
190
+ "filePath": "📄 {file} → {path}",
191
+ "missingKey": "❌FALTA: {source} → {new}",
192
+ "placeholderKey": "⚠️ LUGAR: \"{target}\" → \"{new}\"",
193
+ "moreIssues": "... e {count} mais questões. Verifique o arquivo do relatório para obter detalhes completos.",
194
+ "confirmationTitle": "🤔 Quer prosseguir com essas correções?",
195
+ "confirmationOptions": "Opções:",
196
+ "optionYes": "y - Sim, aplique todas as correções",
197
+ "optionNo": "n - Não, cancelar operação",
198
+ "optionShow": "s - Mostrar problemas detalhados",
199
+ "choicePrompt": "Sua escolha (s/n/s):",
200
+ "nonInteractiveMode": "⚡ Modo não interativo detectado - aplicando correções automaticamente...",
201
+ "reportGenerated": "📊 Relatório do fixador gerado: {path}",
202
+ "summary": "Resumo do fixador:",
203
+ "welcome": {
204
+ "title": "🎯 Bem-vindo ao Fixador de Tradução!",
205
+ "description": "Esta ferramenta irá ajudá-lo a corrigir traduções quebradas e espaços reservados em seus arquivos de localidade."
206
+ },
207
+ "markerPrompt": {
208
+ "title": "🏷️ Configurar marcadores de espaço reservado",
209
+ "description": "Insira os marcadores que indicam texto não traduzido (separados por vírgula):",
210
+ "currentDefaults": "Marcadores padrão: {markers}",
211
+ "input": "Marcadores (ou pressione Enter para padrões):"
212
+ },
213
+ "languagePrompt": {
214
+ "title": "🌍 Selecione os idiomas para corrigir",
215
+ "available": "Idiomas disponíveis: {languages}",
216
+ "description": "Insira os idiomas a serem corrigidos (separados por vírgula) ou pressione Enter para todos:",
217
+ "input": "Idiomas:",
218
+ "noLanguages": "Nenhum idioma encontrado para correção."
219
+ },
220
+ "directoryPrompt": {
221
+ "title": "📁 Selecione Diretório",
222
+ "current": "Diretório atual: {dir}",
223
+ "description": "Insira o diretório que contém seus arquivos de localidade (ou pressione Enter para atual):",
224
+ "input": "Diretório:"
225
+ },
226
+ "backupLocation": "Local de backup: {dir}",
227
+ "completed": "Correção concluída.",
228
+ "creatingBackup": "Criando backup em {dir}...",
229
+ "dryRunMode": "Modo de funcionamento a seco: {mode}",
230
+ "error": "Falha no fixador: {error}",
231
+ "fixing": "Consertando {language}...",
232
+ "foundLanguages": "Encontrado {count} idiomas: {languages}",
233
+ "languageFixed": "{language}: fixo {fixed} chave(s), ignorada {skipped}.",
234
+ "running": "Executando o corretor de tradução...",
235
+ "totalFixed": "Total fixo: {count}"
236
+ },
237
+ "autorun": {
238
+ "stepAnalyzeTranslations": "Analisar traduções",
239
+ "stepCompletedWithIcon": "✅ Concluído: {stepName}",
240
+ "stepValidateTranslations": "Validar traduções",
241
+ "stepRunning": "▶️ Passo {stepNumber}/{totalSteps}: {stepName}",
242
+ "separator": "==================================================",
243
+ "stepFailed": "❌ Falha: {stepName}",
244
+ "errorLabel": "Erro",
245
+ "autoRunScriptTitle": "🧪 Fluxo de trabalho de execução automática",
246
+ "usageTitle": "Uso",
247
+ "runAllSteps": "Execute: nó i18ntk-autorun.js",
248
+ "configureSettingsFirst": "Configuração: sinalizadores i18ntk-config.json ou CLI",
249
+ "runSpecificSteps": "Use --steps=1,3 ou --list para mostrar as etapas",
250
+ "showHelp": "--help para mais informações",
251
+ "examplesTitle": "Exemplos",
252
+ "configExample": "nó i18ntk-autorun.js --ui-linguagem=zh",
253
+ "stepsExample1": "nó i18ntk-autorun.js --steps=analisar,validar",
254
+ "stepsExample2": "nó i18ntk-autorun.js --list",
255
+ "customSettingsConfiguration": "Configurações personalizadas de execução automática",
256
+ "availableSteps": "Etapas disponíveis",
257
+ "startingAutoRunWorkflow": "🚀 Iniciando fluxo de trabalho de execução automática...",
258
+ "workflowIncludesSteps": "O fluxo de trabalho inclui {count} passos:",
259
+ "missingRequiredFile": "Arquivo obrigatório ausente: {file}",
260
+ "workflowStopped": "O fluxo de trabalho foi interrompido devido a uma falha.",
261
+ "workflowCompleted": "🎉 Fluxo de trabalho concluído!",
262
+ "successfulSteps": "Etapas bem-sucedidas: {count}",
263
+ "failedSteps": "Etapas com falha: {count}",
264
+ "stepInitializeProject": "Inicializar projeto",
265
+ "stepCheckUsage": "Verifique o uso da chave",
266
+ "stepGenerateSummary": "Gerar relatório resumido",
267
+ "runInitializationFirst": "Execute a inicialização primeiro.",
268
+ "initializationCheckPassed": "Verificação de inicialização aprovada.",
269
+ "runningStep": "Etapa de execução: {stepName}",
270
+ "commandLabel": "Comando: {command}",
271
+ "stepCompletedWithTime": "Etapa '{stepName}'concluído em {duration}EM.",
272
+ "stepCompleted": "Etapa '{stepName}' completou.",
273
+ "stepFailedWithError": "Etapa '{stepName}'falhou com erro: {error}",
274
+ "requiredStepFailed": "A etapa necessária falhou. Parando o fluxo de trabalho.",
275
+ "optionalStepFailed": "Falha na etapa opcional. Fluxo de trabalho contínuo.",
276
+ "stepRequired": "(Obrigatório)",
277
+ "stepOptional": "(Opcional)",
278
+ "startingExecution": "Iniciando a execução...",
279
+ "pressEnterToContinue": "Pressione Enter para continuar...",
280
+ "runningSelectedSteps": "Executando etapas selecionadas...",
281
+ "invalidStepNumber": "Número de etapa inválido: {stepNum}",
282
+ "executionReport": "Relatório de Execução:",
283
+ "requiredFailedSteps": "As etapas necessárias falharam: {count}",
284
+ "stepDetails": "Detalhes da etapa:",
285
+ "reportSavedTo": "Relatório salvo em: {path}",
286
+ "overallStatusSuccess": "SUCCESS",
287
+ "overallStatusFailed": "FAILED",
288
+ "overallStatus": "Estado geral: {status}",
289
+ "pressEnterForDefaults": "Pressione Enter para usar as configurações padrão para qualquer prompt.",
290
+ "sourceDirPrompt": "Insira o diretório de origem (padrão: {default}):",
291
+ "sourceLangPrompt": "Insira o idioma de origem (padrão: {default}):",
292
+ "targetLangsPrompt": "Insira os idiomas de destino (separados por vírgula, padrão: {default}):",
293
+ "translationMarkerPrompt": "Insira o marcador de tradução (padrão: {default}):",
294
+ "outputDirPrompt": "Insira o diretório de saída para relatórios (padrão: {default}):",
295
+ "settingsUpdatedSuccessfully": "Configurações atualizadas com sucesso!",
296
+ "errorConfiguringSettings": "Erro ao definir configurações: {error}",
297
+ "configurationComplete": "Configuração concluída.",
298
+ "runAutoRunCommand": "Agora você pode executar o comando de execução automática.",
299
+ "configurationFailed": "Falha na configuração: {error}",
300
+ "noValidStepNumbers": "Nenhum número de etapa válido foi fornecido.",
301
+ "autoRunFailed": "Falha na execução automática: {error}",
302
+ "stepCompleteTranslations": "Traduções completas",
303
+ "stepAnalyzeSizing": "Analisar Dimensionamento",
304
+ "stepCompletedIcon": "✅",
305
+ "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Etapa '{stepName}' correndo...",
306
+ "stepFailedIcon": "❌",
307
+ "translationLoadWarning": "Aviso: não foi possível carregar {lang} traduções",
308
+ "configReadError": "Erro ao ler {file}"
309
+ },
310
+ "analyze": {
311
+ "help_message": "Uso do Analisador de Tradução I18n: node i18ntk-analyze.js [opções] Opções: --source-dir <dir> Diretório de origem para verificar (padrão: ./src) --i18n-dir <dir> Diretório I18n (padrão: ./src/locales) --output-report Gera relatório detalhado --output-dir <dir> Diretório de saída para relatórios (padrão: ./reports) --help Mostrar esta ajuda Exemplos: node i18ntk-analyze.js --output-report node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales node i18ntk-analyze.js --output-dir=./análise --output-report",
312
+ "source_directory": "📁 Diretório de origem: {sourceDir}",
313
+ "i18n_directory": "🌐 Diretório I18n: {i18nDir}",
314
+ "loading_translation_files": "📋 Carregando arquivos de tradução...",
315
+ "sourceDirectoryLabel": "📁 Diretório de fontes: {sourceDir}",
316
+ "sourceLanguageLabel": "🌍 Idioma de origem: {sourceLanguage}",
317
+ "strictModeLabel": "⚙️ Modo Estrito: {mode}",
318
+ "found_translation_files_count": "✅ Encontrado {count} arquivos de tradução",
319
+ "analyzing_translations": "🔍 Analisando traduções...",
320
+ "analysis_completed_successfully": "🎉 Análise concluída com sucesso!",
321
+ "analysis_results": "📊 ANALYSIS RESULTS",
322
+ "language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}% traduzido)",
323
+ "sample_missing_keys": "Exemplo de chaves ausentes:",
324
+ "missing_key": "- {key}",
325
+ "and_more_missing": "...e {count} mais.",
326
+ "sample_unused_keys": "Exemplos de chaves não utilizadas:",
327
+ "unused_key": "- {key}",
328
+ "and_more_unused": "...e {count} mais.",
329
+ "recommendations": "📋 RECOMENDAÇÕES",
330
+ "add_missing_translations": "💡 Adicione traduções ausentes para melhorar a cobertura.",
331
+ "remove_unused_translations": "💡 Remova traduções não utilizadas para manter seu projeto limpo.",
332
+ "next_steps": "📋 NEXT STEPS",
333
+ "review_analysis_results": "1. Revise os resultados da análise no console ou no relatório gerado.",
334
+ "run_with_output_report": "2. Execute com --output-report para obter um relatório detalhado.",
335
+ "add_or_remove_translations": "3. Adicione traduções ausentes ou remova as não utilizadas.",
336
+ "rerun_analysis": "4. Execute novamente a análise para verificar as melhorias.",
337
+ "analysis_summary": "📊 ANALYSIS SUMMARY",
338
+ "source_files_scanned": "Arquivos de origem verificados: {fileCount}",
339
+ "translation_files_checked": "Arquivos de tradução verificados: {translationFileCount}",
340
+ "total_keys": "Chaves totais: {totalKeys}",
341
+ "translated_keys": "Chaves traduzidas: {translatedKeys}",
342
+ "missing_keys": "Chaves ausentes: {missingKeys}",
343
+ "unused_keys": "Chaves não utilizadas: {unusedKeys}",
344
+ "translation_coverage": "Cobertura de tradução: {coverage}%",
345
+ "analysis_passed_for_language": "✅ Análise aprovada para {language}",
346
+ "analysis_failed_for_language": "❌ Falha na análise para {language} ({missingKeys} ausente, {unusedKeys} não utilizado)",
347
+ "starting": "🔍 Iniciando análise de tradução...",
348
+ "foundLanguages": "📋 Encontrado {count} idiomas para analisar: {languages}",
349
+ "analyzing": "🔄 Analisando {language}...",
350
+ "reportTitle": "📊 RELATÓRIO DE ANÁLISE DE TRADUÇÃO",
351
+ "generated": "Gerado: {timestamp}",
352
+ "status": "Status: {translated}/{total} chaves ({percentage}% traduzido)",
353
+ "filesAnalyzed": "Arquivos analisados: {analyzed}/{total}",
354
+ "keysNeedingTranslation": "Chaves que precisam de tradução: {count}",
355
+ "fileBreakdown": "📋 DESCRIÇÃO DE ARQUIVOS",
356
+ "error": "Erro",
357
+ "completed": "✅ Análise concluída para {language}",
358
+ "progress": "📊 Progresso geral: {translated}/{total} idiomas processados",
359
+ "reportSaved": "Relatório salvo: {reportPath}",
360
+ "summary": "📊 ANALYSIS SUMMARY",
361
+ "finished": "✅ Análise concluída com sucesso!",
362
+ "statusFileMissing": "❌ Arquivo de tradução ausente",
363
+ "sourceKeys": "📊 Chaves de origem: {count}",
364
+ "translation": "📊 Tradução: {translated}/{total} ({percentage}%)",
365
+ "structure": "🗂️ Estrutura: {status}",
366
+ "consistent": "Consistente",
367
+ "inconsistent": "Inconsistente",
368
+ "missingKeys": "Chaves ausentes: {count}",
369
+ "extraKeys": "Chaves extras: {count}",
370
+ "issues": "⚠️ Problemas encontrados: {count}",
371
+ "issueType": {
372
+ "not_translated": "Não traduzido: {count}",
373
+ "empty_value": "Valores vazios: {count}",
374
+ "partial_translation": "Traduções parciais: {count}",
375
+ "format_mismatch": "Incompatibilidades de formato: {count}",
376
+ "type_mismatch": "Incompatibilidades de tipo: {count}",
377
+ "structure_mismatch": "Incompatibilidades de estrutura: {count}",
378
+ "same_as_source": "Igual à fonte: {count}"
379
+ },
380
+ "keysToTranslate": "📋 CHAVES PARA TRADUZIR",
381
+ "key": "Chave",
382
+ "english": "Inglês",
383
+ "needsTranslation": "PRECISA DE TRADUÇÃO",
384
+ "andMoreKeys": "...e {count} mais chaves.",
385
+ "noLanguages": "⚠️ Nenhum idioma de destino encontrado.",
386
+ "languageStats": "{language}: {percentage}% completo ({translated}/{total} chaves)",
387
+ "invalidReportFilePath": "Caminho de arquivo de relatório inválido",
388
+ "failedToWriteReportFile": "Falha ao gravar o arquivo de relatório com segurança"
389
+ },
390
+ "complete": {
391
+ "configLoadedSuccessfully": "Configuração carregada com sucesso",
392
+ "configLoadingFailed": "Falha no carregamento da configuração",
393
+ "sourceLanguageNotFound": "Diretório do idioma de origem não encontrado: {sourceLanguage}",
394
+ "couldNotParseTarget": "Não foi possível analisar o arquivo de destino: {file}",
395
+ "couldNotParseSource": "Não foi possível analisar o arquivo de origem: {file}",
396
+ "reportGenerated": "Relatório gerado: {path}",
397
+ "generateReportPrompt": "Gostaria de gerar um relatório?",
398
+ "title": "🌍 CONCLUSÃO DA TRADUÇÃO I18NTK",
399
+ "separator": "============================================================",
400
+ "sourceDir": "📁 Diretório de origem: {sourceDir}",
401
+ "sourceLanguage": "🌐 Idioma de origem: {sourceLanguage}",
402
+ "dryRunMode": "🧪 Modo de teste - nenhuma alteração será feita",
403
+ "languages": "🌍 Idiomas disponíveis: {languages}",
404
+ "addingMissingKeys": "➕ Adicionando chaves ausentes aos arquivos de tradução...",
405
+ "processing": "🔄 Processamento {language}...",
406
+ "addedKeys": "✅ Adicionado {count} chaves faltando",
407
+ "noChangesNeeded": "✅ Não são necessárias alterações para {language}",
408
+ "summaryTitle": "📊 RESUMO DA CONCLUSÃO",
409
+ "totalChanges": "📝 Mudanças totais: {totalChanges}",
410
+ "languagesProcessed": "🌍 Idiomas processados: {languagesProcessed}",
411
+ "missingKeysAdded": "➕ Chaves ausentes adicionadas: {missingKeysAdded}",
412
+ "nextStepsTitle": "📋 NEXT STEPS",
413
+ "nextStep1": "1. Execute a análise de uso:",
414
+ "nextStep2": "nó i18ntk-usage.js --output-report",
415
+ "nextStep3": "2. Valide as traduções:",
416
+ "nextStep4": "nó i18ntk-validate.js",
417
+ "nextStep5": "3. Analise padrões:",
418
+ "nextStep6": "nó i18ntk-analyze.js",
419
+ "allKeysAvailable": "🎉 Todas as chaves de tradução já estão disponíveis!",
420
+ "runWithoutDryRun": "💡 Execute sem --dry-run para aplicar as alterações",
421
+ "deletingOldReport": "🗑️ Excluindo relatório antigo...",
422
+ "generatingFreshAnalysis": "📊 Gerando novas análises de uso...",
423
+ "couldNotGenerate": "❌ Não foi possível gerar análise de uso",
424
+ "reportNotFound": "📋 Relatório de uso não encontrado. Usando chaves comuns...",
425
+ "foundMissingKeys": "📋 Encontrado {count} faltando chaves na análise de uso",
426
+ "couldNotParse": "❌ Não foi possível analisar o relatório de uso. Usando chaves comuns...",
427
+ "errorDuringCompletion": "❌ Erro durante a conclusão: {error}",
428
+ "fatalError": "❌ Erro fatal: {error}",
429
+ "configurationValidationFailed": "Falha na validação da configuração: campos obrigatórios ausentes"
430
+ },
431
+ "sizing": {
432
+ "separator": "================================================================================",
433
+ "lineSeparator": "--------------------------------------------------------------------------------",
434
+ "analysisStats": "{stats}",
435
+ "sourceDirectoryLabel": "📁 Diretório de origem: {sourceDir}",
436
+ "sourceLanguageLabel": "🌍 Idioma de origem: {sourceLanguage}",
437
+ "strictModeLabel": "⚙️ Modo estrito: {mode}",
438
+ "invalidSourceDirectoryError": "Caminho do diretório de origem inválido: {sourceDir}",
439
+ "sourceDirectoryNotFoundError": "Diretório de origem não encontrado: {sourceDir}",
440
+ "invalidOutputDirectoryError": "Caminho do diretório de saída inválido: {outputDir}",
441
+ "invalidReportFileError": "Caminho de arquivo de relatório inválido",
442
+ "problematic_keys": "Chaves problemáticas: {problematicKeys}",
443
+ "problematicKeysLabel": "Chaves problemáticas: {problematicKeys}",
444
+ "long_translations": "Traduções longas: {longTranslations}",
445
+ "failedToSaveReportError": "Falha ao salvar o relatório com segurança",
446
+ "invalidCsvFileError": "Caminho de arquivo CSV inválido",
447
+ "failedToSaveCsvError": "Falha ao salvar o relatório CSV com segurança",
448
+ "fatalError": "❌ Falha na análise de dimensionamento: {error}",
449
+ "starting_i18n_sizing_analysis": "Iniciando a análise de dimensionamento do i18n...",
450
+ "source_directory": "Diretório de origem: {sourceDir}",
451
+ "found_languages": "Idiomas encontrados: {languages}",
452
+ "analyzing_file_sizes": "Analisando tamanhos de arquivo...",
453
+ "analyzing_translation_content": "Analisando o conteúdo da tradução...",
454
+ "generating_size_comparisons": "Gerando comparações de tamanho...",
455
+ "no_languages_found_for_comparison": "Nenhum idioma encontrado para comparação",
456
+ "sizing_analysis_results": "Resultados da análise de dimensionamento I18n",
457
+ "file_sizes_title": "Tamanhos de arquivo",
458
+ "file_sizes_header": "Caracteres de linhas de tamanho de idioma (KB)",
459
+ "file_size_row": "{lang} {sizeKB} {lines} {characters}",
460
+ "language_statistics_title": "Estatísticas de idioma",
461
+ "language_stats_header": "Chaves de idioma Caracteres Comprimento médio Comprimento máximo Vazio Longo",
462
+ "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
463
+ "size_variations_title": "Variações de tamanho",
464
+ "size_variations_header": "Diferença de caracteres de idioma % Diff problemática",
465
+ "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
466
+ "problematic_yes": "Sim",
467
+ "problematic_no": "Não",
468
+ "recommendations_title": "Recomendações",
469
+ "recommendation_item": "{index}. {recommendation}",
470
+ "problematic_key_detail": "{index}. Chave: '{key}' - Variações: {variations}",
471
+ "generating_detailed_report": "Gerando relatório detalhado...",
472
+ "keysHaveSignificantSizeVariations": "as chaves têm variações significativas de tamanho",
473
+ "longTranslationsDetected": "${lang} tem traduções de ${data.longKeys} com mais de 100 caracteres - considere dividi-las",
474
+ "longer": "mais longo",
475
+ "shorter": "mais curto",
476
+ "review_translations": "Considere revisar {lang} traduções - eles são {percentageDifference}% {comparison} do que a linha de base",
477
+ "report_saved_to": "Relatório salvo em: {reportPath}",
478
+ "considerReviewingTranslations": "Considere revisar ${lang} traduções - elas são ${data.percentageDifference}% maiores que a linha de base",
479
+ "csv_report_saved_to": "Relatório CSV salvo em: {csvPath}",
480
+ "human_report_saved": "Relatório legível salvo: {reportPath}",
481
+ "folder_summary_title": "Resumo da pasta",
482
+ "folder_summary_table_header": "Tamanho do idioma (KB) Chaves Comprimento médio Total de caracteres",
483
+ "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
484
+ "language_comparison_title": "Comparação de idiomas",
485
+ "language_comparison_row": "{lang}: {diff} caracteres ({percent}%) {status}",
486
+ "summary_stats": "📊 Resumo: {totalLanguages} línguas, {totalKeys} chaves - Relatórios salvos em {reportPath}",
487
+ "detailedKeysDescription": "Mostrar análise detalhada em nível de chave no console",
488
+ "too_many_keys_warning": "⚠️ Muitas chaves para exibir no console - verifique o arquivo de relatório detalhado para análise completa",
489
+ "no_translation_files_found": "Nenhum arquivo de tradução encontrado",
490
+ "analysis_completed": "Análise concluída em {duration}EM",
491
+ "analysis_failed": "Falha na análise: {errorMessage}",
492
+ "starting_analysis": "Iniciando análise...",
493
+ "found_files": "Encontrado {count} arquivos",
494
+ "failed_to_parse_language_error": "Falha ao analisar {language} traduções: {errorMessage}",
495
+ "recommendations": {
496
+ "keys_have_significant_size_variations": "as chaves têm variações significativas de tamanho",
497
+ "consider_reviewing_translations": "Considere revisar {lang} traduções - eles são {percentageDifference}% {comparison} do que a linha de base",
498
+ "long_translations_detected": "{lang} tem {longKeys} traduções mais longo que {threshold} personagens - considere dividi-los"
499
+ },
500
+ "detailed_key_analysis_title": "Análise detalhada da chave",
501
+ "key_analysis_detail": "{lang}: {length} caracteres ({status}) - {translation}",
502
+ "key_analysis_header": "Chave: {key}",
503
+ "status_empty": "vazio",
504
+ "status_long": "longo",
505
+ "status_ok": "OK"
506
+ },
507
+ "usage": {
508
+ "help_message": "Uso do Analisador de Uso I18n: nó i18ntk-usage.js [opções] Opções: --source-dir <dir> Diretório de origem para verificar (padrão: ./src) --i18n-dir <dir> Diretório I18n (padrão: ./src/locales) --output-report Gera relatório detalhado --output-dir <dir> Diretório de saída para relatórios (padrão: ./reports) --help Mostrar esta ajuda Exemplos: node i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./análise --output-report",
509
+ "source_directory_thissourcedir": "📁 Diretório de origem: {sourceDir}",
510
+ "translationCompletenessTitle": "🌍 Completude da tradução:",
511
+ "i18n_directory_thisi18ndir": "🌐 Diretório I18n: {i18nDir}",
512
+ "failed_to_parse_filename_error": "⚠️ Falha ao analisar {fileName}: {errorMessage}",
513
+ "analyzing_source_files": "🔍 Analisando arquivos de origem...",
514
+ "found_files_in_source": "📂 Encontrado {numFiles} arquivos no diretório de origem",
515
+ "found_thisusedkeyssize_unique_": "🎯 Encontrado {usedKeysSize} chaves usadas exclusivas",
516
+ "total_key_usages_totalkeysfoun": "📊 Total de usos principais: {totalKeysFound}",
517
+ "loading_available_translation_": "📋 Carregando chaves de tradução disponíveis...",
518
+ "found_thisavailablekeyssize_av": "✅ Encontrado {availableKeysSize} chaves disponíveis",
519
+ "foundTranslationFiles": "✅ Encontrado {count} arquivos de tradução",
520
+ "errorReadingI18nDirectory": "⚠️ Erro ao ler o diretório i18n: {error}",
521
+ "pressEnterToReturnToMenu": "📝 Pressione Enter para retornar ao menu principal...",
522
+ "notTranslatedKeysTotal": "⚠️ Chaves não traduzidas: {total}",
523
+ "noSourceFilesFound": "⚠️ Nenhum arquivo de origem encontrado no diretório de origem.",
524
+ "reviewNotTranslatedKeys": "💡 Revise as chaves não traduzidas",
525
+ "analysisCompletedSuccessfully": "🎉 Análise concluída com sucesso!",
526
+ "detectedSourceDirectory": "Diretório de origem detectado: {sourceDir}",
527
+ "detectedI18nDirectory": "Diretório i18n detectado: {i18nDir}",
528
+ "fileInfo": "📄 {namespace}: {keys} chaves",
529
+ "failedToAnalyzeUsage": "❌ Falha ao analisar o uso: {error}",
530
+ "failedToAnalyzeFile": "❌ Falha ao analisar arquivo: {error}",
531
+ "failedToExtractKeys": "❌ Falha ao extrair chaves de {filePath}: {error}",
532
+ "analysisFailedError": "❌ Falha na análise: {error}",
533
+ "analyzerInitialized": "Analisador inicializado",
534
+ "analyzerInitFailed": "Falha na inicialização do analisador: {error}",
535
+ "argsParsed": "Argumentos analisados",
536
+ "processedFiles": "Processado {processedFiles} de {totalFiles} arquivos.",
537
+ "argsParseFailed": "Falha na análise do argumento: {error}",
538
+ "translationDiscoveryError": "Erro de descoberta de tradução: {error}",
539
+ "fileTraversalError": "Erro de passagem de arquivo: {error}",
540
+ "sourceEqualsI18nWarn": "{reason}. A análise de uso não verificará os arquivos de localidade como código-fonte.",
541
+ "i18nEqualsSourceWarn": "⚠️ O diretório I18n e o diretório de origem são iguais. Isso pode causar problemas com a análise.",
542
+ "usageAnalysisFailed": "⚠️ Falha na análise de uso: {error}",
543
+ "translationFileParseError": "⚠️ Erro de análise do arquivo de tradução: {error}",
544
+ "translationKeysLoadError": "⚠️ Erro ao carregar chaves de tradução: {error}",
545
+ "languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% traduzido)",
546
+ "missingKeysCount": "⚠️ Chaves faltantes: {count}",
547
+ "analyzingTranslationCompleteness": "Analisando a integridade da tradução...",
548
+ "unusedKeysCount": "Chaves não utilizadas: {count}",
549
+ "usedKeysCount": "Chaves usadas: {count}",
550
+ "availableKeysCount": "Chaves disponíveis: {count}",
551
+ "analysisResults": "Resultados da análise:",
552
+ "i18nDirectoryNotFound": "⚠️ Diretório I18n não encontrado. Por favor, verifique o caminho.",
553
+ "sourceDirectoryNotFound": "⚠️ Diretório de origem não encontrado: {dir}",
554
+ "checkUsage": {
555
+ "title": "🔍 I18NTK USAGE ANALYSIS",
556
+ "analyzing_source_files": "🔍 Analisando arquivos de origem...",
557
+ "source_directory_thissourcedir": "📁 Diretório de origem: {sourceDir}",
558
+ "i18n_directory_thisi18ndir": "📁 diretório i18n: {i18nDir}",
559
+ "found_files_in_source": "✅ Encontrado {numFiles} arquivos no diretório de origem",
560
+ "no_source_files_found": "⚠️ Nenhum arquivo de origem encontrado no diretório especificado",
561
+ "processedFiles": "📊 Processado {processedFiles} de {totalFiles} arquivos",
562
+ "failedToProcessFile": "❌ Falha ao processar",
563
+ "found_thisusedkeyssize_unique_": "🔍 Encontrado {usedKeysSize} chaves usadas exclusivas",
564
+ "total_key_usages_totalkeysfoun": "📊 Total de usos principais: {totalKeysFound}",
565
+ "loading_available_translation_": "📂 Carregando chaves de tradução disponíveis...",
566
+ "found_thisavailablekeyssize_av": "✅ Encontrado {availableKeysSize} chaves disponíveis",
567
+ "message": "Analisando o uso da chave de tradução em seu projeto...",
568
+ "usage_analysis_results": "📊 USAGE ANALYSIS RESULTS",
569
+ "source_files_scanned_thisfileu": "📁 Arquivos de origem verificados: {fileUsageSize}",
570
+ "available_translation_keys_thi": "✅ Chaves de tradução disponíveis: {availableKeysSize}",
571
+ "used_translation_keys_thisused": "🔍 Chaves de tradução usadas: {usedKeysSize}",
572
+ "dynamic_keys_detected_dynamick": "⚡ Chaves dinâmicas detectadas: {dynamicKeysLength}",
573
+ "unused_keys_unusedkeyslength": "🗑️ Chaves não utilizadas: {unusedKeysLength}",
574
+ "missing_keys_missingkeyslength": "❌ Chaves faltantes: {missingKeysLength}",
575
+ "translation_completeness_title": "📈 INTEGRIDADE DA TRADUÇÃO",
576
+ "language_completeness_stats": "{language}: {translated}/{total} chaves ({percentage}%)",
577
+ "n_sample_unused_keys": "🗑️ AMOSTRA DE CHAVES NÃO UTILIZADAS (5 primeiras):",
578
+ "key": "🔑 {key}",
579
+ "and_unusedkeyslength_5_more": "... e {count} mais chaves não utilizadas",
580
+ "n_sample_missing_keys": "❌ AMOSTRA DE CHAVES FALTANTES (5 primeiras):",
581
+ "and_missingkeyslength_5_more": "... e {count} mais chaves perdidas",
582
+ "n_generating_detailed_report": "📊 Gerando relatório detalhado...",
583
+ "report_saved_reportpath": "📄 Relatório salvo: {reportPath}",
584
+ "n_recommendations": "💡 RECOMENDAÇÕES:",
585
+ "consider_removing_unused_trans": "🗑️ Considere remover traduções não utilizadas para reduzir o tamanho do pacote",
586
+ "add_missing_translation_keys_t": "➕ Adicione chaves de tradução ausentes para manter a consistência",
587
+ "review_dynamic_keys_manually_t": "🔍 Revise as chaves dinâmicas manualmente (elas podem ser válidas)",
588
+ "all_translation_keys_are_prope": "✅ Todas as chaves de tradução são usadas corretamente!",
589
+ "n_next_steps": "🎯 NEXT STEPS:",
590
+ "2_check_the_detailed_report_fo": "2. Verifique o relatório detalhado para questões específicas",
591
+ "help_message": "Uso do Analisador de Uso I18n: nó i18ntk-usage.js [opções] Opções: --source-dir <dir> Diretório de origem para verificar (padrão: ./src) --i18n-dir <dir> Diretório I18n (padrão: ./src/locales) --output-report Gera relatório detalhado --output-dir <dir> Diretório de saída para relatórios (padrão: ./reports) --help Mostrar esta ajuda Exemplos: node i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./análise --output-report",
592
+ "1_review_the_analysis_results": "1. Revise os resultados da análise no console ou no relatório gerado.",
593
+ "2_run_with_outputreport_for_de": "2. Execute com --output-report para obter um relatório detalhado.",
594
+ "3_remove_unused_keys_or_add_mi": "3. Remova chaves não utilizadas ou adicione chaves ausentes ao seu código-fonte.",
595
+ "4_rerun_analysis_to_verify_imp": "4. Execute novamente a análise para verificar as melhorias.",
596
+ "noSourceFilesFound": "Nenhum arquivo de origem encontrado para análise.",
597
+ "i18nDirectoryNotFound": "Diretório I18n não encontrado: {i18nDir}",
598
+ "noTranslationLanguagesFound": "Nenhum idioma de tradução encontrado.",
599
+ "failedToAnalyzeFile": "Falha ao analisar o arquivo {filePath}: {error}",
600
+ "failedToAnalyzeLanguage": "Falha ao analisar o idioma {language}: {error}",
601
+ "translationCompletenessAnalysisFailed": "Falha na análise de integridade da tradução: {error}",
602
+ "n": "\\n"
603
+ },
604
+ "complete": {
605
+ "configLoadedSuccessfully": "Configuração carregada com sucesso",
606
+ "configLoadingFailed": "Falha no carregamento da configuração",
607
+ "title": "🌍 CONCLUSÃO DA TRADUÇÃO I18NTK",
608
+ "separator": "============================================================",
609
+ "sourceDir": "📁 Diretório de origem: {sourceDir}",
610
+ "sourceLanguage": "🌐 Idioma de origem: {sourceLanguage}",
611
+ "dryRunMode": "🧪 Modo de teste - nenhuma alteração será feita",
612
+ "languages": "🌍 Idiomas disponíveis: {languages}",
613
+ "addingMissingKeys": "➕ Adicionando chaves ausentes aos arquivos de tradução...",
614
+ "processing": "🔄 Processamento {language}...",
615
+ "addedKeys": "✅ Adicionado {count} chaves faltando",
616
+ "changeDetails": "📝 {file}: {key}",
617
+ "andMore": "...e {count} mais",
618
+ "noChangesNeeded": "✅ Não são necessárias alterações para {language}",
619
+ "summaryTitle": "📊 RESUMO DA CONCLUSÃO",
620
+ "totalChanges": "📝 Mudanças totais: {totalChanges}",
621
+ "languagesProcessed": "🌍 Idiomas processados: {languagesProcessed}",
622
+ "missingKeysAdded": "➕ Chaves ausentes adicionadas: {missingKeysAdded}",
623
+ "nextStepsTitle": "📋 NEXT STEPS",
624
+ "nextStep1": "1. Execute a análise de uso:",
625
+ "nextStep2": "nó i18ntk-usage.js --output-report",
626
+ "nextStep3": "2. Valide as traduções:",
627
+ "nextStep4": "nó i18ntk-validate.js",
628
+ "nextStep5": "3. Analise padrões:",
629
+ "nextStep6": "nó i18ntk-analyze.js",
630
+ "allKeysAvailable": "🎉 Todas as chaves de tradução já estão disponíveis!",
631
+ "runWithoutDryRun": "💡 Execute sem --dry-run para aplicar as alterações",
632
+ "deletingOldReport": "🗑️ Excluindo relatório antigo...",
633
+ "generatingFreshAnalysis": "📊 Gerando novas análises de uso...",
634
+ "couldNotGenerate": "❌ Não foi possível gerar análise de uso",
635
+ "reportNotFound": "📋 Relatório de uso não encontrado. Usando chaves comuns...",
636
+ "foundMissingKeys": "📋 Encontrado {count} faltando chaves na análise de uso",
637
+ "couldNotParse": "❌ Não foi possível analisar o relatório de uso. Usando chaves comuns..."
638
+ },
639
+ "noTranslationLanguagesFound": "Nenhum idioma de tradução encontrado",
640
+ "failedToAnalyzeLanguage": "Falha ao analisar o idioma",
641
+ "translationCompletenessAnalysisFailed": "Falha na análise de integridade da tradução",
642
+ "failedToProcessFile": "Falha ao processar o arquivo:",
643
+ "failedToSaveReport": "Falha ao salvar o relatório de uso: {error}",
644
+ "i18nDirectoryDoesNotExist": "O diretório I18n não existe: {dir}",
645
+ "reportSavedTo": "Relatório de uso salvo em: {reportPath}",
646
+ "sourceDirectoryDoesNotExist": "O diretório de origem não existe: {dir}",
647
+ "noSourceDirectoryConfigured": "(nenhum configurado)"
648
+ },
649
+ "validate": {
650
+ "help_message": "Uso do validador de tradução I18n: nó i18ntk-validate.js [opções] Opções: --source-dir <dir> Diretório de origem para verificar (padrão: ./src) --i18n-dir <dir> Diretório I18n (padrão: ./src/locales) --output-report Gera relatório detalhado --output-dir <dir> Diretório de saída para relatórios (padrão: ./reports) --help Mostrar esta ajuda Exemplos: node i18ntk-validate.js --output-report node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales node i18ntk-validate.js --output-dir=./análise --output-report",
651
+ "title": "🔍 Validador de tradução I18n",
652
+ "message": "Iniciando processo de validação...",
653
+ "sourceDirectory": "📁 Diretório de origem: {dir}",
654
+ "sourceLanguage": "🌍 Idioma de origem: {sourceLanguage}",
655
+ "strictMode": "⚙️ Modo estrito: {mode}",
656
+ "noTargetLanguages": "Nenhum idioma de destino configurado; ignorando a validação de destino. Adicione idiomas através de \"i18ntk init --languages=de,fr\".",
657
+ "validatingLanguages": "🌍 Validando idiomas: {langs}",
658
+ "validatingLanguage": "🔍 Validando o idioma: {lang}",
659
+ "filesCount": "📄 Arquivos: {count}",
660
+ "keysCount": "🔑 Chaves: {count}",
661
+ "missingFilesCount": "📁 Arquivos ausentes: {count}",
662
+ "syntaxErrorsCount": "❌ Erros de sintaxe: {count}",
663
+ "translationPercentage": "🎯 Tradução: {percentage}% ({translated}/{total} chaves)",
664
+ "validationSummary": "📊 RESUMO DE VALIDAÇÃO",
665
+ "validation_failed": "❌ Falha na validação: {error}",
666
+ "totalErrors": "❌ Erros totais: {count}",
667
+ "totalWarnings": "⚠️ Avisos totais: {count}",
668
+ "errorsSection": "❌ ERRORS",
669
+ "warningsSection": "⚠️ WARNINGS",
670
+ "recommendationsSection": "💡 RECOMENDAÇÕES",
671
+ "fixErrorsFirst": "1. Corrija todos os erros primeiro",
672
+ "resolveMissingFilesAndSyntaxErrors": "1. Resolva arquivos ausentes e erros de sintaxe",
673
+ "fixStructuralInconsistencies": "2. Corrija inconsistências estruturais",
674
+ "completeMissingTranslations": "3. Complete as traduções que faltam",
675
+ "rerunValidation": "4. Execute novamente a validação para verificar as correções",
676
+ "addressWarnings": "Aborde os avisos para melhorar a qualidade",
677
+ "reviewWarnings": "Revise os avisos e corrija quando apropriado",
678
+ "considerRunningWithStrict": "2. Considere executar com o sinalizador --strict para uma validação mais rigorosa",
679
+ "allValidationsPassed": "🎉 Todas as validações foram aprovadas!",
680
+ "considerRunningUsageAnalysis": "Considere executar a análise de uso: nó i18ntk-usage.js",
681
+ "deletedOldReport": "🗑️ Relatório de validação antigo excluído",
682
+ "sourceDir": "📁 Diretório de origem: {sourceDir}",
683
+ "i18nDir": "🌐 Diretório I18n: {i18nDir}",
684
+ "loadingTranslationFiles": "📋 Carregando arquivos de tradução...",
685
+ "foundTranslationFilesCount": "✅ Encontrado {count} arquivos de tradução",
686
+ "analyzingTranslations": "🔍 Analisando traduções...",
687
+ "validationCompletedSuccessfully": "🎉 Validação concluída com sucesso!",
688
+ "validationErrorsFound": "⚠️ Erros de validação encontrados: {count}",
689
+ "validationWarningsFound": "⚠️ Avisos de validação encontrados: {count}",
690
+ "validationPassed": "✅ Validação aprovada sem erros",
691
+ "validationFailed": "Falha na validação: {error}",
692
+ "startingValidationProcess": "🔍 Iniciando processo de validação...",
693
+ "validationProcessCompletedSuccessfully": "✅ Processo de validação concluído com sucesso",
694
+ "stackTrace": "Rastreamento de pilha: {stack}",
695
+ "authenticationFailed": "❌ Falha na autenticação. Acesso negado.",
696
+ "fatalValidationError": "❌ Erro fatal de validação: {error}",
697
+ "configAccess": "Acessando a configuração para validação",
698
+ "configValidated": "Configuração validada com sucesso",
699
+ "configError": "Erro de configuração: {error}",
700
+ "validatorInit": "Inicializando o validador I18n",
701
+ "validatorInitialized": "Validador I18n inicializado com sucesso",
702
+ "validatorInitError": "Erro de inicialização do validador: {error}",
703
+ "argsParsing": "Analisando argumentos de linha de comando",
704
+ "argsParsed": "Argumentos de linha de comando analisados ​​com sucesso",
705
+ "argsParseError": "Erro de análise de argumento: {error}",
706
+ "languagesScan": "Verificando os idiomas disponíveis",
707
+ "languagesFound": "Encontrado {count} idiomas",
708
+ "languagesScanError": "Erro de verificação de idioma: {error}",
709
+ "filesScan": "Encontrado {count} arquivos em {language}",
710
+ "filesScanError": "Erro de verificação de arquivo: {error}",
711
+ "jsonValidated": "Sintaxe JSON validada: {filePath}",
712
+ "jsonValidationError": "Erro de validação JSON: {error}",
713
+ "languageValidation": "Validando o idioma: {language}",
714
+ "languageValidationError": "Erro de validação de idioma: {error}",
715
+ "fileDeleted": "Arquivo excluído",
716
+ "runStarted": "Iniciando execução de validação",
717
+ "runCompleted": "Execução de validação concluída com sucesso",
718
+ "runError": "Falha na execução de validação: {error}",
719
+ "scriptExecution": "Execução de script",
720
+ "validationCompleted": "Validação concluída",
721
+ "validationError": "Erro de validação: {error}",
722
+ "separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
723
+ "languageHeader": "🌐 Idioma: {language}",
724
+ "validationResults": "📊 Resultados de validação",
725
+ "noErrors": "✅ Nenhum erro encontrado",
726
+ "noWarnings": "✅ Nenhum aviso encontrado",
727
+ "summaryHeader": "📋 OVERALL SUMMARY",
728
+ "progressIndicator": "⏳ Processando...",
729
+ "completedIndicator": "✅ Concluído",
730
+ "errorIndicator": "❌ Erro",
731
+ "warningIndicator": "⚠️ Aviso",
732
+ "infoIndicator": "ℹ️ Informações",
733
+ "sourceDirNotConfigured": "Diretório de origem não configurado",
734
+ "sourceLanguageNotConfigured": "Idioma de origem não configurado",
735
+ "translationFunctionNotInitialized": "Função de tradução não inicializada corretamente",
736
+ "sourceLanguageDirectoryNotFound": "Diretório do idioma de origem não encontrado",
737
+ "specifiedLanguageNotFound": "Idioma especificado não encontrado",
738
+ "noJsonFilesFound": "Nenhum arquivo JSON encontrado no diretório de origem: {sourceDir}",
739
+ "i18nDirectoryNotFound": "Diretório I18n não encontrado: {i18nDir}",
740
+ "invalidDirectoryPaths": "Caminhos de diretório inválidos detectados",
741
+ "invalidSampleFilePath": "Caminho de arquivo de amostra inválido",
742
+ "failedToCreateSampleTranslationFile": "Falha ao criar arquivo de tradução de amostra",
743
+ "invalidFilePathDetected": "Caminho de arquivo inválido detectado",
744
+ "failedToWriteFile": "Falha ao gravar o arquivo: {filePath}",
745
+ "invalidSourceDirectory": "Diretório de origem inválido: {sourceDir}",
746
+ "invalidSourceLanguageDirectory": "Diretório do idioma de origem inválido: {sourceDir}"
747
+ },
748
+ "adminCli": {
749
+ "setupPinProtectionTitle": "🔐 Configurando a proteção do PIN do administrador",
750
+ "setupPinProtectionDescription": "Isso exigirá um PIN de 4 a 6 dígitos para operações administrativas.",
751
+ "enablePinProtectionPrompt": "Deseja ativar a proteção do PIN do administrador?",
752
+ "setupCancelled": "A configuração da proteção do PIN do administrador foi cancelada.",
753
+ "enterPinPrompt": "Insira um PIN de 4 a 6 dígitos:",
754
+ "pinFormatError": "❌ O PIN deve ter de 4 a 6 dígitos. Por favor, tente novamente.",
755
+ "confirmPinPrompt": "Confirmar PIN:",
756
+ "pinMismatchError": "❌ Os PINs não correspondem. Por favor, tente novamente.",
757
+ "pinProtectionEnabledSuccess": "✅ Proteção PIN de administrador ativada com sucesso!",
758
+ "pinRecoveryWarning": "⚠️ Lembre-se do seu PIN - ele não poderá ser recuperado se for perdido.",
759
+ "setupPinProtectionFailed": "❌ Falha ao configurar a proteção do PIN do administrador.",
760
+ "errorSettingUpPin": "❌ Erro ao configurar o PIN do administrador: {message}",
761
+ "authRequiredForOperation": "🔐 Autenticação de administrador necessária para: {operation}",
762
+ "invalidPinFormat": "❌ Formato PIN inválido. O PIN deve ter de 4 a 6 dígitos.",
763
+ "authenticationSuccess": "✅ Autenticação bem-sucedida!",
764
+ "invalidPinAttemptsRemaining": "❌ PIN inválido. {remaining} tentativas restantes.",
765
+ "authenticationFailedAccessDenied": "❌ Falha na autenticação. Acesso negado.",
766
+ "authenticationError": "❌ Erro de autenticação: {message}",
767
+ "pinProtectionNotEnabled": "A proteção por PIN de administrador não está ativada no momento.",
768
+ "disablingPinProtectionTitle": "🔓 Desativando a proteção do PIN do administrador",
769
+ "confirmDisablePinProtection": "Tem certeza de que deseja desativar a proteção do PIN do administrador?",
770
+ "operationCancelled": "Operação cancelada.",
771
+ "pinProtectionDisabledSuccess": "✅ Proteção PIN de administrador desativada.",
772
+ "disablePinProtectionFailed": "❌ Falha ao desativar a proteção do PIN do administrador.",
773
+ "errorDisablingPinProtection": "❌ Erro ao desativar a proteção do administrador: {message}",
774
+ "adminProtectionStatusTitle": "🔐 Status de proteção do administrador",
775
+ "statusEnabled": "Status: ✅ ATIVADO",
776
+ "protectionDetails": "Proteção: PIN de 4 a 6 dígitos necessário para operações administrativas",
777
+ "lockoutDetails": "Bloqueio: 3 tentativas falhadas = bloqueio de 15 minutos",
778
+ "statusDisabled": "Status: ❌ DESATIVADO",
779
+ "noAuthRequired": "Proteção: Não é necessária autenticação",
780
+ "unprotectedRisk": "Risco: As operações administrativas estão desprotegidas",
781
+ "errorCheckingAdminStatus": "❌ Erro ao verificar o status do administrador: {message}",
782
+ "authRequired": "🔐 É necessária autenticação de administrador.",
783
+ "invalidPin": "❌ PIN inválido.",
784
+ "authSuccess": "✅ Autenticação bem-sucedida!",
785
+ "adminPinSetupCli": "admin_pin_setup_cli",
786
+ "adminAuthFailedCli": "admin_auth_failed_cli",
787
+ "adminAuthDisabledCli": "admin_auth_disabled_cli",
788
+ "protectedAccess": "Acesso protegido: autenticação de administrador necessária para operações confidenciais.",
789
+ "enterPin": "Insira o PIN do administrador:",
790
+ "accessGranted": "Acesso concedido."
791
+ },
792
+ "adminPin": {
793
+ "setup_title": "🔐 Configuração do PIN de administrador",
794
+ "setup_separator": "============================================================",
795
+ "setup_description": "Crie um PIN de 4 a 6 dígitos para acesso de administrador a configurações confidenciais.",
796
+ "required_for_title": "Este PIN será necessário para:",
797
+ "required_for_1": "• Alteração das configurações de segurança",
798
+ "required_for_2": "• Modificando configurações avançadas",
799
+ "required_for_3": "• Acessando ferramentas de depuração",
800
+ "required_for_4": "• Redefinir configurações",
801
+ "setup_note": "💡 Observação: você verá asteriscos (*) enquanto digita - são apenas caracteres de máscara.",
802
+ "setup_digits_only": "Somente números de 0 a 9 são aceitos como dígitos PIN.",
803
+ "invalid_pin_length": "❌ PIN inválido. Deve ter de 4 a 6 dígitos (somente números de 0 a 9).",
804
+ "invalid_pin_example": "Exemplo: 1234 ou 567890",
805
+ "pins_do_not_match": "❌ Os PINs não correspondem.",
806
+ "setup_success": "✅ O PIN do administrador foi definido com sucesso!",
807
+ "setup_warning": "⚠️ Mantenha este PIN seguro. Não pode ser recuperado se for perdido.",
808
+ "setup_error": "❌ Erro ao configurar o PIN:",
809
+ "session_expired": "⏰ A sessão do administrador expirou devido à inatividade.",
810
+ "no_pin_set_setting_up": "⚠️ Nenhum PIN de administrador definido. Configurando PIN...",
811
+ "no_pin_configured_access_denied": "⚠️ Nenhum PIN de administrador configurado. Acesso negado.",
812
+ "use_admin_settings_to_set_pin": "💡 Use as configurações de administrador para configurar primeiro um PIN.",
813
+ "locked_out": "🔒 O acesso de administrador está bloqueado devido a muitas tentativas malsucedidas.",
814
+ "wait_before_retry": "Aguarde 5 minutos antes de tentar novamente.",
815
+ "access_granted": "✅ Acesso de administrador concedido.",
816
+ "incorrect_pin": "❌ PIN incorreto. {attempts} tentativas restantes.",
817
+ "verify_pin_error": "❌ Erro ao verificar o PIN:",
818
+ "already_configured": "✅ O PIN do administrador já está configurado.",
819
+ "optional_setup_title": "🔐 Configuração do PIN de administrador (opcional)",
820
+ "optional_setup_description": "A proteção do PIN do administrador adiciona segurança para operações confidenciais como:",
821
+ "setup_prompt": "Gostaria de configurar um PIN de administrador? (S/N):",
822
+ "skipping_setup": "⏭️ Ignorando a configuração do PIN de administrador. Você pode configurá-lo mais tarde nas configurações.",
823
+ "setup_prompt_error": "❌ Erro durante a solicitação de configuração do PIN:",
824
+ "protectedAccess": "Acesso protegido: autenticação de administrador necessária para operações confidenciais.",
825
+ "enterPin": "Insira o PIN do administrador:",
826
+ "accessGranted": "Acesso concedido.",
827
+ "invalidPin": "❌ PIN inválido. Por favor, tente novamente.",
828
+ "weak_pin_warning": "⚠️ AVISO: Este PIN parece ser fraco ou comum.",
829
+ "weak_pin_suggestion": "💡 Considere usar um PIN mais forte e com dígitos variados.",
830
+ "use_anyway_prompt": "Digite \"sim\" para usar mesmo assim ou pressione Enter para escolher um PIN diferente:",
831
+ "enter_new_pin": "Insira o novo PIN de administrador (4 a 6 dígitos):",
832
+ "confirm_pin": "Confirme o PIN do administrador:",
833
+ "not_set": "Não definido",
834
+ "pin_display_mask": "####"
835
+ },
836
+ "debug": {
837
+ "title": "🔧 Ferramentas de depuração",
838
+ "separator": "============================================================",
839
+ "mainDebuggerSystemDiagnostics": "1. Diagnóstico do sistema",
840
+ "_consoleTranslationsCheck": "// 2. Verificação de traduções do console",
841
+ "_exportMissingKeys": "// 3. Exportar chaves de tradução ausentes",
842
+ "_replaceHardcodedConsole": "// 4. Substitua strings de console codificadas",
843
+ "_consoleKeyChecker": "// 5. Verificador de chave do console",
844
+ "debugLogs": "2. Registros de depuração",
845
+ "backToMainMenu": "0. Voltar ao menu principal",
846
+ "selectOption": "Selecione uma ferramenta de depuração:",
847
+ "runningDebugTool": "Correndo {displayName}...",
848
+ "debugToolNotFound": "❌ Ferramenta de depuração não encontrada: {toolName}",
849
+ "errorRunningDebugTool": "Erro ao executar a ferramenta de depuração '{displayName}': {error}",
850
+ "recentDebugLogs": "📄 Registros de depuração recentes",
851
+ "noDebugLogsFound": "❌ Nenhum log de depuração encontrado.",
852
+ "debugLogsDirectoryNotFound": "❌ Diretório de logs de depuração não encontrado.",
853
+ "selectLogPrompt": "Selecione o arquivo de log para visualizar (1-{count}):",
854
+ "invalidChoiceSelectRange": "Escolha inválida. Selecione na faixa disponível.",
855
+ "contentOf": "📄 Conteúdo de {filename}:",
856
+ "pressEnterToContinue": "Pressione Enter para continuar..."
857
+ },
858
+ "detect_language_mismatches": {
859
+ "tool_title": "🔍 Ferramenta de detecção de incompatibilidade de idioma",
860
+ "separator": "=====================================",
861
+ "analyzing_file": "📄 Analisando {language}.json...",
862
+ "error_analyzing_file": "❌ Erro ao analisar {filename}: {errorMessage}",
863
+ "results_title": "📊 RESULTADOS DE DETECÇÃO DE INCOMPARÊNCIA DE IDIOMA",
864
+ "results_separator": "========================================",
865
+ "summary_title": "📋 SUMMARY:",
866
+ "total_files_analyzed": "Total de arquivos analisados: {totalFiles}",
867
+ "files_with_mismatches": "Arquivos com incompatibilidades: {filesWithMismatches}",
868
+ "total_mismatches_found": "Total de incompatibilidades encontradas: {totalMismatches}",
869
+ "no_mismatches_found": "✅ Nenhuma incompatibilidade de idioma encontrada! Todas as traduções parecem estar nos idiomas corretos.",
870
+ "detailed_results_title": "🔍 DETAILED RESULTS:",
871
+ "file_mismatch_header": "📄 {filename} ({language})",
872
+ "mismatches_count": "Encontrado {count} incompatibilidade(s):",
873
+ "mismatch_details": "{index}. Chave: {key}",
874
+ "mismatch_value": "Valor: \"{value}\"",
875
+ "mismatch_issue": "Emitir: {description}",
876
+ "recommendations_title": "💡 RECOMENDAÇÕES:",
877
+ "recommendation_1": "1. Revise e traduza todas as entradas marcadas com [TRANSLATE]",
878
+ "recommendation_2": "2. Substitua os prefixos de idioma (por exemplo, [DE], [FR]) por traduções adequadas",
879
+ "recommendation_3": "3. Traduza o texto em inglês para o idioma de destino apropriado",
880
+ "recommendation_4": "4. Use equivalentes no idioma nativo para todos os textos voltados para o usuário",
881
+ "recommendation_5": "5. Execute esta ferramenta novamente após fazer as correções para verificar as correções",
882
+ "detailed_report_saved": "📄 Relatório detalhado salvo em: {reportPath}",
883
+ "error_saving_report": "❌ Erro ao salvar relatório: {errorMessage}",
884
+ "auto_fix_mode": "🔧 Modo de correção automática {dryRun}",
885
+ "auto_fix_separator": "=====================================",
886
+ "fixed_file": "✅ Fixo {filename}",
887
+ "auto_fix_summary_title": "📊 Resumo da correção automática:",
888
+ "total_fixes_applied": "Total de correções aplicadas: {count}",
889
+ "preview_fixes_title": "🔍 Visualização das correções:",
890
+ "fix_details": "{file}: {key} Velho: \"{old}\" Novo: \"{new}\"",
891
+ "more_fixes": "... e {count} mais correções",
892
+ "run_with_apply_fixes": "💡 Execute --apply para aplicar essas correções",
893
+ "error_general": "❌ Erro:",
894
+ "mainDebuggerSystemDiagnostics": "Depurador Principal/Diagnóstico do Sistema",
895
+ "exportMissingKeys": "Exportar chaves ausentes",
896
+ "replaceHardcodedConsole": "Substituir console codificado",
897
+ "consoleKeyChecker": "Verificador de chave do console",
898
+ "debugLogs": "Registros de depuração",
899
+ "backToMainMenu": "Voltar ao menu principal",
900
+ "invalidChoiceSelectRange": "❌ Escolha inválida. Selecione um número dentro do intervalo exibido.",
901
+ "runningDebugTool": "Executando a ferramenta de depuração: {displayName}",
902
+ "debugToolNotFound": "Ferramenta de depuração '{toolName}'não encontrado.",
903
+ "recentDebugLogs": "Logs de depuração recentes",
904
+ "noDebugLogsFound": "Nenhum log de depuração encontrado.",
905
+ "logEntry": "Entrada de registro: {timestamp} - {message}",
906
+ "debugLogsDirectoryNotFound": "Diretório de logs de depuração não encontrado."
907
+ },
908
+ "help": {
909
+ "title": "📊 AJUDA DE GESTÃO I18NTK",
910
+ "usage": "Uso: node main/manage/index.js [opções]",
911
+ "interactiveMode": "💡 Use: node main/manage/index.js --command=<command> para execução direta",
912
+ "showHelp": "📖 Use: node main/manage/index.js --help para comandos disponíveis",
913
+ "availableCommands": "📖 Comandos disponíveis:",
914
+ "initProject": "🚀 Inicialize novos idiomas",
915
+ "analyzeTranslations": "🔍 Analisar traduções",
916
+ "validateTranslations": "✅ Validar traduções",
917
+ "checkUsage": "📊 Verifique o uso da chave",
918
+ "initCommand": "init - Inicializa novos idiomas",
919
+ "analyzeCommand": "analisar - Analisar traduções",
920
+ "validateCommand": "validar - Validar traduções",
921
+ "usageCommand": "uso - Verifique o uso da chave",
922
+ "sizingCommand": "dimensionamento - Analisar dimensionamento",
923
+ "completeCommand": "complete - Traduções completas (cobertura de 100%)",
924
+ "summaryCommand": "resumo - Mostrar status do projeto",
925
+ "debugCommand": "debug - Depurar problemas de tradução",
926
+ "scannerCommand": "scanner - Procure chaves",
927
+ "translateCommand": "traduzir - Traduzir automaticamente arquivos de localidade",
928
+ "menu": {
929
+ "pressEnterToContinue": "Pressione Enter para continuar...",
930
+ "title": "🌐 MENU DE GERENCIAMENTO I18NTK",
931
+ "description": "Menu interativo para gerenciamento de internacionalização",
932
+ "exit": "🚪 Sair"
933
+ },
934
+ "commands": {
935
+ "init": "init - Inicializa novos idiomas",
936
+ "analyze": "analisar - Analisar traduções",
937
+ "validate": "validar - Validar traduções",
938
+ "usage": "uso - Verifique o uso da chave",
939
+ "sizing": "dimensionamento - Analisar dimensionamento",
940
+ "complete": "complete - Traduções completas (cobertura de 100%)",
941
+ "summary": "resumo - Mostrar status do projeto",
942
+ "debug": "debug - Depurar problemas de tradução"
943
+ },
944
+ "options": {
945
+ "sourceDir": "--source-dir <dir> Diretório de origem para analisar",
946
+ "output": "--saída <file> Arquivo de saída do relatório",
947
+ "verbose": "--verbose, -v Mostrar informações detalhadas",
948
+ "keepReports": "--keep-reports Mantém os relatórios existentes",
949
+ "deleteReports": "--delete-reports Exclui relatórios existentes",
950
+ "help": "--help, -h Mostrar esta ajuda"
951
+ },
952
+ "examples": {
953
+ "title": "Exemplos:",
954
+ "example1": "nó i18ntk-manage.js",
955
+ "example2": "nó i18ntk-manage.js --source-dir ./locales",
956
+ "example3": "nó i18ntk-manage.js --output summary-report.txt",
957
+ "example4": "nó i18ntk-manage.js --verbose",
958
+ "example5": "nó i18ntk-manage.js --source-dir ./locales --output report.json"
959
+ },
960
+ "features": {
961
+ "initProject": "🚀 Inicialize novos idiomas",
962
+ "analyzeTranslations": "🔍 Analisar traduções",
963
+ "validateTranslations": "✅ Validar traduções",
964
+ "checkUsage": "📊 Verifique o uso da chave",
965
+ "completeTranslations": "🎯 Traduções completas (cobertura de 100%)",
966
+ "showSizing": "📏 Analisar dimensionamento",
967
+ "runWorkflow": "🔄 Execute o fluxo de trabalho completo",
968
+ "showStatus": "📋 Mostrar status do projeto",
969
+ "deleteReports": "🗑️ Exclua todos os relatórios",
970
+ "changeLanguage": "🌍 Alterar o idioma da IU",
971
+ "settings": "⚙️ Configurações",
972
+ "showHelp": "❓ Ajuda",
973
+ "debugTools": "🔧 Ferramentas de depuração"
974
+ },
975
+ "messages": {
976
+ "selectOption": "Selecione uma opção:",
977
+ "invalidOption": "Opção inválida. Por favor, tente novamente.",
978
+ "operationCompleted": "✅ Operação concluída com sucesso!",
979
+ "pressEnter": "Pressione Enter para continuar...",
980
+ "goodbye": "👋 Adeus!",
981
+ "unknownCommand": "Comando desconhecido: {command}",
982
+ "nonInteractive": "⚠️ Modo não interativo detectado. Menu exibido apenas para referência."
983
+ },
984
+ "i18n_helper": {
985
+ "translation_file_not_found": "Arquivo de tradução não encontrado: {translationFile}",
986
+ "error_loading_translations": "Erro ao carregar traduções: {errorMessage}",
987
+ "translation_not_found": "Tradução não encontrada para chave: {key}",
988
+ "translation_key_not_string": "A chave de tradução não é resolvida para uma string: {key}",
989
+ "error_reading_locales_directory": "Erro ao ler o diretório locales: {errorMessage}"
990
+ }
991
+ },
992
+ "init": {
993
+ "initializationTitle": "🚀 Kit de ferramentas de gerenciamento i18n - Inicialização do projeto",
994
+ "initializationCancelled": "🚫 Inicialização cancelada pelo usuário.",
995
+ "sourceDirectoryLabel": "📁 Diretório de fontes: {dir}",
996
+ "requiredTitle": "Inicialização necessária",
997
+ "requiredBody": "Este projeto deve ser inicializado antes de executar este comando.",
998
+ "promptRunNow": "Gostaria de executar a inicialização agora? (S/N):",
999
+ "sourceLanguageLabel": "🌍 Idioma de origem: {language}",
1000
+ "detectedI18nFrameworks": "🔍 Estrutura(s) i18n detectada(s): {frameworks}",
1001
+ "pinMustBe4Digits": "🔐 O PIN deve ter 4 dígitos.",
1002
+ "existingDirectoriesFound": "📁 Diretórios de tradução existentes encontrados:",
1003
+ "useExistingDirectoryPrompt": "Você deseja usar o diretório existente? (s/n)",
1004
+ "selectDirectoryPrompt": "Selecione um diretório digitando o número (ou escolha 'Criar novo diretório')",
1005
+ "enterNewDirectoryName": "Digite o nome do seu novo diretório de tradução",
1006
+ "createdNewDirectory": "✅ Criado novo diretório: {dir}",
1007
+ "directoryAlreadyExists": "⚠️ Diretório já existe: {dir}",
1008
+ "invalidDirectoryName": "❌ Nome de diretório inválido fornecido.",
1009
+ "usingExistingDirectory": "Usando o diretório existente: {dir}",
1010
+ "adminPinSetupOptional": "🔐 Configuração do PIN de administrador opcional (recomendado por segurança)",
1011
+ "adminPinSeparator": "------------------------------",
1012
+ "adminPinDescription1": "PIN de administrador: número de 4 dígitos para acesso seguro",
1013
+ "adminPinDescription2": "Deixe em branco para pular a configuração do PIN",
1014
+ "adminPinDescription3": "Se você definir um PIN, ele será necessário para todas as ações seguras futuras.",
1015
+ "adminPinDescription4": "Criptografia AES-256-GCM usada para armazenamento seguro do PIN.",
1016
+ "adminPinSetupPrompt": "Digite o PIN do administrador (4 dígitos) ou deixe em branco para pular:",
1017
+ "skippingAdminPinSetup": "Ignorando a configuração do PIN do administrador...",
1018
+ "settingUpAdminPin": "🔐 Configurando PIN de administrador...",
1019
+ "enterAdminPin": "Insira o PIN do administrador:",
1020
+ "confirmAdminPin": "Confirme o PIN do administrador:",
1021
+ "pinMismatch": "Os PINs não correspondem. Por favor, tente novamente.",
1022
+ "adminPinSetupSuccess": "🔐 Configuração do PIN de administrador bem-sucedida!",
1023
+ "adminPinSetupFailure": "🔐 Falha na configuração do PIN de administrador. Por favor, tente novamente.",
1024
+ "adminProtectionEnabled": "🔐 Proteção de administrador ativada. Todas as ações requerem autenticação PIN.",
1025
+ "adminProtectionDisabled": "🔐 Proteção de administrador desativada. Todas as ações agora estão disponíveis sem PIN.",
1026
+ "autoDetectedI18nDirectory": "Diretório i18n detectado automaticamente: {directory}",
1027
+ "initializingProject": "⚙️ Inicializando configuração do projeto...",
1028
+ "createdSampleTranslationFile": "✅ Arquivo de tradução de amostra criado: {file}",
1029
+ "languageSelectionTitle": "🌐 Configuração de idioma",
1030
+ "available": "Disponível",
1031
+ "defaultLanguages": "📝 Idiomas padrão: {languages}",
1032
+ "enterLanguageCodes": "🎯 Insira os códigos do idioma de destino (separados por vírgulas, por exemplo, de, es, fr, ru):",
1033
+ "targetLanguages": "🌍 Idiomas alvo",
1034
+ "foundSourceFiles": "📄 Encontrado {count} arquivos de origem para analisar",
1035
+ "processingLanguage": "🔄 Linguagem de processamento: {language}",
1036
+ "fileProcessingResult": "✅ Processado {file}: {translated}/{total} chaves ({percentage}%)",
1037
+ "overallProgress": "📊 Progresso geral: {translated}/{total} chaves processadas ({percentage}%)",
1038
+ "initializationSummaryTitle": "📋 Resumo de inicialização",
1039
+ "languageSummary": "{icon} {name} ({code}): {percentage}% completo",
1040
+ "languageFiles": "📄 Arquivos: {count}",
1041
+ "languageKeys": "🔤 Chaves: {translated}/{total}",
1042
+ "languageMissing": "⚠️ Faltando: {count}",
1043
+ "initializationCompletedSuccessfully": "🎉 Inicialização do projeto concluída com sucesso!",
1044
+ "nextStepsTitle": "🚀 Próximas etapas",
1045
+ "nextStep1": "1. Revise os arquivos de tradução gerados em seu diretório locales/",
1046
+ "nextStep2": "2. Adicione traduções para cada idioma de destino",
1047
+ "nextStep3": "3. Execute 'npm run i18ntk' novamente para validar as traduções",
1048
+ "detectedFrameworks": "✅ Estrutura(s) i18n detectada(s): {frameworks}",
1049
+ "setup": {
1050
+ "title": "Configurar",
1051
+ "question": "Pergunta de configuração",
1052
+ "opt_single": "Arquivo único",
1053
+ "opt_modular": "Modular",
1054
+ "opt_existing": "Existente",
1055
+ "choice_prompt": "Escolha uma opção:",
1056
+ "opt_confirm": "Confirmar",
1057
+ "opt_cancel": "Cancelar",
1058
+ "apply_all_prompt": "Aplicar esta estrutura a todos os idiomas? (S/N):",
1059
+ "per_language_intro": "Você optou por configurar os idiomas individualmente. Aqui estão os idiomas disponíveis:",
1060
+ "available_languages": "Idiomas disponíveis: {languages}",
1061
+ "include_prompt": "Insira os códigos de idioma separados por vírgula para incluir (por exemplo, 'de,fr,es'):"
1062
+ },
1063
+ "warnings": {
1064
+ "noPackageJson": "Nenhum pacote.json encontrado. Não é possível detectar automaticamente a estrutura i18n."
1065
+ },
1066
+ "errorsPackageJsonRead": "Erro ao ler package.json: {error}",
1067
+ "errorsNoFramework": "Nenhuma estrutura i18n detectada. Instale um ou especifique manualmente.",
1068
+ "suggestions": {
1069
+ "noFramework": "Nenhuma estrutura i18n detectada. Considere usar um dos seguintes:",
1070
+ "installFramework": "Para instalar um framework, execute: npm install <nome do pacote>"
1071
+ },
1072
+ "frameworks": {
1073
+ "react": "- Reagir i18next (react-i18next)",
1074
+ "vue": "-Vue i18n (vue-i18n)",
1075
+ "i18next": "-i18próximo (i18próximo)",
1076
+ "nuxt": "- Nuxt i18n (@nuxtjs/i18n)",
1077
+ "svelte": "- Esbelto i18n (esbelto-i18n)"
1078
+ },
1079
+ "continueWithoutI18nPrompt": "Nenhuma estrutura i18n detectada. Você quer continuar sem um? (S/N):",
1080
+ "detectedI18nFramework": "Estrutura i18n detectada: {frameworks}",
1081
+ "existingDirectoryItem": "{index}. {location}",
1082
+ "usingExistingStructure": "Usando a estrutura existente: {dir}",
1083
+ "creatingSourceDirectory": "Criando diretório de origem: {dir}",
1084
+ "creatingSourceLanguageDirectory": "Criando diretório do idioma de origem: {dir}",
1085
+ "errors": {
1086
+ "errorExecutingCommand": "Erro ao executar o comando: {error}",
1087
+ "sourceDirectoryNotFound": "Diretório de origem não encontrado: {dir}",
1088
+ "sourceLanguageDirectoryNotFound": "Diretório do idioma de origem não encontrado: {dir}",
1089
+ "noJsonFilesInSourceDirectory": "Nenhum arquivo JSON encontrado no diretório de origem: {dir}",
1090
+ "invalidFilePathDetected": "Caminho de arquivo inválido detectado",
1091
+ "initializationFailed": "Falha na inicialização: {error}",
1092
+ "noFramework": "Nenhuma estrutura i18n detectada. Continue com o modo genérico.",
1093
+ "packageJsonRead": "Erro ao ler package.json."
1094
+ },
1095
+ "processingFile": "Processamento {file} para {language}...",
1096
+ "fileAlreadyExistsMerging": "Arquivo {file} já existe. Mesclando novas chaves.",
1097
+ "createdNewFile": "Novo arquivo criado: {file}",
1098
+ "updatedFile": "Arquivo atualizado: {file}",
1099
+ "skippingExcludedFile": "Pular {file} para {language} como está excluído.",
1100
+ "continuingWithoutAdminPin": "Continuando sem configuração do PIN do administrador.",
1101
+ "createdSourceLanguageDirectory": "Diretório do idioma de origem criado: {dir}",
1102
+ "errorSettingUpAdminPin": "Erro ao configurar o PIN do administrador: {error}",
1103
+ "noTargetLanguagesSpecified": "Nenhum idioma de destino especificado.",
1104
+ "translationFilesCreatedWarning": "Os arquivos de tradução foram criados com espaços reservados; revisão antes do uso na produção.",
1105
+ "warningCannotReadSourceDir": "Aviso: não é possível ler o diretório de origem {dir}: {error}",
1106
+ "warningInvalidLanguageCodes": "Aviso: códigos de idioma inválidos ignorados: {languages}",
1107
+ "warningProceedingWithoutFramework": "Continuando sem estrutura i18n detectada.",
1108
+ "backup": {
1109
+ "title": "Configurações de backup",
1110
+ "description": "Os backups são desabilitados por padrão para evitar recursão de backup e poluição de repositório.",
1111
+ "enablePrompt": "Ativar backups automáticos? (S/N):",
1112
+ "keepPrompt": "Quantos backups devem ser mantidos automaticamente (1-3, padrão 1):"
1113
+ },
1114
+ "completionSummaryTitle": "Resumo de conclusão",
1115
+ "completionSummaryBasicTitle": "Resumo de conclusão (básico)",
1116
+ "totalChanges": "Mudanças totais: {count}",
1117
+ "languagesProcessed": "Idiomas processados: {count}",
1118
+ "missingKeysAdded": "Chaves ausentes adicionadas: {count}",
1119
+ "reportPrompt": "Gostaria de gerar um relatório? (S/n):",
1120
+ "reportGenerated": "Relatório gerado: {reportPath}",
1121
+ "reportFailed": "Falha ao gerar relatório: {error}",
1122
+ "completionError": "Erro durante a conclusão: {error}",
1123
+ "optimize": {
1124
+ "title": "Otimização do tamanho do pacote",
1125
+ "preview": "Executando visualização da otimização de localidade...",
1126
+ "reduceTip": "Você pode reduzir o tamanho do pacote selecionando apenas os idiomas necessários.",
1127
+ "prompt": "Gostaria de executar a otimização interativa agora? (s/n):",
1128
+ "starting": "Iniciando a otimização de localidade interativa...",
1129
+ "completed": "Otimização do pacote concluída.",
1130
+ "later": "Você pode executar a otimização de localidade posteriormente com:",
1131
+ "unavailable": "Não foi possível oferecer otimização de localidade: {error}"
1132
+ }
1133
+ },
1134
+ "language": {
1135
+ "title": "🌍 Alterar idioma",
1136
+ "separator": "============================================================",
1137
+ "current": "Idioma atual: {language}",
1138
+ "available": "Idiomas disponíveis:",
1139
+ "languageOption": "{index}. {displayName}{current}",
1140
+ "backToMainMenu": "Voltar ao menu principal",
1141
+ "prompt": "Selecione um idioma (0-8):",
1142
+ "cancelled": "Alteração de idioma cancelada.",
1143
+ "invalid": "Escolha inválida. Por favor, tente novamente.",
1144
+ "changed": "Idioma alterado para: {language}",
1145
+ "changeFailed": "Falha ao alterar o idioma: {error}",
1146
+ "pressEnterToContinue": "Pressione Enter para continuar..."
1147
+ },
1148
+ "maintainLanguagePurity": {
1149
+ "workflow_title": "🚀 Fluxo de trabalho de manutenção da pureza do idioma",
1150
+ "step1_title": "📊 PASSO 1: Avaliação inicial da pureza do idioma",
1151
+ "step2_title": "🔧 PASSO 2: Detectar e corrigir automaticamente incompatibilidades de idioma",
1152
+ "step3_title": "🌐 PASSO 3: Aplicar traduções automáticas",
1153
+ "step4_title": "✅ PASSO 4: Avaliação final da pureza do idioma",
1154
+ "workflow_error": "❌ Erro de fluxo de trabalho: {errorMessage}",
1155
+ "running_initial_validation": "Executando a validação inicial de pureza do idioma...",
1156
+ "initial_assessment_complete": "✅ Avaliação inicial concluída: {count} violações encontradas",
1157
+ "initial_assessment_warnings": "⚠️ Avaliação inicial concluída com avisos",
1158
+ "detecting_fixing_mismatches": "Detectando e corrigindo incompatibilidades de idioma...",
1159
+ "detection_complete_applying_fixes": "Detecção concluída. Aplicando correções automáticas...",
1160
+ "mismatch_fixes_complete": "✅ Correções de incompatibilidade de idioma concluídas: {count} correções aplicadas",
1161
+ "mismatch_fixes_warnings": "⚠️ Correções de incompatibilidade de idioma concluídas com avisos",
1162
+ "applying_automatic_translations": "Aplicando traduções automáticas...",
1163
+ "translation_preview_complete": "Visualização da tradução concluída. Applying translations..."
1164
+ },
1165
+ "menu": {
1166
+ "title": "🌐 MENU DE GERENCIAMENTO I18NTK",
1167
+ "separator": "============================================================",
1168
+ "options": {
1169
+ "init": "🚀 Inicialize novos idiomas",
1170
+ "analyze": "🔍 Analisar traduções",
1171
+ "validate": "✅ Validar traduções",
1172
+ "usage": "📊 Verifique o uso da chave",
1173
+ "complete": "🎯 Traduções completas (cobertura de 100%)",
1174
+ "sizing": "📏 Analisar dimensionamento",
1175
+ "fix": "🛠️ Corrigir traduções de espaço reservado",
1176
+ "scanner": "🔍 Procure problemas de i18n",
1177
+ "translate": "🌐 Tradução automática",
1178
+ "workflow": "🔄 Execute o fluxo de trabalho completo",
1179
+ "status": "📋 Mostrar status do projeto",
1180
+ "delete": "🗑️ Exclua todos os relatórios",
1181
+ "language": "🌍 Alterar o idioma da IU",
1182
+ "settings": "⚙️ Configurações",
1183
+ "help": "❓ Ajuda",
1184
+ "debug": "🔧 Ferramentas de depuração",
1185
+ "exit": "🚪 Sair"
1186
+ },
1187
+ "update": "📦 Pacote de atualização",
1188
+ "goodbye": "👋 Adeus!",
1189
+ "invalidChoice": "Escolha inválida. Selecione 0-15.",
1190
+ "returning": "Voltando ao menu principal...",
1191
+ "invalidOption": "Opção inválida. Por favor, tente novamente.",
1192
+ "nonInteractiveModeWarning": "Modo não interativo detectado. Menu exibido apenas para referência.",
1193
+ "useDirectExecution": "Use: node main/manage/index.js --command=<command> para execução direta.",
1194
+ "useHelpForCommands": "Use: node main/manage/index.js --help para comandos disponíveis.",
1195
+ "returnToMainMenu": "Pressione Enter para retornar ao Menu Principal.",
1196
+ "pressEnterToContinue": "Pressione Enter para continuar...",
1197
+ "selectOptionPrompt": "Selecione uma opção:",
1198
+ "selectDebugToolPrompt": "Selecione uma ferramenta de depuração:",
1199
+ "selectLogPrompt": "Selecione um arquivo de log (1-{count}):",
1200
+ "autoDetectedI18nDirectory": "Diretório i18n detectado automaticamente: {directory}",
1201
+ "executingCommand": "Executando comando: {command}",
1202
+ "unknownCommand": "Comando desconhecido: {command}",
1203
+ "languageOption": "{index}. {displayName}{current}",
1204
+ "debugTools": {
1205
+ "1": "Análise de arquivo de log",
1206
+ "2": "Análise de uso de chave de tradução",
1207
+ "3": "Análise de integridade da tradução",
1208
+ "4": "Análise do formato de tradução",
1209
+ "5": "Análise do tipo de tradução",
1210
+ "6": "Análise da estrutura de tradução"
1211
+ },
1212
+ "native_translations": {
1213
+ "exact_translation_found": "✅ {keyPath}: {value}",
1214
+ "no_exact_translation": "⚠️ Nenhuma tradução exata para '{keyPath}', chaves semelhantes encontradas:",
1215
+ "similar_key": "- {key} ({similarity}% corresponder)",
1216
+ "processing_language_files": "🔄 Processamento {count} arquivos de idioma...",
1217
+ "file_not_found": "⚠️ Arquivo não encontrado: {file}",
1218
+ "processing_translations": "🌍 Processamento {code} traduções...",
1219
+ "backup_created": "📋 Backup criado: {filename}",
1220
+ "error_parsing_json": "❌ Erro ao analisar {code}.json: {errorMessage}",
1221
+ "existing_keys_found": "📊 {code}: Encontrado {count} chaves existentes",
1222
+ "error_writing_json": "❌ Erro ao escrever {code}.json: {errorMessage}",
1223
+ "translations_replaced": "📊 {code}: {count} traduções substituído",
1224
+ "translation_replacement_complete": "✅ Substituição da tradução concluída!",
1225
+ "total_replacements": "📊 Total de substituições: {count}",
1226
+ "dry_run_mode": "⚠️ MODO DRY RUN - Nenhum arquivo foi modificado",
1227
+ "tool_title": "🌍 Substituição de tradução nativa v1.9.1",
1228
+ "tool_separator": "======================================",
1229
+ "dry_run_warning": "⚠️ Executando no modo DRY RUN - nenhum arquivo será modificado",
1230
+ "error_during_replacement": "❌ Erro durante a substituição da tradução:"
1231
+ }
1232
+ },
1233
+ "config": {
1234
+ "dirFallbackWarning": "⚠️ Diretório {dir} não encontrado. Usando {fallback}.",
1235
+ "dirInvalidError": "❌ Diretório inválido: {dir}"
1236
+ },
1237
+ "operations": {
1238
+ "completed": "✅ Operação concluída com sucesso!",
1239
+ "deleteReportsTitle": "🗑️ Excluir relatórios, registros e cache",
1240
+ "scanningForFiles": "🔍 Procurando arquivos para excluir...",
1241
+ "noFilesFoundToDelete": "✅ Nenhum arquivo encontrado para excluir.",
1242
+ "availableDirectories": "📁 Diretórios disponíveis:",
1243
+ "allDirectories": "Todos os diretórios",
1244
+ "andMore": "e mais...",
1245
+ "cancelOption": "Cancelar",
1246
+ "cancelReportOption": "Cancelar/Retornar ao Menu",
1247
+ "invalidSelection": "❌ Seleção inválida.",
1248
+ "foundFilesInSelectedDirectories": "📊 Encontrado {count} arquivos nos diretórios selecionados:",
1249
+ "deletionOptions": "🗑️ Opções de exclusão:",
1250
+ "deleteAllFiles": "Exclua todos os arquivos",
1251
+ "keepLast3Files": "Manter os últimos 3 arquivos (por data)",
1252
+ "keepLast5Files": "Mantenha os últimos 5 arquivos (por data)",
1253
+ "noFilesToDelete": "✅ Nenhum arquivo para excluir.",
1254
+ "filesToDeleteCount": "📋 Arquivos para excluir: {count}",
1255
+ "filesToKeepCount": "📋 Arquivos para manter: {count}",
1256
+ "confirmDeletion": "⚠️ Are you sure you want to delete these files? (S/N):",
1257
+ "deletedFile": "✅ Excluído: {filename}",
1258
+ "failedToDeleteFile": "❌ Falha ao excluir {filename}: {error}",
1259
+ "cancelled": "❌ Operação cancelada.",
1260
+ "init": {
1261
+ "title": "🚀 Inicializar novo idioma"
1262
+ },
1263
+ "usage": {
1264
+ "title": "📊 Verifique o uso da chave",
1265
+ "noUsedKeysHint": "Found translations but no usage in source. Verifique --source-dir e TranslationPatterns."
1266
+ },
1267
+ "analyze": {
1268
+ "title": "🔍 Analisar traduções"
1269
+ },
1270
+ "validate": {
1271
+ "title": "✅ Validar traduções"
1272
+ },
1273
+ "settings": {
1274
+ "title": "⚙️ Gerenciamento de configurações",
1275
+ "separator": "============================================================"
1276
+ },
1277
+ "complete": {
1278
+ "deletingOldReport": "🗑️ Excluindo relatório de uso antigo para novas análises",
1279
+ "generatingFreshAnalysis": "🔄 Gerando novas análises de uso...",
1280
+ "couldNotGenerate": "⚠️ Não foi possível gerar análise de uso. Usando chaves ausentes comuns.",
1281
+ "reportNotFound": "⚠️ Relatório de uso não encontrado. Gerando novas análises...",
1282
+ "foundMissingKeys": "🔍 Encontrado {count} faltando chaves na análise de uso",
1283
+ "couldNotParse": "⚠️ Não foi possível analisar o relatório de uso. Usando chaves ausentes comuns.",
1284
+ "title": "🎯 CONCLUINDO TRADUÇÕES",
1285
+ "separator": "============================================================",
1286
+ "sourceDir": "📁 Diretório de origem: {sourceDir}",
1287
+ "sourceLanguage": "🔤 Idioma de origem: {sourceLanguage}",
1288
+ "dryRunMode": "🧪 MODO DRY RUN - Nenhum arquivo será modificado",
1289
+ "languages": "🎯 Idiomas alvo: {languages}",
1290
+ "addingMissingKeys": "➕ Adicionando chaves ausentes aos arquivos de tradução...",
1291
+ "processing": "🔄 Processamento {language}...",
1292
+ "addedKeys": "✅ Adicionado {count} chaves",
1293
+ "changeDetails": "📝 {file}: {key}",
1294
+ "noChangesNeeded": "✅ Não são necessárias alterações para {language}",
1295
+ "summaryTitle": "📊 RESUMO DA CONCLUSÃO",
1296
+ "totalChanges": "📝 Mudanças totais: {totalChanges}",
1297
+ "languagesProcessed": "🌐 Idiomas processados: {languagesProcessed}",
1298
+ "missingKeysAdded": "➕ Chaves ausentes adicionadas: {missingKeysAdded}",
1299
+ "nextStepsTitle": "📋 NEXT STEPS",
1300
+ "nextStep1": "1. Execute a análise de uso:",
1301
+ "nextStep2": "2. Valide as traduções:",
1302
+ "nextStep3": "3. Analise a integridade:",
1303
+ "allKeysAvailable": "🎉 Todas as chaves de tradução já estão disponíveis!",
1304
+ "runWithoutDryRun": "💡 Execute sem --dry-run para aplicar as alterações",
1305
+ "pressEnterToContinue": "Pressione Enter para continuar..."
1306
+ },
1307
+ "updatePackage": {
1308
+ "title": "📦 Atualizar pacote i18n-toolkit",
1309
+ "description": "Isso atualizará o pacote i18n-toolkit para a versão mais recente disponível no npm.",
1310
+ "command": "Comando para executar",
1311
+ "confirm": "Tem certeza de que deseja prosseguir com a atualização? (S/N):",
1312
+ "updating": "Atualizando pacote... Isso pode demorar um pouco.",
1313
+ "success": "✅ i18n-toolkit atualizado com sucesso!",
1314
+ "error": "❌ Falha ao atualizar o i18n-toolkit",
1315
+ "cancelled": "❌ Atualização cancelada."
1316
+ }
1317
+ },
1318
+ "security": {
1319
+ "pathValidationFailed": "path_validation_failed",
1320
+ "invalidInputType": "invalid_input_type",
1321
+ "pathTraversalAttempt": "caminho_traversal_attempt",
1322
+ "pathValidated": "✅ Caminho validado com sucesso",
1323
+ "pathValidationError": "caminho_validação_erro",
1324
+ "fileTooLarge": "Segurança: Arquivo muito grande: {filePath}",
1325
+ "fileReadError": "Segurança: Erro de leitura de arquivo: {errorMessage}",
1326
+ "contentTooLargeForFile": "Segurança: Conteúdo muito grande para arquivo: {filePath}",
1327
+ "fileWriteError": "Segurança: Erro de gravação de arquivo: {errorMessage}",
1328
+ "jsonStringTooLarge": "Segurança: string JSON muito grande",
1329
+ "jsonParseError": "Segurança: erro de análise JSON: {errorMessage}",
1330
+ "inputContainsDisallowedCharacters": "Segurança: a entrada contém caracteres não permitidos",
1331
+ "unknownCommandArgument": "Segurança: Argumento de comando desconhecido: {key}",
1332
+ "unknown_command_argument": "Segurança: Argumento de comando desconhecido: {key}",
1333
+ "unknownConfigKey": "Segurança: Chave de configuração desconhecida: {key}",
1334
+ "unknown_config_key": "Segurança: Chave de configuração desconhecida: {key}",
1335
+ "securityAlert": "[ALERTA DE SEGURANÇA] {timestamp}: {event}",
1336
+ "contentTooLarge": "Segurança: Conteúdo muito grande para arquivo: {validatedPath}",
1337
+ "inputDisallowedCharacters": "Segurança: a entrada contém caracteres não permitidos",
1338
+ "unknownCommandArg": "Argumento de comando desconhecido",
1339
+ "logMessage": "[SEGURANÇA {level}] {timestamp}: {event}",
1340
+ "alertMessage": "[ALERTA DE SEGURANÇA] {timestamp}: {event}",
1341
+ "securityWarning": "[AVISO DE SEGURANÇA] {timestamp}: {event}",
1342
+ "json_parse_error": "Segurança: erro de análise JSON: {errorMessage}",
1343
+ "file_too_large": "Arquivo muito grande",
1344
+ "file_read_error": "Erro de leitura de arquivo",
1345
+ "content_too_large_for_file": "Conteúdo muito grande para arquivo",
1346
+ "file_write_error": "Erro de gravação de arquivo",
1347
+ "json_string_too_large": "Sequência Json muito grande",
1348
+ "recursion_detected": "Recursão detectada em {operation}",
1349
+ "operation_timeout": "Tempo limite de operação: {operation}",
1350
+ "operation_error": "Erro de operação em {operation}: {error}",
1351
+ "directory_read_error": "Erro de leitura do diretório: {errorMessage}",
1352
+ "security_alert": "Alerta de segurança"
1353
+ },
1354
+ "settings-cli": {
1355
+ "settings": {
1356
+ "mainMenu": {
1357
+ "title": "Menu Principal:",
1358
+ "uiSettings": "Configurações da IU",
1359
+ "uiSettingsDesc": "Opções de idioma, tema e interface",
1360
+ "directorySettings": "Configurações de diretório",
1361
+ "directorySettingsDesc": "Caminhos de diretório de origem e saída",
1362
+ "scriptDirectorySettings": "Configurações do diretório de scripts",
1363
+ "scriptDirectorySettingsDesc": "Caminhos de diretório para operações de script individuais",
1364
+ "processingSettings": "Configurações de processamento",
1365
+ "processingSettingsDesc": "Tamanho do lote, simultaneidade e desempenho",
1366
+ "advancedSettings": "Configurações avançadas",
1367
+ "advancedSettingsDesc": "Validação, registro e opções de especialistas",
1368
+ "viewAllSettings": "Ver todas as configurações",
1369
+ "viewAllSettingsDesc": "Exibir configuração atual",
1370
+ "importExport": "Importar/Exportar",
1371
+ "importExportDesc": "Configurações de backup e restauração",
1372
+ "resetToDefaults": "Redefinir para os padrões",
1373
+ "resetToDefaultsDesc": "Restaurar configurações de fábrica",
1374
+ "reportBug": "Reportar bug",
1375
+ "reportBugDesc": "Envie um relatório de problema no GitHub",
1376
+ "saveChanges": "Salvar alterações",
1377
+ "saveChangesDesc": "Salvar configurações atuais em arquivo",
1378
+ "updatePackage": "Pacote de atualização",
1379
+ "updatePackageDesc": "Atualize o pacote i18n-toolkit via npm",
1380
+ "help": "Ajuda",
1381
+ "helpDesc": "Mostrar informações de ajuda detalhadas",
1382
+ "quit": "Desistir",
1383
+ "quitDesc": "Sair das configurações (com prompt para salvar, se necessário)",
1384
+ "unsavedChangesWarning": "⚠️ Você tem alterações não salvas",
1385
+ "saveChangesBeforeQuit": "Deseja salvar as alterações antes de sair? (S/N):",
1386
+ "selectOption": "Selecione uma opção:",
1387
+ "goodbyeMessage": "Obrigado por usar o gerenciador de configurações i18n!"
1388
+ },
1389
+ "goodbyeMessage": "Obrigado por usar o gerenciador de configurações i18n!",
1390
+ "relativePathHint": "Use caminhos relativos deste diretório (por exemplo, ./src/i18n/locales)",
1391
+ "currentDirectory": "Diretório do projeto atual"
1392
+ },
1393
+ "settings_manager": {
1394
+ "error_loading_settings": "❌ Erro ao carregar configurações:",
1395
+ "error_saving_settings": "❌ Erro ao salvar configurações:",
1396
+ "error_setting_value": "❌ Valor de configuração de erro:",
1397
+ "missing_required_setting": "❌ Configuração necessária ausente: {prop}",
1398
+ "invalid_language": "❌ Idioma inválido: {language}",
1399
+ "invalid_source_language": "❌ Idioma de origem inválido: {sourceLanguage}",
1400
+ "default_languages_must_be_array": "❌ defaultLanguages ​​deve ser uma matriz",
1401
+ "invalid_date_format": "❌ Formato de data inválido: {dateFormat}. Formatos válidos: {validFormats}",
1402
+ "invalid_time_format": "❌ Formato de hora inválido: {timeFormat}. Formatos válidos: {validFormats}",
1403
+ "notifications_types_must_be_object": "❌ notifications.types deve ser um objeto",
1404
+ "exclude_files_must_be_array": "❌ excludeFiles deve ser um array",
1405
+ "exclude_dirs_must_be_array": "❌ excludeDirs deve ser um array",
1406
+ "include_extensions_must_be_array": "❌ includeExtensions deve ser um array",
1407
+ "invalid_batch_size": "❌ Tamanho de lote inválido. Deve ser um número positivo",
1408
+ "invalid_max_concurrent_files": "❌ Máximo de arquivos simultâneos inválidos. Deve ser um número positivo",
1409
+ "invalid_sizing_threshold": "❌ Limite de dimensionamento inválido. Deve ser um número positivo",
1410
+ "invalid_timeout": "❌ Tempo limite inválido. Deve ser pelo menos 1000 ms",
1411
+ "invalid_sizing_format": "❌ Formato de tamanho inválido: {sizingFormat}. Formatos válidos: {validFormats}",
1412
+ "error_validating_settings": "❌ Erro ao validar configurações:",
1413
+ "backup_created": "📋 Backup criado: {backupPath}",
1414
+ "error_creating_backup": "❌ Erro ao criar backup:",
1415
+ "language_not_supported": "Linguagem '{language}' não é suportado. Disponível: {availableLanguages}",
1416
+ "ui_language_set": "🌍 Idioma da IU definido como: {language}"
1417
+ }
1418
+ },
1419
+ "settings": {
1420
+ "title": "⚙️ Gerenciamento de configurações",
1421
+ "separator": "============================================================",
1422
+ "goodbyeMessage": "Obrigado por usar o gerenciador de configurações i18ntk!",
1423
+ "relativePathHint": "Use caminhos relativos deste diretório (por exemplo, ./src/i18n/locales)",
1424
+ "currentDirectory": "Diretório do projeto atual",
1425
+ "startingSettings": "Configurações iniciais:",
1426
+ "pin": "PIN:",
1427
+ "reportBug": {
1428
+ "title": "Reportar bug",
1429
+ "description": "Relate quaisquer problemas ou bugs que você encontrar",
1430
+ "guidance": "Para relatar problemas de forma eficaz:",
1431
+ "checkLogs": "1. Verifique os logs de depuração no diretório do seu projeto",
1432
+ "documentIssue": "2. Documente o problema com etapas para reproduzir",
1433
+ "contactSupport": "3. Entre em contato com o administrador do sistema ou equipe de suporte",
1434
+ "completed": "Orientações para relatórios de bugs exibidas",
1435
+ "instructions": "Siga as instruções acima para relatar o bug."
1436
+ },
1437
+ "mainMenu": {
1438
+ "title": "Menu Principal:",
1439
+ "uiSettings": "Configurações da IU",
1440
+ "uiSettingsDesc": "Opções de idioma, tema e interface",
1441
+ "directorySettings": "Configurações de diretório",
1442
+ "directorySettingsDesc": "Caminhos de diretório de origem e saída",
1443
+ "processingSettings": "Configurações de processamento",
1444
+ "processingSettingsDesc": "Tamanho do lote, simultaneidade e desempenho",
1445
+ "advancedSettings": "Configurações avançadas",
1446
+ "advancedSettingsDesc": "Validação, registro e opções de especialistas",
1447
+ "viewAllSettings": "Ver todas as configurações",
1448
+ "viewAllSettingsDesc": "Exibir configuração atual",
1449
+ "importExport": "Importar/Exportar",
1450
+ "updatePackage": "Pacote de atualização",
1451
+ "updatePackageDesc": "Atualize o pacote i18n-toolkit via npm",
1452
+ "importExportDesc": "Configurações de backup e restauração",
1453
+ "resetToDefaults": "Redefinir para os padrões",
1454
+ "resetToDefaultsDesc": "Restaurar configurações de fábrica",
1455
+ "reportBug": "Reportar bug",
1456
+ "reportBugDesc": "Envie um relatório de problema no GitHub",
1457
+ "saveChanges": "Salvar alterações",
1458
+ "saveChangesDesc": "Salvar configurações atuais em arquivo",
1459
+ "help": "Ajuda",
1460
+ "helpDesc": "Mostrar informações de ajuda detalhadas",
1461
+ "quit": "Desistir",
1462
+ "quitDesc": "Sair das configurações (com prompt para salvar, se necessário)",
1463
+ "unsavedChangesWarning": "⚠️ Você tem alterações não salvas",
1464
+ "saveChangesBeforeQuit": "Deseja salvar as alterações antes de sair? (S/N):",
1465
+ "selectOption": "Selecione uma opção:",
1466
+ "goodbyeMessage": "Obrigado por usar o gerenciador de configurações i18n!",
1467
+ "selectSettingPrompt": "Selecione uma configuração para editar (ou 'b' para voltar):",
1468
+ "enterNewValue": "Insira o novo valor:",
1469
+ "updatedSuccessfully": "{setting} atualizado com sucesso!",
1470
+ "scriptDirectorySettings": "Configurações do diretório de scripts",
1471
+ "scriptDirectoryDesc": "Especifique diretórios personalizados para cada script",
1472
+ "scriptDirectorySettingsDesc": "Você pode definir diretórios personalizados para cada script. Se não for definido, as configurações globais serão usadas.",
1473
+ "currentDirectory": "Diretório do projeto atual",
1474
+ "securitySettings": "Configurações de segurança",
1475
+ "securitySettingsDesc": "PIN de administrador e outras opções de segurança",
1476
+ "backupSettings": "Configurações de backup",
1477
+ "backupSettingsDesc": "Fazer backup e restaurar definições de configuração",
1478
+ "autoTranslate": "Tradução automática",
1479
+ "autoTranslateDesc": "Ajuste o tratamento de espaços reservados, simultaneidade, lotes e relatórios"
1480
+ },
1481
+ "updatePackage": {
1482
+ "title": "Pacote de atualização",
1483
+ "description": "Atualize o pacote i18n-toolkit via npm",
1484
+ "command": "atualização npm i18ntk -g",
1485
+ "success": "Atualização concluída com sucesso.",
1486
+ "failed": "Falha na atualização.",
1487
+ "prompt": "Deseja atualizar o pacote agora? (S/N):",
1488
+ "promptDesc": "Nota: Isso atualizará o pacote i18ntk para a versão mais recente.",
1489
+ "confirm": "sim",
1490
+ "cancelled": "Atualização cancelada.",
1491
+ "error": "Falha ao atualizar o pacote",
1492
+ "updating": "Atualizando pacote..."
1493
+ },
1494
+ "admin": {
1495
+ "selectOption": "Selecione a opção:",
1496
+ "updateSuccess": "PIN de administrador atualizado com sucesso!",
1497
+ "updateFailed": "Falha ao atualizar o PIN do administrador.",
1498
+ "protectionRemoved": "A proteção do PIN do administrador foi removida.",
1499
+ "configSuccess": "PIN de administrador configurado com sucesso!",
1500
+ "configFailed": "Falha ao configurar o PIN do administrador.",
1501
+ "setupPinPrompt": "Gostaria de configurar um PIN de administrador? (S/N):",
1502
+ "pinUpdatedSuccess": "PIN de administrador atualizado com sucesso!",
1503
+ "pinUpdatedFailed": "Falha ao atualizar o PIN do administrador.",
1504
+ "pinRemoved": "A proteção do PIN do administrador foi removida.",
1505
+ "pinConfiguredSuccess": "PIN de administrador configurado com sucesso!",
1506
+ "pinConfiguredFailed": "Falha ao configurar o PIN do administrador.",
1507
+ "accessDenied": "❌ Acesso negado. Voltando ao cardápio.",
1508
+ "setupPin": "🔐 Configurando PIN de administrador...",
1509
+ "setupFailed": "❌ Falha ao configurar o PIN do administrador. Configuração não alterada.",
1510
+ "pinConfigured": "📌 O PIN do administrador está configurado no momento.",
1511
+ "options": "Opções:",
1512
+ "changePin": "1) Alterar PIN existente",
1513
+ "removePin": "2) Remova a proteção PIN",
1514
+ "cancel": "3) Cancelar",
1515
+ "verifyCurrentPin": "🔐 Verifique primeiro o PIN atual:",
1516
+ "settingNewPin": "🔄 Configurando novo PIN...",
1517
+ "verifyToRemove": "🔐 Verifique o PIN atual para remover a proteção:",
1518
+ "noPinConfigured": "🔓 Nenhum PIN de administrador está configurado no momento.",
1519
+ "pinBenefits": "Configurar o PIN do administrador adicionará segurança para:",
1520
+ "benefitSecurity": "• Alteração das configurações de segurança",
1521
+ "benefitAdvanced": "• Modificando configurações avançadas",
1522
+ "benefitDebug": "• Acessando ferramentas de depuração",
1523
+ "benefitReset": "• Redefinir configurações",
1524
+ "setupCancelled": "⏭️ Configuração do PIN de administrador cancelada.",
1525
+ "operationCancelled": "❌ Operação cancelada.",
1526
+ "startingSettings": "🎛️ Iniciando Configurações CLI...",
1527
+ "authRequired": "🔒 Autenticação de administrador necessária para: {label}",
1528
+ "pinSetupTitle": "Configuração do PIN de administrador",
1529
+ "browserOpenFailed": "Não foi possível abrir o navegador automaticamente.",
1530
+ "manualVisit": "Visite manualmente: {url}",
1531
+ "browserOpened": "✅ Navegador aberto com sucesso!"
1532
+ },
1533
+ "importExport": {
1534
+ "title": "Configurações de importação/exportação",
1535
+ "export": "Exportar configurações",
1536
+ "import": "Configurações de importação",
1537
+ "backup": "Criar backup",
1538
+ "enterFilename": "Digite o nome do arquivo (ou pressione Enter por padrão):",
1539
+ "exportSuccess": "Configurações exportadas para {file}",
1540
+ "exportFailed": "Falha ao exportar configurações: {error}",
1541
+ "importFilename": "Digite o nome do arquivo para importar:",
1542
+ "fileNotFound": "Arquivo não encontrado.",
1543
+ "invalidFormat": "Formato de arquivo de configurações inválido.",
1544
+ "confirmImport": "Isso substituirá todas as configurações atuais. Continuar? (S/N):",
1545
+ "importSuccess": "Configurações importadas com sucesso.",
1546
+ "importFailed": "Falha ao importar configurações: {error}",
1547
+ "backupSuccess": "Backup criado: {file}",
1548
+ "backupFailed": "Falha ao criar backup: {error}",
1549
+ "exportFilenamePrompt": "Insira o nome do arquivo de exportação:",
1550
+ "importConfirm": "Importar este arquivo de configurações? (S/N):",
1551
+ "importFilenamePrompt": "Insira o nome do arquivo de importação:",
1552
+ "manageBackups": "Gerenciar backups",
1553
+ "restore": "Restaurar configurações"
1554
+ },
1555
+ "selectOption": "Selecione uma opção:",
1556
+ "resetToDefaultsTitle": "Redefinir as configurações para os padrões",
1557
+ "resetWarning1": "⚠️ Isso redefinirá TODAS as configurações para seus valores padrão.",
1558
+ "resetWarning2": "Esta ação não pode ser desfeita.",
1559
+ "resetConfirm": "Tem certeza de que deseja continuar? (S/N):",
1560
+ "resetSuccess": "As configurações foram redefinidas para os padrões com sucesso.",
1561
+ "resetFailed": "Falha ao redefinir as configurações: {error}",
1562
+ "resetDone": "As configurações foram redefinidas para os padrões com sucesso.",
1563
+ "resetScriptDirsDone": "Os diretórios de script foram redefinidos para os padrões do sistema com sucesso.",
1564
+ "saveSuccess": "Configurações salvas com sucesso.",
1565
+ "saveFailed": "Falha ao salvar as configurações.",
1566
+ "saveError": "Configurações inválidas fornecidas",
1567
+ "pressEnter": "Pressione Enter para continuar...",
1568
+ "initFailed": "Falha ao inicializar as configurações: {error}",
1569
+ "invalidValueFormat": "Formato de valor inválido.",
1570
+ "help": {
1571
+ "title": "Ajuda de configurações",
1572
+ "navigationTitle": "Navegação",
1573
+ "navigation1": "1. Configurações gerais - Configure o idioma da interface do usuário, o tema e as preferências básicas",
1574
+ "navigation2": "2. Configurações de diretório - Defina diretórios de origem e saída para arquivos de tradução",
1575
+ "navigation3": "3. Configurações de processamento - Configure o tamanho do lote, a simultaneidade e as opções de desempenho",
1576
+ "navigation4": "4. Configurações avançadas - Validação de acesso, registro e opções de configuração especializada",
1577
+ "categoriesTitle": "Categorias de configurações",
1578
+ "categoryUI": "• Configurações da UI: idioma da interface, tema de cores e preferências de exibição",
1579
+ "categoryDirectory": "• Configurações de diretório: localização dos arquivos de origem e diretórios de relatórios de saída",
1580
+ "categoryProcessing": "• Configurações de processamento: processamento em lote, limites de arquivos e ajuste de desempenho",
1581
+ "categoryAdvanced": "• Configurações avançadas: modo de depuração, registro de auditoria e opções de segurança",
1582
+ "envVarsTitle": "Variáveis ​​de ambiente",
1583
+ "envVar1": "• I18N_SOURCE_DIR: Substituir caminho do diretório de origem padrão",
1584
+ "envVar2": "• I18N_OUTPUT_DIR: Substituir caminho do diretório de saída padrão",
1585
+ "envVar3": "• I18N_DEBUG: Habilita modo de depuração (verdadeiro/falso)",
1586
+ "cliUsageTitle": "Exemplos de uso de CLI",
1587
+ "cliUsage1": "• npx i18ntk --settings: abre o menu de configurações interativas",
1588
+ "cliUsage2": "• npx i18ntk --settings --lang de: Abrir configurações em alemão",
1589
+ "cliUsage3": "• npx i18ntk --reset-settings: redefine todas as configurações para os padrões",
1590
+ "navigation": "Use as teclas numéricas para selecionar opções, 'b' para voltar",
1591
+ "editing": "Insira novos valores quando solicitado ou pressione Enter para manter os valores atualizados",
1592
+ "saving": "Use 's' para salvar as alterações antes de sair",
1593
+ "reset": "Use a opção 7 para redefinir todas as configurações para os padrões"
1594
+ },
1595
+ "categories": {
1596
+ "uiSettings": "Configurações da IU",
1597
+ "directorySettings": "Configurações de diretório",
1598
+ "processingSettings": "Configurações de processamento",
1599
+ "advancedSettings": "Configurações avançadas",
1600
+ "scriptDirectorySettings": "Configurações do diretório de scripts",
1601
+ "securitySettings": "Configurações de segurança",
1602
+ "autoTranslate": "Configurações de tradução automática"
1603
+ },
1604
+ "security": {
1605
+ "title": "🔐 Configurações de segurança",
1606
+ "description": "Configurar proteção de PIN de administrador e opções de segurança",
1607
+ "currentPin": "PIN atual:",
1608
+ "pinConfigured": "✅ Configurado",
1609
+ "pinNotConfigured": "❌ Não configurado",
1610
+ "pinDisplay": "Exibição do PIN:",
1611
+ "menu": {
1612
+ "enableDisable": "1) Ativar/desativar PIN de administrador",
1613
+ "setupChange": "2) Configurar/alterar PIN de administrador",
1614
+ "sessionTimeout": "3) Tempo limite da sessão",
1615
+ "maxAttempts": "4) Máximo de tentativas fracassadas",
1616
+ "lockoutDuration": "5) Duração do bloqueio",
1617
+ "back": "b) Voltar ao menu principal"
1618
+ },
1619
+ "prompts": {
1620
+ "enablePin": "Ativar proteção por PIN de administrador? (S/N):",
1621
+ "disablePin": "Desativar a proteção do PIN do administrador? (S/N):",
1622
+ "enterTimeout": "Insira o tempo limite da sessão (minutos):",
1623
+ "enterMaxAttempts": "Insira o máximo de tentativas malsucedidas:",
1624
+ "enterLockoutDuration": "Insira a duração do bloqueio (minutos):"
1625
+ },
1626
+ "messages": {
1627
+ "pinEnabled": "Proteção por PIN de administrador ativada",
1628
+ "pinDisabled": "Proteção do PIN do administrador desativada",
1629
+ "timeoutUpdated": "Tempo limite da sessão atualizado para {minutes} minutos",
1630
+ "maxAttemptsUpdated": "Máximo de tentativas malsucedidas atualizado para {attempts}",
1631
+ "lockoutDurationUpdated": "Duração do bloqueio atualizada para {minutes} minutos"
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": "Diretório I18n",
1667
+ "description": "Diretório contendo arquivos de tradução",
1668
+ "current": "Atual: {value}",
1669
+ "help": "Caminho para o diretório com arquivos de tradução"
1670
+ },
1671
+ "projectRoot": {
1672
+ "label": "Raiz do Projeto",
1673
+ "description": "Diretório raiz do projeto",
1674
+ "current": "Atual: {value}",
1675
+ "help": "Caminho para o diretório raiz do projeto"
1676
+ },
1677
+ "checkUsage": {
1678
+ "usage_analysis_failed": "Falha na análise de uso",
1679
+ "usage_analysis_success": "Análise de uso bem-sucedida",
1680
+ "usage_analysis_complete": "Análise de uso concluída",
1681
+ "usage_analysis_in_progress": "Análise de uso em andamento",
1682
+ "usage_analysis_started": "Análise de uso iniciada",
1683
+ "usage_analysis_skipped": "Análise de uso ignorada"
1684
+ },
1685
+ "language": {
1686
+ "label": "Idioma da interface",
1687
+ "description": "Idioma para a interface do usuário",
1688
+ "current": "Atual: {value}",
1689
+ "help": "Selecione seu idioma de interface preferido"
1690
+ },
1691
+ "scriptDirectories": {
1692
+ "analyzeLabel": "Analisar diretórios de script",
1693
+ "analyzeHelp": "Analise os diretórios de script em busca de problemas",
1694
+ "completeLabel": "Diretórios de configuração completos",
1695
+ "initLabel": "Inicializar diretórios de script",
1696
+ "manageLabel": "Gerenciar diretórios de script",
1697
+ "sizingLabel": "Dimensionando diretórios de script",
1698
+ "summaryLabel": "Diretórios de relatórios resumidos",
1699
+ "usageLabel": "Diretórios de relatórios de uso",
1700
+ "validateLabel": "Validar diretórios de script"
1701
+ },
1702
+ "theme": {
1703
+ "label": "Tema de cores",
1704
+ "description": "Preferência de tema da IU",
1705
+ "current": "Atual: {value}",
1706
+ "help": "Escolha entre temas claros e escuros"
1707
+ },
1708
+ "dateFormat": {
1709
+ "label": "Formato de data",
1710
+ "description": "Formato para exibição de datas",
1711
+ "current": "Atual: {value}",
1712
+ "help": "Escolha como as datas são exibidas nos relatórios"
1713
+ },
1714
+ "notifications": {
1715
+ "enabled": {
1716
+ "label": "Habilitar notificações",
1717
+ "description": "Mostrar notificações na área de trabalho",
1718
+ "current": "Atual: {value}",
1719
+ "help": "Habilite notificações na área de trabalho para operações concluídas"
1720
+ }
1721
+ },
1722
+ "sourceDir": {
1723
+ "label": "Diretório de origem",
1724
+ "description": "Diretório contendo arquivos de tradução",
1725
+ "current": "Atual: {value}",
1726
+ "help": "Caminho para o diretório com os arquivos de tradução de origem"
1727
+ },
1728
+ "sourceLanguage": {
1729
+ "label": "Idioma de origem",
1730
+ "description": "Idioma principal para traduções",
1731
+ "current": "Atual: {value}",
1732
+ "help": "O idioma principal usado como fonte para traduções"
1733
+ },
1734
+ "outputDir": {
1735
+ "label": "Diretório de saída",
1736
+ "description": "Diretório para relatórios gerados",
1737
+ "current": "Atual: {value}",
1738
+ "help": "Onde os relatórios e arquivos processados ​​serão salvos"
1739
+ },
1740
+ "batchSize": {
1741
+ "label": "Tamanho do lote",
1742
+ "description": "Número de itens processados ​​por lote",
1743
+ "current": "Atual: {value}",
1744
+ "help": "Quantos arquivos processar em cada lote"
1745
+ },
1746
+ "maxConcurrentFiles": {
1747
+ "label": "Máximo de arquivos simultâneos",
1748
+ "description": "Máximo de arquivos processados ​​simultaneamente",
1749
+ "current": "Atual: {value}",
1750
+ "help": "Número máximo de arquivos a serem processados ​​ao mesmo tempo"
1751
+ },
1752
+ "sizingThreshold": {
1753
+ "label": "Limite de dimensionamento (%)",
1754
+ "description": "Limite para avisos de variação de tamanho",
1755
+ "current": "Atual: {value}%",
1756
+ "help": "Limite percentual para detectar incompatibilidades de tamanho"
1757
+ },
1758
+ "strictMode": {
1759
+ "label": "Modo de validação estrito",
1760
+ "description": "Habilite o modo de validação estrito",
1761
+ "current": "Atual: {value}",
1762
+ "help": "Habilite a validação estrita para arquivos de tradução"
1763
+ },
1764
+ "enableAuditLog": {
1765
+ "label": "Habilitar log de auditoria",
1766
+ "description": "Acompanhe todas as alterações de tradução",
1767
+ "current": "Atual: {value}",
1768
+ "help": "Registrar todas as alterações feitas nos arquivos de tradução"
1769
+ },
1770
+ "backupBeforeChanges": {
1771
+ "label": "Backup automático",
1772
+ "description": "Crie backups antes das modificações",
1773
+ "current": "Atual: {value}",
1774
+ "help": "Crie backups automaticamente antes de fazer alterações"
1775
+ },
1776
+ "advanced_maxConcurrentFiles": {
1777
+ "label": "Máximo de arquivos simultâneos",
1778
+ "description": "Máximo de arquivos processados ​​simultaneamente",
1779
+ "current": "Atual: {value}",
1780
+ "help": "Número máximo de arquivos a serem processados ​​ao mesmo tempo"
1781
+ },
1782
+ "advanced_strictMode": {
1783
+ "label": "Modo de validação estrito",
1784
+ "description": "Habilite o modo de validação estrito",
1785
+ "current": "Atual: {value}",
1786
+ "help": "Habilite a validação estrita para arquivos de tradução"
1787
+ },
1788
+ "adminPinEnabled": {
1789
+ "label": "Proteção de PIN de administrador",
1790
+ "description": "Habilite a autenticação por PIN de administrador para configurações confidenciais",
1791
+ "current": "Atual: {value}",
1792
+ "help": "Exigir PIN de administrador para alterar configurações avançadas e de segurança"
1793
+ },
1794
+ "sessionTimeout": {
1795
+ "label": "Tempo limite da sessão",
1796
+ "description": "Tempo limite da sessão de administrador em minutos",
1797
+ "current": "Atual: {value} minutos",
1798
+ "help": "Quanto tempo as sessões administrativas permanecem ativas antes de exigirem nova autenticação"
1799
+ },
1800
+ "maxFailedAttempts": {
1801
+ "label": "Máximo de tentativas fracassadas",
1802
+ "description": "Máximo de tentativas de PIN com falha antes do bloqueio",
1803
+ "current": "Atual: {value} tentativas",
1804
+ "help": "Número de tentativas fracassadas de PIN permitidas antes do bloqueio temporário"
1805
+ },
1806
+ "lockoutDuration": {
1807
+ "label": "Duração do bloqueio",
1808
+ "description": "Duração do bloqueio após tentativas fracassadas",
1809
+ "current": "Atual: {value} minutos",
1810
+ "help": "Quanto tempo o sistema permanece bloqueado após o máximo de tentativas malsucedidas"
1811
+ },
1812
+ "scriptDirectories_analyze": {
1813
+ "label": "Analisar diretórios de script",
1814
+ "description": "Diretórios personalizados para script de análise",
1815
+ "current": "Atual: {value}",
1816
+ "help": "Especifique o diretório de origem customizado para o script de análise. Deixe em branco para usar a configuração global."
1817
+ },
1818
+ "scriptDirectories_complete": {
1819
+ "label": "Diretórios de configuração completos",
1820
+ "description": "Diretórios personalizados para script de configuração completo",
1821
+ "current": "Atual: {value}",
1822
+ "help": "Especifique o diretório de origem personalizado para o script de configuração completo. Deixe em branco para usar a configuração global."
1823
+ },
1824
+ "scriptDirectories_init": {
1825
+ "label": "Inicializar diretórios de script",
1826
+ "description": "Diretórios personalizados para script de inicialização",
1827
+ "current": "Atual: {value}",
1828
+ "help": "Especifique o diretório de origem customizado para o script de inicialização. Deixe em branco para usar a configuração global."
1829
+ },
1830
+ "scriptDirectories_manage": {
1831
+ "label": "Gerenciar diretórios de script",
1832
+ "description": "Diretórios personalizados para script de gerenciamento",
1833
+ "current": "Atual: {value}",
1834
+ "help": "Especifique o diretório de origem customizado para o script de gerenciamento. Deixe em branco para usar a configuração global."
1835
+ },
1836
+ "scriptDirectories_sizing": {
1837
+ "label": "Dimensionando diretórios de script",
1838
+ "description": "Diretórios personalizados para script de dimensionamento",
1839
+ "current": "Atual: {value}",
1840
+ "help": "Especifique o diretório de origem personalizado para o script de dimensionamento. Deixe em branco para usar a configuração global."
1841
+ },
1842
+ "scriptDirectories_summary": {
1843
+ "label": "Diretórios de relatórios resumidos",
1844
+ "description": "Diretórios personalizados para script de relatório resumido",
1845
+ "current": "Atual: {value}",
1846
+ "help": "Especifique o diretório de origem customizado para o script de relatório de resumo. Deixe em branco para usar a configuração global."
1847
+ },
1848
+ "scriptDirectories_usage": {
1849
+ "label": "Diretórios de relatórios de uso",
1850
+ "description": "Diretórios personalizados para script de relatório de uso",
1851
+ "current": "Atual: {value}",
1852
+ "help": "Especifique o diretório de origem customizado para o script de relatório de uso. Deixe em branco para usar a configuração global."
1853
+ },
1854
+ "scriptDirectories_validate": {
1855
+ "label": "Validar diretórios de script",
1856
+ "description": "Diretórios personalizados para script de validação",
1857
+ "current": "Atual: {value}",
1858
+ "help": "Especifique o diretório de origem customizado para o script de validação. Deixe em branco para usar a configuração global."
1859
+ },
1860
+ "security_adminPinEnabled": {
1861
+ "label": "Proteção de PIN de administrador",
1862
+ "description": "Habilite a autenticação por PIN de administrador para configurações confidenciais",
1863
+ "current": "Atual: {value}",
1864
+ "help": "Exigir PIN de administrador para alterar configurações avançadas e de segurança"
1865
+ },
1866
+ "fields": {
1867
+ "adminPinEnabled": {
1868
+ "label": "Proteção de PIN de administrador",
1869
+ "description": "Habilite a autenticação por PIN de administrador para configurações confidenciais",
1870
+ "help": "Exigir PIN de administrador para alterar configurações avançadas e de segurança"
1871
+ }
1872
+ },
1873
+ "security_pinProtection_enabled": {
1874
+ "label": "Proteção PIN",
1875
+ "description": "Ative a proteção por PIN para configurações confidenciais",
1876
+ "current": "Atual: {value}",
1877
+ "help": "Exigir PIN para alterar configurações avançadas e de segurança"
1878
+ },
1879
+ "pinProtection_configure": {
1880
+ "label": "Configurar scripts protegidos por PIN",
1881
+ "description": "Configurar quais scripts exigem proteção por PIN",
1882
+ "help": "Selecione scripts individuais que exigem autenticação PIN"
1883
+ },
1884
+ "pinProtection_debugMenu": {
1885
+ "label": "Menu Ferramentas de depuração",
1886
+ "description": "Exigir PIN para o menu Ferramentas de depuração",
1887
+ "current": "Atual: {value}",
1888
+ "help": "Habilite a proteção PIN para acessar ferramentas de depuração"
1889
+ },
1890
+ "pinProtection_deleteReports": {
1891
+ "label": "Excluir relatórios",
1892
+ "description": "Exigir PIN para excluir relatórios",
1893
+ "current": "Atual: {value}",
1894
+ "help": "Ativar proteção por PIN para exclusão de relatórios"
1895
+ },
1896
+ "pinProtection_summaryReports": {
1897
+ "label": "Relatórios resumidos",
1898
+ "description": "Exigir PIN para relatórios resumidos",
1899
+ "current": "Atual: {value}",
1900
+ "help": "Ative a proteção por PIN para gerar relatórios resumidos"
1901
+ },
1902
+ "pinProtection_settingsMenu": {
1903
+ "label": "Menu Configurações",
1904
+ "description": "Exigir PIN para o menu Configurações",
1905
+ "current": "Atual: {value}",
1906
+ "help": "Ative a proteção PIN para acessar as configurações"
1907
+ },
1908
+ "pinProtection_initScript": {
1909
+ "label": "Inicializar script",
1910
+ "description": "Exigir PIN para inicializar script",
1911
+ "current": "Atual: {value}",
1912
+ "help": "Habilite a proteção por PIN para executar o script de inicialização"
1913
+ },
1914
+ "pinProtection_resetDefaults": {
1915
+ "label": "Redefinir proteção PIN",
1916
+ "description": "Redefinir todas as configurações de proteção de PIN para os padrões",
1917
+ "help": "Redefinir todas as proteções de PIN de script individuais para os valores padrão"
1918
+ },
1919
+ "removeUiLanguages": {
1920
+ "label": "Remover idiomas da IU",
1921
+ "description": "Remover idiomas da UI que não estão instalados",
1922
+ "help": "Remova os idiomas da UI que não estão instalados no sistema"
1923
+ },
1924
+ "${helperKey}": {
1925
+ "help": "Ajuda"
1926
+ },
1927
+ "reports_format": {
1928
+ "label": "Formato do relatório",
1929
+ "help": "Escolha markdown para relatórios legíveis, json para automação ou texto para logs simples."
1930
+ },
1931
+ "autoTranslate_placeholderMode": {
1932
+ "label": "Modo de tratamento de espaço reservado",
1933
+ "help": "Como as strings com espaço reservado são tratadas durante a tradução automática."
1934
+ },
1935
+ "autoTranslate_concurrency": {
1936
+ "label": "Solicitações de tradução simultâneas",
1937
+ "help": "Máximo de solicitações simultâneas de provedor. O Google suporta até 100 em i18ntk; DeepL e LibreTranslate têm limites mais baixos."
1938
+ },
1939
+ "autoTranslate_batchSize": {
1940
+ "label": "Segmentos de texto por lote",
1941
+ "help": "Número de segmentos de texto programados por lote."
1942
+ },
1943
+ "autoTranslate_progressInterval": {
1944
+ "label": "Intervalo de atualização de progresso",
1945
+ "help": "Segmentos de texto concluídos entre atualizações de progresso."
1946
+ },
1947
+ "autoTranslate_retryCount": {
1948
+ "label": "Contagem de novas tentativas",
1949
+ "help": "Máximo de tentativas por solicitação com falha."
1950
+ },
1951
+ "autoTranslate_retryDelay": {
1952
+ "label": "Atraso de nova tentativa (ms)",
1953
+ "help": "Atraso básico de nova tentativa em milissegundos."
1954
+ },
1955
+ "autoTranslate_timeout": {
1956
+ "label": "Tempo limite da solicitação (ms)",
1957
+ "help": "Tempo limite de solicitação do provedor de tradução."
1958
+ },
1959
+ "autoTranslate_dryRunFirst": {
1960
+ "label": "Pré-visualização do teste primeiro",
1961
+ "help": "Visualize o que será traduzido antes de gravar os arquivos."
1962
+ },
1963
+ "autoTranslate_onlyMissingOrEnglish": {
1964
+ "label": "Apenas chaves ausentes ou em inglês",
1965
+ "help": "Mantenha os valores de destino traduzidos existentes e traduza apenas valores ausentes, de marcador, de cópia de origem ou prováveis ​​valores em inglês."
1966
+ },
1967
+ "autoTranslate_reportStdout": {
1968
+ "label": "Imprimir relatório no terminal",
1969
+ "help": "Imprima o relatório pós-tradução em stdout."
1970
+ },
1971
+ "autoTranslate_bom": {
1972
+ "label": "Escreva a lista técnica UTF-8",
1973
+ "help": "Escreva arquivos JSON traduzidos com uma lista técnica UTF-8."
1974
+ },
1975
+ "autoTranslate_protectionEnabled": {
1976
+ "label": "Proteja termos, chaves e valores da marca",
1977
+ "help": "Habilite termos, chaves, valores e padrões protegidos editáveis ​​pelo usuário."
1978
+ },
1979
+ "autoTranslate_protectionFile": {
1980
+ "label": "Arquivo JSON de proteção",
1981
+ "help": "Arquivo JSON do projeto contendo regras de proteção do Auto Translate."
1982
+ },
1983
+ "autoTranslate_promptProtectionSetup": {
1984
+ "label": "Peça para criar arquivo de proteção",
1985
+ "help": "Peça para criar o arquivo de proteção quando o Auto Translate for executado pela primeira vez."
1986
+ },
1987
+ "autoTranslate_promptProtectionUpdate": {
1988
+ "label": "Peça para atualizar as regras de proteção",
1989
+ "help": "Pergunte se deseja atualizar as regras de proteção antes das traduções do gerente."
1990
+ },
1991
+ "backup": {
1992
+ "enabled": {
1993
+ "label": "Habilitar backup",
1994
+ "description": "Habilite o backup automático das configurações",
1995
+ "help": "Ativar/desativar recurso de backup"
1996
+ },
1997
+ "singleFileMode": {
1998
+ "label": "Modo de arquivo único",
1999
+ "description": "Use arquivo único para backups",
2000
+ "help": "Configurações de backup em um único arquivo"
2001
+ },
2002
+ "singleBackupFile": {
2003
+ "label": "Caminho do arquivo de backup",
2004
+ "description": "Caminho para o arquivo de backup",
2005
+ "help": "Caminho para o arquivo de backup único"
2006
+ },
2007
+ "retentionDays": {
2008
+ "label": "Período de retenção",
2009
+ "description": "Dias para manter os arquivos de backup",
2010
+ "help": "Número de dias para reter arquivos de backup antigos"
2011
+ },
2012
+ "maxBackups": {
2013
+ "label": "Máximo de backups",
2014
+ "description": "Máximo de arquivos de backup para manter",
2015
+ "help": "Número máximo de arquivos de backup a serem mantidos"
2016
+ },
2017
+ "confirm": {
2018
+ "label": "Confirmar backup",
2019
+ "description": "Exigir confirmação para operações de backup",
2020
+ "help": "Confirme a operação de backup"
2021
+ }
2022
+ }
2023
+ },
2024
+ "actions": {
2025
+ "editSetting": "Editar {setting}:",
2026
+ "settingUpdated": "✅ {setting} atualizado com sucesso!",
2027
+ "invalidValue": "❌ Valor inválido. Por favor, tente novamente.",
2028
+ "pressEnter": "Pressione Enter para continuar...",
2029
+ "backToMenu": "Voltar ao menu principal",
2030
+ "saveSuccess": "✅ Configurações salvas com sucesso!",
2031
+ "saveFailed": "❌ Falha ao salvar as configurações: {error}",
2032
+ "resetConfirm": "Tem certeza de que deseja redefinir todas as configurações para os padrões? (S/N):",
2033
+ "resetSuccess": "✅ Configurações redefinidas para os padrões com sucesso!",
2034
+ "importSuccess": "✅ Configurações importadas com sucesso!",
2035
+ "exportSuccess": "✅ Configurações exportadas com sucesso!",
2036
+ "fileNotFound": "❌ Arquivo não encontrado: {path}",
2037
+ "invalidFormat": "❌ Formato de arquivo de configurações inválido",
2038
+ "pinProtectionUpdated": "✅ Proteção PIN para {script} atualizado com sucesso!",
2039
+ "pinProtectionReset": "✅ Todas as configurações de proteção de PIN foram redefinidas para os padrões!",
2040
+ "pinProtectionConfigure": "Configurar proteção de PIN para scripts individuais",
2041
+ "pinProtectionSelectScript": "Selecione um script para alternar a proteção do PIN:",
2042
+ "pinProtectionCurrentStatus": "Situação atual: {status}",
2043
+ "pinProtectionEnabled": "Habilitado",
2044
+ "pinProtectionDisabled": "Desabilitado",
2045
+ "pinProtectionToggle": "Alternar proteção de PIN",
2046
+ "pinProtectionResetAll": "Redefinir tudo para os padrões",
2047
+ "pinProtectionBack": "Voltar para configurações de segurança"
2048
+ },
2049
+ "themes": {
2050
+ "light": "Luz",
2051
+ "dark": "Escuro",
2052
+ "system": "Sistema"
2053
+ },
2054
+ "languages": {
2055
+ "en": "Inglês",
2056
+ "de": "Alemão",
2057
+ "es": "Espanhol",
2058
+ "fr": "Francês",
2059
+ "ru": "russo",
2060
+ "ja": "japonês",
2061
+ "zh": "chinês",
2062
+ "it": "Italiano",
2063
+ "pt": "Português",
2064
+ "nl": "Holandês",
2065
+ "pl": "Polonês",
2066
+ "sv": "Sueco",
2067
+ "uk": "Ucraniano",
2068
+ "cs": "Tcheco",
2069
+ "tr": "Turco",
2070
+ "ko": "Coreano",
2071
+ "ar": "Árabe",
2072
+ "hi": "Hindi",
2073
+ "th": "Tailandês",
2074
+ "vi": "Vietnamita",
2075
+ "he": "Hebraico",
2076
+ "el": "Grego",
2077
+ "hu": "Húngaro"
2078
+ },
2079
+ "viewAll": {
2080
+ "title": "Ver todas as configurações"
2081
+ },
2082
+ "current": "Atual",
2083
+ "back": "Voltar ao menu principal",
2084
+ "selectSettingPrompt": "Selecione a configuração a ser editada (ou b para voltar, r para redefinir):",
2085
+ "invalidOption": "Opção inválida.",
2086
+ "editing": "Edição",
2087
+ "enterNewValue": "Insira o novo valor (ou pressione Enter para mantê-lo atualizado, digite 'default' para usar o padrão do sistema):",
2088
+ "validOptions": "Opções válidas",
2089
+ "updatedSuccessfully": "atualizado com sucesso!",
2090
+ "noHelp": "Não há ajuda disponível para esta configuração",
2091
+ "resetScriptDirectories": "Redefinir para valores padrão",
2092
+ "resetScriptDirectoriesTitle": "Redefinir diretórios de script para padrões",
2093
+ "resetScriptDirectoriesWarning1": "Isso redefinirá todas as configurações do diretório de scripts para os padrões do sistema.",
2094
+ "resetScriptDirectoriesWarning2": "Todos os caminhos de diretório personalizados serão apagados. Esta ação não pode ser desfeita.",
2095
+ "resetScriptDirectoriesConfirm": "Tem certeza de que deseja redefinir todos os diretórios de script para os padrões? (S/N):",
2096
+ "backup": {
2097
+ "title": "Configurações de backup",
2098
+ "description": "Faça backup das configurações atuais em um arquivo",
2099
+ "confirm": "Tem certeza de que deseja fazer backup das configurações atuais? (S/N):",
2100
+ "success": "✅ Configurações salvas com sucesso em {backupFile}",
2101
+ "failed": "❌ Falha ao fazer backup das configurações: {error}",
2102
+ "enabled": "Habilitar backup",
2103
+ "enabledHelp": "Ativar/desativar recurso de backup",
2104
+ "singleFileMode": "Modo de arquivo único",
2105
+ "singleFileModeHelp": "Configurações de backup em um único arquivo",
2106
+ "singleBackupFile": "Arquivo de backup único",
2107
+ "singleBackupFileHelp": "Caminho para o arquivo de backup único",
2108
+ "retentionDays": "Dias de retenção",
2109
+ "retentionDaysHelp": "Número de dias para reter arquivos de backup antigos",
2110
+ "maxBackups": "Máximo de backups",
2111
+ "maxBackupsHelp": "Número máximo de arquivos de backup a serem mantidos",
2112
+ "confirmHelp": "Confirme a operação de backup",
2113
+ "confirmYes": "Sim",
2114
+ "confirmNo": "Não"
2115
+ },
2116
+ "validation": {
2117
+ "valid": "Válido",
2118
+ "validatingPaths": "Validando caminhos configurados...",
2119
+ "validationComplete": "Validação do caminho concluída: {valid}/{total} válido."
2120
+ }
2121
+ },
2122
+ "summary": {
2123
+ "separator": "============================================================",
2124
+ "configurationTitle": "🔧 Configuração:",
2125
+ "sourceLanguage": "Idioma de origem: {sourceLanguage}",
2126
+ "supportedExtensions": "Extensões suportadas: {extensions}",
2127
+ "excludedFiles": "Arquivos excluídos: {files}",
2128
+ "reportContent": "{report}",
2129
+ "fatalError": "❌ Erro fatal: {error}",
2130
+ "helpTitle": "📊 GERADOR DE RELATÓRIO DE RESUMO I18NTK",
2131
+ "helpDescription": "Analisa a estrutura de pastas i18n e gera um relatório resumido abrangente, incluindo estatísticas importantes, análise da estrutura de arquivos e verificações de validação.",
2132
+ "helpUsage": "Uso: nó i18ntk-summary.js [opções]",
2133
+ "helpOptions": "--source-dir <dir> Diretório de origem para analisar",
2134
+ "helpSourceDir": "--source-dir <dir> Diretório de origem para analisar",
2135
+ "helpOutput": "--saída <file> Arquivo de saída do relatório",
2136
+ "helpVerbose": "--verbose, -v Mostrar informações detalhadas",
2137
+ "helpKeepReports": "--keep-reports Mantém os relatórios existentes",
2138
+ "helpDeleteReports": "--delete-reports Exclui relatórios existentes",
2139
+ "helpHelp": "--help, -h Mostrar esta ajuda",
2140
+ "helpExamples": "Exemplos:",
2141
+ "helpExample1": "nó i18ntk-summary.js",
2142
+ "helpExample2": "nó i18ntk-summary.js --source-dir ./locales",
2143
+ "helpExample3": "nó i18ntk-summary.js --output summary-report.txt",
2144
+ "helpExample4": "nó i18ntk-summary.js --verbose",
2145
+ "helpExample5": "nó i18ntk-summary.js --source-dir ./locales --output report.json",
2146
+ "couldNotReadFile": "⚠️ Não foi possível ler o arquivo: {filePath}",
2147
+ "couldNotParseJSFile": "⚠️ Não foi possível analisar o arquivo JS/TS: {filePath}",
2148
+ "errorReadingFile": "⚠️ Erro ao ler arquivo {filePath}: {error}",
2149
+ "analyzingFolder": "🔍 Analisando estrutura de pastas...",
2150
+ "noLanguageDirectoriesFound": "❌ Nenhum diretório de idioma encontrado no diretório de origem especificado.",
2151
+ "foundLanguages": "✅ Encontrado {count} idiomas: {languages}",
2152
+ "referenceLanguageFiles": "📁 Linguagem de referência '{language}' tem {count} arquivos",
2153
+ "analyzingLanguage": "🌍 Analisando a linguagem: {language}",
2154
+ "keysInFiles": "📊 Encontrado {keys} chaves através {files} arquivos",
2155
+ "checkingInconsistentKeys": "🔍 Verificando chaves inconsistentes entre idiomas...",
2156
+ "generatingSummaryReport": "📝 Gerando relatório resumido...",
2157
+ "reportTitle": "📊 I18NTK SUMMARY REPORT",
2158
+ "generated": "Gerado: {timestamp}",
2159
+ "sourceDirectory": "Diretório de origem: {dir}",
2160
+ "overview": "📈 OVERVIEW",
2161
+ "languagesCount": "Idiomas: {count}",
2162
+ "totalFiles": "Total de arquivos: {count}",
2163
+ "totalKeys": "Chaves totais: {count}",
2164
+ "avgKeysPerLanguage": "Média de chaves por idioma: {count}",
2165
+ "languagesBreakdown": "🌍 DISTRIBUIÇÃO DE IDIOMAS",
2166
+ "languageBreakdown": "{language}: {files} arquivos, {keys} chaves",
2167
+ "fileStructure": "📁 ESTRUTURA DE ARQUIVO",
2168
+ "fileKeys": "{file}: {keys} chaves",
2169
+ "missingInLanguages": "⚠️ Faltando em: {languages}",
2170
+ "issuesFound": "❌ ISSUES FOUND",
2171
+ "missingFiles": "📁 Arquivos ausentes:",
2172
+ "emptyFiles": "📄 Arquivos vazios:",
2173
+ "malformedFiles": "⚠️ Arquivos malformados:",
2174
+ "duplicateKeys": "🔑 Chaves duplicadas:",
2175
+ "inconsistentKeys": "🔍 Chaves inconsistentes:",
2176
+ "missingKeys": "Ausente: {keys}{more}",
2177
+ "extraKeys": "Extra: {keys}{more}",
2178
+ "noIssuesFound": "✅ NO ISSUES FOUND",
2179
+ "allFilesConsistent": "Todos os arquivos de tradução são consistentes em todos os idiomas.",
2180
+ "recommendations": "💡 RECOMENDAÇÕES",
2181
+ "createMissingFiles": "• Criar arquivos de tradução ausentes",
2182
+ "addContentToEmptyFiles": "• Adicione conteúdo a arquivos de tradução vazios",
2183
+ "fixMalformedFiles": "• Corrigir arquivos JSON/JS malformados",
2184
+ "removeDuplicateKeys": "• Remover chaves duplicadas de arquivos",
2185
+ "synchronizeKeys": "• Sincronize chaves em todos os idiomas",
2186
+ "splitLargeFiles": "• Considere dividir arquivos grandes em namespaces menores",
2187
+ "addMoreLanguages": "• Considere adicionar mais idiomas",
2188
+ "nextSteps": "🎯 NEXT STEPS",
2189
+ "nextStep1": "1. Corrija quaisquer problemas identificados acima",
2190
+ "nextStep2": "2. Execute a validação para garantir consistência",
2191
+ "nextStep3": "3. Considere usar i18ntk-validate para validação detalhada",
2192
+ "nextStep4": "4. Monitoramento regular recomendado",
2193
+ "couldNotFindI18nDirectory": "❌ Não foi possível encontrar o diretório i18n. Especifique --source-dir.",
2194
+ "sourceDirectoryDoesNotExist": "❌ O diretório de origem não existe: {dir}",
2195
+ "i18nSummaryReportGenerator": "📊 Gerador de relatório resumido I18N",
2196
+ "analysisComplete": "✅ Análise concluída",
2197
+ "analyzedLanguages": "📊 Idiomas analisados: {count}",
2198
+ "processedFiles": "📁 Arquivos processados: {count}",
2199
+ "foundTranslationKeys": "🔑 Chaves de tradução encontradas: {count}",
2200
+ "foundIssues": "❌ Encontrado {count} problemas",
2201
+ "noIssuesConsole": "✅ Nenhum problema encontrado – todos os arquivos são consistentes!",
2202
+ "errorDuringAnalysis": "❌ Erro durante a análise: {error}",
2203
+ "usageReportTitle": "📊 I18NTK USAGE REPORT",
2204
+ "usageReportGenerated": "Gerado: {timestamp}",
2205
+ "usageReportSourceDir": "Diretório de origem: {sourceDir}",
2206
+ "usageReportI18nDir": "Diretório I18n: {i18nDir}",
2207
+ "usageReportSummary": "📈 SUMMARY",
2208
+ "usageReportSourceFilesScanned": "Arquivos de origem verificados: {count}",
2209
+ "usageReportTranslationFilesFound": "Arquivos de tradução encontrados: {count}",
2210
+ "usageReportAvailableKeys": "Chaves de tradução disponíveis: {count}",
2211
+ "usageReportUsedKeys": "Chaves de tradução usadas: {count}",
2212
+ "usageReportDynamicKeys": "Chaves de tradução dinâmica: {count}",
2213
+ "usageReportUnusedKeys": "Chaves de tradução não utilizadas: {count}",
2214
+ "usageReportMissingKeys": "Chaves de tradução ausentes: {count}",
2215
+ "usageReportNotTranslatedKeys": "Chaves não traduzidas: {count}",
2216
+ "usageReportTranslationCompleteness": "🌍 INTEGRIDADE DA TRADUÇÃO",
2217
+ "usageReportLanguageCompleteness": "{language}: {completeness}% ({translated}/{total})",
2218
+ "usageReportNotTranslatedInLanguage": "Não traduzido: {count} chaves",
2219
+ "usageReportTranslationFilesDiscovered": "📁 ARQUIVOS DE TRADUÇÃO",
2220
+ "usageReportFileInfo": "{relativePath} (espaço para nome: {namespace}, tipo: {type})",
2221
+ "usageReportUnusedTranslationKeys": "🗑️ CHAVES DE TRADUÇÃO NÃO UTILIZADAS",
2222
+ "usageReportUnusedKeysDescription": "Estas chaves existem em arquivos de tradução, mas não são usadas no código-fonte:",
2223
+ "usageReportUnusedKey": "• {key}",
2224
+ "usageReportMoreUnusedKeys": "... e {count} mais chaves não utilizadas",
2225
+ "usageReportMissingTranslationKeys": "❌ CHAVES DE TRADUÇÃO FALTANDO",
2226
+ "usageReportMissingKeysDescription": "Estas chaves são usadas no código-fonte, mas faltam nos arquivos de tradução:",
2227
+ "usageReportMissingKey": "• {key}",
2228
+ "usageReportUsedIn": "Usado em: {filePath}",
2229
+ "usageReportMoreFiles": "... e {count} mais arquivos",
2230
+ "usageReportDynamicTranslationKeys": "⚡ CHAVES DE TRADUÇÃO DINÂMICA",
2231
+ "usageReportDynamicKeysDescription": "Essas chaves são usadas dinamicamente (construídas em tempo de execução):",
2232
+ "usageReportDynamicKey": "• {key}",
2233
+ "usageReportFileUsageBreakdown": "📊 DESCRIÇÃO DE USO DE ARQUIVOS",
2234
+ "usageReportFileUsage": "{filePath}: {count} chaves",
2235
+ "status": {
2236
+ "generating": "⏳ Gerando...",
2237
+ "completed": "✅ Concluído"
2238
+ },
2239
+ "help": {
2240
+ "usage": "Uso: node main/manage/index.js [opções]",
2241
+ "interactiveMode": "💡 Use: node main/manage/index.js --command=<command> para execução direta",
2242
+ "initProject": "🚀 Inicialize novos idiomas",
2243
+ "analyzeTranslations": "🔍 Analisar traduções",
2244
+ "validateTranslations": "✅ Validar traduções",
2245
+ "checkUsage": "📊 Verifique o uso da chave",
2246
+ "showHelp": "📖 Use: node main/manage/index.js --help para comandos disponíveis",
2247
+ "availableCommands": "📖 Comandos disponíveis:",
2248
+ "initCommand": "init - Inicializa novos idiomas",
2249
+ "analyzeCommand": "analisar - Analisar traduções",
2250
+ "validateCommand": "validar - Validar traduções",
2251
+ "usageCommand": "uso - Verifique o uso da chave",
2252
+ "sizingCommand": "dimensionamento - Analisar dimensionamento",
2253
+ "completeCommand": "complete - Traduções completas (cobertura de 100%)",
2254
+ "summaryCommand": "resumo - Mostrar status do projeto",
2255
+ "scannerCommand": "scanner - Procure por problemas de i18n",
2256
+ "translateCommand": "traduzir - Traduzir automaticamente arquivos de localidade",
2257
+ "debugCommand": "debug - Depurar problemas de tradução"
2258
+ },
2259
+ "test_complete_system": {
2260
+ "starting_test": "🧪 Iniciando o teste completo do sistema",
2261
+ "separator": "=",
2262
+ "testing_ui_translations": "📝 Testando traduções de UI...",
2263
+ "testing_settings_manager": "⚙️ Gerenciador de configurações de teste...",
2264
+ "testing_main_scripts": "🔧 Testando Scripts Principais...",
2265
+ "checking_translation_consistency": "🌐 Verificando a consistência da tradução...",
2266
+ "non_critical_missing_keys": "ℹ️ {file}: {count} chaves ausentes não críticas",
2267
+ "extra_keys": "ℹ️ {file}: {count} chaves extras",
2268
+ "generating_report": "📊 Gerando Relatório...",
2269
+ "final_test_report_title": "📋 FINAL TEST REPORT",
2270
+ "passed": "✅ Aprovado: {passed}",
2271
+ "failed": "❌ Falha: {failed}",
2272
+ "warnings": "⚠️ Avisos: {warnings}",
2273
+ "missing_translations_title": "🔍 Traduções ausentes ({count}):",
2274
+ "missing_translation_key": "- {key}",
2275
+ "missing_translations_more": "... e {count} mais",
2276
+ "errors_title": "❌ Erros:",
2277
+ "error_message": "- {error}",
2278
+ "overall_status": "📊 Status geral: {status}",
2279
+ "success_message": "✅ {message}",
2280
+ "failure_message": "❌ {message}",
2281
+ "failure_error_message": "{errorMessage}",
2282
+ "warning_message": "⚠️ {message}",
2283
+ "test_runner_failed": "❌ O executor de teste falhou:",
2284
+ "recommendations": {
2285
+ "add_missing_translation_keys": "Adicione chaves de tradução ausentes para manter a consistência",
2286
+ "fix_failing_scripts": "Corrija scripts com falha antes da implantação",
2287
+ "review_warning_messages": "Revise e resolva mensagens de aviso",
2288
+ "system_ready_for_deployment": "O sistema está pronto para implantação"
2289
+ },
2290
+ "hardcodedTexts": {
2291
+ "addMissingTranslationKeys": "Adicione chaves de tradução ausentes para manter a consistência",
2292
+ "fixFailingScripts": "Corrija scripts com falha antes da implantação",
2293
+ "reviewWarningMessages": "Revise e resolva mensagens de aviso",
2294
+ "systemReadyForDeployment": "O sistema está pronto para implantação"
2295
+ }
2296
+ },
2297
+ "testConsoleI18n": {
2298
+ "found_target_file": "Arquivo de destino encontrado: {fileName}",
2299
+ "scanning_files_for_console_statements": "Verificando arquivos em busca de instruções do console...",
2300
+ "found_javascript_files": "Encontrado {count} Arquivos JavaScript.",
2301
+ "console_i18n_analysis_results": "Resultados da análise do console I18n",
2302
+ "total_console_statements": "Total de instruções do console: {count}",
2303
+ "translated_statements": "Declarações traduzidas: {count}",
2304
+ "hardcoded_statements": "Declarações codificadas: {count}",
2305
+ "translation_coverage": "Cobertura de tradução: {percentage}%",
2306
+ "coverage_by_file": "Cobertura por arquivo:",
2307
+ "file_coverage_stats": "{emoji} {fileName}: {coverage}% ({translated}/{total})",
2308
+ "hardcoded_console_statements": "Instruções do console codificadas:",
2309
+ "file_header": "Arquivo: {file}",
2310
+ "line_statement": "Linha {line}: {statement}",
2311
+ "suggested_key": "Chave sugerida: {key}",
2312
+ "suggested_replacement": "Substituição sugerida: {replacement}",
2313
+ "recommendations": "Recomendações:",
2314
+ "recommendation_1": "1. Substitua strings codificadas por chamadas i18n.t().",
2315
+ "recommendation_2": "2. Adicione novas chaves aos arquivos JSON de tradução relevantes.",
2316
+ "recommendation_3": "3. Certifique-se de que todas as mensagens do console sejam voltadas para o usuário e exijam tradução.",
2317
+ "recommendation_4": "4. Use literais de modelo ou concatenação de strings para mensagens dinâmicas, passando variáveis ​​para i18n.t().",
2318
+ "translation_keys_to_add": "Chaves de tradução sugeridas para adicionar:",
2319
+ "add_keys_instruction": "Copie a seguinte estrutura JSON em seus arquivos de tradução:",
2320
+ "perfect_translation_coverage": "Cobertura de tradução perfeita!",
2321
+ "all_statements_using_translation": "Todas as instruções do console usam o sistema de tradução.",
2322
+ "i18n_console_translation_checker": "Verificador de tradução do console I18n",
2323
+ "script_description_line1": "Este script verifica todos os arquivos JavaScript em busca de instruções de console",
2324
+ "script_description_line2": "e verifica se estão usando o sistema de tradução.",
2325
+ "analysis_completed_in_duration": "Análise concluída em {duration} segundos.",
2326
+ "report_saved_to_path": "Relatório salvo em: {path}",
2327
+ "found_hardcoded_messages": "Encontrado {count} mensagens codificadas. Saindo com código de erro 1.",
2328
+ "all_console_messages_use_translation": "Todas as mensagens do console usam tradução. Saindo com código 0.",
2329
+ "consoleTranslationsCheck": "Verificação de traduções do console"
2330
+ },
2331
+ "translate_mismatches": {
2332
+ "title": "🌐 Auxiliar de tradução {dryRun}",
2333
+ "separator": "=====================================",
2334
+ "processing_file": "📄 Processamento {language}.json...",
2335
+ "translation_summary_title": "📊 Resumo da tradução:",
2336
+ "total_translations_applied": "Total de traduções aplicadas: {totalTranslations}",
2337
+ "run_with_apply_instruction": "💡 Execute --apply para aplicar essas traduções",
2338
+ "no_translation_mappings": "⚠️ Nenhum mapeamento de tradução disponível para {language}",
2339
+ "translation_applied": "✅ {key}: \"{oldValue}\" → \"{newValue}\"",
2340
+ "saved_translations": "💾 Salvo {count} traduções para {filename}",
2341
+ "found_translatable_items": "🔍 Encontrado {count} itens traduzíveis",
2342
+ "no_automatic_translations": "✨ Não há traduções automáticas disponíveis",
2343
+ "error_processing_file": "❌ Erro no processamento {filename}: {errorMessage}",
2344
+ "coverage_report_title": "📊 Relatório de cobertura de tradução",
2345
+ "coverage_report_separator": "===============================",
2346
+ "file_header": "📄 {filename}:",
2347
+ "total_keys": "Chaves totais: {total}",
2348
+ "translated_keys": "Traduzido: {translated}",
2349
+ "untranslated_markers": "Marcadores não traduzidos: {untranslated}",
2350
+ "contains_english": "Contém inglês: {hasEnglish}",
2351
+ "coverage_percentage": "Cobertura: {coverage}%",
2352
+ "error_general": "❌ Erro:",
2353
+ "use_help": "Use --help para informações de uso"
2354
+ },
2355
+ "cleaningUpReportFiles": "Limpando arquivos de relatórios antigos...",
2356
+ "couldNotDelete": "Não foi possível excluir {file}: {error}",
2357
+ "deletedOldReportFiles": "Excluído {count} arquivo(s) de relatório antigo(s).",
2358
+ "errorCleaningUpReports": "Erro ao limpar relatórios: {error}",
2359
+ "noOldReportFilesToDelete": "Nenhum arquivo de relatório antigo para excluir.",
2360
+ "reportFilesPreserved": "Arquivos de relatório preservados.",
2361
+ "reportSaveFailed": "Falha ao salvar o relatório em: {reportPath}",
2362
+ "reportSaved": "Relatório salvo em: {reportPath}"
2363
+ },
2364
+ "ui": {
2365
+ "autoDetectedI18nDirectory": "Diretório i18n detectado automaticamente: {path}",
2366
+ "executingCommand": "Executando comando: {command}",
2367
+ "unknownCommand": "Comando desconhecido: {command}",
2368
+ "errorExecutingCommand": "Erro ao executar o comando: {error}",
2369
+ "errorLoadingTranslationFile": "Erro ao carregar o arquivo de tradução para '{language}': {error}",
2370
+ "errorSavingLanguagePreference": "Erro ao salvar a preferência de idioma: {error}",
2371
+ "noActiveReadlineInterface": "Nenhuma interface readline ativa disponível",
2372
+ "uiLanguageUpdated": "Idioma da UI atualizado para: {language}",
2373
+ "selectOptionPrompt": "Selecione uma opção:",
2374
+ "pressEnterToReturn": "Pressione Enter para retornar ao menu principal...",
2375
+ "detectedSourceDirectory": "Diretório de origem detectado: {sourceDir}",
2376
+ "detectedI18nDirectory": "Diretório i18n detectado: {directory}",
2377
+ "toolkitTitle": "i18ntk - Kit de ferramentas de gerenciamento empresarial i18n",
2378
+ "versionInfo": "Versão: {version}",
2379
+ "releaseDate": "Data de lançamento: {date}",
2380
+ "maintainer": "Mantenedor: {maintainer}",
2381
+ "nodeVersion": "Node.js: {version}",
2382
+ "license": "Licença: {license}",
2383
+ "whatsNew": "✨ Novidades em v{version}:",
2384
+ "changeItem": "{change}",
2385
+ "documentation": "📚 Documentação: {url}",
2386
+ "issues": "🐛 Problemas: {url}",
2387
+ "versionInfoUnavailable": "informações da versão i18ntk indisponíveis",
2388
+ "versionInfoError": "Erro: {error}"
2389
+ },
2390
+ "validateLanguagePurity": {
2391
+ "phrase_debug_tools": "ferramentas de depuração",
2392
+ "phrase_settings": "configurações",
2393
+ "phrase_configuration": "configuração",
2394
+ "phrase_invalid_choice": "escolha inválida",
2395
+ "phrase_please_select": "por favor selecione",
2396
+ "phrase_back_to_main_menu": "voltar ao menu principal",
2397
+ "phrase_error": "erro",
2398
+ "phrase_warning": "aviso",
2399
+ "phrase_success": "sucesso",
2400
+ "phrase_failed": "fracassado",
2401
+ "phrase_loading": "carregando",
2402
+ "phrase_saving": "salvando",
2403
+ "phrase_full_system_debug": "depuração completa do sistema",
2404
+ "phrase_configuration_debug": "depuração de configuração",
2405
+ "phrase_translation_debug": "depuração de tradução",
2406
+ "phrase_performance_debug": "depuração de desempenho",
2407
+ "phrase_admin_pin_setup": "configuração do PIN do administrador",
2408
+ "phrase_enter_admin_pin": "insira o PIN do administrador",
2409
+ "phrase_confirm_admin_pin": "confirmar pin de administrador",
2410
+ "phrase_authentication_failed": "falha na autenticação",
2411
+ "phrase_access_denied": "Acesso negado",
2412
+ "phrase_security_log": "registro de segurança",
2413
+ "language_german": "Alemão",
2414
+ "language_french": "Francês",
2415
+ "language_spanish": "Espanhol",
2416
+ "language_russian": "russo",
2417
+ "language_japanese": "japonês",
2418
+ "language_chinese": "chinês",
2419
+ "validator_title": "🔍 Validador de pureza de idioma",
2420
+ "validating_file": "📄 Validando {language}.json ({name})...",
2421
+ "valid_file_message": "✅ Válido - Sem violações de pureza do idioma",
2422
+ "invalid_file_message": "❌ Inválido - {count} violação(ões) encontrada(s)",
2423
+ "no_validation_rules": "Nenhuma regra de validação definida para o idioma: {language}",
2424
+ "error_reading_file": "Erro ao ler o arquivo: {errorMessage}",
2425
+ "issue_forbidden_marker": "Contém marcador proibido: {marker}",
2426
+ "issue_english_phrase": "Contém frase em inglês: \"{phrase}\"",
2427
+ "issue_english_words": "Contém palavras em inglês: {words}",
2428
+ "issue_missing_cyrillic": "O texto longo deve conter caracteres cirílicos para russo",
2429
+ "issue_missing_japanese": "O texto longo deve conter caracteres japoneses",
2430
+ "issue_missing_chinese": "O texto longo deve conter caracteres chineses",
2431
+ "summary_title": "📊 RESUMO DE VALIDAÇÃO",
2432
+ "overall_results_header": "📋 Resultados gerais:",
2433
+ "total_files_validated": "Total de arquivos validados: {count}",
2434
+ "valid_files": "Arquivos válidos: {count}",
2435
+ "invalid_files": "Arquivos inválidos: {count}",
2436
+ "total_violations": "Violações totais: {count}",
2437
+ "violations_by_file_header": "❌ VIOLAÇÕES POR ARQUIVO:"
2438
+ },
2439
+ "workflow": {
2440
+ "title": "Gerenciamento de fluxo de trabalho",
2441
+ "description": "Gerencie fluxos de trabalho i18n.",
2442
+ "select_workflow_file": "Selecione um arquivo de fluxo de trabalho para executar:",
2443
+ "no_workflow_files": "Nenhum arquivo de fluxo de trabalho encontrado no diretório de fluxos de trabalho.",
2444
+ "invalid_selection": "Seleção inválida. Insira um número correspondente a um arquivo de fluxo de trabalho.",
2445
+ "workflow_execution_started": "Iniciando fluxo de trabalho: {workflowName}",
2446
+ "workflow_execution_completed": "Fluxo de trabalho concluído: {workflowName}",
2447
+ "workflow_execution_failed": "Falha no fluxo de trabalho: {workflowName} - {error}",
2448
+ "workflow_cancelled": "Execução do fluxo de trabalho cancelada.",
2449
+ "press_enter_to_continue": "Pressione Enter para continuar!",
2450
+ "starting": "🚀 Iniciando fluxo de trabalho...",
2451
+ "completed": "✅ Fluxo de trabalho concluído com sucesso!",
2452
+ "checkReports": "📄 Verifique os relatórios para obter detalhes.",
2453
+ "exitingCompleted": "📝 Fluxo de trabalho concluído. Saindo...",
2454
+ "summary": {
2455
+ "title": "📋 WORKFLOW SUMMARY",
2456
+ "separator": "===================",
2457
+ "completedAt": "🕐 Fluxo de trabalho concluído em: {timestamp}",
2458
+ "initialViolations": "📊 Violações iniciais: {count}",
2459
+ "finalViolations": "📉 Violações finais: {count}",
2460
+ "totalFixes": "🔧 Total de correções aplicadas: {count}",
2461
+ "improvement": "📈 Melhoria: {percentage}%",
2462
+ "stepResults": "📝 STEP RESULTS:",
2463
+ "stepDetail": "{number}. {status} {stepName}",
2464
+ "violations": "Violações: {count}",
2465
+ "fixesApplied": "Correções aplicadas: {count}",
2466
+ "nextSteps": "💡 NEXT STEPS:",
2467
+ "congratulations": "🎉 Parabéns! Todos os arquivos de localidade agora possuem pureza de idioma perfeita!",
2468
+ "cicdIntegration": "✅ Considere integrar o validador ao seu pipeline de CI/CD",
2469
+ "automatedChecks": "✅ Configure verificações automatizadas para novas traduções",
2470
+ "greatProgress": "🎯 Grande progresso! A maioria dos problemas foi resolvida.",
2471
+ "manualReview": "🔍 Revise as violações restantes manualmente",
2472
+ "addMappings": "🌐 Considere adicionar mais mapeamentos de tradução para casos extremos",
2473
+ "goodProgress": "📈 Bons progressos alcançados, mas é necessário mais trabalho.",
2474
+ "expandMappings": "🔧 Expanda os mapeamentos de tradução automática",
2475
+ "professionalReview": "👥 Considere a revisão manual de traduções complexas",
2476
+ "runAgain": "🔄 Execute o fluxo de trabalho novamente após adicionar mais mapeamentos",
2477
+ "limitedProgress": "⚠️ Progresso limitado. Pode ser necessária intervenção manual.",
2478
+ "reviewMappings": "🔍 Revise os mapeamentos de tradução e adicione os que faltam",
2479
+ "professionalServices": "👥 Considere serviços de tradução profissionais",
2480
+ "checkIssues": "🔧 Verifique se há problemas sistemáticos nos arquivos de localidade",
2481
+ "success": "✅",
2482
+ "warning": "⚠️"
2483
+ }
2484
+ },
2485
+ "consoleI18nTester": {
2486
+ "found_target_file": "Arquivo de destino encontrado",
2487
+ "scanning_files_for_console_statements": "Verificando arquivos em busca de instruções do console",
2488
+ "found_javascript_files": "Arquivos javascript encontrados",
2489
+ "console_i18n_analysis_results": "Resultados da análise do console i18n",
2490
+ "total_console_statements": "Total de instruções do console",
2491
+ "translated_statements": "Declarações traduzidas",
2492
+ "hardcoded_statements": "Declarações codificadas",
2493
+ "translation_coverage": "Cobertura de tradução",
2494
+ "coverage_by_file": "Cobertura por arquivo",
2495
+ "file_coverage_stats": "Estatísticas de cobertura de arquivos",
2496
+ "hardcoded_console_statements": "Instruções de console codificadas",
2497
+ "file_header": "Cabeçalho do arquivo",
2498
+ "line_statement": "Declaração de linha",
2499
+ "suggested_key": "Chave sugerida",
2500
+ "suggested_replacement": "Substituição sugerida",
2501
+ "recommendations": "Recomendações",
2502
+ "recommendation_1": "Recomendação 1",
2503
+ "recommendation_2": "Recomendação 2",
2504
+ "recommendation_3": "Recomendação 3",
2505
+ "recommendation_4": "Recomendação 4",
2506
+ "translation_keys_to_add": "Chaves de tradução para adicionar",
2507
+ "add_keys_instruction": "Adicionar instrução de chaves",
2508
+ "perfect_translation_coverage": "Cobertura de tradução perfeita",
2509
+ "all_statements_using_translation": "Todas as declarações usando tradução",
2510
+ "i18n_console_translation_checker": "Verificador de tradução do console I18n",
2511
+ "script_description_line1": "Linha de descrição do script 1",
2512
+ "script_description_line2": "Linha de descrição do script 2",
2513
+ "analysis_completed_in_duration": "Análise concluída em duração",
2514
+ "report_saved_to_path": "Relatório salvo no caminho",
2515
+ "found_hardcoded_messages": "Mensagens codificadas encontradas",
2516
+ "all_console_messages_use_translation": "Todas as mensagens do console usam tradução"
2517
+ },
2518
+ "exportTranslations": {
2519
+ "createdDirectory": "Diretório criado",
2520
+ "foundFiles": "Arquivos encontrados",
2521
+ "createdTemplate": "Modelo criado",
2522
+ "skippedExisting": "Ignorado Existente",
2523
+ "title": "Título",
2524
+ "creatingTemplates": "Criação de modelos",
2525
+ "summary": "Resumo",
2526
+ "summaryLanguages": "Resumo Idiomas",
2527
+ "summaryFilesPerLanguage": "Arquivos de resumo por idioma",
2528
+ "summaryTotalFiles": "Resumo Total de Arquivos",
2529
+ "success": "Sucesso",
2530
+ "location": "Localização",
2531
+ "nextSteps": "Próximas etapas"
2532
+ },
2533
+ "dashboard": {
2534
+ "title": "Título",
2535
+ "overview": "Visão geral"
2536
+ },
2537
+ "auth": {
2538
+ "title": "Título",
2539
+ "email": "E-mail",
2540
+ "password": "Senha",
2541
+ "signIn": "Entrar",
2542
+ "forgotPassword": "Esqueceu sua senha",
2543
+ "signUp": "Inscrever-se"
2544
+ },
2545
+ "checkUsage": {
2546
+ "usage_analysis_failed": "A análise de uso falhou."
2547
+ },
2548
+ "completeTranslations": {
2549
+ "warning_could_not_parse_filepa": "Aviso: não foi possível analisar o caminho do arquivo: {filePath}"
2550
+ },
2551
+ "pressEnterToContinue": "Pressione Enter para continuar...",
2552
+ "status": {
2553
+ "exitingCompleted": "Fluxo de trabalho concluído. Saindo..."
2554
+ },
2555
+ "prompt": {
2556
+ "yesTokens": [
2557
+ "sim",
2558
+ "sim"
2559
+ ],
2560
+ "noTokens": [
2561
+ "n",
2562
+ "não"
2563
+ ]
2564
+ },
2565
+ "translate": {
2566
+ "title": "Tradução automática",
2567
+ "sourceDirectory": {
2568
+ "title": "Diretório de localidade de origem",
2569
+ "currentProject": "Projeto atual: {dir}",
2570
+ "accepted": "Aceito: um caminho absoluto ou relativo ao projeto atual.",
2571
+ "localeRootExample": "./locales (depois escolha o idioma de origem: en)",
2572
+ "folderHint": "A pasta pode conter arquivos JSON diretamente ou pastas de idiomas como ./locales/en.",
2573
+ "defaultNotFound": "Diretório padrão não encontrado: {dir}",
2574
+ "enterExisting": "Insira um diretório existente com arquivos de localidade JSON.",
2575
+ "directoryNotFound": "Diretório não encontrado: {dir}",
2576
+ "enterFolderExample": "Insira uma pasta existente, por exemplo ./locales/en.",
2577
+ "notDirectory": "Não é um diretório: {dir}",
2578
+ "using": "Usando o diretório de origem: {dir}"
2579
+ },
2580
+ "targetLanguages": {
2581
+ "title": "Idiomas alvo",
2582
+ "allConfigured": "a) Todos os idiomas de destino configurados: {languages}",
2583
+ "noneConfigured": "a) Todos os idiomas de destino configurados: nenhum configurado",
2584
+ "enterCodes": "Ou insira um ou mais códigos de idioma separados por vírgula/espaço.",
2585
+ "sourceExcluded": "Idioma de origem \"{lang}\" será excluído automaticamente.",
2586
+ "noneSelected": "Nenhum idioma de destino válido selecionado. Abortando.",
2587
+ "configureHint": "Configure defaultLanguages ​​em .i18ntk-config ou insira os códigos de destino manualmente.",
2588
+ "selected": "Idiomas alvo: {languages}"
2589
+ },
2590
+ "protection": {
2591
+ "title": "Termos e chaves protegidos"
2592
+ },
2593
+ "common": {
2594
+ "default": "Padrão: {value}",
2595
+ "examples": "Exemplos:",
2596
+ "exampleValue": "Exemplo: {value}",
2597
+ "examplesInline": "Exemplos: {examples}",
2598
+ "pressEnterDefault": "Pressione Enter para usar o padrão.",
2599
+ "usingDefault": "Usando padrão: {value}"
2600
+ },
2601
+ "sourceLanguage": {
2602
+ "title": "Código do idioma fonte",
2603
+ "hint": "Isso deve corresponder ao idioma dos valores JSON de origem.",
2604
+ "using": "Usando o idioma de origem: {lang}",
2605
+ "invalid": "Código de idioma inválido. Use mais de 2 caracteres (por exemplo, en, de, fr)."
2606
+ },
2607
+ "files": {
2608
+ "title": "Quais arquivos traduzir?",
2609
+ "all": "a) Todos os arquivos JSON ({count}: {files})",
2610
+ "choicePrompt": "Escolha [a/todos ou número do arquivo]:",
2611
+ "invalidChoice": "Escolha inválida. Abortando."
2612
+ },
2613
+ "dryRun": {
2614
+ "previewFor": "Visualização de teste para \"{lang}\"..."
2615
+ },
2616
+ "confirm": {
2617
+ "proceed": "Prosseguir com a tradução real?",
2618
+ "yesNoPrompt": "[s]es / [n]o:",
2619
+ "cancelled": "Tradução cancelada."
2620
+ },
2621
+ "run": {
2622
+ "translatingTo": "Traduzindo para \"{lang}\"...",
2623
+ "failedFor": "Falha em \"{lang}\": {error}"
2624
+ },
2625
+ "summary": {
2626
+ "title": "Resumo:",
2627
+ "complete": "Tradução completa!"
2628
+ },
2629
+ "nonInteractive": {
2630
+ "useDirect": "Modo não interativo. Use CLI direto:"
2631
+ },
2632
+ "errors": {
2633
+ "sourceDirectoryNotFound": "Diretório de localidade de origem não encontrado: {dir}"
2634
+ }
2635
+ }
2636
+ }