pgkiln 0.57.0 → 0.59.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.
@@ -1043,4 +1043,672 @@ export const es: BuilderMessages = {
1043
1043
  'te.failed_stmt': 'Sentencia con error',
1044
1044
  'te.title_table': 'Tabla {table}',
1045
1045
  'te.title_create': 'Crear tabla',
1046
+ // ------------------------------------------------------------ Shared Components (sprint 124)
1047
+ 'comp.nav_entry': 'Entrada de navegación',
1048
+ 'comp.nav_entry.plural': 'Menú de navegación',
1049
+ 'comp.authz_scheme': 'Esquema de autorización',
1050
+ 'comp.authz_scheme.plural': 'Esquemas de autorización',
1051
+ 'comp.build_option': 'Opción de compilación',
1052
+ 'comp.build_option.plural': 'Opciones de compilación',
1053
+ 'comp.page_group': 'Grupo de páginas',
1054
+ 'comp.page_group.plural': 'Grupos de páginas',
1055
+ 'comp.lov': 'Lista de valores',
1056
+ 'comp.lov.plural': 'Listas de valores',
1057
+ 'comp.app_item': 'Elemento de aplicación',
1058
+ 'comp.app_item.plural': 'Elementos de aplicación',
1059
+ 'comp.app_process': 'Proceso de aplicación',
1060
+ 'comp.app_process.plural': 'Procesos de aplicación',
1061
+ 'comp.app_computation': 'Cálculo de aplicación',
1062
+ 'comp.app_computation.plural': 'Cálculos de aplicación',
1063
+ 'comp.shortcut': 'Atajo',
1064
+ 'comp.shortcut.plural': 'Atajos',
1065
+ 'comp.report_query': 'Consulta de informe',
1066
+ 'comp.report_query.plural': 'Consultas de informe',
1067
+ 'comp.component_group': 'Grupo de componentes',
1068
+ 'comp.component_group.plural': 'Grupos de componentes',
1069
+ 'comp.automation': 'Automatización',
1070
+ 'comp.automation.plural': 'Automatizaciones',
1071
+ 'comp.automation_action': 'Acción de automatización',
1072
+ 'comp.automation_action.plural': 'Acciones de automatización',
1073
+ 'comp.report_layout': 'Diseño de informe',
1074
+ 'comp.report_layout.plural': 'Diseños de informe',
1075
+ 'comp.document_template': 'Plantilla de documento',
1076
+ 'comp.document_template.plural': 'Plantillas de documento',
1077
+ 'comp.task_definition': 'Definición de tarea',
1078
+ 'comp.task_definition.plural': 'Definiciones de tarea',
1079
+ 'comp.workflow_definition': 'Flujo de trabajo',
1080
+ 'comp.workflow_definition.plural': 'Flujos de trabajo',
1081
+ 'comp.rest_module': 'Módulo REST',
1082
+ 'comp.rest_module.plural': 'Módulos REST',
1083
+ 'comp.template_component': 'Componente de plantilla',
1084
+ 'comp.template_component.plural': 'Componentes de plantilla',
1085
+ 'comp.web_credential': 'Credencial web',
1086
+ 'comp.web_credential.plural': 'Credenciales web',
1087
+ 'comp.rest_source': 'Origen de datos REST',
1088
+ 'comp.rest_source.plural': 'Orígenes de datos REST',
1089
+ 'comp.data_load_def': 'Definición de carga de datos',
1090
+ 'comp.data_load_def.plural': 'Definiciones de carga de datos',
1091
+ 'comp.list': 'Lista',
1092
+ 'comp.list.plural': 'Listas',
1093
+ 'comp.list_entry': 'Entrada de lista',
1094
+ 'comp.list_entry.plural': 'Entradas de lista',
1095
+ 'comp.supporting_script': 'Script de soporte',
1096
+ 'comp.supporting_script.plural': 'Objetos de soporte',
1097
+ 'comp.search_config': 'Configuración de búsqueda',
1098
+ 'comp.search_config.plural': 'Configuraciones de búsqueda',
1099
+ 'comp.email_template': 'Plantilla de correo',
1100
+ 'comp.email_template.plural': 'Plantillas de correo',
1101
+ 'comp.app_setting': 'Ajuste de aplicación',
1102
+ 'comp.app_setting.plural': 'Ajustes de aplicación',
1103
+ 'comp.dynamic_translation': 'Traducción dinámica',
1104
+ 'comp.dynamic_translation.plural': 'Traducciones dinámicas',
1105
+ 'sc.group.logic': 'Lógica de la aplicación',
1106
+ 'sc.group.security': 'Seguridad',
1107
+ 'sc.group.other': 'Otros componentes',
1108
+ 'sc.group.navigation': 'Navegación y búsqueda',
1109
+ 'sc.group.ui': 'Interfaz de usuario',
1110
+ 'sc.group.files': 'Archivos e informes',
1111
+ 'sc.group.data': 'Orígenes de datos',
1112
+ 'sc.group.workflows': 'Flujos de trabajo y automatizaciones',
1113
+ 'sc.group.globalization': 'Globalización',
1114
+ 'sc.group.ai': 'IA generativa',
1115
+ 'sc.item.application_items': 'Elementos de aplicación',
1116
+ 'sc.item.application_processes': 'Procesos de aplicación',
1117
+ 'sc.item.application_computations': 'Cálculos de aplicación',
1118
+ 'sc.item.application_settings': 'Ajustes de aplicación',
1119
+ 'sc.item.build_options': 'Opciones de compilación',
1120
+ 'sc.item.application_definition': 'Definición de la aplicación',
1121
+ 'sc.item.access_control': 'Control de acceso',
1122
+ 'sc.item.authentication': 'Autenticación',
1123
+ 'sc.item.authorization_schemes': 'Esquemas de autorización',
1124
+ 'sc.item.security_attributes': 'Atributos de seguridad',
1125
+ 'sc.item.sign_in_and_session_management': 'Inicio de sesión y gestión de sesiones',
1126
+ 'sc.item.lists_of_values': 'Listas de valores',
1127
+ 'sc.item.lists': 'Listas',
1128
+ 'sc.item.list_entries': 'Entradas de lista',
1129
+ 'sc.item.email_templates': 'Plantillas de correo',
1130
+ 'sc.item.shortcuts': 'Atajos',
1131
+ 'sc.item.component_groups': 'Grupos de componentes',
1132
+ 'sc.item.supporting_objects': 'Objetos de soporte',
1133
+ 'sc.item.subscriptions': 'Suscripciones',
1134
+ 'sc.item.navigation_menu': 'Menú de navegación',
1135
+ 'sc.item.navigation_bar_list': 'Lista de la barra de navegación',
1136
+ 'sc.item.breadcrumbs': 'Rutas de navegación',
1137
+ 'sc.item.page_groups': 'Grupos de páginas',
1138
+ 'sc.item.search_configurations': 'Configuraciones de búsqueda',
1139
+ 'sc.item.themes_and_theme_roller': 'Temas y Theme Roller',
1140
+ 'sc.item.user_interface_attributes': 'Atributos de la interfaz de usuario',
1141
+ 'sc.item.template_components': 'Componentes de plantilla',
1142
+ 'sc.item.plug_ins': 'Plug-ins',
1143
+ 'sc.item.component_settings': 'Ajustes de componentes',
1144
+ 'sc.item.progressive_web_app': 'Aplicación web progresiva',
1145
+ 'sc.item.static_application_files': 'Archivos estáticos de la aplicación',
1146
+ 'sc.item.report_layouts': 'Diseños de informe',
1147
+ 'sc.item.report_queries': 'Consultas de informe',
1148
+ 'sc.item.document_templates': 'Plantillas de documento',
1149
+ 'sc.item.rest_data_sources': 'Orígenes de datos REST',
1150
+ 'sc.item.web_credentials': 'Credenciales web',
1151
+ 'sc.item.restful_services': 'Servicios RESTful',
1152
+ 'sc.item.data_load_definitions': 'Definiciones de carga de datos',
1153
+ 'sc.item.workflows': 'Flujos de trabajo',
1154
+ 'sc.item.task_definitions': 'Definiciones de tarea',
1155
+ 'sc.item.automations': 'Automatizaciones',
1156
+ 'sc.item.translations_and_text_messages': 'Traducciones y mensajes de texto',
1157
+ 'sc.item.dynamic_translations': 'Traducciones dinámicas',
1158
+ 'sc.item.globalization_attributes': 'Atributos de globalización',
1159
+ 'sc.item.ai_services': 'Servicios de IA',
1160
+ 'sc.item.ai_agents': 'Agentes de IA',
1161
+ 'sc.entries': 'Entradas',
1162
+ 'sc.list_sql': 'Esta lista muestra las filas de su consulta; las entradas de abajo no se usan.',
1163
+ 'sc.no_entries': 'Todavía no hay entradas.',
1164
+ 'sc.add_entry': '+ Añadir entrada',
1165
+ 'sc.breadcrumbs_help': 'La ruta de navegación de una página lista las páginas superiores: cada página indica su página padre (Page Designer → página → Breadcrumb parent). Las páginas sin ella muestran Home.',
1166
+ 'sc.cs_help': 'Valores por defecto de los tipos de componente integrados, usados cuando un componente no indica nada. Vacío: el valor por defecto de pgkiln.',
1167
+ 'sc.cs_now': '{help} {min}–{max}; ahora {now}.',
1168
+ 'sc.cs_saved': 'Ajustes de componentes guardados.',
1169
+ 'sc.intro': 'Los componentes que comparten las páginas de {app}.',
1170
+ 'sc.tree_view': 'Vista de árbol',
1171
+ 'sc.create': 'Crear',
1172
+ 'sc.search': 'Buscar',
1173
+ 'sc.name': 'Nombre',
1174
+ 'sc.details': 'Detalles',
1175
+ 'sc.nothing_matches': 'No hay coincidencias.',
1176
+ 'sc.none_yet': 'Todavía no hay {what}.',
1177
+ 'sc.count': '{n} de {total}',
1178
+ 'sc.new': 'Nuevo: {what}',
1179
+ 'sc.save': 'Guardar',
1180
+ 'sc.run_supporting': 'Ejecutar objetos de soporte…',
1181
+ 'sc.delete_confirm': '¿Eliminar este elemento ({what})?',
1182
+ 'sc.delete': 'Eliminar',
1183
+ 'sc.not_found': 'No encontrado.',
1184
+ 'sc.groups_title': 'Grupos del proveedor de identidad → roles',
1185
+ 'sc.groups_help': 'Con inicio de sesión único, los miembros de estos grupos reciben el rol en esta aplicación y pueden iniciar sesión aunque no figuren arriba.',
1186
+ 'sc.remove_mapping': 'Quitar la asignación de {group} a {role}',
1187
+ 'sc.no_groups': 'Sin asignaciones de grupos.',
1188
+ 'sc.group_label': 'Grupo (como en el token)',
1189
+ 'sc.group_ph': 'p. ej. hr-managers',
1190
+ 'sc.role_label': 'Rol en esta aplicación',
1191
+ 'sc.role_ph': 'p. ej. manager',
1192
+ 'sc.add_mapping': 'Añadir asignación',
1193
+ 'sc.access': 'Control de acceso',
1194
+ 'sc.who': 'Quién puede iniciar sesión',
1195
+ 'sc.who.assigned': 'Solo las cuentas listadas abajo (acceso basado en roles)',
1196
+ 'sc.who.any': 'Cualquier cuenta activa del directorio',
1197
+ 'sc.access_help': 'Las cuentas están en el {directory}; aquí les da acceso a {app} y asigna roles, que comprueban los esquemas de autorización y {fn}. Los cambios de rol se aplican en el próximo inicio de sesión (sus sesiones en esta aplicación terminan).',
1198
+ 'sc.directory': 'directorio de usuarios',
1199
+ 'sc.account': 'Cuenta',
1200
+ 'sc.roles_in_app': 'Roles en esta aplicación',
1201
+ 'sc.last_signin': 'Último inicio de sesión',
1202
+ 'sc.roles': 'Roles',
1203
+ 'sc.inactive': '(inactiva)',
1204
+ 'sc.roles_of': 'Roles de {user}',
1205
+ 'sc.no_roles': 'sin roles',
1206
+ 'sc.revoke_confirm': '¿Revocar el acceso de {user} a {app}?',
1207
+ 'sc.revoke': 'Revocar',
1208
+ 'sc.no_access': 'Todavía ninguna cuenta tiene acceso.',
1209
+ 'sc.grant': 'Conceder acceso',
1210
+ 'sc.username_ph': 'nombre de usuario',
1211
+ 'sc.existing': 'Una cuenta existente.',
1212
+ 'sc.create_in_users': 'Cree cuentas en Usuarios.',
1213
+ 'sc.roles_ph': 'separados por comas, o elija abajo',
1214
+ 'sc.tree.security': 'Seguridad',
1215
+ 'sc.tree.globalization': 'Globalización',
1216
+ 'sc.tree.translations': 'Traducciones y mensajes de texto',
1217
+ 'sc.tree.files': 'Archivos y plug-ins',
1218
+ 'sc.tree.static': 'Archivos estáticos de la aplicación',
1219
+ 'sc.tree.subscriptions': 'Suscripciones',
1220
+ 'sc.tree.subscribers': 'Suscripciones y suscriptores',
1221
+ 'sc.add_kind': 'Añadir {what}',
1222
+ 'sc.add': '+ Añadir',
1223
+ 'sc.review_run': 'Revisar y ejecutar…',
1224
+ 'sc.edit': 'Editar',
1225
+ 'sc.saved': '{what}: guardado.',
1226
+ 'sc.deleted': '{what}: eliminado.',
1227
+ 'sc.access_saved': 'Control de acceso guardado.',
1228
+ 'sc.no_account': 'No existe la cuenta «{user}». Créela primero en Usuarios.',
1229
+ 'sc.granted': 'Acceso concedido a {user}.',
1230
+ 'sc.mapping_added': 'Asignación de grupo añadida. Se aplica en el próximo inicio de sesión.',
1231
+ 'sc.mapping_removed': 'Asignación de grupo quitada. Se aplica en el próximo inicio de sesión.',
1232
+ 'sc.roles_saved': 'Roles guardados. Se aplican en el próximo inicio de sesión.',
1233
+ 'sc.revoked': 'Acceso revocado.',
1234
+ // ------------------------------------------------------------ Application settings (sprint 124)
1235
+ 'st.tab.definition': 'Definición',
1236
+ 'st.tab.security': 'Seguridad',
1237
+ 'st.tab.signin': 'Inicio de sesión',
1238
+ 'st.tab.ui': 'Interfaz de usuario',
1239
+ 'st.tab.globalization': 'Globalización',
1240
+ 'st.tab.errors': 'Errores y sesiones',
1241
+ 'st.tab.pwa': 'Aplicación web progresiva',
1242
+ 'st.settings': 'Ajustes',
1243
+ 'st.name': 'Nombre',
1244
+ 'st.alias': 'Alias',
1245
+ 'st.version': 'Versión',
1246
+ 'st.version_ph': 'Versión 1.0',
1247
+ 'st.version_help': 'Se muestra en el pie de las páginas de la aplicación; vacío: ninguna.',
1248
+ 'st.home_page': 'Página de inicio',
1249
+ 'st.app_type': 'Tipo de aplicación',
1250
+ 'st.app_type_help': 'Las aplicaciones de tema y de biblioteca ofrecen su tema o sus componentes compartidos a otras aplicaciones (Shared Components → Suscripciones); Crear aplicación puede partir de una aplicación modelo.',
1251
+ 'st.type.standard': 'Estándar',
1252
+ 'st.type.theme': 'Aplicación de tema',
1253
+ 'st.type.library': 'Aplicación de biblioteca',
1254
+ 'st.type.boilerplate': 'Aplicación modelo',
1255
+ 'st.authentication': 'Autenticación',
1256
+ 'st.auth.app_users': 'Usuarios de la aplicación (página de inicio de sesión)',
1257
+ 'st.auth.header': 'Cabecera HTTP (proxy inverso)',
1258
+ 'st.auth.database': 'Cuentas de base de datos (roles de PostgreSQL)',
1259
+ 'st.auth.custom': 'Personalizada (una función PL/pgSQL)',
1260
+ 'st.auth.none': 'Ninguna (pública)',
1261
+ 'st.db_role': 'Rol de base de datos (esquema de análisis)',
1262
+ 'st.db_role_help': 'Todo el SQL de la aplicación se ejecuta con este rol (SET LOCAL ROLE), así que se aplican los privilegios y la seguridad a nivel de fila. Déjelo vacío solo para aplicaciones internas de confianza.',
1263
+ 'st.debug': 'Modo de depuración',
1264
+ 'st.debug_help': 'Muestra a los usuarios finales los detalles de los errores de base de datos. Solo para desarrollo.',
1265
+ 'st.debug_msgs': 'Mensajes de depuración',
1266
+ 'st.debug_on': 'activado, nivel {level}',
1267
+ 'st.off': 'desactivado',
1268
+ 'st.debug_msgs_help': 'Registra los pasos de cada petición con sus tiempos y los mensajes de {fn}, conservados {days} días.',
1269
+ 'st.header_title': 'Autenticación por cabecera HTTP',
1270
+ 'st.header_intro': 'Solo se usa cuando la autenticación es «Cabecera HTTP». Un proxy inverso o una pasarela de inicio de sesión único autentica a los usuarios y pasa el nombre de usuario en una cabecera; pgkiln solo confía en ella desde las direcciones de proxy de {env}',
1271
+ 'st.header_unset': 'no está configurado en este servidor: se rechaza el inicio de sesión por cabecera',
1272
+ 'st.header_name': 'Cabecera con el nombre de usuario',
1273
+ 'st.header_name_help': 'La cabecera de la petición con el nombre de usuario (APEX: HTTP Header Variable). Vacío: X-Remote-User. Una cabecera cambiada o ausente termina la sesión.',
1274
+ 'st.logout_url': 'URL de cierre de sesión',
1275
+ 'st.logout_url_ph': 'p. ej. https://sso.example.com/logout',
1276
+ 'st.logout_url_help': 'Adónde lleva «Cerrar sesión» al terminar la sesión, normalmente la página de cierre de sesión del propio proxy. Vacío: una página de «sesión cerrada».',
1277
+ 'st.header_auto': 'Crear cuentas automáticamente',
1278
+ 'st.header_auto_help': 'Un nombre de usuario desconocido recibe una cuenta nueva con acceso a esta aplicación. Si no, la cuenta debe existir y tener acceso.',
1279
+ 'st.db_title': 'Cuentas de base de datos',
1280
+ 'st.db_intro': 'Solo se usa cuando la autenticación es «Cuentas de base de datos». Los usuarios inician sesión con un rol de inicio de sesión de PostgreSQL y su contraseña, comprobados con una breve conexión a esta base de datos con ese rol. Los superusuarios y los roles propios de pgkiln siempre se rechazan; sin ninguno de los dos campos nadie puede iniciar sesión.',
1281
+ 'st.db_roles': 'Roles permitidos',
1282
+ 'st.db_roles_ph': 'p. ej. alice, bob',
1283
+ 'st.db_roles_help': 'Roles de inicio de sesión que pueden entrar, separados por comas (nombres exactos).',
1284
+ 'st.db_member': 'O miembros del rol',
1285
+ 'st.db_member_ph': 'p. ej. app_users_group',
1286
+ 'st.db_member_help': 'Todos los miembros de este rol también pueden iniciar sesión.',
1287
+ 'st.custom_title': 'Autenticación personalizada',
1288
+ 'st.custom_intro': 'Solo se usa cuando la autenticación es «Personalizada». Su propio PL/pgSQL comprueba el nombre de usuario y la contraseña del formulario, con el rol de base de datos de la aplicación; la contraseña se pasa como parámetro y nunca se registra. Los intentos fallidos se limitan como otros inicios de sesión. Sin ninguno de los dos campos nadie puede iniciar sesión.',
1289
+ 'st.custom_fn': 'Nombre de la función',
1290
+ 'st.custom_fn_ph': 'p. ej. app.check_login',
1291
+ 'st.custom_fn_help': 'Una función (p_username text, p_password text) returns boolean, en minúsculas, opcionalmente con su esquema. El rol de la aplicación necesita EXECUTE sobre ella. Tiene prioridad sobre el cuerpo de abajo.',
1292
+ 'st.custom_body': 'O cuerpo de la función',
1293
+ 'st.custom_body_help': 'PL/pgSQL con p_username y p_password que devuelve true para un inicio de sesión válido, p. ej. {example}',
1294
+ 'st.custom_post': 'Código posterior a la autenticación',
1295
+ 'st.custom_post_help': 'PL/pgSQL opcional que se ejecuta tras una comprobación correcta, con p_username (y meta.app_user()), p. ej. para registrar el último inicio de sesión. Lanzar una excepción rechaza el inicio de sesión. Los procesos de aplicación «after login» se ejecutan después como siempre.',
1296
+ 'st.signin': 'Inicio de sesión',
1297
+ 'st.methods': 'Métodos de inicio de sesión',
1298
+ 'st.local': 'Nombre de usuario y contraseña',
1299
+ 'st.ldap': 'Contraseñas de LDAP: {name}',
1300
+ 'st.disabled': '(desactivado)',
1301
+ 'st.no_ldap': 'No hay directorios LDAP configurados. {add} para comprobar contraseñas con LDAP o Active Directory.',
1302
+ 'st.add_one': 'Añada uno',
1303
+ 'st.ldap_help': 'El formulario de usuario y contraseña comprueba las contraseñas LDAP, después de las cuentas locales, así que mantenga ese método activado.',
1304
+ 'st.session_group': 'Grupo de sesión compartida',
1305
+ 'st.session_group_ph': 'vacío: no compartida',
1306
+ 'st.session_group_help': 'Las aplicaciones del mismo grupo (y con el directorio de usuarios como autenticación) comparten el inicio de sesión: tras entrar en una, las demás se abren sin volver a iniciar sesión, cada una con su propia comprobación de acceso y sus roles; cerrar sesión en una la cierra en todas (APEX: session sharing). Minúsculas, dígitos y _.',
1307
+ 'st.remember': '«Mantener la sesión iniciada» durante (días)',
1308
+ 'st.remember_ph': 'vacío: no se ofrece',
1309
+ 'st.remember_help': 'Ofrece una casilla en el formulario de inicio de sesión (APEX: autenticación persistente). El navegador sigue con la sesión iniciada tantos días tras entrar, también cuando termina la sesión; cerrar sesión, una contraseña nueva, la desactivación o la retirada del acceso lo terminan. De 1 a 365.',
1310
+ 'st.sso': 'Iniciar sesión con {name}',
1311
+ 'st.no_sso': 'No hay proveedores de identidad configurados. {add} para el inicio de sesión único.',
1312
+ 'st.theme': 'Tema',
1313
+ 'st.base': 'Estilo base',
1314
+ 'st.base.iris': 'Iris (el predeterminado para nuevas aplicaciones)',
1315
+ 'st.base.lavender': 'Lavender (Iris hasta pgkiln 0.41)',
1316
+ 'st.base.standard': 'Standard (pgkiln hasta 0.28)',
1317
+ 'st.base_help': 'Colores, esquinas, fuente y sombras de toda la aplicación, en claro y oscuro. Los colores de abajo sustituyen su acento y su cabecera.',
1318
+ 'st.accent': 'Color de acento',
1319
+ 'st.header_colour': 'Color de la cabecera',
1320
+ 'st.accent_dark': 'Color de acento en modo oscuro',
1321
+ 'st.header_dark': 'Color de la cabecera en modo oscuro',
1322
+ 'st.own_colour': 'Usar este color (si no, la paleta oscura del estilo base)',
1323
+ 'st.nav': 'Menú de navegación',
1324
+ 'st.nav.side': 'Lateral (plegable)',
1325
+ 'st.nav.top': 'Barra superior',
1326
+ 'st.nav_help': 'En tabletas y teléfonos el menú es siempre un cajón.',
1327
+ 'st.nav_list': 'Lista del menú de navegación',
1328
+ 'st.nav_entries': '- las entradas de navegación -',
1329
+ 'st.nav_list_help': 'Una lista (Shared Components → Listas) que se muestra como menú de navegación en lugar de las entradas de navegación.',
1330
+ 'st.navbar_list': 'Lista de la barra de navegación',
1331
+ 'st.none_option': '- ninguna -',
1332
+ 'st.navbar_help': 'Una lista que se muestra como enlaces en la cabecera, junto al menú de usuario.',
1333
+ 'st.missing': '{name} (¡falta!)',
1334
+ 'st.mode': 'Estilo del tema',
1335
+ 'st.mode.auto': 'Automático (claro u oscuro, según el dispositivo)',
1336
+ 'st.mode.light': 'Claro',
1337
+ 'st.mode.dark': 'Oscuro',
1338
+ 'st.user_choice': 'Los usuarios pueden elegir claro u oscuro',
1339
+ 'st.user_choice_help': 'Añade un interruptor al menú de usuario y a Mi cuenta; la elección se guarda en la cuenta (APEX: «Enable End Users to Choose Theme Style»).',
1340
+ 'st.roller': 'Theme Roller: variantes de estilo…',
1341
+ 'st.styles_one': '{n} estilo',
1342
+ 'st.styles': '{n} estilos',
1343
+ 'st.no_styles': 'todavía no hay estilos',
1344
+ 'st.language': 'Idioma principal',
1345
+ 'st.language_help': 'El idioma en que está hecha la aplicación, p. ej. en, nl, de, en-GB.',
1346
+ 'st.languages': 'Idiomas traducidos',
1347
+ 'st.languages_ph': 'p. ej. nl, de',
1348
+ 'st.languages_help': 'Separados por comas. Traduzca los textos en Shared Components → Globalización.',
1349
+ 'st.language_from': 'Idioma derivado de',
1350
+ 'st.from.browser': 'Navegador (Accept-Language)',
1351
+ 'st.from.user': 'Preferencia del usuario y luego el navegador',
1352
+ 'st.from.primary': 'Siempre el idioma principal',
1353
+ 'st.language_from_help': 'Los usuarios también pueden cambiar con ?lang=xx o el selector de la página de inicio de sesión.',
1354
+ 'st.date_format': 'Formato de fecha',
1355
+ 'st.date_format_ph': 'p. ej. DD-MM-YYYY (vacío: según el idioma)',
1356
+ 'st.date_format_help': 'Máscaras: YYYY YY MM MON MONTH DD DY DAY HH24 HH MI SS AM',
1357
+ 'st.ts_format': 'Formato de fecha y hora',
1358
+ 'st.ts_format_ph': 'p. ej. DD-MM-YYYY HH24:MI',
1359
+ 'st.save_settings': 'Guardar ajustes',
1360
+ 'st.delete_confirm': '¿Eliminar la aplicación {app} y todas sus páginas?',
1361
+ 'st.delete': 'Eliminar aplicación',
1362
+ 'st.error_fn': 'Función de gestión de errores',
1363
+ 'st.error_fn_ph': 'p. ej. sales.error_message',
1364
+ 'st.error_fn_help': 'schema.function(jsonb) returns jsonb, ejecutada con el rol de la aplicación: recibe el mensaje y lo que se sabe de un error (code, constraint, table, column, component, page, user, internal, reference) y puede devolver {"message": "…"} para mostrarlo en su lugar. Vacío: ninguna.',
1365
+ 'st.warning': 'Aviso de fin de sesión (segundos)',
1366
+ 'st.warning_help': 'Los usuarios con sesión iniciada reciben un aviso este tiempo antes de que termine su sesión y pueden seguir conectados (0: sin aviso).',
1367
+ 'st.save': 'Guardar',
1368
+ 'st.checklist': 'Lista de comprobación de seguridad',
1369
+ 'st.ck.role': 'Se ejecuta con un rol de base de datos propio',
1370
+ 'st.ck.runtime': '(se ejecuta con la conexión de ejecución)',
1371
+ 'st.ck.signin': 'Los usuarios deben iniciar sesión',
1372
+ 'st.ck.public': 'Aplicación pública',
1373
+ 'st.ck.debug_on': 'El modo de depuración está activado: se muestran detalles de los errores a los usuarios',
1374
+ 'st.ck.debug_off': 'El modo de depuración está desactivado',
1375
+ 'st.ck.msgs_on': 'Los mensajes de depuración están activados (nivel {level}): se registra cada petición',
1376
+ 'st.ck.msgs_off': 'Los mensajes de depuración están desactivados',
1377
+ 'st.ck.unprotected': 'Páginas sin protección por suma de comprobación: {n}',
1378
+ 'st.ck.public_pages': 'Páginas públicas: {n}',
1379
+ 'st.title': 'Ajustes de {app}',
1380
+ 'st.err.fn_shape': 'La función de gestión de errores es schema.function, p. ej. sales.error_message.',
1381
+ 'st.err.no_fn': 'No existe ninguna función {fn}(jsonb) que devuelva jsonb.',
1382
+ 'st.err.warning': 'El aviso de fin de sesión es de 0 a 3600 segundos.',
1383
+ 'st.saved': 'Guardado.',
1384
+ 'st.settings_saved': 'Ajustes guardados.',
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.',
1046
1714
  };