pgkiln 0.58.0 → 0.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1383,4 +1383,405 @@ export const es: BuilderMessages = {
1383
1383
  'st.saved': 'Guardado.',
1384
1384
  'st.settings_saved': 'Ajustes guardados.',
1385
1385
  'st.app_deleted': 'Aplicación eliminada.',
1386
+ // ------------------------------------------------------------ Users and identity providers (sprint 125)
1387
+ 'us.hints_none': 'Esta aplicación todavía no comprueba ningún rol. Los roles solo importan donde un esquema de autorización o {fn} los comprueba (Shared Components → Esquemas de autorización).',
1388
+ 'us.hints_label': 'Roles que comprueba esta aplicación',
1389
+ 'us.hints_add': 'Añadir',
1390
+ 'us.hints_app': '{app} comprueba',
1391
+ 'us.title': 'Usuarios',
1392
+ 'us.providers_btn': 'Proveedores de identidad (inicio de sesión único)',
1393
+ 'us.ldap_btn': 'Directorios LDAP',
1394
+ 'us.intro': 'Una cuenta por persona. Dé a las cuentas acceso a las aplicaciones, con roles por aplicación, aquí o en {where} de una aplicación.',
1395
+ 'us.access_path': 'Shared Components → Control de acceso',
1396
+ 'us.accounts': 'Cuentas',
1397
+ 'us.search_ph': 'Buscar nombre, usuario o correo…',
1398
+ 'us.search_label': 'Buscar cuentas',
1399
+ 'us.search': 'Buscar',
1400
+ 'us.username': 'Nombre de usuario',
1401
+ 'us.name': 'Nombre',
1402
+ 'us.apps_roles': 'Aplicaciones (roles)',
1403
+ 'us.applications': 'Aplicaciones',
1404
+ 'us.signin': 'Inicio de sesión',
1405
+ 'us.status': 'Estado',
1406
+ 'us.none': 'ninguna',
1407
+ 'us.password': 'contraseña',
1408
+ 'us.no_password': 'sin contraseña',
1409
+ 'us.active': 'activa',
1410
+ 'us.inactive': 'inactiva',
1411
+ 'us.last': 'último {at}',
1412
+ 'us.no_accounts': 'No se encontraron cuentas.',
1413
+ 'us.create': 'Crear cuenta',
1414
+ 'us.username_help': 'Sin espacios ni dos puntos; no distingue mayúsculas.',
1415
+ 'us.email': 'Correo electrónico',
1416
+ 'us.password_label': 'Contraseña',
1417
+ 'us.password_help': 'Al menos 8 caracteres. Déjelo vacío para cuentas que solo entran con inicio de sesión único.',
1418
+ 'us.must_change': 'Exigir el cambio de contraseña en el primer uso',
1419
+ 'us.settings': 'Ajustes de cuentas',
1420
+ 'us.min_length': 'Longitud mínima de la contraseña',
1421
+ 'us.lifetime': 'Vigencia de la contraseña (días)',
1422
+ 'us.lifetime_help': 'Tras estos días los usuarios deben elegir una contraseña nueva al iniciar sesión. 0 = nunca.',
1423
+ 'us.mixed': 'Las contraseñas necesitan letras y dígitos',
1424
+ 'us.policy_note': 'Las contraseñas nunca pueden contener el nombre de usuario. El inicio de sesión se bloquea {minutes} minutos tras {failures} intentos fallidos (Utilidades del espacio de trabajo → Ajustes de la instancia); Desbloquear en una cuenta lo levanta.',
1425
+ 'us.save_settings': 'Guardar ajustes',
1426
+ 'us.created': 'Cuenta creada. Ahora dele acceso a aplicaciones.',
1427
+ 'us.exists': 'Ya existe una cuenta con ese nombre de usuario.',
1428
+ 'us.settings_saved': 'Ajustes de cuentas guardados.',
1429
+ 'us.details': 'Detalles',
1430
+ 'us.active_label': 'Activa',
1431
+ 'us.active_help': 'Las cuentas inactivas no pueden entrar en ninguna aplicación; desactivarlas termina sus sesiones.',
1432
+ 'us.save': 'Guardar',
1433
+ 'us.password_title': 'Contraseña',
1434
+ 'us.set': 'Establecida',
1435
+ 'us.set_on': 'Establecida el {date}',
1436
+ 'us.sso_only': 'Sin contraseña (solo inicio de sesión único)',
1437
+ 'us.must_next': 'Debe cambiarse en el próximo inicio de sesión',
1438
+ 'us.expires': 'Caduca en {n} día(s)',
1439
+ 'us.fails': '{n} inicio(s) de sesión fallido(s) en la última hora',
1440
+ 'us.unexpire': 'Quitar la caducidad',
1441
+ 'us.expire': 'Caducar la contraseña',
1442
+ 'us.unlock': 'Desbloquear el inicio de sesión',
1443
+ 'us.new_password': 'Nueva contraseña',
1444
+ 'us.set_password_label': 'Establecer una contraseña',
1445
+ 'us.ends_sessions': 'Termina las sesiones de la cuenta.',
1446
+ 'us.set_password': 'Establecer contraseña',
1447
+ 'us.remove_confirm': '¿Quitar la contraseña? La cuenta solo podrá entrar con inicio de sesión único.',
1448
+ 'us.remove_password': 'Quitar contraseña',
1449
+ 'us.delete_confirm': '¿Eliminar la cuenta {user} y todos sus accesos a aplicaciones?',
1450
+ 'us.delete': 'Eliminar cuenta',
1451
+ 'us.app_access': 'Acceso a aplicaciones',
1452
+ 'us.application': 'Aplicación',
1453
+ 'us.roles': 'Roles',
1454
+ 'us.roles_in': 'Roles en {app}',
1455
+ 'us.roles_ph': 'sin roles (p. ej. {example})',
1456
+ 'us.revoke_confirm': '¿Revocar el acceso a {app}?',
1457
+ 'us.revoke': 'Revocar',
1458
+ 'us.no_access': 'Todavía sin acceso a ninguna aplicación.',
1459
+ 'us.grant': 'Conceder acceso',
1460
+ 'us.roles_comma': 'separados por comas, o elija abajo',
1461
+ 'us.saved': 'Cuenta guardada.',
1462
+ 'us.pw_removed': 'Contraseña quitada.',
1463
+ 'us.pw_set': 'Contraseña establecida.',
1464
+ 'us.pw_expired': 'Contraseña caducada: debe cambiarse en el próximo inicio de sesión.',
1465
+ 'us.pw_unexpired': 'La contraseña ya no está caducada.',
1466
+ 'us.unlocked': 'Inicio de sesión desbloqueado.',
1467
+ 'us.deleted': 'Cuenta eliminada.',
1468
+ 'us.granted': 'Acceso concedido.',
1469
+ 'us.roles_saved': 'Roles guardados. El usuario los recibe en el próximo inicio de sesión.',
1470
+ 'us.revoked': 'Acceso revocado.',
1471
+ 'idp.title': 'Proveedores de identidad',
1472
+ 'idp.name': 'Nombre (en las URL)',
1473
+ 'idp.name_help': 'en minúsculas, p. ej. entra, google, keycloak',
1474
+ 'idp.protocol': 'Protocolo',
1475
+ 'idp.label': 'Texto del botón',
1476
+ 'idp.label_help': 'Se muestra como «Iniciar sesión con…»',
1477
+ 'idp.issuer': 'Emisor (OIDC: URL; SAML: el entity ID del IdP)',
1478
+ 'idp.issuer_help': 'p. ej. https://login.microsoftonline.com/<tenant>/v2.0, https://keycloak.example.com/realms/acme, o para SAML el entityID de los metadatos del IdP',
1479
+ 'idp.client_id': 'ID de cliente (SAML: el entity ID de pgkiln)',
1480
+ 'idp.client_id_help': 'OIDC: obligatorio. SAML: vacío = la URL de metadatos de este proveedor.',
1481
+ 'idp.sso_url': 'SAML: URL de inicio de sesión del IdP',
1482
+ 'idp.sso_url_help': 'La ubicación del SingleSignOnService (binding HTTP-Redirect) de los metadatos del IdP.',
1483
+ 'idp.cert': 'SAML: certificado de firma del IdP (PEM)',
1484
+ 'idp.cert_help': 'De los metadatos del IdP (X509Certificate, entre líneas BEGIN/END CERTIFICATE). Las aserciones deben estar firmadas con él.',
1485
+ 'idp.secret': 'Secreto de cliente',
1486
+ 'idp.secret_kept': 'Hay un secreto guardado. Déjelo vacío para conservarlo.',
1487
+ 'idp.secret_public': 'Déjelo vacío para un cliente público (solo PKCE).',
1488
+ 'idp.scopes': 'Ámbitos',
1489
+ 'idp.username_claim': 'Claim del nombre de usuario',
1490
+ 'idp.username_claim_help': 'Use un claim que los usuarios no puedan cambiar (p. ej. preferred_username, upn, email). SAML: un nombre de atributo o nameID.',
1491
+ 'idp.groups_claim': 'Claim de grupos',
1492
+ 'idp.groups_claim_help': 'Funcionan rutas con puntos, p. ej. realm_access.roles',
1493
+ 'idp.auto_create': 'Crear cuentas automáticamente en el primer inicio de sesión',
1494
+ 'idp.auto_create_help': 'Si no, solo pueden entrar las personas con una cuenta vinculada a este proveedor (o permitidas abajo).',
1495
+ 'idp.link': 'Vincular cuentas existentes con el mismo nombre de usuario en su primer inicio de sesión',
1496
+ 'idp.link_help': 'Solo cuando los usuarios no pueden elegir el claim del nombre de usuario en este proveedor: si no, alguien podría registrar el nombre de una cuenta existente y apoderarse de ella. Con el claim de correo, solo se vinculan direcciones verificadas. Desactívelo una vez vinculadas las cuentas.',
1497
+ 'idp.enabled': 'Activado',
1498
+ 'idp.remove_secret': 'Quitar el secreto de cliente guardado',
1499
+ 'idp.add': 'Añadir proveedor',
1500
+ 'idp.intro': 'Proveedores OpenID Connect para el inicio de sesión único (Microsoft Entra ID, Google, Okta, Keycloak, Auth0, …). Registre pgkiln en el proveedor como aplicación web con la URI de redirección mostrada y active el proveedor por aplicación en {where}.',
1501
+ 'idp.where': 'Ajustes → Métodos de inicio de sesión',
1502
+ 'idp.providers': 'Proveedores',
1503
+ 'idp.provider': 'Proveedor',
1504
+ 'idp.issuer_col': 'Emisor',
1505
+ 'idp.used_by': 'Usado por',
1506
+ 'idp.linked': 'Cuentas vinculadas',
1507
+ 'idp.no_apps': 'ninguna aplicación',
1508
+ 'idp.enabled_s': 'activado',
1509
+ 'idp.disabled_s': 'desactivado',
1510
+ 'idp.auto_s': 'creación automática',
1511
+ 'idp.links_s': 'vincula cuentas existentes',
1512
+ 'idp.none': 'Todavía no hay proveedores de identidad.',
1513
+ 'idp.settings': 'Ajustes',
1514
+ 'idp.delete_confirm': '¿Eliminar {name}? Se quitan las identidades vinculadas; las cuentas se mantienen.',
1515
+ 'idp.delete': 'Eliminar proveedor',
1516
+ 'idp.register_idp': 'Registrar en el proveedor de identidad',
1517
+ 'idp.sp_metadata': 'Metadatos del proveedor de servicio (impórtelos en el IdP):',
1518
+ 'idp.by_hand': 'O a mano: entity ID {entity}, assertion consumer service (HTTP-POST) {acs}.',
1519
+ 'idp.saml_note': 'Basado en {env}. Firme las aserciones; envíe los grupos en el atributo {claim} para asignarlos a roles.',
1520
+ 'idp.register': 'Registrar en el proveedor',
1521
+ 'idp.redirect': 'URI de redirección (callback):',
1522
+ 'idp.public_url': 'Basado en {env}; póngalo en la dirección que ven los usuarios (p. ej. https://apps.example.com).',
1523
+ 'idp.grant': 'Tipo de concesión: {type} con PKCE. Ámbitos: {scopes}. Incluya un claim {claim} en el token de ID para asignar grupos a roles.',
1524
+ 'idp.auth_code': 'código de autorización',
1525
+ 'idp.test': 'Probar el descubrimiento',
1526
+ 'idp.added': 'Proveedor añadido. Registre la URI de redirección en el proveedor y pruebe la conexión.',
1527
+ 'idp.saved': 'Proveedor guardado.',
1528
+ 'idp.works': 'El descubrimiento funciona. Punto de autorización: {url}',
1529
+ 'idp.failed': 'Falló el descubrimiento: {error}',
1530
+ 'idp.deleted': 'Proveedor eliminado.',
1531
+ // ------------------------------------------------------------ Workspaces (sprint 125)
1532
+ 'wsp.title': 'Espacios de trabajo',
1533
+ 'wsp.admins_only': 'Solo los administradores gestionan los espacios de trabajo.',
1534
+ 'wsp.err.exists': 'Ya existe un espacio de trabajo con este nombre.',
1535
+ 'wsp.err.name_check': 'El nombre tiene de 1 a 60 caracteres, sin espacios al principio ni al final.',
1536
+ 'wsp.err.name': 'El nombre tiene de 1 a 60 caracteres.',
1537
+ 'wsp.iso.secret': 'configure PGKILN_SECRET_KEY (al menos 32 caracteres) en el entorno del servidor: los inicios de sesión de base de datos del espacio de trabajo reciben contraseñas derivadas de ella.',
1538
+ 'wsp.iso.runtime': 'configure RUNTIME_DATABASE_URL: las aplicaciones se ejecutan con la conexión del propietario, así que ningún espacio de trabajo puede aislarse.',
1539
+ 'wsp.err.role_taken': 'este rol ya pertenece a otro espacio de trabajo.',
1540
+ 'wsp.err.role_has': 'el espacio de trabajo ya tiene este rol.',
1541
+ 'wsp.isolated_tag': 'aislado',
1542
+ 'wsp.iso.on': 'Sus aplicaciones se ejecutan como {run} y el SQL de sus desarrolladores (SQL Workshop, comprobaciones de código, el Advisor) como {dev}. Ambos solo alcanzan los roles de abajo y solo ven las aplicaciones, sesiones y cuentas de este espacio de trabajo en las tablas de pgkiln. Los desarrolladores que también pertenecen a un espacio compartido conservan allí sus derechos.',
1543
+ 'wsp.db_role': 'Rol de base de datos',
1544
+ 'wsp.used_by': 'Usado por',
1545
+ 'wsp.missing': 'falta',
1546
+ 'wsp.no_app': 'ninguna aplicación',
1547
+ 'wsp.remove': 'Quitar',
1548
+ 'wsp.no_roles': 'Sin roles de base de datos: las aplicaciones de aquí no pueden ejecutarse con un rol propio.',
1549
+ 'wsp.add_role': 'Añadir un rol de base de datos',
1550
+ 'wsp.add_role_help': 'Un rol existente (no un superusuario, ni uno que cree roles u omita la seguridad a nivel de fila). Sus derechos pasan a ser los de este espacio de trabajo; no puede pertenecer a otro.',
1551
+ 'wsp.add_role_btn': 'Añadir rol',
1552
+ 'wsp.make_shared_confirm': '¿Volver a compartir {name}? Sus aplicaciones se ejecutarán entonces con la conexión de ejecución compartida, y el SQL de sus desarrolladores como propietario.',
1553
+ 'wsp.make_shared': 'Compartir',
1554
+ 'wsp.shared_text': 'Compartido: las aplicaciones se ejecutan con la conexión de ejecución compartida y el SQL de los desarrolladores como propietario, como en todo espacio compartido.',
1555
+ 'wsp.iso_help': 'Aislar da al espacio de trabajo dos inicios de sesión de base de datos propios y los roles que usan ahora sus aplicaciones. El código de las aplicaciones solo alcanza entonces esos roles y las aplicaciones de este espacio; el SQL Workshop de sus desarrolladores se ejecuta con el inicio de sesión del espacio en lugar del propietario. Las aplicaciones nuevas reciben un rol y un esquema propios.',
1556
+ 'wsp.to_isolate': 'Para aislar un espacio de trabajo, {problem}',
1557
+ 'wsp.isolate_confirm': '¿Aislar {name}?',
1558
+ 'wsp.isolate': 'Aislar este espacio de trabajo',
1559
+ 'wsp.isolation': 'Aislamiento',
1560
+ 'wsp.service': 'Gestionar el servicio',
1561
+ 'wsp.message': 'Mensaje del espacio de trabajo',
1562
+ 'wsp.message_help': 'Se muestra a los desarrolladores de este espacio en el inicio de App Builder, p. ej. una ventana de mantenimiento. Texto sin formato.',
1563
+ 'wsp.banner': 'Banner de entorno',
1564
+ 'wsp.banner_help': 'Una etiqueta corta en la parte superior de cada página del builder mientras este espacio esté activo. Vacío: sin banner.',
1565
+ 'wsp.banner_colour': 'Color del banner',
1566
+ 'wsp.save': 'Guardar',
1567
+ 'wsp.prefs': 'Preferencias del espacio de trabajo',
1568
+ 'wsp.sql_on': 'Activar SQL Workshop',
1569
+ 'wsp.sql_on_help': 'Desactivado: la hoja de trabajo SQL, el explorador de objetos, los scripts SQL, la carga y descarga de datos, Quick SQL, el generador de consultas, DDL, Comparar e IA se rechazan mientras este espacio esté activo, para todos los desarrolladores.',
1570
+ 'wsp.rest_on': 'Activar servicios RESTful',
1571
+ 'wsp.rest_on_help': 'Desactivado: los módulos REST de las aplicaciones de este espacio responden 404 (Not found) en {path}; aún pueden editarse.',
1572
+ 'wsp.builder_home': 'Los enlaces del builder abren',
1573
+ 'wsp.home.apps': 'App Builder',
1574
+ 'wsp.home.home': 'Inicio del espacio de trabajo',
1575
+ 'wsp.builder_home_help': 'Adónde lleva en este espacio un enlace a /builder (un marcador de antes del inicio del espacio de trabajo). Al iniciar sesión siempre se abre el inicio del espacio; App Builder está en /builder/apps.',
1576
+ 'wsp.save_prefs': 'Guardar preferencias',
1577
+ 'wsp.links': 'Enlaces de extensiones',
1578
+ 'wsp.links_help': 'Enlaces a otras herramientas que usan los desarrolladores de este espacio (monitorización, una wiki, un sistema de tickets), en el menú {menu} del builder mientras el espacio esté activo. Se abren en una pestaña nueva.',
1579
+ 'wsp.extensions': 'Extensiones',
1580
+ 'wsp.label': 'Etiqueta',
1581
+ 'wsp.url': 'URL',
1582
+ 'wsp.order': 'Orden',
1583
+ 'wsp.delete_link_confirm': '¿Eliminar el enlace {label}?',
1584
+ 'wsp.delete': 'Eliminar',
1585
+ 'wsp.no_links': 'Sin enlaces de extensiones.',
1586
+ 'wsp.label_ph': 'Monitorización',
1587
+ 'wsp.description': 'Descripción',
1588
+ 'wsp.add_link': 'Añadir enlace',
1589
+ 'wsp.switched': 'Espacio de trabajo {name}.',
1590
+ 'wsp.intro': 'Un espacio de trabajo agrupa aplicaciones y a los desarrolladores que las construyen. Los desarrolladores ven y cambian las aplicaciones de sus propios espacios; los administradores ven todas. Un espacio compartido no es una frontera de seguridad entre desarrolladores que escriben SQL: su SQL Workshop y el código de aplicación se ejecutan con los derechos de esta instalación. Un espacio {isolated} sí lo es: sus aplicaciones y su SQL se ejecutan con inicios de sesión de base de datos propios que solo alcanzan sus roles y sus propias aplicaciones.',
1591
+ 'wsp.isolated_word': 'aislado',
1592
+ 'wsp.workspace': 'Espacio de trabajo',
1593
+ 'wsp.applications': 'Aplicaciones',
1594
+ 'wsp.developers': 'Desarrolladores',
1595
+ 'wsp.admins_text': 'solo administradores',
1596
+ 'wsp.add': 'Añadir espacio de trabajo',
1597
+ 'wsp.name': 'Nombre',
1598
+ 'wsp.name_help': 'Por ejemplo el equipo o departamento que construye aquí sus aplicaciones.',
1599
+ 'wsp.first_dev': 'Usted será su primer desarrollador; añada a otros en su página.',
1600
+ 'wsp.added': 'Espacio de trabajo {name} añadido.',
1601
+ 'wsp.settings': 'Ajustes',
1602
+ 'wsp.default_no_delete': 'El espacio Default no puede eliminarse: las aplicaciones importadas y las creadas por línea de comandos empiezan aquí.',
1603
+ 'wsp.delete_confirm': '¿Eliminar el espacio de trabajo {name}?',
1604
+ 'wsp.delete_ws': 'Eliminar espacio de trabajo',
1605
+ 'wsp.move_first': 'Mueva primero sus aplicaciones a otro espacio de trabajo.',
1606
+ 'wsp.devs_help': 'Los desarrolladores de este espacio ven y cambian sus aplicaciones. Los administradores ven todos los espacios.',
1607
+ 'wsp.administrator': '(administrador)',
1608
+ 'wsp.ws_admins': 'Administradores del espacio de trabajo',
1609
+ 'wsp.ws_admins_help': 'Gestionan el nombre y los desarrolladores de este espacio. El aislamiento, los roles de base de datos, mover aplicaciones y eliminar el espacio quedan en manos de los administradores.',
1610
+ 'wsp.save_devs': 'Guardar desarrolladores',
1611
+ 'wsp.mail_net': 'Correo y acceso a la red',
1612
+ 'wsp.mail_net_text': 'El {mail} propio de este espacio para sus aplicaciones que no tienen uno, su lista de {network} (qué hosts pueden llamar sus aplicaciones, dentro de la lista de la instalación) y la {queue}.',
1613
+ 'wsp.mail_service': 'servicio de correo',
1614
+ 'wsp.network': 'acceso a la red',
1615
+ 'wsp.queue': 'cola de correo',
1616
+ 'wsp.iso_short_on': 'Aislado: sus aplicaciones y su SQL se ejecutan con inicios de sesión de base de datos propios.',
1617
+ 'wsp.iso_short_off': 'Compartido.',
1618
+ 'wsp.admins_change': 'Los administradores lo cambian.',
1619
+ 'wsp.application': 'Aplicación',
1620
+ 'wsp.move_to': 'Mover a',
1621
+ 'wsp.move_label': 'Mover {app} a',
1622
+ 'wsp.move': 'Mover',
1623
+ 'wsp.no_other': 'ningún otro espacio de trabajo',
1624
+ 'wsp.no_apps': 'Sin aplicaciones.',
1625
+ 'wsp.saved': 'Espacio de trabajo guardado.',
1626
+ 'wsp.not_found': 'No encontrado.',
1627
+ 'wsp.devs_saved': 'Desarrolladores guardados.',
1628
+ 'wsp.not_moved': 'No se movió: {why}',
1629
+ 'wsp.moved': 'Aplicación movida a {name}.',
1630
+ 'wsp.err.default': 'El espacio Default no puede eliminarse.',
1631
+ 'wsp.err.isolated': 'Haga el espacio compartido (no aislado) antes de eliminarlo.',
1632
+ 'wsp.err.has_apps': 'Mueva primero las aplicaciones de este espacio a otro.',
1633
+ 'wsp.deleted': 'Espacio de trabajo {name} eliminado.',
1634
+ 'wsp.isolated_now': 'El espacio de trabajo está aislado: sus aplicaciones y su SQL se ejecutan ahora con sus propios inicios de sesión de base de datos.',
1635
+ 'wsp.shared_now': 'El espacio de trabajo vuelve a ser compartido: sus aplicaciones se ejecutan con la conexión de ejecución compartida.',
1636
+ 'wsp.not_isolated': 'No aislado: {why}',
1637
+ 'wsp.not_changed': 'No cambiado: {why}',
1638
+ 'wsp.err.role_name': 'Un nombre de rol es una letra o _ seguida de letras, dígitos, _ o $ (como máximo 63).',
1639
+ 'wsp.err.no_role': 'No existe el rol de base de datos {role}.',
1640
+ 'wsp.err.role_used_one': '{apps} se ejecuta como {role}: asígnele primero otro rol.',
1641
+ 'wsp.err.role_used': '{apps} se ejecutan como {role}: asígneles primero otro rol.',
1642
+ 'wsp.role_removed': 'Rol {role} quitado.',
1643
+ 'wsp.role_added': 'Rol {role} añadido.',
1644
+ 'wsp.not_saved': 'No guardado: {why}',
1645
+ 'wsp.err.message': 'El mensaje tiene como máximo 2000 caracteres.',
1646
+ 'wsp.err.banner': 'La etiqueta del banner tiene como máximo 40 caracteres.',
1647
+ 'wsp.service_saved': 'Mensaje y banner guardados.',
1648
+ 'wsp.prefs_saved': 'Preferencias guardadas.',
1649
+ 'wsp.err.label': 'La etiqueta tiene de 1 a 60 caracteres.',
1650
+ 'wsp.err.url': 'La URL empieza por http:// o https://.',
1651
+ 'wsp.err.description': 'La descripción tiene como máximo 500 caracteres.',
1652
+ 'wsp.err.order': 'El orden es un número entero.',
1653
+ 'wsp.link_added': 'Enlace {label} añadido.',
1654
+ 'wsp.link_exists': 'Ya existe un enlace {label}.',
1655
+ 'wsp.link_not_saved': 'El enlace no se guardó.',
1656
+ 'wsp.link_deleted': 'Enlace eliminado.',
1657
+ 'wsp.util_title': 'Uso del espacio de trabajo: {name}',
1658
+ 'wsp.pages': 'Páginas',
1659
+ 'wsp.views30': 'Vistas de página (30 días)',
1660
+ 'wsp.scripts': 'Scripts SQL',
1661
+ 'wsp.regions': 'Regiones',
1662
+ 'wsp.items': 'Elementos',
1663
+ 'wsp.users30': 'Usuarios (30 días)',
1664
+ 'wsp.static': 'Archivos estáticos',
1665
+ 'wsp.views': 'Vistas de página',
1666
+ 'wsp.users': 'Usuarios',
1667
+ 'wsp.schemas': 'Esquemas',
1668
+ 'wsp.schemas_help': 'Los esquemas que pueden usar los roles de base de datos del espacio, con el almacenamiento de sus tablas, índices y datos TOAST.',
1669
+ 'wsp.schema': 'Esquema',
1670
+ 'wsp.owner': 'Propietario',
1671
+ 'wsp.tables': 'Tablas',
1672
+ 'wsp.storage': 'Almacenamiento',
1673
+ 'wsp.no_schemas': 'Sin esquemas: las aplicaciones del espacio no tienen rol de base de datos propio.',
1674
+ 'wsp.utilization': 'Uso',
1675
+ 'wsp.util_crumb': 'Uso: {name}',
1676
+ // ------------------------------------------------------------ Developers (sprint 125)
1677
+ 'dev.title': 'Desarrolladores',
1678
+ 'dev.change_pw': 'Cambiar su contraseña',
1679
+ 'dev.current': 'Contraseña actual',
1680
+ 'dev.new': 'Nueva contraseña',
1681
+ 'dev.min8': 'Al menos 8 caracteres.',
1682
+ 'dev.change_btn': 'Cambiar contraseña',
1683
+ 'dev.your_email': 'Su dirección de correo',
1684
+ 'dev.email': 'Dirección de correo',
1685
+ 'dev.email_help': '«Buscar mi espacio de trabajo» en la página de inicio de sesión le envía allí sus espacios. Vacío: ninguna.',
1686
+ 'dev.save': 'Guardar',
1687
+ 'dev.accounts': 'Cuentas de desarrollador',
1688
+ 'dev.accounts_help': 'Los administradores añaden y quitan desarrolladores y pueden romper los bloqueos de páginas y aplicaciones de otros.',
1689
+ 'dev.username': 'Nombre de usuario',
1690
+ 'dev.role': 'Rol',
1691
+ 'dev.email_col': 'Correo',
1692
+ 'dev.you': '(usted)',
1693
+ 'dev.administrator': 'Administrador',
1694
+ 'dev.developer': 'Desarrollador',
1695
+ 'dev.email_of': 'Dirección de correo de {user}',
1696
+ 'dev.none': 'ninguna',
1697
+ 'dev.make_dev': 'Hacer desarrollador',
1698
+ 'dev.make_admin': 'Hacer administrador',
1699
+ 'dev.remove_confirm': '¿Quitar al desarrollador {user}?',
1700
+ 'dev.remove': 'Quitar',
1701
+ 'dev.add': 'Añadir desarrollador',
1702
+ 'dev.password': 'Contraseña',
1703
+ 'dev.optional_email': 'Opcional: para «Buscar mi espacio de trabajo».',
1704
+ 'dev.admins_only': 'Solo los administradores añaden y quitan desarrolladores.',
1705
+ 'dev.err.email': 'La dirección de correo no es válida.',
1706
+ 'dev.added_ws': 'Desarrollador añadido al espacio de trabajo {name}.',
1707
+ 'dev.added': 'Desarrollador añadido.',
1708
+ 'dev.err.current': 'La contraseña actual no es correcta.',
1709
+ 'dev.pw_changed': 'Contraseña cambiada.',
1710
+ 'dev.email_saved': 'Dirección de correo guardada.',
1711
+ 'dev.not_found': 'No encontrado.',
1712
+ 'dev.role_changed': 'Rol cambiado.',
1713
+ 'dev.removed': 'Desarrollador quitado.',
1714
+ // ------------------------------------------------------------ Security: two-factor sign-in (sprint 126)
1715
+ 'mfa.menu': 'Inicio de sesión en dos pasos',
1716
+ 'mfa.title': 'Seguridad',
1717
+ 'mfa.intro': 'Inicie sesión con un código de una aplicación de autenticación después de su contraseña. Los códigos de recuperación le permiten entrar si pierde el teléfono.',
1718
+ 'mfa.required_you': 'Su administrador exige el inicio de sesión en dos pasos: añada una aplicación de autenticación.',
1719
+ 'mfa.banner': 'El inicio de sesión en dos pasos es obligatorio. Configúrelo antes del {date}: {link}',
1720
+ 'mfa.set_up_now': 'configurar ahora',
1721
+ 'mfa.apps': 'Aplicaciones de autenticación',
1722
+ 'mfa.app_name': 'Nombre',
1723
+ 'mfa.app_default': 'Teléfono',
1724
+ 'mfa.added': 'Añadida',
1725
+ 'mfa.last_used': 'Último uso',
1726
+ 'mfa.no_apps': 'Aún no hay aplicación de autenticación: inicia sesión solo con su contraseña.',
1727
+ 'mfa.add_app': 'Añadir una aplicación de autenticación',
1728
+ 'mfa.no_key': 'El inicio de sesión en dos pasos necesita la clave de la instancia (PGKILN_SECRET_KEY) para guardar el secreto de la aplicación.',
1729
+ 'mfa.scan': 'Escanee el código QR con una aplicación de autenticación.',
1730
+ 'mfa.or_enter': 'O introduzca esta clave a mano:',
1731
+ 'mfa.enter_code': 'Introduzca el código de 6 dígitos que muestra la aplicación.',
1732
+ 'mfa.qr_label': 'Código QR para la aplicación de autenticación',
1733
+ 'mfa.confirm_app': 'Confirmar y activar',
1734
+ 'mfa.cancel_setup': 'Cancelar',
1735
+ 'mfa.setup_expired': 'La configuración tardó demasiado: empiece de nuevo.',
1736
+ 'mfa.wrong_setup': 'Ese código no coincide: compruebe la hora del teléfono y pruebe el siguiente código.',
1737
+ 'mfa.app_added': 'Aplicación de autenticación añadida: a partir de ahora también inicia sesión con un código.',
1738
+ 'mfa.remove': 'Quitar',
1739
+ 'mfa.remove_app': 'Quitar esta aplicación',
1740
+ 'mfa.your_password': 'Su contraseña',
1741
+ 'mfa.wrong_password': 'Contraseña incorrecta.',
1742
+ 'mfa.cannot_remove_required': 'El inicio de sesión en dos pasos es obligatorio para usted: añada otra aplicación antes de quitar esta.',
1743
+ 'mfa.cannot_remove_admin': 'Al menos dos administradores (o todos, si hay menos) deben mantener el inicio de sesión en dos pasos mientras la política esté activa.',
1744
+ 'mfa.keep_admins': 'Ahora no: la política de dos pasos necesita al menos dos administradores con inicio de sesión en dos pasos (o todos, si hay menos).',
1745
+ 'mfa.removed': 'Aplicación de autenticación quitada.',
1746
+ 'mfa.codes_title': 'Códigos de recuperación',
1747
+ 'mfa.codes_once': 'Guarde estos códigos en un lugar seguro, lejos del teléfono. Cada uno sustituye una vez a un código de la aplicación. Solo se muestran ahora.',
1748
+ 'mfa.codes_saved': 'He guardado estos códigos',
1749
+ 'mfa.codes_done': 'Hecho',
1750
+ 'mfa.codes_kept': 'Códigos de recuperación guardados.',
1751
+ 'mfa.codes_left': 'Códigos de recuperación sin usar: {n}.',
1752
+ 'mfa.codes_after': 'Recibe códigos de recuperación al añadir una aplicación de autenticación.',
1753
+ 'mfa.codes_low': 'Quedan pocos códigos de recuperación: genere nuevos.',
1754
+ 'mfa.codes_new': 'Nuevos códigos de recuperación',
1755
+ 'mfa.codes_new_confirm': '¿Generar nuevos códigos de recuperación? Los antiguos dejan de funcionar.',
1756
+ 'mfa.expired': 'El inicio de sesión tardó demasiado: inicie sesión de nuevo.',
1757
+ 'mfa.step_title': 'Inicio de sesión en dos pasos',
1758
+ 'mfa.step_intro': 'Introduzca el código de su aplicación de autenticación para {user}.',
1759
+ 'mfa.code': 'Código',
1760
+ 'mfa.code_help': '6 dígitos de la aplicación o uno de sus códigos de recuperación.',
1761
+ 'mfa.verify': 'Verificar',
1762
+ 'mfa.cancel': 'Volver al inicio de sesión',
1763
+ 'mfa.locked_out': '¿Perdió el teléfono y los códigos? Pida a un administrador que restablezca su inicio de sesión en dos pasos.',
1764
+ 'mfa.wrong': 'Ese código no es correcto o ya se usó.',
1765
+ 'mfa.column': 'Dos pasos',
1766
+ 'mfa.on': 'activado',
1767
+ 'mfa.off': 'desactivado',
1768
+ 'mfa.reset': 'Restablecer',
1769
+ 'mfa.reason': 'Motivo',
1770
+ 'mfa.reset_help': 'Quita las aplicaciones y los códigos de recuperación de {user} y cierra su sesión. Se registra; los administradores reciben un correo.',
1771
+ 'mfa.reset_btn': 'Restablecer el inicio de sesión en dos pasos',
1772
+ 'mfa.reason_needed': 'Indique un motivo para el restablecimiento.',
1773
+ 'mfa.reset_done': 'Inicio de sesión en dos pasos de {user} restablecido.',
1774
+ 'mfa.policy_title': 'Inicio de sesión en dos pasos',
1775
+ 'mfa.policy_label': 'Exigir el inicio de sesión en dos pasos a',
1776
+ 'mfa.policy_off': 'Nadie (opcional)',
1777
+ 'mfa.policy_admins': 'Administradores',
1778
+ 'mfa.policy_all': 'Todos los desarrolladores',
1779
+ 'mfa.grace': 'Período de gracia (días)',
1780
+ 'mfa.grace_help': 'Los desarrolladores sin aplicación ven un aviso hasta entonces; después, solo su página de Seguridad.',
1781
+ 'mfa.policy_help': 'Administradores con inicio de sesión en dos pasos: {enrolled} de {admins}. Para exigirlo hacen falta al menos dos (o todos, si hay menos).',
1782
+ 'mfa.policy_save': 'Guardar',
1783
+ 'mfa.policy_saved': 'Política de dos pasos guardada.',
1784
+ 'mfa.policy_needs_admins': 'Primero, al menos dos administradores (o todos, si hay menos) deben configurar el inicio de sesión en dos pasos, para que nadie quede bloqueado solo.',
1785
+ 'mfa.without': 'Sin inicio de sesión en dos pasos: {list}.',
1786
+ 'mfa.cli_note': '¿Bloqueado? En el servidor: pgkiln admin reset-2fa <developer> o pgkiln admin set-2fa-policy off.',
1386
1787
  };