@authrim/setup 0.1.89 → 0.1.91

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 (54) hide show
  1. package/dist/cli/commands/init.d.ts.map +1 -1
  2. package/dist/cli/commands/init.js +58 -11
  3. package/dist/cli/commands/init.js.map +1 -1
  4. package/dist/core/lock.d.ts +16 -16
  5. package/dist/core/wrangler.d.ts.map +1 -1
  6. package/dist/core/wrangler.js +21 -2
  7. package/dist/core/wrangler.js.map +1 -1
  8. package/dist/i18n/index.d.ts.map +1 -1
  9. package/dist/i18n/index.js +14 -3
  10. package/dist/i18n/index.js.map +1 -1
  11. package/dist/i18n/locales/de.d.ts +8 -0
  12. package/dist/i18n/locales/de.d.ts.map +1 -0
  13. package/dist/i18n/locales/de.js +894 -0
  14. package/dist/i18n/locales/de.js.map +1 -0
  15. package/dist/i18n/locales/es.d.ts +8 -0
  16. package/dist/i18n/locales/es.d.ts.map +1 -0
  17. package/dist/i18n/locales/es.js +894 -0
  18. package/dist/i18n/locales/es.js.map +1 -0
  19. package/dist/i18n/locales/fr.d.ts +8 -0
  20. package/dist/i18n/locales/fr.d.ts.map +1 -0
  21. package/dist/i18n/locales/fr.js +894 -0
  22. package/dist/i18n/locales/fr.js.map +1 -0
  23. package/dist/i18n/locales/id.d.ts +8 -0
  24. package/dist/i18n/locales/id.d.ts.map +1 -0
  25. package/dist/i18n/locales/id.js +894 -0
  26. package/dist/i18n/locales/id.js.map +1 -0
  27. package/dist/i18n/locales/ko.d.ts +8 -0
  28. package/dist/i18n/locales/ko.d.ts.map +1 -0
  29. package/dist/i18n/locales/ko.js +894 -0
  30. package/dist/i18n/locales/ko.js.map +1 -0
  31. package/dist/i18n/locales/pt.d.ts +8 -0
  32. package/dist/i18n/locales/pt.d.ts.map +1 -0
  33. package/dist/i18n/locales/pt.js +894 -0
  34. package/dist/i18n/locales/pt.js.map +1 -0
  35. package/dist/i18n/locales/ru.d.ts +8 -0
  36. package/dist/i18n/locales/ru.d.ts.map +1 -0
  37. package/dist/i18n/locales/ru.js +894 -0
  38. package/dist/i18n/locales/ru.js.map +1 -0
  39. package/dist/i18n/locales/zh-CN.d.ts +8 -0
  40. package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
  41. package/dist/i18n/locales/zh-CN.js +894 -0
  42. package/dist/i18n/locales/zh-CN.js.map +1 -0
  43. package/dist/i18n/locales/zh-TW.d.ts +8 -0
  44. package/dist/i18n/locales/zh-TW.d.ts.map +1 -0
  45. package/dist/i18n/locales/zh-TW.js +894 -0
  46. package/dist/i18n/locales/zh-TW.js.map +1 -0
  47. package/dist/i18n/types.d.ts +1 -1
  48. package/dist/i18n/types.d.ts.map +1 -1
  49. package/dist/i18n/types.js +1 -0
  50. package/dist/i18n/types.js.map +1 -1
  51. package/dist/web/ui.d.ts.map +1 -1
  52. package/dist/web/ui.js +7 -2
  53. package/dist/web/ui.js.map +1 -1
  54. package/package.json +1 -1
