@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
+ * Spanish Translations for Authrim Setup Tool
3
+ * Traducciones en español
4
+ */
5
+ const es = {
6
+ // Language selection
7
+ 'language.select': 'Select language / 言語を選択 / 选择语言',
8
+ 'language.selected': 'Idioma: {{language}}',
9
+ // Banner
10
+ 'banner.title': 'Configuración de Authrim',
11
+ 'banner.subtitle': 'Proveedor OIDC en Cloudflare Workers',
12
+ 'banner.warning': '¡ADVERTENCIA: En desarrollo!',
13
+ 'banner.warningDetail': 'Este proyecto aún no funciona correctamente.',
14
+ 'banner.adminWarning': 'La interfaz de administración está incompleta y no soporta inicio de sesión.',
15
+ 'banner.exitHint': 'Presiona Ctrl+C en cualquier momento para salir',
16
+ // Mode selection
17
+ 'mode.prompt': 'Elige el método de configuración',
18
+ 'mode.quick': 'Web UI (Recomendado)',
19
+ 'mode.quickDesc': 'Configuración interactiva en tu navegador',
20
+ 'mode.advanced': 'Modo CLI',
21
+ 'mode.advancedDesc': 'Configuración interactiva en terminal',
22
+ // Startup menu
23
+ 'startup.description': 'Configura el Proveedor OIDC de Authrim en Cloudflare Workers.',
24
+ 'startup.cancel': 'Cancelar',
25
+ 'startup.cancelDesc': 'Salir de la configuración',
26
+ 'startup.cancelled': 'Configuración cancelada.',
27
+ 'startup.resumeLater': 'Para continuar después:',
28
+ // Main menu
29
+ 'menu.prompt': '¿Qué te gustaría hacer?',
30
+ 'menu.quick': 'Configuración Rápida (5 minutos)',
31
+ 'menu.quickDesc': 'Despliega Authrim con configuración mínima',
32
+ 'menu.custom': 'Configuración Personalizada',
33
+ 'menu.customDesc': 'Configura todas las opciones paso a paso',
34
+ // Setup titles
35
+ 'quick.title': '⚡ Configuración Rápida',
36
+ 'custom.title': '🔧 Configuración Personalizada',
37
+ 'menu.manage': 'Ver Entornos Existentes',
38
+ 'menu.manageDesc': 'Ver, inspeccionar o eliminar entornos existentes',
39
+ 'menu.load': 'Cargar Configuración Existente',
40
+ 'menu.loadDesc': 'Reanudar configuración desde authrim-config.json',
41
+ 'menu.exit': 'Salir',
42
+ 'menu.exitDesc': 'Salir de la configuración',
43
+ 'menu.goodbye': '¡Adiós!',
44
+ // Update check
45
+ 'update.checking': 'Buscando actualizaciones...',
46
+ 'update.available': 'Actualización disponible: {{localVersion}} → {{remoteVersion}}',
47
+ 'update.prompt': '¿Qué te gustaría hacer?',
48
+ 'update.continue': 'Continuar con la versión actual ({{version}})',
49
+ 'update.continueDesc': 'Usar el código fuente existente',
50
+ 'update.update': 'Actualizar a la última versión ({{version}})',
51
+ 'update.updateDesc': 'Descargar y reemplazar con la nueva versión',
52
+ 'update.cancel': 'Cancelar',
53
+ 'update.cancelled': 'Cancelado.',
54
+ 'update.current': 'Usando código fuente de Authrim (v{{version}})',
55
+ // Source download
56
+ 'source.downloading': 'Descargando código fuente...',
57
+ 'source.downloaded': 'Código fuente descargado ({{version}})',
58
+ 'source.extracting': 'Extrayendo código fuente...',
59
+ 'source.installing': 'Instalando dependencias (esto puede tomar unos minutos)...',
60
+ 'source.installed': 'Dependencias instaladas',
61
+ 'source.installFailed': 'Error al instalar dependencias',
62
+ 'source.installManually': 'Puedes intentar instalarlo manualmente:',
63
+ 'source.notInSourceDir': 'Código fuente de Authrim no encontrado',
64
+ 'source.downloadPrompt': '¿Descargar código fuente en {{path}}?',
65
+ 'source.downloadOption': 'Descargar código fuente',
66
+ 'source.downloadOptionDesc': 'Descargar última versión',
67
+ 'source.exitOption': 'Salir',
68
+ 'source.exitOptionDesc': 'Salir de la configuración',
69
+ 'source.cloneManually': 'Para clonar manualmente:',
70
+ 'source.directoryExists': 'El directorio {{path}} existe pero no es un código fuente válido de Authrim',
71
+ 'source.replaceOption': 'Reemplazar con descarga nueva',
72
+ 'source.replaceOptionDesc': 'Eliminar {{path}} y descargar la última versión',
73
+ 'source.differentOption': 'Usar un directorio diferente',
74
+ 'source.differentOptionDesc': 'Especificar otra ubicación',
75
+ 'source.enterPath': 'Ingresa la ruta del directorio:',
76
+ 'source.updateFailed': 'Error en la actualización',
77
+ 'source.downloadFailed': 'Error en la descarga',
78
+ 'source.verificationWarnings': 'Advertencias de verificación de estructura del código:',
79
+ // Prerequisites
80
+ 'prereq.checking': 'Verificando estado de wrangler...',
81
+ 'prereq.wranglerNotInstalled': 'wrangler no está instalado',
82
+ 'prereq.wranglerInstallHint': 'Ejecuta el siguiente comando para instalar:',
83
+ 'prereq.notLoggedIn': 'No has iniciado sesión en Cloudflare',
84
+ 'prereq.loginHint': 'Ejecuta el siguiente comando para autenticarte:',
85
+ 'prereq.loggedInAs': 'Conectado a Cloudflare ({{email}})',
86
+ 'prereq.accountId': 'ID de cuenta: {{accountId}}',
87
+ // Environment
88
+ 'env.prompt': 'Ingresa el nombre del entorno',
89
+ 'env.prod': 'Producción',
90
+ 'env.prodDesc': 'Para uso en producción',
91
+ 'env.staging': 'Staging',
92
+ 'env.stagingDesc': 'Para pruebas antes de producción',
93
+ 'env.dev': 'Desarrollo',
94
+ 'env.devDesc': 'Para desarrollo local',
95
+ 'env.custom': 'Personalizado',
96
+ 'env.customDesc': 'Ingresa un nombre de entorno personalizado',
97
+ 'env.customPrompt': 'Ingresa nombre de entorno personalizado',
98
+ 'env.customValidation': 'Solo se permiten letras minúsculas, números y guiones (ej: prod, staging, dev)',
99
+ 'env.detected': 'Entornos Detectados:',
100
+ 'env.selectExisting': 'Seleccionar entorno existente',
101
+ 'env.createNew': 'Crear nuevo entorno',
102
+ 'env.createNewDesc': 'Configurar un nuevo entorno',
103
+ 'env.checking': 'Verificando entornos existentes...',
104
+ 'env.alreadyExists': 'El entorno "{{env}}" ya existe',
105
+ 'env.existingResources': 'Recursos existentes:',
106
+ 'env.workers': 'Workers: {{count}}',
107
+ 'env.d1Databases': 'Bases de datos D1: {{count}}',
108
+ 'env.kvNamespaces': 'Namespaces KV: {{count}}',
109
+ 'env.chooseAnother': 'Por favor elige otro nombre o usa "npx @authrim/setup manage" para eliminarlo primero.',
110
+ 'env.available': 'Nombre de entorno disponible',
111
+ 'env.checkFailed': 'No se pudo verificar entornos existentes (continuando de todas formas)',
112
+ 'env.noEnvFound': 'No se encontraron entornos de Authrim.',
113
+ // Region
114
+ 'region.prompt': 'Selecciona la región',
115
+ 'region.auto': 'Automático (el más cercano)',
116
+ 'region.autoDesc': 'Dejar que Cloudflare elija la región más cercana',
117
+ 'region.wnam': 'Norteamérica (Oeste)',
118
+ 'region.wnamDesc': 'Oeste de Norteamérica',
119
+ 'region.enam': 'Norteamérica (Este)',
120
+ 'region.enamDesc': 'Este de Norteamérica',
121
+ 'region.weur': 'Europa (Oeste)',
122
+ 'region.weurDesc': 'Europa Occidental',
123
+ 'region.eeur': 'Europa (Este)',
124
+ 'region.eeurDesc': 'Europa Oriental',
125
+ 'region.apac': 'Asia Pacífico',
126
+ 'region.apacDesc': 'Región Asia Pacífico',
127
+ 'region.oceania': 'Oceanía',
128
+ 'region.oceaniaDesc': 'Australia e Islas del Pacífico',
129
+ 'region.euJurisdiction': 'Jurisdicción UE (cumplimiento GDPR)',
130
+ 'region.euJurisdictionDesc': 'Datos almacenados dentro de la UE',
131
+ // UI deployment
132
+ 'ui.prompt': 'Método de despliegue de UI',
133
+ 'ui.pagesOption': 'Cloudflare Pages',
134
+ 'ui.pagesDesc': 'Desplegar en Cloudflare Pages (recomendado)',
135
+ 'ui.customOption': 'Dominio personalizado',
136
+ 'ui.customDesc': 'Usar tu propio hosting',
137
+ 'ui.skipOption': 'Omitir',
138
+ 'ui.skipDesc': 'Omitir despliegue de UI',
139
+ 'ui.customPrompt': 'Ingresa URL personalizada de UI',
140
+ // Domain
141
+ 'domain.prompt': '¿Configurar dominio personalizado?',
142
+ 'domain.workersDevOption': 'Usar dominio workers.dev',
143
+ 'domain.workersDevDesc': 'Usar dominio predeterminado de Cloudflare',
144
+ 'domain.customOption': 'Configurar dominio personalizado',
145
+ 'domain.customDesc': 'Usar tu propio dominio',
146
+ 'domain.customPrompt': 'Ingresa dominio personalizado (ej: auth.ejemplo.com)',
147
+ 'domain.customValidation': 'Por favor ingresa un dominio válido (ej: auth.ejemplo.com)',
148
+ 'domain.issuerUrl': 'URL del emisor: {{url}}',
149
+ 'domain.apiDomain': 'Dominio API / Emisor (ej: auth.ejemplo.com)',
150
+ 'domain.loginUiDomain': 'Dominio UI de inicio de sesión (Enter para omitir)',
151
+ 'domain.adminUiDomain': 'Dominio UI de administración (Enter para omitir)',
152
+ 'domain.enterDomains': 'Ingresa dominios personalizados (dejar vacío para usar predeterminados de Cloudflare)',
153
+ 'domain.singleTenantNote': 'En modo single-tenant, URL del emisor = dominio API',
154
+ 'domain.usingWorkersDev': '(usando dominio workers.dev de Cloudflare)',
155
+ // Database
156
+ 'db.title': 'Configuración de Base de Datos',
157
+ 'db.regionWarning': 'La región de la base de datos no puede cambiarse después de la creación.',
158
+ 'db.coreDescription': 'BD Core: Almacena clientes OAuth, tokens, sesiones, logs de auditoría',
159
+ 'db.coreRegion': 'Región de Base de Datos Core',
160
+ 'db.piiDescription': 'BD PII: Almacena perfiles de usuario, credenciales, datos personales',
161
+ 'db.piiNote': 'Considera tus requisitos de protección de datos.',
162
+ 'db.piiRegion': 'Región de Base de Datos PII',
163
+ 'db.creating': 'Creando base de datos...',
164
+ 'db.created': 'Base de datos creada: {{name}}',
165
+ 'db.existing': 'Usando base de datos existente: {{name}}',
166
+ 'db.error': 'Error al crear base de datos',
167
+ 'db.locationHints': 'Sugerencias de Ubicación',
168
+ 'db.jurisdictionCompliance': 'Jurisdicción (Cumplimiento)',
169
+ // KV
170
+ 'kv.creating': 'Creando namespace KV...',
171
+ 'kv.created': 'Namespace KV creado: {{name}}',
172
+ 'kv.existing': 'Usando namespace KV existente: {{name}}',
173
+ 'kv.error': 'Error al crear namespace KV',
174
+ // Queue
175
+ 'queue.creating': 'Creando cola...',
176
+ 'queue.created': 'Cola creada: {{name}}',
177
+ 'queue.existing': 'Usando cola existente: {{name}}',
178
+ 'queue.error': 'Error al crear cola',
179
+ // R2
180
+ 'r2.creating': 'Creando bucket R2...',
181
+ 'r2.created': 'Bucket R2 creado: {{name}}',
182
+ 'r2.existing': 'Usando bucket R2 existente: {{name}}',
183
+ 'r2.error': 'Error al crear bucket R2',
184
+ // Keys
185
+ 'keys.generating': 'Generando claves criptográficas...',
186
+ 'keys.generated': 'Claves generadas ({{path}})',
187
+ 'keys.existing': 'Ya existen claves para el entorno "{{env}}"',
188
+ 'keys.existingWarning': 'Las claves existentes serán sobrescritas.',
189
+ 'keys.error': 'Error al generar claves',
190
+ 'keys.regeneratePrompt': '¿Regenerar claves?',
191
+ 'keys.regenerateWarning': '¡Esto invalidará todos los tokens existentes!',
192
+ // Config
193
+ 'config.saving': 'Guardando configuración...',
194
+ 'config.saved': 'Configuración guardada en {{path}}',
195
+ 'config.error': 'Error al guardar configuración',
196
+ 'config.path': 'Ruta de configuración',
197
+ 'config.summary': 'Resumen de Configuración',
198
+ 'config.infrastructure': 'Infraestructura:',
199
+ 'config.environment': 'Entorno:',
200
+ 'config.workerPrefix': 'Prefijo de Worker:',
201
+ 'config.profile': 'Perfil:',
202
+ 'config.tenantIssuer': 'Tenant y Emisor:',
203
+ 'config.mode': 'Modo:',
204
+ 'config.multiTenant': 'Multi-tenant',
205
+ 'config.singleTenant': 'Single-tenant',
206
+ 'config.baseDomain': 'Dominio Base:',
207
+ 'config.issuerFormat': 'Formato del Emisor:',
208
+ 'config.issuerUrl': 'URL del Emisor:',
209
+ 'config.defaultTenant': 'Tenant Predeterminado:',
210
+ 'config.displayName': 'Nombre para Mostrar:',
211
+ 'config.publicUrls': 'URLs Públicas:',
212
+ 'config.apiRouter': 'Router API:',
213
+ 'config.loginUi': 'UI de Inicio de Sesión:',
214
+ 'config.adminUi': 'UI de Administración:',
215
+ 'config.components': 'Componentes:',
216
+ 'config.featureFlags': 'Flags de Características:',
217
+ 'config.emailSettings': 'Email:',
218
+ 'config.oidcSettings': 'Configuración OIDC:',
219
+ 'config.accessTtl': 'TTL de Access Token:',
220
+ 'config.refreshTtl': 'TTL de Refresh Token:',
221
+ 'config.authCodeTtl': 'TTL de Auth Code:',
222
+ 'config.pkceRequired': 'PKCE Requerido:',
223
+ 'config.sharding': 'Sharding:',
224
+ 'config.authCodeShards': 'Auth Code:',
225
+ 'config.refreshTokenShards': 'Refresh Token:',
226
+ 'config.database': 'Base de Datos:',
227
+ 'config.coreDb': 'BD Core:',
228
+ 'config.piiDb': 'BD PII:',
229
+ 'config.enabled': 'Habilitado',
230
+ 'config.disabled': 'Deshabilitado',
231
+ 'config.standard': '(estándar)',
232
+ 'config.notConfigured': 'No configurado (configurar después)',
233
+ 'config.yes': 'Sí',
234
+ 'config.no': 'No',
235
+ 'config.shards': 'shards',
236
+ 'config.sec': 'seg',
237
+ 'config.automatic': 'Automático',
238
+ // Deploy
239
+ 'deploy.prompt': '¿Iniciar configuración con esta configuración?',
240
+ 'deploy.starting': 'Ejecutando Configuración...',
241
+ 'deploy.building': 'Compilando paquetes...',
242
+ 'deploy.deploying': 'Desplegando en Cloudflare...',
243
+ 'deploy.success': '¡Configuración completa!',
244
+ 'deploy.error': 'Error en el despliegue',
245
+ 'deploy.skipped': 'Despliegue omitido',
246
+ 'deploy.component': 'Desplegando {{component}}...',
247
+ 'deploy.uploadingSecrets': 'Subiendo secretos...',
248
+ 'deploy.secretsUploaded': 'Secretos subidos',
249
+ 'deploy.runningMigrations': 'Ejecutando migraciones de base de datos...',
250
+ 'deploy.migrationsComplete': 'Migraciones completadas',
251
+ 'deploy.deployingWorker': 'Desplegando worker {{name}}...',
252
+ 'deploy.workerDeployed': 'Worker desplegado: {{name}}',
253
+ 'deploy.deployingUI': 'Desplegando UI...',
254
+ 'deploy.uiDeployed': 'UI desplegada',
255
+ 'deploy.creatingResources': 'Creando recursos de Cloudflare...',
256
+ 'deploy.resourcesFailed': 'Error al crear recursos',
257
+ 'deploy.continueWithout': '¿Continuar sin aprovisionamiento? (necesitarás crear recursos manualmente)',
258
+ 'deploy.emailSecretsSaved': 'Secretos de email guardados en {{path}}',
259
+ 'deploy.confirmStart': '¿Iniciar despliegue?',
260
+ 'deploy.confirmDryRun': '¿Ejecutar despliegue en modo de prueba?',
261
+ 'deploy.cancelled': 'Despliegue cancelado.',
262
+ 'deploy.wranglerChanged': '¿Cómo quieres manejar estos cambios?',
263
+ 'deploy.wranglerKeep': '📝 Mantener cambios manuales (desplegar tal cual)',
264
+ 'deploy.wranglerBackup': '💾 Respaldar y sobrescribir con master',
265
+ 'deploy.wranglerOverwrite': '⚠️ Sobrescribir con master (perder cambios)',
266
+ // Email provider
267
+ 'email.title': 'Proveedor de Email',
268
+ 'email.description': 'Configura el envío de email para enlaces mágicos y códigos de verificación.',
269
+ 'email.prompt': '¿Configurar proveedor de email ahora?',
270
+ 'email.resendOption': 'Resend',
271
+ 'email.resendDesc': 'API de email moderna para desarrolladores',
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': 'Ninguno (configurar después)',
277
+ 'email.skipDesc': 'Omitir configuración de email',
278
+ 'email.apiKeyPrompt': 'Clave API de Resend',
279
+ 'email.apiKeyHint': 'Obtén tu clave API en: https://resend.com/api-keys',
280
+ 'email.domainHint': 'Configura el dominio en: https://resend.com/domains',
281
+ 'email.apiKeyRequired': 'La clave API es requerida',
282
+ 'email.apiKeyWarning': 'Advertencia: Las claves API de Resend típicamente comienzan con "re_"',
283
+ 'email.fromAddressPrompt': 'Dirección de email del remitente',
284
+ 'email.fromAddressValidation': 'Por favor ingresa una dirección de email válida',
285
+ 'email.fromNamePrompt': 'Nombre del remitente (opcional)',
286
+ 'email.domainVerificationRequired': 'Se requiere verificación de dominio para enviar desde tu propio dominio.',
287
+ 'email.seeDocumentation': 'Ver: https://resend.com/docs/dashboard/domains/introduction',
288
+ 'email.provider': 'Proveedor:',
289
+ 'email.fromAddress': 'Dirección del Remitente:',
290
+ 'email.fromName': 'Nombre del Remitente:',
291
+ // SMS provider
292
+ 'sms.prompt': '¿Configurar proveedor de SMS?',
293
+ 'sms.twilioOption': 'Twilio',
294
+ 'sms.twilioDesc': 'SMS vía Twilio',
295
+ 'sms.skipOption': 'Ninguno (configurar después)',
296
+ 'sms.skipDesc': 'Omitir configuración de SMS',
297
+ 'sms.accountSidPrompt': 'Account SID de Twilio',
298
+ 'sms.authTokenPrompt': 'Auth Token de Twilio',
299
+ 'sms.fromNumberPrompt': 'Número de teléfono del remitente',
300
+ // Social providers
301
+ 'social.prompt': '¿Configurar proveedores de inicio de sesión social?',
302
+ 'social.googleOption': 'Google',
303
+ 'social.googleDesc': 'Iniciar sesión con Google',
304
+ 'social.githubOption': 'GitHub',
305
+ 'social.githubDesc': 'Iniciar sesión con GitHub',
306
+ 'social.appleOption': 'Apple',
307
+ 'social.appleDesc': 'Iniciar sesión con Apple',
308
+ 'social.microsoftOption': 'Microsoft',
309
+ 'social.microsoftDesc': 'Iniciar sesión con Microsoft',
310
+ 'social.skipOption': 'Ninguno (configurar después)',
311
+ 'social.skipDesc': 'Omitir configuración de inicio de sesión social',
312
+ 'social.clientIdPrompt': 'Client ID',
313
+ 'social.clientSecretPrompt': 'Client Secret',
314
+ // Cloudflare API Token
315
+ 'cf.apiTokenPrompt': 'Ingresa el Token API de Cloudflare',
316
+ 'cf.apiTokenValidation': 'Por favor ingresa un Token API válido',
317
+ // OIDC Profile
318
+ 'profile.prompt': 'Selecciona el perfil OIDC',
319
+ 'profile.basicOp': 'OP Básico (Proveedor OIDC Estándar)',
320
+ 'profile.basicOpDesc': 'Características OIDC estándar',
321
+ 'profile.fapiRw': 'FAPI Read-Write (Grado Financiero)',
322
+ 'profile.fapiRwDesc': 'Compatible con perfil de seguridad FAPI 1.0 Read-Write',
323
+ 'profile.fapi2Security': 'Perfil de Seguridad FAPI 2.0',
324
+ 'profile.fapi2SecurityDesc': 'Compatible con perfil de seguridad FAPI 2.0 (máxima seguridad)',
325
+ // Tenant configuration
326
+ 'tenant.title': 'Modo de Tenant',
327
+ 'tenant.multiTenantPrompt': '¿Habilitar modo multi-tenant? (aislamiento de tenant basado en subdominio)',
328
+ 'tenant.multiTenantTitle': 'Configuración de URL Multi-tenant',
329
+ 'tenant.multiTenantNote1': 'En modo multi-tenant:',
330
+ 'tenant.multiTenantNote2': 'Cada tenant tiene un subdominio: https://{tenant}.{dominio-base}',
331
+ 'tenant.multiTenantNote3': 'El dominio base apunta al Worker router',
332
+ 'tenant.multiTenantNote4': 'La URL del emisor se construye dinámicamente del header Host',
333
+ 'tenant.baseDomainPrompt': 'Dominio base (ej: authrim.com)',
334
+ 'tenant.baseDomainRequired': 'El dominio base es requerido para modo multi-tenant',
335
+ 'tenant.baseDomainValidation': 'Por favor ingresa un dominio válido (ej: authrim.com)',
336
+ 'tenant.issuerFormat': 'Formato de URL del emisor: https://{tenant}.{{domain}}',
337
+ 'tenant.issuerExample': 'Ejemplo: https://acme.{{domain}}',
338
+ 'tenant.defaultTenantPrompt': 'Nombre del tenant predeterminado (identificador)',
339
+ 'tenant.defaultTenantValidation': 'Solo se permiten letras minúsculas, números y guiones',
340
+ 'tenant.displayNamePrompt': 'Nombre para mostrar del tenant predeterminado',
341
+ 'tenant.singleTenantTitle': 'Configuración de URL Single-tenant',
342
+ 'tenant.singleTenantNote1': 'En modo single-tenant:',
343
+ 'tenant.singleTenantNote2': 'URL del emisor = dominio personalizado de API (o workers.dev como respaldo)',
344
+ 'tenant.singleTenantNote3': 'Todos los clientes comparten el mismo emisor',
345
+ 'tenant.organizationName': 'Nombre de la organización (nombre para mostrar)',
346
+ 'tenant.uiDomainTitle': 'Configuración de Dominio de UI',
347
+ 'tenant.customUiDomainPrompt': '¿Configurar dominios personalizados de UI?',
348
+ 'tenant.loginUiDomain': 'Dominio de UI de inicio de sesión (ej: login.ejemplo.com)',
349
+ 'tenant.adminUiDomain': 'Dominio de UI de administración (ej: admin.ejemplo.com)',
350
+ // Optional components
351
+ 'components.title': 'Componentes Opcionales',
352
+ 'components.note': 'Nota: Inicio de sesión social y Motor de políticas son componentes estándar',
353
+ 'components.samlPrompt': '¿Habilitar soporte SAML?',
354
+ 'components.vcPrompt': '¿Habilitar Credenciales Verificables?',
355
+ 'components.saml': 'SAML:',
356
+ 'components.vc': 'VC:',
357
+ 'components.socialLogin': 'Inicio de sesión social:',
358
+ 'components.policyEngine': 'Motor de políticas:',
359
+ // Feature flags
360
+ 'features.title': 'Flags de Características',
361
+ 'features.queuePrompt': '¿Habilitar Cloudflare Queues? (para logs de auditoría)',
362
+ 'features.r2Prompt': '¿Habilitar Cloudflare R2? (para avatares)',
363
+ 'features.queue': 'Cola:',
364
+ 'features.r2': 'R2:',
365
+ // OIDC settings
366
+ 'oidc.configurePrompt': '¿Configurar ajustes OIDC? (TTL de tokens, etc.)',
367
+ 'oidc.title': 'Configuración OIDC',
368
+ 'oidc.accessTokenTtl': 'TTL de Access Token (seg)',
369
+ 'oidc.refreshTokenTtl': 'TTL de Refresh Token (seg)',
370
+ 'oidc.authCodeTtl': 'TTL de Authorization Code (seg)',
371
+ 'oidc.pkceRequired': '¿Requerir PKCE?',
372
+ 'oidc.positiveInteger': 'Por favor ingresa un entero positivo',
373
+ // Sharding settings
374
+ 'sharding.configurePrompt': '¿Configurar sharding? (para entornos de alta carga)',
375
+ 'sharding.title': 'Configuración de Sharding',
376
+ 'sharding.note': 'Nota: Se recomienda potencia de 2 para el número de shards (8, 16, 32, 64, 128)',
377
+ 'sharding.authCodeShards': 'Número de shards de Auth Code',
378
+ 'sharding.refreshTokenShards': 'Número de shards de Refresh Token',
379
+ // Infrastructure
380
+ 'infra.title': 'Infraestructura (Auto-generada)',
381
+ 'infra.workersNote': 'Se desplegarán los siguientes Workers:',
382
+ 'infra.router': 'Router:',
383
+ 'infra.auth': 'Auth:',
384
+ 'infra.token': 'Token:',
385
+ 'infra.management': 'Management:',
386
+ 'infra.otherWorkers': '... y otros workers de soporte',
387
+ 'infra.defaultEndpoints': 'Endpoints predeterminados (sin dominio personalizado):',
388
+ 'infra.api': 'API:',
389
+ 'infra.ui': 'UI:',
390
+ 'infra.workersToDeploy': 'Workers a desplegar: {{workers}}',
391
+ 'infra.defaultApi': 'API predeterminada: {{url}}',
392
+ // Completion
393
+ 'complete.title': '¡Configuración Completa!',
394
+ 'complete.summary': 'Tu Proveedor OIDC de Authrim ha sido desplegado.',
395
+ 'complete.issuerUrl': 'URL del Emisor: {{url}}',
396
+ 'complete.adminUrl': 'Panel de Administración: {{url}}',
397
+ 'complete.uiUrl': 'UI de Inicio de Sesión: {{url}}',
398
+ 'complete.nextSteps': 'Próximos Pasos:',
399
+ 'complete.nextStep1': '1. Verifica el despliegue visitando la URL del emisor',
400
+ 'complete.nextStep2': '2. Configura clientes OAuth en el Panel de Administración',
401
+ 'complete.nextStep3': '3. Configura dominios personalizados si es necesario',
402
+ 'complete.warning': '¡Recuerda mantener tus claves seguras y respaldadas!',
403
+ 'complete.success': '¡Configuración completada exitosamente!',
404
+ 'complete.urls': 'URLs:',
405
+ 'complete.configLocation': 'Configuración:',
406
+ 'complete.keysLocation': 'Claves:',
407
+ // Resource provisioning
408
+ 'resource.provisioning': 'Aprovisionando {{resource}}...',
409
+ 'resource.provisioned': '{{resource}} aprovisionado exitosamente',
410
+ 'resource.failed': 'Error al aprovisionar {{resource}}',
411
+ 'resource.skipped': '{{resource}} omitido',
412
+ // Manage environments
413
+ 'manage.title': 'Entornos Existentes',
414
+ 'manage.loading': 'Cargando...',
415
+ 'manage.detecting': 'Detectando entornos...',
416
+ 'manage.detected': 'Entornos Detectados:',
417
+ 'manage.noEnvs': 'No se encontraron entornos de Authrim.',
418
+ 'manage.selectAction': 'Selecciona una acción',
419
+ 'manage.viewDetails': 'Ver Detalles',
420
+ 'manage.viewDetailsDesc': 'Mostrar información detallada de recursos',
421
+ 'manage.deleteEnv': 'Eliminar Entorno',
422
+ 'manage.deleteEnvDesc': 'Eliminar entorno y recursos',
423
+ 'manage.backToMenu': 'Volver al Menú Principal',
424
+ 'manage.backToMenuDesc': 'Regresar al menú principal',
425
+ 'manage.selectEnv': 'Selecciona entorno',
426
+ 'manage.back': 'Atrás',
427
+ 'manage.continueManaging': '¿Continuar gestionando entornos?',
428
+ // Load config
429
+ 'loadConfig.title': 'Cargar Configuración Existente',
430
+ 'loadConfig.found': 'Se encontraron {{count}} configuración(es):',
431
+ 'loadConfig.new': '(nuevo)',
432
+ 'loadConfig.legacy': '(legacy)',
433
+ 'loadConfig.legacyDetected': 'Estructura Legacy Detectada',
434
+ 'loadConfig.legacyFiles': 'Archivos legacy:',
435
+ 'loadConfig.newBenefits': 'Beneficios de la nueva estructura:',
436
+ 'loadConfig.benefit1': 'Portabilidad del entorno (zip .authrim/prod/)',
437
+ 'loadConfig.benefit2': 'Seguimiento de versión por entorno',
438
+ 'loadConfig.benefit3': 'Estructura de proyecto más limpia',
439
+ 'loadConfig.migratePrompt': '¿Te gustaría migrar a la nueva estructura?',
440
+ 'loadConfig.migrateOption': 'Migrar a nueva estructura (.authrim/{env}/)',
441
+ 'loadConfig.continueOption': 'Continuar con estructura legacy',
442
+ 'loadConfig.migrationComplete': '¡Migración completada exitosamente!',
443
+ 'loadConfig.validationPassed': 'Validación pasada',
444
+ 'loadConfig.validationIssues': 'Problemas de validación:',
445
+ 'loadConfig.newLocation': 'Nueva ubicación de configuración:',
446
+ 'loadConfig.migrationFailed': 'Migración fallida:',
447
+ 'loadConfig.continuingLegacy': 'Continuando con estructura legacy...',
448
+ 'loadConfig.loadThis': 'Cargar esta configuración',
449
+ 'loadConfig.specifyOther': 'Especificar archivo diferente',
450
+ 'loadConfig.noConfigFound': 'No se encontró configuración en el directorio actual.',
451
+ 'loadConfig.tip': 'Consejo: Puedes especificar un archivo de configuración con:',
452
+ 'loadConfig.specifyPath': 'Especificar ruta del archivo',
453
+ 'loadConfig.enterPath': 'Ingresa la ruta del archivo de configuración',
454
+ 'loadConfig.pathRequired': 'Por favor ingresa una ruta',
455
+ 'loadConfig.fileNotFound': 'Archivo no encontrado: {{path}}',
456
+ 'loadConfig.selectConfig': 'Selecciona configuración para cargar',
457
+ // Common
458
+ 'common.yes': 'Sí',
459
+ 'common.no': 'No',
460
+ 'common.continue': 'Continuar',
461
+ 'common.cancel': 'Cancelar',
462
+ 'common.skip': 'Omitir',
463
+ 'common.back': 'Atrás',
464
+ 'common.confirm': 'Confirmar',
465
+ 'common.error': 'Error',
466
+ 'common.warning': 'Advertencia',
467
+ 'common.success': 'Éxito',
468
+ 'common.info': 'Info',
469
+ 'common.loading': 'Cargando...',
470
+ 'common.saving': 'Guardando...',
471
+ 'common.processing': 'Procesando...',
472
+ 'common.done': 'Hecho',
473
+ 'common.required': 'Requerido',
474
+ 'common.optional': 'Opcional',
475
+ // Errors
476
+ 'error.generic': 'Ocurrió un error',
477
+ 'error.network': 'Error de red',
478
+ 'error.timeout': 'Tiempo de espera agotado',
479
+ 'error.invalidInput': 'Entrada inválida',
480
+ 'error.fileNotFound': 'Archivo no encontrado',
481
+ 'error.permissionDenied': 'Permiso denegado',
482
+ 'error.configNotFound': 'Configuración no encontrada',
483
+ 'error.configInvalid': 'Configuración inválida',
484
+ 'error.deployFailed': 'Despliegue fallido',
485
+ 'error.resourceCreationFailed': 'Error al crear recurso',
486
+ // Validation
487
+ 'validation.required': 'Este campo es requerido',
488
+ 'validation.invalidFormat': 'Formato inválido',
489
+ 'validation.tooShort': 'Muy corto',
490
+ 'validation.tooLong': 'Muy largo',
491
+ 'validation.invalidDomain': 'Dominio inválido',
492
+ 'validation.invalidEmail': 'Dirección de email inválida',
493
+ 'validation.invalidUrl': 'URL inválida',
494
+ // Delete command
495
+ 'delete.title': 'Eliminar Entorno',
496
+ 'delete.prompt': 'Selecciona recursos para eliminar',
497
+ 'delete.confirm': '¿Estás seguro de que quieres eliminar "{{env}}"?',
498
+ 'delete.confirmPermanent': '⚠️ Esto eliminará permanentemente todos los recursos de "{{env}}". ¿Continuar?',
499
+ 'delete.confirmWarning': '¡Esta acción no se puede deshacer!',
500
+ 'delete.deleting': 'Eliminando {{resource}}...',
501
+ 'delete.deleted': '{{resource}} eliminado',
502
+ 'delete.error': 'Error al eliminar {{resource}}',
503
+ 'delete.cancelled': 'Eliminación cancelada',
504
+ 'delete.noEnvFound': 'No se encontraron entornos',
505
+ 'delete.selectEnv': 'Selecciona entorno para eliminar',
506
+ 'delete.workers': 'Workers',
507
+ 'delete.databases': 'Bases de datos D1',
508
+ 'delete.kvNamespaces': 'Namespaces KV',
509
+ 'delete.queues': 'Colas',
510
+ 'delete.r2Buckets': 'Buckets R2',
511
+ // Info command
512
+ 'info.title': 'Información del Entorno',
513
+ 'info.loading': 'Cargando información del entorno...',
514
+ 'info.noResources': 'No se encontraron recursos',
515
+ 'info.environment': 'Entorno',
516
+ 'info.issuer': 'Emisor',
517
+ 'info.workers': 'Workers',
518
+ 'info.databases': 'Bases de datos',
519
+ 'info.kvNamespaces': 'Namespaces KV',
520
+ 'info.queues': 'Colas',
521
+ 'info.r2Buckets': 'Buckets R2',
522
+ 'info.status': 'Estado',
523
+ 'info.deployed': 'Desplegado',
524
+ 'info.notDeployed': 'No desplegado',
525
+ // Config command
526
+ 'configCmd.title': 'Configuración',
527
+ 'configCmd.showing': 'Mostrando configuración',
528
+ 'configCmd.validating': 'Validando configuración...',
529
+ 'configCmd.valid': 'La configuración es válida',
530
+ 'configCmd.invalid': 'La configuración es inválida',
531
+ 'configCmd.notFound': 'Configuración no encontrada',
532
+ 'configCmd.error': 'Error al leer configuración',
533
+ // Migrate command
534
+ 'migrate.title': 'Migrar a Nueva Estructura',
535
+ 'migrate.checking': 'Verificando estado de migración...',
536
+ 'migrate.noLegacyFound': 'No se encontró estructura legacy',
537
+ 'migrate.legacyFound': 'Estructura legacy detectada',
538
+ 'migrate.prompt': '¿Migrar a nueva estructura?',
539
+ 'migrate.migrating': 'Migrando...',
540
+ 'migrate.success': 'Migración exitosa',
541
+ 'migrate.cancelled': 'Migración cancelada.',
542
+ 'migrate.error': 'Migración fallida',
543
+ 'migrate.dryRun': 'Ejecución de prueba - sin cambios realizados',
544
+ 'migrate.backup': 'Creando respaldo...',
545
+ 'migrate.backupCreated': 'Respaldo creado en {{path}}',
546
+ // Manage command
547
+ 'manage.commandTitle': 'Gestor de Entornos de Authrim',
548
+ // Web UI specific
549
+ 'web.title': 'Configuración de Authrim',
550
+ 'web.subtitle': 'Proveedor OIDC en Cloudflare Workers',
551
+ 'web.loading': 'Cargando...',
552
+ 'web.error': 'Ocurrió un error',
553
+ 'web.retry': 'Reintentar',
554
+ 'web.languageSelector': 'Idioma',
555
+ 'web.darkMode': 'Oscuro',
556
+ 'web.lightMode': 'Claro',
557
+ 'web.systemMode': 'Sistema',
558
+ // Web UI Prerequisites
559
+ 'web.prereq.title': 'Requisitos Previos',
560
+ 'web.prereq.checking': 'Verificando...',
561
+ 'web.prereq.checkingRequirements': 'Verificando requisitos del sistema...',
562
+ 'web.prereq.ready': 'Listo',
563
+ 'web.prereq.wranglerInstalled': 'Wrangler instalado',
564
+ 'web.prereq.loggedInAs': 'Conectado como {{email}}',
565
+ // Web UI Top Menu
566
+ 'web.menu.title': 'Comenzar',
567
+ 'web.menu.subtitle': 'Elige una opción para continuar:',
568
+ 'web.menu.newSetup': 'Nueva Configuración',
569
+ 'web.menu.newSetupDesc': 'Crear un nuevo despliegue de Authrim desde cero',
570
+ 'web.menu.loadConfig': 'Cargar Config',
571
+ 'web.menu.loadConfigDesc': 'Reanudar o redesplegar usando configuración existente',
572
+ 'web.menu.manageEnv': 'Gestionar Entornos',
573
+ 'web.menu.manageEnvDesc': 'Ver, inspeccionar o eliminar entornos existentes',
574
+ // Web UI Setup Mode
575
+ 'web.mode.title': 'Modo de Configuración',
576
+ 'web.mode.subtitle': 'Elige cómo quieres configurar Authrim:',
577
+ 'web.mode.quick': 'Configuración Rápida',
578
+ 'web.mode.quickDesc': 'Comienza en ~5 minutos',
579
+ 'web.mode.quickEnv': 'Selección de entorno',
580
+ 'web.mode.quickDomain': 'Dominio personalizado opcional',
581
+ 'web.mode.quickDefault': 'Componentes predeterminados',
582
+ 'web.mode.recommended': 'Recomendado',
583
+ 'web.mode.custom': 'Configuración Personalizada',
584
+ 'web.mode.customDesc': 'Control total sobre la configuración',
585
+ 'web.mode.customComp': 'Selección de componentes',
586
+ 'web.mode.customUrl': 'Configuración de URL',
587
+ 'web.mode.customAdvanced': 'Configuración avanzada',
588
+ // Web UI Load Config
589
+ 'web.loadConfig.title': 'Cargar Configuración',
590
+ 'web.loadConfig.subtitle': 'Selecciona tu archivo authrim-config.json:',
591
+ 'web.loadConfig.chooseFile': 'Elegir Archivo',
592
+ 'web.loadConfig.preview': 'Vista Previa de Configuración',
593
+ 'web.loadConfig.validationFailed': 'Validación de Configuración Fallida',
594
+ 'web.loadConfig.valid': 'La configuración es válida',
595
+ 'web.loadConfig.loadContinue': 'Cargar y Continuar',
596
+ // Web UI Configuration
597
+ 'web.config.title': 'Configuración',
598
+ 'web.config.components': 'Componentes',
599
+ 'web.config.apiRequired': 'API (requerido)',
600
+ 'web.config.apiDesc': 'Endpoints del Proveedor OIDC: authorize, token, userinfo, discovery, APIs de gestión.',
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 Inicio de Sesión',
605
+ 'web.config.loginUiDesc': 'UI de autenticación pre-construida desplegada en Cloudflare Pages.',
606
+ 'web.config.adminUi': 'UI de Administración',
607
+ 'web.config.adminUiDesc': 'Panel de gestión para usuarios, clientes y configuración.',
608
+ // Web UI URLs
609
+ 'web.url.title': 'Configuración de URL',
610
+ 'web.url.apiDomain': 'Dominio API',
611
+ 'web.url.apiDomainHint': 'Dejar vacío para usar subdominio workers.dev',
612
+ 'web.url.loginDomain': 'Dominio UI de Inicio de Sesión',
613
+ 'web.url.loginDomainHint': 'Dejar vacío para usar subdominio pages.dev',
614
+ 'web.url.adminDomain': 'Dominio UI de Administración',
615
+ 'web.url.adminDomainHint': 'Dejar vacío para usar subdominio pages.dev',
616
+ // Web UI Database
617
+ 'web.db.title': 'Configuración de Base de Datos',
618
+ 'web.db.coreTitle': 'Base de Datos Core',
619
+ 'web.db.coreSubtitle': '(No-PII)',
620
+ 'web.db.coreDesc': 'Almacena clientes, códigos de autorización, tokens, sesiones. Puede replicarse globalmente.',
621
+ 'web.db.piiTitle': 'Base de Datos PII',
622
+ 'web.db.piiSubtitle': '(Información de Identificación Personal)',
623
+ 'web.db.piiDesc': 'Almacena perfiles de usuario, credenciales, PII. Debe estar en una sola jurisdicción para cumplimiento.',
624
+ 'web.db.name': 'Nombre',
625
+ 'web.db.region': 'Región',
626
+ 'web.db.regionAuto': 'Automático (más cercano)',
627
+ // Web UI Email
628
+ 'web.email.title': 'Proveedor de Email',
629
+ 'web.email.subtitle': 'Selecciona servicio de email para restablecimiento de contraseña y verificación:',
630
+ 'web.email.none': 'Ninguno',
631
+ 'web.email.noneDesc': 'Funciones de email deshabilitadas',
632
+ 'web.email.resend': 'Resend',
633
+ 'web.email.resendDesc': 'API de email para desarrolladores',
634
+ 'web.email.sendgrid': 'SendGrid',
635
+ 'web.email.sendgridDesc': 'Entrega de email escalable',
636
+ 'web.email.ses': 'Amazon SES',
637
+ 'web.email.sesDesc': 'AWS Simple Email Service',
638
+ 'web.email.resendConfig': 'Configuración de Resend',
639
+ 'web.email.apiKey': 'Clave API',
640
+ 'web.email.apiKeyPlaceholder': 're_xxxxxxxx',
641
+ 'web.email.fromAddress': 'Dirección del Remitente',
642
+ 'web.email.fromAddressPlaceholder': 'noreply@tudominio.com',
643
+ // Web UI Provision
644
+ 'web.provision.title': 'Crear Recursos de Cloudflare',
645
+ 'web.provision.ready': 'Listo para aprovisionar',
646
+ 'web.provision.desc': 'Los siguientes recursos serán creados en tu cuenta de Cloudflare:',
647
+ 'web.provision.createResources': 'Crear Recursos',
648
+ 'web.provision.saveConfig': 'Guardar Config',
649
+ 'web.provision.continueDeploy': 'Continuar a Despliegue →',
650
+ // Web UI Deploy
651
+ 'web.deploy.title': 'Desplegar',
652
+ 'web.deploy.desc': 'Desplegar workers y UI a Cloudflare:',
653
+ 'web.deploy.startDeploy': 'Iniciar Despliegue',
654
+ 'web.deploy.deploying': 'Desplegando...',
655
+ // Web UI Complete
656
+ 'web.complete.title': '¡Configuración Completa!',
657
+ 'web.complete.desc': 'Tu despliegue de Authrim está listo.',
658
+ 'web.complete.issuerUrl': 'URL del Emisor',
659
+ 'web.complete.loginUrl': 'URL de Inicio de Sesión',
660
+ 'web.complete.adminUrl': 'URL de Administración',
661
+ 'web.complete.nextSteps': 'Próximos Pasos:',
662
+ 'web.complete.step1': 'Completa la configuración inicial del administrador usando el botón de arriba',
663
+ 'web.complete.step2': 'Configura tu primer cliente OAuth en la UI de Administración',
664
+ 'web.complete.step3': 'Integra con tu aplicación',
665
+ 'web.complete.saveConfig': 'Guardar Configuración',
666
+ 'web.complete.backToMain': 'Volver al Inicio',
667
+ 'web.complete.canClose': 'La configuración está completa. Puedes cerrar esta ventana de forma segura.',
668
+ // Web UI Environment Management
669
+ 'web.env.title': 'Entornos',
670
+ 'web.env.loading': 'Cargando entornos...',
671
+ 'web.env.noEnvFound': 'No se encontraron entornos',
672
+ 'web.env.refresh': 'Actualizar',
673
+ 'web.env.adminSetup': 'Configuración Inicial de Admin',
674
+ 'web.env.adminSetupDesc': 'Clic para crear cuenta de admin para',
675
+ 'web.env.openSetup': 'Abrir Configuración',
676
+ 'web.env.copyUrl': 'Copiar',
677
+ 'web.env.deleteTitle': 'Eliminar Entorno',
678
+ 'web.env.deleteWarning': 'Esta acción no se puede deshacer. Los siguientes recursos serán eliminados permanentemente:',
679
+ 'web.env.confirmDelete': 'Eliminar Seleccionados',
680
+ 'web.env.cancel': 'Cancelar',
681
+ // Web UI Common buttons
682
+ 'web.btn.back': 'Atrás',
683
+ 'web.btn.continue': 'Continuar',
684
+ 'web.btn.cancel': 'Cancelar',
685
+ 'web.btn.save': 'Guardar',
686
+ 'web.btn.skip': 'Omitir',
687
+ // Web UI Save Modal
688
+ 'web.modal.saveTitle': '¿Guardar Configuración?',
689
+ 'web.modal.saveDesc': 'Guarda la configuración en tu máquina local para uso futuro.',
690
+ 'web.modal.skipSave': 'Omitir',
691
+ 'web.modal.saveConfig': 'Guardar Configuración',
692
+ // Web UI steps
693
+ 'web.step.environment': 'Entorno',
694
+ 'web.step.region': 'Región',
695
+ 'web.step.domain': 'Dominio',
696
+ 'web.step.email': 'Email',
697
+ 'web.step.sms': 'SMS',
698
+ 'web.step.social': 'Social',
699
+ 'web.step.advanced': 'Avanzado',
700
+ 'web.step.review': 'Revisar',
701
+ 'web.step.deploy': 'Desplegar',
702
+ // Web UI forms
703
+ 'web.form.submit': 'Enviar',
704
+ 'web.form.next': 'Siguiente',
705
+ 'web.form.previous': 'Anterior',
706
+ 'web.form.reset': 'Restablecer',
707
+ 'web.form.validation': 'Por favor corrige los errores de arriba',
708
+ // Web UI progress
709
+ 'web.progress.preparing': 'Preparando despliegue...',
710
+ 'web.progress.creatingResources': 'Creando recursos de Cloudflare...',
711
+ 'web.progress.generatingKeys': 'Generando claves criptográficas...',
712
+ 'web.progress.configuringWorkers': 'Configurando workers...',
713
+ 'web.progress.deployingWorkers': 'Desplegando workers...',
714
+ 'web.progress.deployingUI': 'Desplegando UI...',
715
+ 'web.progress.runningMigrations': 'Ejecutando migraciones de base de datos...',
716
+ 'web.progress.complete': '¡Despliegue completo!',
717
+ 'web.progress.failed': 'Despliegue fallido',
718
+ // Web UI Form Labels
719
+ 'web.form.envName': 'Nombre del Entorno',
720
+ 'web.form.envNamePlaceholder': 'ej., prod, staging, dev',
721
+ 'web.form.envNameHint': 'Solo letras minúsculas, números y guiones',
722
+ 'web.form.baseDomain': 'Dominio Base (Dominio API)',
723
+ 'web.form.baseDomainPlaceholder': 'oidc.ejemplo.com',
724
+ 'web.form.baseDomainHint': 'Dominio personalizado para Authrim. Dejar vacío para usar workers.dev',
725
+ 'web.form.nakedDomain': 'Excluir nombre de tenant de la URL',
726
+ 'web.form.nakedDomainHint': 'Usar https://ejemplo.com en lugar de https://{tenant}.ejemplo.com',
727
+ 'web.form.nakedDomainWarning': 'Los subdominios de tenant requieren un dominio personalizado. Workers.dev no soporta subdominios comodín.',
728
+ 'web.form.tenantId': 'ID de Tenant Predeterminado',
729
+ 'web.form.tenantIdPlaceholder': 'default',
730
+ 'web.form.tenantIdHint': 'Identificador del primer tenant (minúsculas, sin espacios)',
731
+ 'web.form.tenantIdWorkerNote': '(El ID de Tenant se usa internamente. El subdominio URL requiere dominio personalizado.)',
732
+ 'web.form.tenantDisplay': 'Nombre para Mostrar del Tenant',
733
+ 'web.form.tenantDisplayPlaceholder': 'Mi Empresa',
734
+ 'web.form.tenantDisplayHint': 'Nombre mostrado en la página de inicio de sesión y pantalla de consentimiento',
735
+ 'web.form.loginDomainPlaceholder': 'login.ejemplo.com',
736
+ 'web.form.adminDomainPlaceholder': 'admin.ejemplo.com',
737
+ // Web UI Section Headers
738
+ 'web.section.apiDomain': 'Dominio API / Emisor',
739
+ 'web.section.uiDomains': 'Dominios UI (Opcional)',
740
+ 'web.section.uiDomainsHint': 'Dominios personalizados para UIs de Login/Admin. Cada uno puede configurarse independientemente. Dejar vacío para usar predeterminado de Cloudflare Pages.',
741
+ 'web.section.corsHint': 'CORS: Las solicitudes cross-origin desde UI de Login/Admin a API se permiten automáticamente.',
742
+ 'web.section.configPreview': 'Vista Previa de Configuración',
743
+ 'web.section.resourceNames': 'Nombres de Recursos',
744
+ // Web UI Preview Labels
745
+ 'web.preview.components': 'Componentes:',
746
+ 'web.preview.workers': 'Workers:',
747
+ 'web.preview.issuerUrl': 'URL del Emisor:',
748
+ 'web.preview.loginUi': 'UI de Inicio de Sesión:',
749
+ 'web.preview.adminUi': 'UI de Admin:',
750
+ // Web UI Component Labels
751
+ 'web.comp.loginUi': 'UI de Inicio de Sesión',
752
+ 'web.comp.loginUiDesc': 'Páginas de inicio de sesión, registro, consentimiento y gestión de cuenta para usuarios.',
753
+ 'web.comp.adminUi': 'UI de Administración',
754
+ 'web.comp.adminUiDesc': 'Panel de administración para gestionar tenants, clientes, usuarios y configuración del sistema.',
755
+ // Web UI Domain Row Labels
756
+ 'web.domain.loginUi': 'UI de Inicio de Sesión',
757
+ 'web.domain.adminUi': 'UI de Admin',
758
+ // Web UI Database Section
759
+ 'web.db.introDesc': 'Authrim usa dos bases de datos D1 separadas para aislar datos personales de datos de aplicación.',
760
+ 'web.db.regionNote': 'Nota: La región de la base de datos no puede cambiarse después de la creación.',
761
+ 'web.db.coreNonPii': 'No-PII',
762
+ 'web.db.coreDataDesc': 'Almacena datos de aplicación no personales incluyendo:',
763
+ 'web.db.coreData1': 'Clientes OAuth y sus configuraciones',
764
+ 'web.db.coreData2': 'Códigos de autorización y access tokens',
765
+ 'web.db.coreData3': 'Sesiones de usuario y estado de login',
766
+ 'web.db.coreData4': 'Configuraciones de tenant',
767
+ 'web.db.coreData5': 'Logs de auditoría y eventos de seguridad',
768
+ 'web.db.coreHint': 'Esta base de datos maneja todos los flujos de autenticación y debe colocarse cerca de tu base de usuarios principal.',
769
+ 'web.db.piiLabel': 'Información de Identificación Personal',
770
+ 'web.db.piiDataDesc': 'Almacena datos personales de usuario incluyendo:',
771
+ 'web.db.piiData1': 'Perfiles de usuario (nombre, email, teléfono)',
772
+ 'web.db.piiData2': 'Credenciales Passkey/WebAuthn',
773
+ 'web.db.piiData3': 'Preferencias y configuraciones de usuario',
774
+ 'web.db.piiData4': 'Cualquier atributo personalizado de usuario',
775
+ 'web.db.piiHint': 'Esta base de datos contiene datos personales. Considera colocarla en una región que cumpla con tus requisitos de protección de datos.',
776
+ 'web.db.locationHints': 'Sugerencias de Ubicación',
777
+ 'web.db.jurisdiction': 'Jurisdicción (Cumplimiento)',
778
+ 'web.db.autoNearest': 'Automático (más cercano)',
779
+ 'web.db.northAmericaWest': 'Norteamérica (Oeste)',
780
+ 'web.db.northAmericaEast': 'Norteamérica (Este)',
781
+ 'web.db.europeWest': 'Europa (Oeste)',
782
+ 'web.db.europeEast': 'Europa (Este)',
783
+ 'web.db.asiaPacific': 'Asia Pacífico',
784
+ 'web.db.oceania': 'Oceanía',
785
+ 'web.db.euJurisdiction': 'Jurisdicción UE (cumplimiento GDPR)',
786
+ // Web UI Email Section
787
+ 'web.email.introDesc': 'Usado para enviar OTP por email y verificación de dirección de email. Puedes configurar esto después si lo prefieres.',
788
+ 'web.email.configureLater': 'Configurar después',
789
+ 'web.email.configureLaterHint': 'Omitir por ahora y configurar después.',
790
+ 'web.email.configureResend': 'Configurar Resend',
791
+ 'web.email.configureResendHint': 'Configurar envío de email con Resend (recomendado para producción).',
792
+ 'web.email.resendSetup': 'Configuración de Resend',
793
+ 'web.email.beforeBegin': 'Antes de comenzar:',
794
+ 'web.email.step1': 'Crea una cuenta en Resend en',
795
+ 'web.email.step2': 'Agrega y verifica tu dominio en',
796
+ 'web.email.step3': 'Crea una clave API en',
797
+ 'web.email.resendApiKey': 'Clave API de Resend',
798
+ 'web.email.resendApiKeyHint': 'Tu clave API comienza con "re_"',
799
+ 'web.email.fromEmailAddress': 'Dirección de Email del Remitente',
800
+ 'web.email.fromEmailHint': 'Debe ser de un dominio verificado en tu cuenta de Resend',
801
+ 'web.email.fromDisplayName': 'Nombre para Mostrar del Remitente (opcional)',
802
+ 'web.email.fromDisplayHint': 'Se muestra como el nombre del remitente en clientes de email',
803
+ 'web.email.domainVerificationTitle': 'Verificación de Dominio Requerida',
804
+ 'web.email.domainVerificationDesc': 'Antes de que tu dominio sea verificado, los emails solo pueden enviarse desde onboarding@resend.dev (para pruebas).',
805
+ 'web.email.learnMore': 'Más información sobre verificación de dominio →',
806
+ // Web UI Provision Section
807
+ 'web.provision.resourcePreview': 'Nombres de Recursos:',
808
+ 'web.provision.d1Databases': 'Bases de datos D1:',
809
+ 'web.provision.kvNamespaces': 'Namespaces KV:',
810
+ 'web.provision.cryptoKeys': 'Claves Criptográficas:',
811
+ 'web.provision.initializing': 'Inicializando...',
812
+ 'web.provision.showLog': 'Mostrar log detallado',
813
+ 'web.provision.hideLog': 'Ocultar log detallado',
814
+ 'web.provision.keysSavedTo': 'Claves guardadas en:',
815
+ 'web.provision.keepSafe': 'Mantén este directorio seguro y agrégalo a .gitignore',
816
+ // Web UI Deploy Section
817
+ 'web.deploy.readyText': 'Listo para desplegar workers de Authrim a Cloudflare.',
818
+ // Web UI Environment List
819
+ 'web.env.detectedDesc': 'Entornos de Authrim detectados en tu cuenta de Cloudflare:',
820
+ 'web.env.noEnvsDetected': 'No se detectaron entornos de Authrim en esta cuenta de Cloudflare.',
821
+ 'web.env.backToList': '← Volver a Lista',
822
+ 'web.env.deleteEnv': 'Eliminar Entorno...',
823
+ // Web UI Environment Detail
824
+ 'web.envDetail.title': 'Detalles del Entorno',
825
+ 'web.envDetail.adminNotConfigured': 'Cuenta de Admin No Configurada',
826
+ 'web.envDetail.adminNotConfiguredDesc': 'El administrador inicial no ha sido configurado para este entorno.',
827
+ 'web.envDetail.startPasskey': 'Iniciar Configuración de Cuenta Admin con Passkey',
828
+ 'web.envDetail.setupUrlGenerated': 'URL de Configuración Generada:',
829
+ 'web.envDetail.copyBtn': 'Copiar',
830
+ 'web.envDetail.openSetup': 'Abrir Configuración',
831
+ 'web.envDetail.urlValidFor': 'Esta URL es válida por 1 hora. Ábrela en un navegador para registrar la primera cuenta de admin.',
832
+ 'web.envDetail.workers': 'Workers',
833
+ 'web.envDetail.d1Databases': 'Bases de datos D1',
834
+ 'web.envDetail.kvNamespaces': 'Namespaces KV',
835
+ 'web.envDetail.queues': 'Colas',
836
+ 'web.envDetail.r2Buckets': 'Buckets R2',
837
+ 'web.envDetail.pagesProjects': 'Proyectos de Pages',
838
+ // Web UI Delete Section
839
+ 'web.delete.title': 'Eliminar Entorno',
840
+ 'web.delete.warning': 'Esta acción es irreversible. Todos los recursos seleccionados serán eliminados permanentemente.',
841
+ 'web.delete.environment': 'Entorno:',
842
+ 'web.delete.selectResources': 'Selecciona recursos para eliminar:',
843
+ 'web.delete.workers': 'Workers',
844
+ 'web.delete.d1Databases': 'Bases de datos D1',
845
+ 'web.delete.kvNamespaces': 'Namespaces KV',
846
+ 'web.delete.queues': 'Colas',
847
+ 'web.delete.r2Buckets': 'Buckets R2',
848
+ 'web.delete.pagesProjects': 'Proyectos de Pages',
849
+ 'web.delete.cancelBtn': 'Cancelar',
850
+ 'web.delete.confirmBtn': 'Eliminar Seleccionados',
851
+ // Web UI Save Modal
852
+ 'web.modal.saveQuestion': '¿Te gustaría guardar tu configuración en un archivo antes de continuar?',
853
+ 'web.modal.saveReason': 'Esto te permite reanudar la configuración después o usar la misma configuración para otro despliegue.',
854
+ 'web.modal.skipBtn': 'Omitir',
855
+ 'web.modal.saveBtn': 'Guardar Configuración',
856
+ // Web UI Error Messages
857
+ 'web.error.wranglerNotInstalled': 'Wrangler no instalado',
858
+ 'web.error.pleaseInstall': 'Por favor instala wrangler primero:',
859
+ 'web.error.notLoggedIn': 'No has iniciado sesión en Cloudflare',
860
+ 'web.error.runCommand': 'Por favor ejecuta este comando en tu terminal:',
861
+ 'web.error.thenRefresh': 'Luego actualiza esta página.',
862
+ 'web.error.checkingPrereq': 'Error verificando requisitos previos:',
863
+ 'web.error.invalidJson': 'JSON inválido:',
864
+ 'web.error.validationFailed': 'Solicitud de validación fallida:',
865
+ // Web UI Status Messages
866
+ 'web.status.checking': 'Verificando...',
867
+ 'web.status.running': 'Ejecutando...',
868
+ 'web.status.deploying': 'Desplegando...',
869
+ 'web.status.complete': 'Completo',
870
+ 'web.status.error': 'Error',
871
+ 'web.status.scanning': 'Escaneando...',
872
+ 'web.status.saving': 'Guardando...',
873
+ 'web.status.notDeployed': '(No desplegado)',
874
+ 'web.status.startingDeploy': 'Iniciando despliegue...',
875
+ 'web.status.none': 'Ninguno',
876
+ 'web.status.loading': 'Cargando...',
877
+ 'web.status.failedToLoad': 'Error al cargar',
878
+ 'web.status.adminNotConfigured': 'Admin No Configurado',
879
+ 'web.status.initializing': 'Inicializando...',
880
+ 'web.status.found': '{{count}} encontrado(s)',
881
+ // Web UI Button Labels (dynamic)
882
+ 'web.btn.reprovision': 'Re-aprovisionar (Eliminar y Crear)',
883
+ 'web.btn.createResources': 'Crear Recursos',
884
+ 'web.btn.saveConfiguration': 'Guardar Configuración',
885
+ // Quick setup specific
886
+ 'quickSetup.title': 'Configuración Rápida',
887
+ // Custom setup specific
888
+ 'customSetup.title': 'Configuración Personalizada',
889
+ 'customSetup.cancelled': 'Configuración cancelada.',
890
+ // Web UI starting
891
+ 'webUi.starting': 'Iniciando Web UI...',
892
+ };
893
+ export default es;
894
+ //# sourceMappingURL=es.js.map