@@ -0,0 +1,894 @@
1
+ /**
2
+ * Portuguese Translations for Authrim Setup Tool
3
+ * Traduções em português
4
+ */
5
+ const pt = {
6
+ // Language selection
7
+ 'language.select': 'Select language / 言語を選択 / 选择语言',
8
+ 'language.selected': 'Idioma: {{language}}',
9
+ // Banner
10
+ 'banner.title': 'Configuração do Authrim',
11
+ 'banner.subtitle': 'Provedor OIDC no Cloudflare Workers',
12
+ 'banner.warning': 'AVISO: Em Desenvolvimento!',
13
+ 'banner.warningDetail': 'Este projeto ainda não funciona corretamente.',
14
+ 'banner.adminWarning': 'A interface de administração está incompleta e não suporta login.',
15
+ 'banner.exitHint': 'Pressione Ctrl+C a qualquer momento para sair',
16
+ // Mode selection
17
+ 'mode.prompt': 'Escolha o método de configuração',
18
+ 'mode.quick': 'Web UI (Recomendado)',
19
+ 'mode.quickDesc': 'Configuração interativa no seu navegador',
20
+ 'mode.advanced': 'Modo CLI',
21
+ 'mode.advancedDesc': 'Configuração interativa no terminal',
22
+ // Startup menu
23
+ 'startup.description': 'Configure o Provedor OIDC Authrim no Cloudflare Workers.',
24
+ 'startup.cancel': 'Cancelar',
25
+ 'startup.cancelDesc': 'Sair da configuração',
26
+ 'startup.cancelled': 'Configuração cancelada.',
27
+ 'startup.resumeLater': 'Para continuar depois:',
28
+ // Main menu
29
+ 'menu.prompt': 'O que você gostaria de fazer?',
30
+ 'menu.quick': 'Configuração Rápida (5 minutos)',
31
+ 'menu.quickDesc': 'Implante o Authrim com configuração mínima',
32
+ 'menu.custom': 'Configuração Personalizada',
33
+ 'menu.customDesc': 'Configure todas as opções passo a passo',
34
+ // Setup titles
35
+ 'quick.title': '⚡ Configuração Rápida',
36
+ 'custom.title': '🔧 Configuração Personalizada',
37
+ 'menu.manage': 'Ver Ambientes Existentes',
38
+ 'menu.manageDesc': 'Ver, inspecionar ou excluir ambientes existentes',
39
+ 'menu.load': 'Carregar Configuração Existente',
40
+ 'menu.loadDesc': 'Retomar configuração do authrim-config.json',
41
+ 'menu.exit': 'Sair',
42
+ 'menu.exitDesc': 'Sair da configuração',
43
+ 'menu.goodbye': 'Até logo!',
44
+ // Update check
45
+ 'update.checking': 'Verificando atualizações...',
46
+ 'update.available': 'Atualização disponível: {{localVersion}} → {{remoteVersion}}',
47
+ 'update.prompt': 'O que você gostaria de fazer?',
48
+ 'update.continue': 'Continuar com a versão atual ({{version}})',
49
+ 'update.continueDesc': 'Usar o código fonte existente',
50
+ 'update.update': 'Atualizar para a última versão ({{version}})',
51
+ 'update.updateDesc': 'Baixar e substituir pela nova versão',
52
+ 'update.cancel': 'Cancelar',
53
+ 'update.cancelled': 'Cancelado.',
54
+ 'update.current': 'Usando código fonte do Authrim (v{{version}})',
55
+ // Source download
56
+ 'source.downloading': 'Baixando código fonte...',
57
+ 'source.downloaded': 'Código fonte baixado ({{version}})',
58
+ 'source.extracting': 'Extraindo código fonte...',
59
+ 'source.installing': 'Instalando dependências (isso pode levar alguns minutos)...',
60
+ 'source.installed': 'Dependências instaladas',
61
+ 'source.installFailed': 'Falha ao instalar dependências',
62
+ 'source.installManually': 'Você pode tentar instalar manualmente:',
63
+ 'source.notInSourceDir': 'Código fonte do Authrim não encontrado',
64
+ 'source.downloadPrompt': 'Baixar código fonte em {{path}}?',
65
+ 'source.downloadOption': 'Baixar código fonte',
66
+ 'source.downloadOptionDesc': 'Baixar última versão',
67
+ 'source.exitOption': 'Sair',
68
+ 'source.exitOptionDesc': 'Sair da configuração',
69
+ 'source.cloneManually': 'Para clonar manualmente:',
70
+ 'source.directoryExists': 'O diretório {{path}} existe mas não é um código fonte válido do Authrim',
71
+ 'source.replaceOption': 'Substituir por novo download',
72
+ 'source.replaceOptionDesc': 'Remover {{path}} e baixar a última versão',
73
+ 'source.differentOption': 'Usar diretório diferente',
74
+ 'source.differentOptionDesc': 'Especificar outro local',
75
+ 'source.enterPath': 'Digite o caminho do diretório:',
76
+ 'source.updateFailed': 'Falha na atualização',
77
+ 'source.downloadFailed': 'Falha no download',
78
+ 'source.verificationWarnings': 'Avisos de verificação da estrutura do código:',
79
+ // Prerequisites
80
+ 'prereq.checking': 'Verificando status do wrangler...',
81
+ 'prereq.wranglerNotInstalled': 'wrangler não está instalado',
82
+ 'prereq.wranglerInstallHint': 'Execute o seguinte comando para instalar:',
83
+ 'prereq.notLoggedIn': 'Não conectado ao Cloudflare',
84
+ 'prereq.loginHint': 'Execute o seguinte comando para autenticar:',
85
+ 'prereq.loggedInAs': 'Conectado ao Cloudflare ({{email}})',
86
+ 'prereq.accountId': 'ID da Conta: {{accountId}}',
87
+ // Environment
88
+ 'env.prompt': 'Digite o nome do ambiente',
89
+ 'env.prod': 'Produção',
90
+ 'env.prodDesc': 'Para uso em produção',
91
+ 'env.staging': 'Staging',
92
+ 'env.stagingDesc': 'Para testes antes da produção',
93
+ 'env.dev': 'Desenvolvimento',
94
+ 'env.devDesc': 'Para desenvolvimento local',
95
+ 'env.custom': 'Personalizado',
96
+ 'env.customDesc': 'Digite um nome de ambiente personalizado',
97
+ 'env.customPrompt': 'Digite nome de ambiente personalizado',
98
+ 'env.customValidation': 'Apenas letras minúsculas, números e hífens são permitidos (ex: prod, staging, dev)',
99
+ 'env.detected': 'Ambientes Detectados:',
100
+ 'env.selectExisting': 'Selecionar ambiente existente',
101
+ 'env.createNew': 'Criar novo ambiente',
102
+ 'env.createNewDesc': 'Configurar um novo ambiente',
103
+ 'env.checking': 'Verificando ambientes existentes...',
104
+ 'env.alreadyExists': 'O ambiente "{{env}}" já existe',
105
+ 'env.existingResources': 'Recursos existentes:',
106
+ 'env.workers': 'Workers: {{count}}',
107
+ 'env.d1Databases': 'Bancos de dados D1: {{count}}',
108
+ 'env.kvNamespaces': 'Namespaces KV: {{count}}',
109
+ 'env.chooseAnother': 'Por favor, escolha outro nome ou use "npx @authrim/setup manage" para excluí-lo primeiro.',
110
+ 'env.available': 'Nome do ambiente disponível',
111
+ 'env.checkFailed': 'Não foi possível verificar ambientes existentes (continuando mesmo assim)',
112
+ 'env.noEnvFound': 'Nenhum ambiente Authrim encontrado.',
113
+ // Region
114
+ 'region.prompt': 'Selecione a região',
115
+ 'region.auto': 'Automático (mais próximo)',
116
+ 'region.autoDesc': 'Deixar o Cloudflare escolher a região mais próxima',
117
+ 'region.wnam': 'América do Norte (Oeste)',
118
+ 'region.wnamDesc': 'Oeste da América do Norte',
119
+ 'region.enam': 'América do Norte (Leste)',
120
+ 'region.enamDesc': 'Leste da América do Norte',
121
+ 'region.weur': 'Europa (Oeste)',
122
+ 'region.weurDesc': 'Europa Ocidental',
123
+ 'region.eeur': 'Europa (Leste)',
124
+ 'region.eeurDesc': 'Europa Oriental',
125
+ 'region.apac': 'Ásia Pacífico',
126
+ 'region.apacDesc': 'Região Ásia Pacífico',
127
+ 'region.oceania': 'Oceania',
128
+ 'region.oceaniaDesc': 'Austrália e Ilhas do Pacífico',
129
+ 'region.euJurisdiction': 'Jurisdição UE (conformidade GDPR)',
130
+ 'region.euJurisdictionDesc': 'Dados armazenados na UE',
131
+ // UI deployment
132
+ 'ui.prompt': 'Método de implantação da UI',
133
+ 'ui.pagesOption': 'Cloudflare Pages',
134
+ 'ui.pagesDesc': 'Implantar no Cloudflare Pages (recomendado)',
135
+ 'ui.customOption': 'Domínio personalizado',
136
+ 'ui.customDesc': 'Usar sua própria hospedagem',
137
+ 'ui.skipOption': 'Pular',
138
+ 'ui.skipDesc': 'Pular implantação da UI',
139
+ 'ui.customPrompt': 'Digite URL personalizada da UI',
140
+ // Domain
141
+ 'domain.prompt': 'Configurar domínio personalizado?',
142
+ 'domain.workersDevOption': 'Usar domínio workers.dev',
143
+ 'domain.workersDevDesc': 'Usar domínio padrão do Cloudflare',
144
+ 'domain.customOption': 'Configurar domínio personalizado',
145
+ 'domain.customDesc': 'Usar seu próprio domínio',
146
+ 'domain.customPrompt': 'Digite domínio personalizado (ex: auth.exemplo.com)',
147
+ 'domain.customValidation': 'Por favor, digite um domínio válido (ex: auth.exemplo.com)',
148
+ 'domain.issuerUrl': 'URL do Emissor: {{url}}',
149
+ 'domain.apiDomain': 'Domínio API / Emissor (ex: auth.exemplo.com)',
150
+ 'domain.loginUiDomain': 'Domínio UI de Login (Enter para pular)',
151
+ 'domain.adminUiDomain': 'Domínio UI de Admin (Enter para pular)',
152
+ 'domain.enterDomains': 'Digite domínios personalizados (deixe vazio para usar padrões do Cloudflare)',
153
+ 'domain.singleTenantNote': 'No modo single-tenant, URL do Emissor = domínio API',
154
+ 'domain.usingWorkersDev': '(usando domínio workers.dev do Cloudflare)',
155
+ // Database
156
+ 'db.title': 'Configuração do Banco de Dados',
157
+ 'db.regionWarning': 'A região do banco de dados não pode ser alterada após a criação.',
158
+ 'db.coreDescription': 'BD Core: Armazena clientes OAuth, tokens, sessões, logs de auditoria',
159
+ 'db.coreRegion': 'Região do Banco de Dados Core',
160
+ 'db.piiDescription': 'BD PII: Armazena perfis de usuário, credenciais, dados pessoais',
161
+ 'db.piiNote': 'Considere seus requisitos de proteção de dados.',
162
+ 'db.piiRegion': 'Região do Banco de Dados PII',
163
+ 'db.creating': 'Criando banco de dados...',
164
+ 'db.created': 'Banco de dados criado: {{name}}',
165
+ 'db.existing': 'Usando banco de dados existente: {{name}}',
166
+ 'db.error': 'Falha ao criar banco de dados',
167
+ 'db.locationHints': 'Dicas de Localização',
168
+ 'db.jurisdictionCompliance': 'Jurisdição (Conformidade)',
169
+ // KV
170
+ 'kv.creating': 'Criando namespace KV...',
171
+ 'kv.created': 'Namespace KV criado: {{name}}',
172
+ 'kv.existing': 'Usando namespace KV existente: {{name}}',
173
+ 'kv.error': 'Falha ao criar namespace KV',
174
+ // Queue
175
+ 'queue.creating': 'Criando fila...',
176
+ 'queue.created': 'Fila criada: {{name}}',
177
+ 'queue.existing': 'Usando fila existente: {{name}}',
178
+ 'queue.error': 'Falha ao criar fila',
179
+ // R2
180
+ 'r2.creating': 'Criando bucket R2...',
181
+ 'r2.created': 'Bucket R2 criado: {{name}}',
182
+ 'r2.existing': 'Usando bucket R2 existente: {{name}}',
183
+ 'r2.error': 'Falha ao criar bucket R2',
184
+ // Keys
185
+ 'keys.generating': 'Gerando chaves criptográficas...',
186
+ 'keys.generated': 'Chaves geradas ({{path}})',
187
+ 'keys.existing': 'Chaves já existem para o ambiente "{{env}}"',
188
+ 'keys.existingWarning': 'Chaves existentes serão sobrescritas.',
189
+ 'keys.error': 'Falha ao gerar chaves',
190
+ 'keys.regeneratePrompt': 'Regenerar chaves?',
191
+ 'keys.regenerateWarning': 'Isso invalidará todos os tokens existentes!',
192
+ // Config
193
+ 'config.saving': 'Salvando configuração...',
194
+ 'config.saved': 'Configuração salva em {{path}}',
195
+ 'config.error': 'Falha ao salvar configuração',
196
+ 'config.path': 'Caminho da configuração',
197
+ 'config.summary': 'Resumo da Configuração',
198
+ 'config.infrastructure': 'Infraestrutura:',
199
+ 'config.environment': 'Ambiente:',
200
+ 'config.workerPrefix': 'Prefixo do Worker:',
201
+ 'config.profile': 'Perfil:',
202
+ 'config.tenantIssuer': 'Tenant e Emissor:',
203
+ 'config.mode': 'Modo:',
204
+ 'config.multiTenant': 'Multi-tenant',
205
+ 'config.singleTenant': 'Single-tenant',
206
+ 'config.baseDomain': 'Domínio Base:',
207
+ 'config.issuerFormat': 'Formato do Emissor:',
208
+ 'config.issuerUrl': 'URL do Emissor:',
209
+ 'config.defaultTenant': 'Tenant Padrão:',
210
+ 'config.displayName': 'Nome de Exibição:',
211
+ 'config.publicUrls': 'URLs Públicas:',
212
+ 'config.apiRouter': 'Roteador API:',
213
+ 'config.loginUi': 'UI de Login:',
214
+ 'config.adminUi': 'UI de Admin:',
215
+ 'config.components': 'Componentes:',
216
+ 'config.featureFlags': 'Flags de Recursos:',
217
+ 'config.emailSettings': 'Email:',
218
+ 'config.oidcSettings': 'Configurações OIDC:',
219
+ 'config.accessTtl': 'TTL do Access Token:',
220
+ 'config.refreshTtl': 'TTL do Refresh Token:',
221
+ 'config.authCodeTtl': 'TTL do Auth Code:',
222
+ 'config.pkceRequired': 'PKCE Obrigatório:',
223
+ 'config.sharding': 'Sharding:',
224
+ 'config.authCodeShards': 'Auth Code:',
225
+ 'config.refreshTokenShards': 'Refresh Token:',
226
+ 'config.database': 'Banco de Dados:',
227
+ 'config.coreDb': 'BD Core:',
228
+ 'config.piiDb': 'BD PII:',
229
+ 'config.enabled': 'Habilitado',
230
+ 'config.disabled': 'Desabilitado',
231
+ 'config.standard': '(padrão)',
232
+ 'config.notConfigured': 'Não configurado (configurar depois)',
233
+ 'config.yes': 'Sim',
234
+ 'config.no': 'Não',
235
+ 'config.shards': 'shards',
236
+ 'config.sec': 'seg',
237
+ 'config.automatic': 'Automático',
238
+ // Deploy
239
+ 'deploy.prompt': 'Iniciar configuração com esta configuração?',
240
+ 'deploy.starting': 'Executando Configuração...',
241
+ 'deploy.building': 'Compilando pacotes...',
242
+ 'deploy.deploying': 'Implantando no Cloudflare...',
243
+ 'deploy.success': 'Configuração concluída!',
244
+ 'deploy.error': 'Falha na implantação',
245
+ 'deploy.skipped': 'Implantação pulada',
246
+ 'deploy.component': 'Implantando {{component}}...',
247
+ 'deploy.uploadingSecrets': 'Enviando segredos...',
248
+ 'deploy.secretsUploaded': 'Segredos enviados',
249
+ 'deploy.runningMigrations': 'Executando migrações do banco de dados...',
250
+ 'deploy.migrationsComplete': 'Migrações concluídas',
251
+ 'deploy.deployingWorker': 'Implantando worker {{name}}...',
252
+ 'deploy.workerDeployed': 'Worker implantado: {{name}}',
253
+ 'deploy.deployingUI': 'Implantando UI...',
254
+ 'deploy.uiDeployed': 'UI implantada',
255
+ 'deploy.creatingResources': 'Criando recursos do Cloudflare...',
256
+ 'deploy.resourcesFailed': 'Falha ao criar recursos',
257
+ 'deploy.continueWithout': 'Continuar sem provisionamento? (você precisará criar recursos manualmente)',
258
+ 'deploy.emailSecretsSaved': 'Segredos de email salvos em {{path}}',
259
+ 'deploy.confirmStart': 'Iniciar implantação?',
260
+ 'deploy.confirmDryRun': 'Executar implantação em modo de teste?',
261
+ 'deploy.cancelled': 'Implantação cancelada.',
262
+ 'deploy.wranglerChanged': 'Como você quer lidar com essas alterações?',
263
+ 'deploy.wranglerKeep': '📝 Manter alterações manuais (implantar como está)',
264
+ 'deploy.wranglerBackup': '💾 Fazer backup e sobrescrever com master',
265
+ 'deploy.wranglerOverwrite': '⚠️ Sobrescrever com master (perder alterações)',
266
+ // Email provider
267
+ 'email.title': 'Provedor de Email',
268
+ 'email.description': 'Configure o envio de email para links mágicos e códigos de verificação.',
269
+ 'email.prompt': 'Configurar provedor de email agora?',
270
+ 'email.resendOption': 'Resend',
271
+ 'email.resendDesc': 'API de email moderna para desenvolvedores',
272
+ 'email.sesOption': 'AWS SES',
273
+ 'email.sesDesc': 'Amazon Simple Email Service',
274
+ 'email.smtpOption': 'SMTP',
275
+ 'email.smtpDesc': 'Servidor SMTP genérico',
276
+ 'email.skipOption': 'Nenhum (configurar depois)',
277
+ 'email.skipDesc': 'Pular configuração de email',
278
+ 'email.apiKeyPrompt': 'Chave API do Resend',
279
+ 'email.apiKeyHint': 'Obtenha sua chave API em: https://resend.com/api-keys',
280
+ 'email.domainHint': 'Configure o domínio em: https://resend.com/domains',
281
+ 'email.apiKeyRequired': 'Chave API é obrigatória',
282
+ 'email.apiKeyWarning': 'Aviso: Chaves API do Resend geralmente começam com "re_"',
283
+ 'email.fromAddressPrompt': 'Endereço de email do remetente',
284
+ 'email.fromAddressValidation': 'Por favor, digite um endereço de email válido',
285
+ 'email.fromNamePrompt': 'Nome de exibição do remetente (opcional)',
286
+ 'email.domainVerificationRequired': 'Verificação de domínio necessária para enviar do seu próprio domínio.',
287
+ 'email.seeDocumentation': 'Veja: https://resend.com/docs/dashboard/domains/introduction',
288
+ 'email.provider': 'Provedor:',
289
+ 'email.fromAddress': 'Endereço do Remetente:',
290
+ 'email.fromName': 'Nome do Remetente:',
291
+ // SMS provider
292
+ 'sms.prompt': 'Configurar provedor de SMS?',
293
+ 'sms.twilioOption': 'Twilio',
294
+ 'sms.twilioDesc': 'SMS via Twilio',
295
+ 'sms.skipOption': 'Nenhum (configurar depois)',
296
+ 'sms.skipDesc': 'Pular configuração de SMS',
297
+ 'sms.accountSidPrompt': 'Account SID do Twilio',
298
+ 'sms.authTokenPrompt': 'Auth Token do Twilio',
299
+ 'sms.fromNumberPrompt': 'Número de telefone do remetente',
300
+ // Social providers
301
+ 'social.prompt': 'Configurar provedores de login social?',
302
+ 'social.googleOption': 'Google',
303
+ 'social.googleDesc': 'Entrar com Google',
304
+ 'social.githubOption': 'GitHub',
305
+ 'social.githubDesc': 'Entrar com GitHub',
306
+ 'social.appleOption': 'Apple',
307
+ 'social.appleDesc': 'Entrar com Apple',
308
+ 'social.microsoftOption': 'Microsoft',
309
+ 'social.microsoftDesc': 'Entrar com Microsoft',
310
+ 'social.skipOption': 'Nenhum (configurar depois)',
311
+ 'social.skipDesc': 'Pular configuração de login social',
312
+ 'social.clientIdPrompt': 'Client ID',
313
+ 'social.clientSecretPrompt': 'Client Secret',
314
+ // Cloudflare API Token
315
+ 'cf.apiTokenPrompt': 'Digite o Token API do Cloudflare',
316
+ 'cf.apiTokenValidation': 'Por favor, digite um Token API válido',
317
+ // OIDC Profile
318
+ 'profile.prompt': 'Selecione o perfil OIDC',
319
+ 'profile.basicOp': 'OP Básico (Provedor OIDC Padrão)',
320
+ 'profile.basicOpDesc': 'Recursos OIDC padrão',
321
+ 'profile.fapiRw': 'FAPI Read-Write (Nível Financeiro)',
322
+ 'profile.fapiRwDesc': 'Compatível com perfil de segurança FAPI 1.0 Read-Write',
323
+ 'profile.fapi2Security': 'Perfil de Segurança FAPI 2.0',
324
+ 'profile.fapi2SecurityDesc': 'Compatível com perfil de segurança FAPI 2.0 (máxima segurança)',
325
+ // Tenant configuration
326
+ 'tenant.title': 'Modo de Tenant',
327
+ 'tenant.multiTenantPrompt': 'Habilitar modo multi-tenant? (isolamento de tenant baseado em subdomínio)',
328
+ 'tenant.multiTenantTitle': 'Configuração de URL Multi-tenant',
329
+ 'tenant.multiTenantNote1': 'No modo multi-tenant:',
330
+ 'tenant.multiTenantNote2': 'Cada tenant tem um subdomínio: https://{tenant}.{domínio-base}',
331
+ 'tenant.multiTenantNote3': 'O domínio base aponta para o Worker roteador',
332
+ 'tenant.multiTenantNote4': 'A URL do emissor é construída dinamicamente do header Host',
333
+ 'tenant.baseDomainPrompt': 'Domínio base (ex: authrim.com)',
334
+ 'tenant.baseDomainRequired': 'Domínio base é obrigatório para modo multi-tenant',
335
+ 'tenant.baseDomainValidation': 'Por favor, digite um domínio válido (ex: authrim.com)',
336
+ 'tenant.issuerFormat': 'Formato da URL do emissor: https://{tenant}.{{domain}}',
337
+ 'tenant.issuerExample': 'Exemplo: https://acme.{{domain}}',
338
+ 'tenant.defaultTenantPrompt': 'Nome do tenant padrão (identificador)',
339
+ 'tenant.defaultTenantValidation': 'Apenas letras minúsculas, números e hífens são permitidos',
340
+ 'tenant.displayNamePrompt': 'Nome de exibição do tenant padrão',
341
+ 'tenant.singleTenantTitle': 'Configuração de URL Single-tenant',
342
+ 'tenant.singleTenantNote1': 'No modo single-tenant:',
343
+ 'tenant.singleTenantNote2': 'URL do emissor = domínio personalizado da API (ou workers.dev como fallback)',
344
+ 'tenant.singleTenantNote3': 'Todos os clientes compartilham o mesmo emissor',
345
+ 'tenant.organizationName': 'Nome da organização (nome de exibição)',
346
+ 'tenant.uiDomainTitle': 'Configuração de Domínio de UI',
347
+ 'tenant.customUiDomainPrompt': 'Configurar domínios personalizados de UI?',
348
+ 'tenant.loginUiDomain': 'Domínio de UI de login (ex: login.exemplo.com)',
349
+ 'tenant.adminUiDomain': 'Domínio de UI de admin (ex: admin.exemplo.com)',
350
+ // Optional components
351
+ 'components.title': 'Componentes Opcionais',
352
+ 'components.note': 'Nota: Login Social e Motor de Políticas são componentes padrão',
353
+ 'components.samlPrompt': 'Habilitar suporte SAML?',
354
+ 'components.vcPrompt': 'Habilitar Credenciais Verificáveis?',
355
+ 'components.saml': 'SAML:',
356
+ 'components.vc': 'VC:',
357
+ 'components.socialLogin': 'Login Social:',
358
+ 'components.policyEngine': 'Motor de Políticas:',
359
+ // Feature flags
360
+ 'features.title': 'Flags de Recursos',
361
+ 'features.queuePrompt': 'Habilitar Cloudflare Queues? (para logs de auditoria)',
362
+ 'features.r2Prompt': 'Habilitar Cloudflare R2? (para avatares)',
363
+ 'features.queue': 'Fila:',
364
+ 'features.r2': 'R2:',
365
+ // OIDC settings
366
+ 'oidc.configurePrompt': 'Configurar ajustes OIDC? (TTL de tokens, etc.)',
367
+ 'oidc.title': 'Configurações OIDC',
368
+ 'oidc.accessTokenTtl': 'TTL do Access Token (seg)',
369
+ 'oidc.refreshTokenTtl': 'TTL do Refresh Token (seg)',
370
+ 'oidc.authCodeTtl': 'TTL do Authorization Code (seg)',
371
+ 'oidc.pkceRequired': 'Exigir PKCE?',
372
+ 'oidc.positiveInteger': 'Por favor, digite um número inteiro positivo',
373
+ // Sharding settings
374
+ 'sharding.configurePrompt': 'Configurar sharding? (para ambientes de alta carga)',
375
+ 'sharding.title': 'Configurações de Sharding',
376
+ 'sharding.note': 'Nota: Recomenda-se potência de 2 para número de shards (8, 16, 32, 64, 128)',
377
+ 'sharding.authCodeShards': 'Número de shards do Auth Code',
378
+ 'sharding.refreshTokenShards': 'Número de shards do Refresh Token',
379
+ // Infrastructure
380
+ 'infra.title': 'Infraestrutura (Gerada Automaticamente)',
381
+ 'infra.workersNote': 'Os seguintes Workers serão implantados:',
382
+ 'infra.router': 'Roteador:',
383
+ 'infra.auth': 'Auth:',
384
+ 'infra.token': 'Token:',
385
+ 'infra.management': 'Gerenciamento:',
386
+ 'infra.otherWorkers': '... e outros workers de suporte',
387
+ 'infra.defaultEndpoints': 'Endpoints padrão (sem domínio personalizado):',
388
+ 'infra.api': 'API:',
389
+ 'infra.ui': 'UI:',
390
+ 'infra.workersToDeploy': 'Workers a implantar: {{workers}}',
391
+ 'infra.defaultApi': 'API padrão: {{url}}',
392
+ // Completion
393
+ 'complete.title': 'Configuração Concluída!',
394
+ 'complete.summary': 'Seu Provedor OIDC Authrim foi implantado.',
395
+ 'complete.issuerUrl': 'URL do Emissor: {{url}}',
396
+ 'complete.adminUrl': 'Painel de Admin: {{url}}',
397
+ 'complete.uiUrl': 'UI de Login: {{url}}',
398
+ 'complete.nextSteps': 'Próximos Passos:',
399
+ 'complete.nextStep1': '1. Verifique a implantação visitando a URL do emissor',
400
+ 'complete.nextStep2': '2. Configure clientes OAuth no Painel de Admin',
401
+ 'complete.nextStep3': '3. Configure domínios personalizados se necessário',
402
+ 'complete.warning': 'Lembre-se de manter suas chaves seguras e com backup!',
403
+ 'complete.success': 'Configuração concluída com sucesso!',
404
+ 'complete.urls': 'URLs:',
405
+ 'complete.configLocation': 'Configuração:',
406
+ 'complete.keysLocation': 'Chaves:',
407
+ // Resource provisioning
408
+ 'resource.provisioning': 'Provisionando {{resource}}...',
409
+ 'resource.provisioned': '{{resource}} provisionado com sucesso',
410
+ 'resource.failed': 'Falha ao provisionar {{resource}}',
411
+ 'resource.skipped': '{{resource}} pulado',
412
+ // Manage environments
413
+ 'manage.title': 'Ambientes Existentes',
414
+ 'manage.loading': 'Carregando...',
415
+ 'manage.detecting': 'Detectando ambientes...',
416
+ 'manage.detected': 'Ambientes Detectados:',
417
+ 'manage.noEnvs': 'Nenhum ambiente Authrim encontrado.',
418
+ 'manage.selectAction': 'Selecione uma ação',
419
+ 'manage.viewDetails': 'Ver Detalhes',
420
+ 'manage.viewDetailsDesc': 'Mostrar informações detalhadas dos recursos',
421
+ 'manage.deleteEnv': 'Excluir Ambiente',
422
+ 'manage.deleteEnvDesc': 'Remover ambiente e recursos',
423
+ 'manage.backToMenu': 'Voltar ao Menu Principal',
424
+ 'manage.backToMenuDesc': 'Retornar ao menu principal',
425
+ 'manage.selectEnv': 'Selecione o ambiente',
426
+ 'manage.back': 'Voltar',
427
+ 'manage.continueManaging': 'Continuar gerenciando ambientes?',
428
+ // Load config
429
+ 'loadConfig.title': 'Carregar Configuração Existente',
430
+ 'loadConfig.found': 'Encontrada(s) {{count}} configuração(ões):',
431
+ 'loadConfig.new': '(novo)',
432
+ 'loadConfig.legacy': '(legado)',
433
+ 'loadConfig.legacyDetected': 'Estrutura Legada Detectada',
434
+ 'loadConfig.legacyFiles': 'Arquivos legados:',
435
+ 'loadConfig.newBenefits': 'Benefícios da nova estrutura:',
436
+ 'loadConfig.benefit1': 'Portabilidade do ambiente (zip .authrim/prod/)',
437
+ 'loadConfig.benefit2': 'Rastreamento de versão por ambiente',
438
+ 'loadConfig.benefit3': 'Estrutura de projeto mais limpa',
439
+ 'loadConfig.migratePrompt': 'Você gostaria de migrar para a nova estrutura?',
440
+ 'loadConfig.migrateOption': 'Migrar para nova estrutura (.authrim/{env}/)',
441
+ 'loadConfig.continueOption': 'Continuar com estrutura legada',
442
+ 'loadConfig.migrationComplete': 'Migração concluída com sucesso!',
443
+ 'loadConfig.validationPassed': 'Validação aprovada',
444
+ 'loadConfig.validationIssues': 'Problemas de validação:',
445
+ 'loadConfig.newLocation': 'Nova localização da configuração:',
446
+ 'loadConfig.migrationFailed': 'Migração falhou:',
447
+ 'loadConfig.continuingLegacy': 'Continuando com estrutura legada...',
448
+ 'loadConfig.loadThis': 'Carregar esta configuração',
449
+ 'loadConfig.specifyOther': 'Especificar arquivo diferente',
450
+ 'loadConfig.noConfigFound': 'Nenhuma configuração encontrada no diretório atual.',
451
+ 'loadConfig.tip': 'Dica: Você pode especificar um arquivo de configuração com:',
452
+ 'loadConfig.specifyPath': 'Especificar caminho do arquivo',
453
+ 'loadConfig.enterPath': 'Digite o caminho do arquivo de configuração',
454
+ 'loadConfig.pathRequired': 'Por favor, digite um caminho',
455
+ 'loadConfig.fileNotFound': 'Arquivo não encontrado: {{path}}',
456
+ 'loadConfig.selectConfig': 'Selecione a configuração para carregar',
457
+ // Common
458
+ 'common.yes': 'Sim',
459
+ 'common.no': 'Não',
460
+ 'common.continue': 'Continuar',
461
+ 'common.cancel': 'Cancelar',
462
+ 'common.skip': 'Pular',
463
+ 'common.back': 'Voltar',
464
+ 'common.confirm': 'Confirmar',
465
+ 'common.error': 'Erro',
466
+ 'common.warning': 'Aviso',
467
+ 'common.success': 'Sucesso',
468
+ 'common.info': 'Info',
469
+ 'common.loading': 'Carregando...',
470
+ 'common.saving': 'Salvando...',
471
+ 'common.processing': 'Processando...',
472
+ 'common.done': 'Concluído',
473
+ 'common.required': 'Obrigatório',
474
+ 'common.optional': 'Opcional',
475
+ // Errors
476
+ 'error.generic': 'Ocorreu um erro',
477
+ 'error.network': 'Erro de rede',
478
+ 'error.timeout': 'Tempo esgotado',
479
+ 'error.invalidInput': 'Entrada inválida',
480
+ 'error.fileNotFound': 'Arquivo não encontrado',
481
+ 'error.permissionDenied': 'Permissão negada',
482
+ 'error.configNotFound': 'Configuração não encontrada',
483
+ 'error.configInvalid': 'Configuração inválida',
484
+ 'error.deployFailed': 'Implantação falhou',
485
+ 'error.resourceCreationFailed': 'Falha ao criar recurso',
486
+ // Validation
487
+ 'validation.required': 'Este campo é obrigatório',
488
+ 'validation.invalidFormat': 'Formato inválido',
489
+ 'validation.tooShort': 'Muito curto',
490
+ 'validation.tooLong': 'Muito longo',
491
+ 'validation.invalidDomain': 'Domínio inválido',
492
+ 'validation.invalidEmail': 'Endereço de email inválido',
493
+ 'validation.invalidUrl': 'URL inválida',
494
+ // Delete command
495
+ 'delete.title': 'Excluir Ambiente',
496
+ 'delete.prompt': 'Selecione recursos para excluir',
497
+ 'delete.confirm': 'Tem certeza de que deseja excluir "{{env}}"?',
498
+ 'delete.confirmPermanent': '⚠️ Isso excluirá permanentemente todos os recursos de "{{env}}". Continuar?',
499
+ 'delete.confirmWarning': 'Esta ação não pode ser desfeita!',
500
+ 'delete.deleting': 'Excluindo {{resource}}...',
501
+ 'delete.deleted': '{{resource}} excluído',
502
+ 'delete.error': 'Falha ao excluir {{resource}}',
503
+ 'delete.cancelled': 'Exclusão cancelada',
504
+ 'delete.noEnvFound': 'Nenhum ambiente encontrado',
505
+ 'delete.selectEnv': 'Selecione o ambiente para excluir',
506
+ 'delete.workers': 'Workers',
507
+ 'delete.databases': 'Bancos de dados D1',
508
+ 'delete.kvNamespaces': 'Namespaces KV',
509
+ 'delete.queues': 'Filas',
510
+ 'delete.r2Buckets': 'Buckets R2',
511
+ // Info command
512
+ 'info.title': 'Informações do Ambiente',
513
+ 'info.loading': 'Carregando informações do ambiente...',
514
+ 'info.noResources': 'Nenhum recurso encontrado',
515
+ 'info.environment': 'Ambiente',
516
+ 'info.issuer': 'Emissor',
517
+ 'info.workers': 'Workers',
518
+ 'info.databases': 'Bancos de dados',
519
+ 'info.kvNamespaces': 'Namespaces KV',
520
+ 'info.queues': 'Filas',
521
+ 'info.r2Buckets': 'Buckets R2',
522
+ 'info.status': 'Status',
523
+ 'info.deployed': 'Implantado',
524
+ 'info.notDeployed': 'Não implantado',
525
+ // Config command
526
+ 'configCmd.title': 'Configuração',
527
+ 'configCmd.showing': 'Mostrando configuração',
528
+ 'configCmd.validating': 'Validando configuração...',
529
+ 'configCmd.valid': 'A configuração é válida',
530
+ 'configCmd.invalid': 'A configuração é inválida',
531
+ 'configCmd.notFound': 'Configuração não encontrada',
532
+ 'configCmd.error': 'Erro ao ler configuração',
533
+ // Migrate command
534
+ 'migrate.title': 'Migrar para Nova Estrutura',
535
+ 'migrate.checking': 'Verificando status da migração...',
536
+ 'migrate.noLegacyFound': 'Nenhuma estrutura legada encontrada',
537
+ 'migrate.legacyFound': 'Estrutura legada detectada',
538
+ 'migrate.prompt': 'Migrar para nova estrutura?',
539
+ 'migrate.migrating': 'Migrando...',
540
+ 'migrate.success': 'Migração bem-sucedida',
541
+ 'migrate.cancelled': 'Migração cancelada.',
542
+ 'migrate.error': 'Migração falhou',
543
+ 'migrate.dryRun': 'Execução de teste - nenhuma alteração feita',
544
+ 'migrate.backup': 'Criando backup...',
545
+ 'migrate.backupCreated': 'Backup criado em {{path}}',
546
+ // Manage command
547
+ 'manage.commandTitle': 'Gerenciador de Ambientes Authrim',
548
+ // Web UI specific
549
+ 'web.title': 'Configuração do Authrim',
550
+ 'web.subtitle': 'Provedor OIDC no Cloudflare Workers',
551
+ 'web.loading': 'Carregando...',
552
+ 'web.error': 'Ocorreu um erro',
553
+ 'web.retry': 'Tentar novamente',
554
+ 'web.languageSelector': 'Idioma',
555
+ 'web.darkMode': 'Escuro',
556
+ 'web.lightMode': 'Claro',
557
+ 'web.systemMode': 'Sistema',
558
+ // Web UI Prerequisites
559
+ 'web.prereq.title': 'Pré-requisitos',
560
+ 'web.prereq.checking': 'Verificando...',
561
+ 'web.prereq.checkingRequirements': 'Verificando requisitos do sistema...',
562
+ 'web.prereq.ready': 'Pronto',
563
+ 'web.prereq.wranglerInstalled': 'Wrangler instalado',
564
+ 'web.prereq.loggedInAs': 'Conectado como {{email}}',
565
+ // Web UI Top Menu
566
+ 'web.menu.title': 'Começar',
567
+ 'web.menu.subtitle': 'Escolha uma opção para continuar:',
568
+ 'web.menu.newSetup': 'Nova Configuração',
569
+ 'web.menu.newSetupDesc': 'Criar uma nova implantação do Authrim do zero',
570
+ 'web.menu.loadConfig': 'Carregar Config',
571
+ 'web.menu.loadConfigDesc': 'Retomar ou reimplantar usando configuração existente',
572
+ 'web.menu.manageEnv': 'Gerenciar Ambientes',
573
+ 'web.menu.manageEnvDesc': 'Ver, inspecionar ou excluir ambientes existentes',
574
+ // Web UI Setup Mode
575
+ 'web.mode.title': 'Modo de Configuração',
576
+ 'web.mode.subtitle': 'Escolha como você quer configurar o Authrim:',
577
+ 'web.mode.quick': 'Configuração Rápida',
578
+ 'web.mode.quickDesc': 'Comece em ~5 minutos',
579
+ 'web.mode.quickEnv': 'Seleção de ambiente',
580
+ 'web.mode.quickDomain': 'Domínio personalizado opcional',
581
+ 'web.mode.quickDefault': 'Componentes padrão',
582
+ 'web.mode.recommended': 'Recomendado',
583
+ 'web.mode.custom': 'Configuração Personalizada',
584
+ 'web.mode.customDesc': 'Controle total sobre a configuração',
585
+ 'web.mode.customComp': 'Seleção de componentes',
586
+ 'web.mode.customUrl': 'Configuração de URL',
587
+ 'web.mode.customAdvanced': 'Configurações avançadas',
588
+ // Web UI Load Config
589
+ 'web.loadConfig.title': 'Carregar Configuração',
590
+ 'web.loadConfig.subtitle': 'Selecione seu arquivo authrim-config.json:',
591
+ 'web.loadConfig.chooseFile': 'Escolher Arquivo',
592
+ 'web.loadConfig.preview': 'Prévia da Configuração',
593
+ 'web.loadConfig.validationFailed': 'Validação da Configuração Falhou',
594
+ 'web.loadConfig.valid': 'A configuração é válida',
595
+ 'web.loadConfig.loadContinue': 'Carregar e Continuar',
596
+ // Web UI Configuration
597
+ 'web.config.title': 'Configuração',
598
+ 'web.config.components': 'Componentes',
599
+ 'web.config.apiRequired': 'API (obrigatório)',
600
+ 'web.config.apiDesc': 'Endpoints do Provedor OIDC: authorize, token, userinfo, discovery, APIs de gerenciamento.',
601
+ 'web.config.saml': 'SAML IdP',
602
+ 'web.config.deviceFlow': 'Device Flow / CIBA',
603
+ 'web.config.vcSdJwt': 'VC SD-JWT',
604
+ 'web.config.loginUi': 'UI de Login',
605
+ 'web.config.loginUiDesc': 'UI de autenticação pré-construída implantada no Cloudflare Pages.',
606
+ 'web.config.adminUi': 'UI de Admin',
607
+ 'web.config.adminUiDesc': 'Painel de gerenciamento para usuários, clientes e configurações.',
608
+ // Web UI URLs
609
+ 'web.url.title': 'Configuração de URL',
610
+ 'web.url.apiDomain': 'Domínio API',
611
+ 'web.url.apiDomainHint': 'Deixe vazio para usar subdomínio workers.dev',
612
+ 'web.url.loginDomain': 'Domínio UI de Login',
613
+ 'web.url.loginDomainHint': 'Deixe vazio para usar subdomínio pages.dev',
614
+ 'web.url.adminDomain': 'Domínio UI de Admin',
615
+ 'web.url.adminDomainHint': 'Deixe vazio para usar subdomínio pages.dev',
616
+ // Web UI Database
617
+ 'web.db.title': 'Configuração do Banco de Dados',
618
+ 'web.db.coreTitle': 'Banco de Dados Core',
619
+ 'web.db.coreSubtitle': '(Não-PII)',
620
+ 'web.db.coreDesc': 'Armazena clientes, códigos de autorização, tokens, sessões. Pode ser replicado globalmente.',
621
+ 'web.db.piiTitle': 'Banco de Dados PII',
622
+ 'web.db.piiSubtitle': '(Informações Pessoais Identificáveis)',
623
+ 'web.db.piiDesc': 'Armazena perfis de usuário, credenciais, PII. Deve estar em uma única jurisdição para conformidade.',
624
+ 'web.db.name': 'Nome',
625
+ 'web.db.region': 'Região',
626
+ 'web.db.regionAuto': 'Automático (mais próximo)',
627
+ // Web UI Email
628
+ 'web.email.title': 'Provedor de Email',
629
+ 'web.email.subtitle': 'Selecione serviço de email para redefinição de senha e emails de verificação:',
630
+ 'web.email.none': 'Nenhum',
631
+ 'web.email.noneDesc': 'Recursos de email desabilitados',
632
+ 'web.email.resend': 'Resend',
633
+ 'web.email.resendDesc': 'API de email para desenvolvedores',
634
+ 'web.email.sendgrid': 'SendGrid',
635
+ 'web.email.sendgridDesc': 'Entrega de email escalável',
636
+ 'web.email.ses': 'Amazon SES',
637
+ 'web.email.sesDesc': 'AWS Simple Email Service',
638
+ 'web.email.resendConfig': 'Configuração do Resend',
639
+ 'web.email.apiKey': 'Chave API',
640
+ 'web.email.apiKeyPlaceholder': 're_xxxxxxxx',
641
+ 'web.email.fromAddress': 'Endereço do Remetente',
642
+ 'web.email.fromAddressPlaceholder': 'noreply@seudominio.com',
643
+ // Web UI Provision
644
+ 'web.provision.title': 'Criar Recursos do Cloudflare',
645
+ 'web.provision.ready': 'Pronto para provisionar',
646
+ 'web.provision.desc': 'Os seguintes recursos serão criados na sua conta Cloudflare:',
647
+ 'web.provision.createResources': 'Criar Recursos',
648
+ 'web.provision.saveConfig': 'Salvar Config',
649
+ 'web.provision.continueDeploy': 'Continuar para Implantar →',
650
+ // Web UI Deploy
651
+ 'web.deploy.title': 'Implantar',
652
+ 'web.deploy.desc': 'Implantar workers e UI no Cloudflare:',
653
+ 'web.deploy.startDeploy': 'Iniciar Implantação',
654
+ 'web.deploy.deploying': 'Implantando...',
655
+ // Web UI Complete
656
+ 'web.complete.title': 'Configuração Concluída!',
657
+ 'web.complete.desc': 'Sua implantação do Authrim está pronta.',
658
+ 'web.complete.issuerUrl': 'URL do Emissor',
659
+ 'web.complete.loginUrl': 'URL de Login',
660
+ 'web.complete.adminUrl': 'URL de Admin',
661
+ 'web.complete.nextSteps': 'Próximos Passos:',
662
+ 'web.complete.step1': 'Complete a configuração inicial do admin usando o botão acima',
663
+ 'web.complete.step2': 'Configure seu primeiro cliente OAuth na UI de Admin',
664
+ 'web.complete.step3': 'Integre com sua aplicação',
665
+ 'web.complete.saveConfig': 'Salvar Configuração',
666
+ 'web.complete.backToMain': 'Voltar ao Início',
667
+ 'web.complete.canClose': 'A configuração está completa. Você pode fechar esta janela com segurança.',
668
+ // Web UI Environment Management
669
+ 'web.env.title': 'Ambientes',
670
+ 'web.env.loading': 'Carregando ambientes...',
671
+ 'web.env.noEnvFound': 'Nenhum ambiente encontrado',
672
+ 'web.env.refresh': 'Atualizar',
673
+ 'web.env.adminSetup': 'Configuração Inicial do Admin',
674
+ 'web.env.adminSetupDesc': 'Clique para criar conta de admin para',
675
+ 'web.env.openSetup': 'Abrir Configuração',
676
+ 'web.env.copyUrl': 'Copiar',
677
+ 'web.env.deleteTitle': 'Excluir Ambiente',
678
+ 'web.env.deleteWarning': 'Esta ação não pode ser desfeita. Os seguintes recursos serão excluídos permanentemente:',
679
+ 'web.env.confirmDelete': 'Excluir Selecionados',
680
+ 'web.env.cancel': 'Cancelar',
681
+ // Web UI Common buttons
682
+ 'web.btn.back': 'Voltar',
683
+ 'web.btn.continue': 'Continuar',
684
+ 'web.btn.cancel': 'Cancelar',
685
+ 'web.btn.save': 'Salvar',
686
+ 'web.btn.skip': 'Pular',
687
+ // Web UI Save Modal
688
+ 'web.modal.saveTitle': 'Salvar Configuração?',
689
+ 'web.modal.saveDesc': 'Salve a configuração no seu computador local para uso futuro.',
690
+ 'web.modal.skipSave': 'Pular',
691
+ 'web.modal.saveConfig': 'Salvar Configuração',
692
+ // Web UI steps
693
+ 'web.step.environment': 'Ambiente',
694
+ 'web.step.region': 'Região',
695
+ 'web.step.domain': 'Domínio',
696
+ 'web.step.email': 'Email',
697
+ 'web.step.sms': 'SMS',
698
+ 'web.step.social': 'Social',
699
+ 'web.step.advanced': 'Avançado',
700
+ 'web.step.review': 'Revisar',
701
+ 'web.step.deploy': 'Implantar',
702
+ // Web UI forms
703
+ 'web.form.submit': 'Enviar',
704
+ 'web.form.next': 'Próximo',
705
+ 'web.form.previous': 'Anterior',
706
+ 'web.form.reset': 'Redefinir',
707
+ 'web.form.validation': 'Por favor, corrija os erros acima',
708
+ // Web UI progress
709
+ 'web.progress.preparing': 'Preparando implantação...',
710
+ 'web.progress.creatingResources': 'Criando recursos do Cloudflare...',
711
+ 'web.progress.generatingKeys': 'Gerando chaves criptográficas...',
712
+ 'web.progress.configuringWorkers': 'Configurando workers...',
713
+ 'web.progress.deployingWorkers': 'Implantando workers...',
714
+ 'web.progress.deployingUI': 'Implantando UI...',
715
+ 'web.progress.runningMigrations': 'Executando migrações do banco de dados...',
716
+ 'web.progress.complete': 'Implantação concluída!',
717
+ 'web.progress.failed': 'Implantação falhou',
718
+ // Web UI Form Labels
719
+ 'web.form.envName': 'Nome do Ambiente',
720
+ 'web.form.envNamePlaceholder': 'ex: prod, staging, dev',
721
+ 'web.form.envNameHint': 'Apenas letras minúsculas, números e hífens',
722
+ 'web.form.baseDomain': 'Domínio Base (Domínio API)',
723
+ 'web.form.baseDomainPlaceholder': 'oidc.exemplo.com',
724
+ 'web.form.baseDomainHint': 'Domínio personalizado para Authrim. Deixe vazio para usar workers.dev',
725
+ 'web.form.nakedDomain': 'Excluir nome do tenant da URL',
726
+ 'web.form.nakedDomainHint': 'Usar https://exemplo.com em vez de https://{tenant}.exemplo.com',
727
+ 'web.form.nakedDomainWarning': 'Subdomínios de tenant requerem domínio personalizado. Workers.dev não suporta subdomínios curinga.',
728
+ 'web.form.tenantId': 'ID do Tenant Padrão',
729
+ 'web.form.tenantIdPlaceholder': 'default',
730
+ 'web.form.tenantIdHint': 'Identificador do primeiro tenant (minúsculas, sem espaços)',
731
+ 'web.form.tenantIdWorkerNote': '(ID do Tenant é usado internamente. Subdomínio URL requer domínio personalizado.)',
732
+ 'web.form.tenantDisplay': 'Nome de Exibição do Tenant',
733
+ 'web.form.tenantDisplayPlaceholder': 'Minha Empresa',
734
+ 'web.form.tenantDisplayHint': 'Nome mostrado na página de login e tela de consentimento',
735
+ 'web.form.loginDomainPlaceholder': 'login.exemplo.com',
736
+ 'web.form.adminDomainPlaceholder': 'admin.exemplo.com',
737
+ // Web UI Section Headers
738
+ 'web.section.apiDomain': 'Domínio API / Emissor',
739
+ 'web.section.uiDomains': 'Domínios UI (Opcional)',
740
+ 'web.section.uiDomainsHint': 'Domínios personalizados para UIs de Login/Admin. Cada um pode ser configurado independentemente. Deixe vazio para usar padrão do Cloudflare Pages.',
741
+ 'web.section.corsHint': 'CORS: Requisições cross-origin de UI de Login/Admin para API são permitidas automaticamente.',
742
+ 'web.section.configPreview': 'Prévia da Configuração',
743
+ 'web.section.resourceNames': 'Nomes dos Recursos',
744
+ // Web UI Preview Labels
745
+ 'web.preview.components': 'Componentes:',
746
+ 'web.preview.workers': 'Workers:',
747
+ 'web.preview.issuerUrl': 'URL do Emissor:',
748
+ 'web.preview.loginUi': 'UI de Login:',
749
+ 'web.preview.adminUi': 'UI de Admin:',
750
+ // Web UI Component Labels
751
+ 'web.comp.loginUi': 'UI de Login',
752
+ 'web.comp.loginUiDesc': 'Páginas de login, registro, consentimento e gerenciamento de conta para usuários.',
753
+ 'web.comp.adminUi': 'UI de Admin',
754
+ 'web.comp.adminUiDesc': 'Painel de admin para gerenciar tenants, clientes, usuários e configurações do sistema.',
755
+ // Web UI Domain Row Labels
756
+ 'web.domain.loginUi': 'UI de Login',
757
+ 'web.domain.adminUi': 'UI de Admin',
758
+ // Web UI Database Section
759
+ 'web.db.introDesc': 'Authrim usa dois bancos de dados D1 separados para isolar dados pessoais dos dados da aplicação.',
760
+ 'web.db.regionNote': 'Nota: A região do banco de dados não pode ser alterada após a criação.',
761
+ 'web.db.coreNonPii': 'Não-PII',
762
+ 'web.db.coreDataDesc': 'Armazena dados de aplicação não pessoais incluindo:',
763
+ 'web.db.coreData1': 'Clientes OAuth e suas configurações',
764
+ 'web.db.coreData2': 'Códigos de autorização e access tokens',
765
+ 'web.db.coreData3': 'Sessões de usuário e estado de login',
766
+ 'web.db.coreData4': 'Configurações de tenant',
767
+ 'web.db.coreData5': 'Logs de auditoria e eventos de segurança',
768
+ 'web.db.coreHint': 'Este banco de dados lida com todos os fluxos de autenticação e deve ser colocado perto da sua base de usuários principal.',
769
+ 'web.db.piiLabel': 'Informações Pessoais Identificáveis',
770
+ 'web.db.piiDataDesc': 'Armazena dados pessoais do usuário incluindo:',
771
+ 'web.db.piiData1': 'Perfis de usuário (nome, email, telefone)',
772
+ 'web.db.piiData2': 'Credenciais Passkey/WebAuthn',
773
+ 'web.db.piiData3': 'Preferências e configurações do usuário',
774
+ 'web.db.piiData4': 'Quaisquer atributos personalizados do usuário',
775
+ 'web.db.piiHint': 'Este banco de dados contém dados pessoais. Considere colocá-lo em uma região que cumpra seus requisitos de proteção de dados.',
776
+ 'web.db.locationHints': 'Dicas de Localização',
777
+ 'web.db.jurisdiction': 'Jurisdição (Conformidade)',
778
+ 'web.db.autoNearest': 'Automático (mais próximo de você)',
779
+ 'web.db.northAmericaWest': 'América do Norte (Oeste)',
780
+ 'web.db.northAmericaEast': 'América do Norte (Leste)',
781
+ 'web.db.europeWest': 'Europa (Oeste)',
782
+ 'web.db.europeEast': 'Europa (Leste)',
783
+ 'web.db.asiaPacific': 'Ásia Pacífico',
784
+ 'web.db.oceania': 'Oceania',
785
+ 'web.db.euJurisdiction': 'Jurisdição UE (conformidade GDPR)',
786
+ // Web UI Email Section
787
+ 'web.email.introDesc': 'Usado para enviar OTP por email e verificação de endereço de email. Você pode configurar isso depois se preferir.',
788
+ 'web.email.configureLater': 'Configurar depois',
789
+ 'web.email.configureLaterHint': 'Pular por agora e configurar depois.',
790
+ 'web.email.configureResend': 'Configurar Resend',
791
+ 'web.email.configureResendHint': 'Configurar envio de email com Resend (recomendado para produção).',
792
+ 'web.email.resendSetup': 'Configuração do Resend',
793
+ 'web.email.beforeBegin': 'Antes de começar:',
794
+ 'web.email.step1': 'Crie uma conta no Resend em',
795
+ 'web.email.step2': 'Adicione e verifique seu domínio em',
796
+ 'web.email.step3': 'Crie uma chave API em',
797
+ 'web.email.resendApiKey': 'Chave API do Resend',
798
+ 'web.email.resendApiKeyHint': 'Sua chave API começa com "re_"',
799
+ 'web.email.fromEmailAddress': 'Endereço de Email do Remetente',
800
+ 'web.email.fromEmailHint': 'Deve ser de um domínio verificado na sua conta Resend',
801
+ 'web.email.fromDisplayName': 'Nome de Exibição do Remetente (opcional)',
802
+ 'web.email.fromDisplayHint': 'Exibido como o nome do remetente em clientes de email',
803
+ 'web.email.domainVerificationTitle': 'Verificação de Domínio Necessária',
804
+ 'web.email.domainVerificationDesc': 'Antes do seu domínio ser verificado, emails só podem ser enviados de onboarding@resend.dev (para testes).',
805
+ 'web.email.learnMore': 'Saiba mais sobre verificação de domínio →',
806
+ // Web UI Provision Section
807
+ 'web.provision.resourcePreview': 'Nomes dos Recursos:',
808
+ 'web.provision.d1Databases': 'Bancos de dados D1:',
809
+ 'web.provision.kvNamespaces': 'Namespaces KV:',
810
+ 'web.provision.cryptoKeys': 'Chaves Criptográficas:',
811
+ 'web.provision.initializing': 'Inicializando...',
812
+ 'web.provision.showLog': 'Mostrar log detalhado',
813
+ 'web.provision.hideLog': 'Ocultar log detalhado',
814
+ 'web.provision.keysSavedTo': 'Chaves salvas em:',
815
+ 'web.provision.keepSafe': 'Mantenha este diretório seguro e adicione ao .gitignore',
816
+ // Web UI Deploy Section
817
+ 'web.deploy.readyText': 'Pronto para implantar workers do Authrim no Cloudflare.',
818
+ // Web UI Environment List
819
+ 'web.env.detectedDesc': 'Ambientes Authrim detectados na sua conta Cloudflare:',
820
+ 'web.env.noEnvsDetected': 'Nenhum ambiente Authrim detectado nesta conta Cloudflare.',
821
+ 'web.env.backToList': '← Voltar à Lista',
822
+ 'web.env.deleteEnv': 'Excluir Ambiente...',
823
+ // Web UI Environment Detail
824
+ 'web.envDetail.title': 'Detalhes do Ambiente',
825
+ 'web.envDetail.adminNotConfigured': 'Conta de Admin Não Configurada',
826
+ 'web.envDetail.adminNotConfiguredDesc': 'O administrador inicial não foi configurado para este ambiente.',
827
+ 'web.envDetail.startPasskey': 'Iniciar Configuração de Conta Admin com Passkey',
828
+ 'web.envDetail.setupUrlGenerated': 'URL de Configuração Gerada:',
829
+ 'web.envDetail.copyBtn': 'Copiar',
830
+ 'web.envDetail.openSetup': 'Abrir Configuração',
831
+ 'web.envDetail.urlValidFor': 'Esta URL é válida por 1 hora. Abra-a em um navegador para registrar a primeira conta de admin.',
832
+ 'web.envDetail.workers': 'Workers',
833
+ 'web.envDetail.d1Databases': 'Bancos de dados D1',
834
+ 'web.envDetail.kvNamespaces': 'Namespaces KV',
835
+ 'web.envDetail.queues': 'Filas',
836
+ 'web.envDetail.r2Buckets': 'Buckets R2',
837
+ 'web.envDetail.pagesProjects': 'Projetos Pages',
838
+ // Web UI Delete Section
839
+ 'web.delete.title': 'Excluir Ambiente',
840
+ 'web.delete.warning': 'Esta ação é irreversível. Todos os recursos selecionados serão excluídos permanentemente.',
841
+ 'web.delete.environment': 'Ambiente:',
842
+ 'web.delete.selectResources': 'Selecione recursos para excluir:',
843
+ 'web.delete.workers': 'Workers',
844
+ 'web.delete.d1Databases': 'Bancos de dados D1',
845
+ 'web.delete.kvNamespaces': 'Namespaces KV',
846
+ 'web.delete.queues': 'Filas',
847
+ 'web.delete.r2Buckets': 'Buckets R2',
848
+ 'web.delete.pagesProjects': 'Projetos Pages',
849
+ 'web.delete.cancelBtn': 'Cancelar',
850
+ 'web.delete.confirmBtn': 'Excluir Selecionados',
851
+ // Web UI Save Modal
852
+ 'web.modal.saveQuestion': 'Você gostaria de salvar sua configuração em um arquivo antes de continuar?',
853
+ 'web.modal.saveReason': 'Isso permite retomar a configuração depois ou usar as mesmas configurações para outra implantação.',
854
+ 'web.modal.skipBtn': 'Pular',
855
+ 'web.modal.saveBtn': 'Salvar Configuração',
856
+ // Web UI Error Messages
857
+ 'web.error.wranglerNotInstalled': 'Wrangler não instalado',
858
+ 'web.error.pleaseInstall': 'Por favor, instale o wrangler primeiro:',
859
+ 'web.error.notLoggedIn': 'Não conectado ao Cloudflare',
860
+ 'web.error.runCommand': 'Por favor, execute este comando no seu terminal:',
861
+ 'web.error.thenRefresh': 'Depois atualize esta página.',
862
+ 'web.error.checkingPrereq': 'Erro ao verificar pré-requisitos:',
863
+ 'web.error.invalidJson': 'JSON inválido:',
864
+ 'web.error.validationFailed': 'Requisição de validação falhou:',
865
+ // Web UI Status Messages
866
+ 'web.status.checking': 'Verificando...',
867
+ 'web.status.running': 'Executando...',
868
+ 'web.status.deploying': 'Implantando...',
869
+ 'web.status.complete': 'Concluído',
870
+ 'web.status.error': 'Erro',
871
+ 'web.status.scanning': 'Escaneando...',
872
+ 'web.status.saving': 'Salvando...',
873
+ 'web.status.notDeployed': '(Não implantado)',
874
+ 'web.status.startingDeploy': 'Iniciando implantação...',
875
+ 'web.status.none': 'Nenhum',
876
+ 'web.status.loading': 'Carregando...',
877
+ 'web.status.failedToLoad': 'Falha ao carregar',
878
+ 'web.status.adminNotConfigured': 'Admin Não Configurado',
879
+ 'web.status.initializing': 'Inicializando...',
880
+ 'web.status.found': '{{count}} encontrado(s)',
881
+ // Web UI Button Labels (dynamic)
882
+ 'web.btn.reprovision': 'Re-provisionar (Excluir e Criar)',
883
+ 'web.btn.createResources': 'Criar Recursos',
884
+ 'web.btn.saveConfiguration': 'Salvar Configuração',
885
+ // Quick setup specific
886
+ 'quickSetup.title': 'Configuração Rápida',
887
+ // Custom setup specific
888
+ 'customSetup.title': 'Configuração Personalizada',
889
+ 'customSetup.cancelled': 'Configuração cancelada.',
890
+ // Web UI starting
891
+ 'webUi.starting': 'Iniciando Web UI...',
892
+ };
893
+ export default pt;
894
+ //# sourceMappingURL=pt.js.map