mirror of
https://github.com/logto-io/logto.git
synced 2025-03-10 22:22:45 -05:00
feat(phrases): add es translation
This commit is contained in:
parent
e9e8a6e11e
commit
f3d60a5169
63 changed files with 1649 additions and 5 deletions
6
.changeset/honest-lies-judge.md
Normal file
6
.changeset/honest-lies-judge.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
"@logto/phrases": minor
|
||||
"@logto/phrases-ui": minor
|
||||
---
|
||||
|
||||
add es transaltion
|
|
@ -1,6 +1,6 @@
|
|||
import fs from 'node:fs/promises';
|
||||
|
||||
import { type LanguageTag } from '@logto/language-kit';
|
||||
import { languages, type LanguageTag } from '@logto/language-kit';
|
||||
import { trySafe } from '@silverhand/essentials';
|
||||
import { type Got, got, HTTPError } from 'got';
|
||||
import { HttpsProxyAgent } from 'hpagent';
|
||||
|
@ -40,7 +40,7 @@ export const translate = async (api: Got, languageTag: LanguageTag, filePath: st
|
|||
messages: [
|
||||
{
|
||||
role: 'user',
|
||||
content: `Translate the following code snippet to ${languageTag}, output ts code only: \n \`\`\`ts\n${fileContent}\n\`\`\``,
|
||||
content: `Only translate object values to ${languages[languageTag]} in the following code snippet, output ts code only: \n \`\`\`ts\n${fileContent}\n\`\`\``,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
|
@ -5,6 +5,7 @@ import { z } from 'zod';
|
|||
|
||||
import de from './locales/de/index.js';
|
||||
import en from './locales/en/index.js';
|
||||
import es from './locales/es/index.js';
|
||||
import fr from './locales/fr/index.js';
|
||||
import ja from './locales/ja/index.js';
|
||||
import ko from './locales/ko/index.js';
|
||||
|
@ -22,14 +23,15 @@ export type I18nKey = NormalizeKeyPaths<typeof en.translation>;
|
|||
export const builtInLanguages = [
|
||||
'de',
|
||||
'en',
|
||||
'es',
|
||||
'fr',
|
||||
'ja',
|
||||
'ko',
|
||||
'pt-PT',
|
||||
'pt-BR',
|
||||
'ru',
|
||||
'tr-TR',
|
||||
'zh-CN',
|
||||
'ja',
|
||||
] as const;
|
||||
|
||||
export const builtInLanguageOptions = builtInLanguages.map((languageTag) => ({
|
||||
|
@ -46,14 +48,15 @@ export type Resource = Record<BuiltInLanguageTag, LocalePhrase>;
|
|||
const resource: Resource = {
|
||||
de,
|
||||
en,
|
||||
es,
|
||||
fr,
|
||||
ja,
|
||||
ko,
|
||||
'pt-PT': ptPT,
|
||||
'pt-BR': ptBR,
|
||||
ru,
|
||||
'tr-TR': trTR,
|
||||
'zh-CN': zhCN,
|
||||
ja,
|
||||
};
|
||||
|
||||
export const getDefaultLanguageTag = (language: string): LanguageTag =>
|
||||
|
|
29
packages/phrases-ui/src/locales/es/action.ts
Normal file
29
packages/phrases-ui/src/locales/es/action.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
const action = {
|
||||
sign_in: 'Iniciar sesión',
|
||||
continue: 'Continuar',
|
||||
create_account: 'Crear una cuenta',
|
||||
create_account_without_linking: 'Crear una cuenta sin vinculación',
|
||||
create: 'Crear',
|
||||
enter_passcode: 'Ingresar código de verificación',
|
||||
confirm: 'Confirmar',
|
||||
cancel: 'Cancelar',
|
||||
save_password: 'Guardar contraseña',
|
||||
bind: 'Vincular con {{address}}',
|
||||
bind_and_continue: 'Vincular y continuar',
|
||||
back: 'Regresar',
|
||||
nav_back: 'Atrás',
|
||||
agree: 'Aceptar',
|
||||
got_it: 'Entendido',
|
||||
sign_in_with: 'Continuar con {{name}}',
|
||||
forgot_password: '¿Olvidaste tu contraseña?',
|
||||
switch_to: 'Cambiar a {{method}}',
|
||||
sign_in_via_passcode: 'Iniciar sesión con código de verificación',
|
||||
sign_in_via_password: 'Iniciar sesión con contraseña',
|
||||
change: 'Cambiar {{method}}',
|
||||
link_another_email: 'Vincular otro correo electrónico',
|
||||
link_another_phone: 'Vincular otro número de teléfono',
|
||||
link_another_email_or_phone: 'Vincular otro correo electrónico o número de teléfono',
|
||||
show_password: 'Mostrar contraseña',
|
||||
};
|
||||
|
||||
export default action;
|
5
packages/phrases-ui/src/locales/es/demo-app.ts
Normal file
5
packages/phrases-ui/src/locales/es/demo-app.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
const demo_app = {
|
||||
notification: 'Consejo: Crea una cuenta primero para probar la experiencia de inicio de sesión.',
|
||||
};
|
||||
|
||||
export default demo_app;
|
63
packages/phrases-ui/src/locales/es/description.ts
Normal file
63
packages/phrases-ui/src/locales/es/description.ts
Normal file
|
@ -0,0 +1,63 @@
|
|||
const description = {
|
||||
email: 'correo electrónico',
|
||||
phone_number: 'número de teléfono',
|
||||
username: 'nombre de usuario',
|
||||
reminder: 'Recordatorio',
|
||||
not_found: '404 No encontrado',
|
||||
agree_with_terms: 'He leído y acepto los ',
|
||||
agree_with_terms_modal: 'Para continuar, por favor acepte los <link></link>.',
|
||||
terms_of_use: 'Términos de uso',
|
||||
sign_in: 'Iniciar sesión',
|
||||
privacy_policy: 'Política de privacidad',
|
||||
create_account: 'Crear cuenta',
|
||||
or: 'o',
|
||||
and: 'y',
|
||||
enter_passcode: 'El código de verificación ha sido enviado a su {{address}} {{target}}',
|
||||
passcode_sent: 'El código de verificación ha sido reenviado',
|
||||
resend_after_seconds: 'Reenviar después de <span>{{seconds}}</span> segundos',
|
||||
resend_passcode: 'Reenviar código de verificación',
|
||||
create_account_id_exists: 'La cuenta con {{type}} {{value}} ya existe, ¿desea iniciar sesión?',
|
||||
link_account_id_exists: 'La cuenta con {{type}} {{value}} ya existe. ¿Desea vincular?',
|
||||
sign_in_id_does_not_exist:
|
||||
'La cuenta con {{type}} {{value}} no existe, ¿desea crear una nueva cuenta?',
|
||||
sign_in_id_does_not_exist_alert: 'La cuenta con {{type}} {{value}} no existe.',
|
||||
create_account_id_exists_alert:
|
||||
'La cuenta con {{type}} {{value}} está vinculada a otra cuenta. Por favor intente con otra {{type}}.',
|
||||
social_identity_exist:
|
||||
'La {{type}} {{value}} está vinculada a otra cuenta. Por favor intente con otra {{type}}.',
|
||||
bind_account_title: 'Vincular o crear cuenta',
|
||||
social_create_account: 'Puede crear una nueva cuenta.',
|
||||
social_link_email: 'Puede vincular otro correo electrónico',
|
||||
social_link_phone: 'Puede vincular otro teléfono',
|
||||
social_link_email_or_phone: 'Puede vincular otro correo electrónico o teléfono',
|
||||
social_bind_with_existing:
|
||||
'Hemos encontrado una cuenta relacionada, puede vincularla directamente.',
|
||||
reset_password: 'Restablecer contraseña',
|
||||
reset_password_description:
|
||||
'Ingrese los {{types, lista(type: disyunción;)}} asociados a su cuenta, y le enviaremos el código de verificación para restablecer su contraseña.',
|
||||
new_password: 'Nueva contraseña',
|
||||
set_password: 'Establecer contraseña',
|
||||
password_changed: 'Contraseña cambiada',
|
||||
no_account: '¿No tiene una cuenta todavía? ',
|
||||
have_account: '¿Ya tiene una cuenta?',
|
||||
enter_password: 'Ingrese la contraseña',
|
||||
enter_password_for: 'Inicie sesión con la contraseña de {{method}} {{value}}',
|
||||
enter_username: 'Establecer nombre de usuario',
|
||||
enter_username_description:
|
||||
'El nombre de usuario es una alternativa para iniciar sesión. Debe contener solo letras, números y guiones bajos.',
|
||||
link_email: 'Vincular correo electrónico',
|
||||
link_phone: 'Vincular teléfono',
|
||||
link_email_or_phone: 'Vincular correo electrónico o teléfono',
|
||||
link_email_description:
|
||||
'Para mayor seguridad, por favor vincule su correo electrónico con la cuenta.',
|
||||
link_phone_description: 'Para mayor seguridad, por favor vincule su teléfono con la cuenta.',
|
||||
link_email_or_phone_description:
|
||||
'Para mayor seguridad, por favor vincule su correo electrónico o teléfono con la cuenta.',
|
||||
continue_with_more_information:
|
||||
'Para mayor seguridad, por favor complete los detalles de su cuenta a continuación.',
|
||||
create_your_account: 'Cree su cuenta',
|
||||
sign_in_to_your_account: 'Inicie sesión en su cuenta',
|
||||
no_region_code_found: 'No se encontró código de región',
|
||||
};
|
||||
|
||||
export default description;
|
24
packages/phrases-ui/src/locales/es/error.ts
Normal file
24
packages/phrases-ui/src/locales/es/error.ts
Normal file
|
@ -0,0 +1,24 @@
|
|||
const error = {
|
||||
general_required: `{{types, list(type: disjunction;)}} es requerido`,
|
||||
general_invalid: `El/La {{types, list(type: disjunction;)}} no es válido`,
|
||||
username_required: 'Se requiere un nombre de usuario',
|
||||
password_required: 'Se requiere una contraseña',
|
||||
username_exists: 'El nombre de usuario ya existe',
|
||||
username_should_not_start_with_number: 'El nombre de usuario no debe comenzar con un número',
|
||||
username_invalid_charset:
|
||||
'El nombre de usuario solo debe contener letras, números o guiones bajos.',
|
||||
invalid_email: 'El correo electrónico no es válido',
|
||||
invalid_phone: 'El número de teléfono no es válido',
|
||||
password_min_length: 'La contraseña requiere un mínimo de {{min}} caracteres',
|
||||
invalid_password:
|
||||
'La contraseña requiere un mínimo de {{min}} caracteres y debe contener una combinación de letras, números y símbolos.',
|
||||
passwords_do_not_match: 'Las contraseñas no coinciden. Por favor intente de nuevo',
|
||||
invalid_passcode: 'El código de verificación no es válido',
|
||||
invalid_connector_auth: 'La autorización no es válida',
|
||||
invalid_connector_request: 'Los datos del conector no son válidos',
|
||||
unknown: 'Error desconocido. Por favor intente de nuevo más tarde.',
|
||||
invalid_session: 'No se encontró la sesión. Por favor regrese e inicie sesión nuevamente.',
|
||||
timeout: 'Tiempo de espera de solicitud agotado. Por favor intente de nuevo más tarde.',
|
||||
};
|
||||
|
||||
export default error;
|
19
packages/phrases-ui/src/locales/es/index.ts
Normal file
19
packages/phrases-ui/src/locales/es/index.ts
Normal file
|
@ -0,0 +1,19 @@
|
|||
import action from './action.js';
|
||||
import demo_app from './demo-app.js';
|
||||
import description from './description.js';
|
||||
import error from './error.js';
|
||||
import input from './input.js';
|
||||
import secondary from './secondary.js';
|
||||
|
||||
const en = Object.freeze({
|
||||
translation: {
|
||||
input,
|
||||
secondary,
|
||||
action,
|
||||
description,
|
||||
error,
|
||||
demo_app,
|
||||
},
|
||||
});
|
||||
|
||||
export default en;
|
10
packages/phrases-ui/src/locales/es/input.ts
Normal file
10
packages/phrases-ui/src/locales/es/input.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
const input = {
|
||||
username: 'Nombre de usuario',
|
||||
password: 'Contraseña',
|
||||
email: 'Correo electrónico',
|
||||
phone_number: 'Número de teléfono',
|
||||
confirm_password: 'Confirmar contraseña',
|
||||
search_region_code: 'Código de región de búsqueda',
|
||||
};
|
||||
|
||||
export default input;
|
6
packages/phrases-ui/src/locales/es/secondary.ts
Normal file
6
packages/phrases-ui/src/locales/es/secondary.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
const secondary = {
|
||||
social_bind_with:
|
||||
'¿Ya tienes una cuenta? Inicia sesión para vincular {{methods, list(type: disjunction;)}} con tu identidad social.',
|
||||
};
|
||||
|
||||
export default secondary;
|
|
@ -5,6 +5,7 @@ import { z } from 'zod';
|
|||
|
||||
import de from './locales/de/index.js';
|
||||
import en from './locales/en/index.js';
|
||||
import es from './locales/es/index.js';
|
||||
import fr from './locales/fr/index.js';
|
||||
import ja from './locales/ja/index.js';
|
||||
import ko from './locales/ko/index.js';
|
||||
|
@ -21,13 +22,14 @@ export type I18nKey = NormalizeKeyPaths<typeof en.translation>;
|
|||
export const builtInLanguages = [
|
||||
'de',
|
||||
'en',
|
||||
'es',
|
||||
'fr',
|
||||
'ja',
|
||||
'ko',
|
||||
'pt-PT',
|
||||
'pt-BR',
|
||||
'tr-TR',
|
||||
'zh-CN',
|
||||
'ja',
|
||||
] as const;
|
||||
|
||||
export const builtInLanguageOptions = builtInLanguages.map((languageTag) => ({
|
||||
|
@ -56,6 +58,7 @@ export type Resource = Record<BuiltInLanguageTag, LocalePhrase>;
|
|||
const resource: Resource = {
|
||||
de,
|
||||
en,
|
||||
es,
|
||||
fr,
|
||||
ko,
|
||||
'pt-PT': ptPT,
|
||||
|
|
13
packages/phrases/src/locales/es/errors/auth.ts
Normal file
13
packages/phrases/src/locales/es/errors/auth.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
const auth = {
|
||||
authorization_header_missing: 'Falta encabezado de autorización.',
|
||||
authorization_token_type_not_supported: 'Tipo de autorización no admitido.',
|
||||
unauthorized: 'No autorizado. Por favor, revise las credenciales y su alcance.',
|
||||
forbidden: 'Prohibido. Por favor, revise sus roles y permisos de usuario.',
|
||||
expected_role_not_found:
|
||||
'Rol esperado no encontrado. Por favor, revise sus roles y permisos de usuario.',
|
||||
jwt_sub_missing: 'Falta `sub` en JWT.',
|
||||
require_re_authentication:
|
||||
'Se requiere una nueva autenticación para realizar una acción protegida.',
|
||||
};
|
||||
|
||||
export default auth;
|
40
packages/phrases/src/locales/es/errors/connector.ts
Normal file
40
packages/phrases/src/locales/es/errors/connector.ts
Normal file
|
@ -0,0 +1,40 @@
|
|||
const connector = {
|
||||
general: 'Se produjo un error en el conector: {{errorDescription}}',
|
||||
not_found: 'No se puede encontrar ningún conector disponible para el tipo: {{type}}.',
|
||||
not_enabled: 'El conector no está habilitado.',
|
||||
invalid_metadata: 'Los metadatos del conector son inválidos.',
|
||||
invalid_config_guard: 'El guardia de configuración del conector es inválido.',
|
||||
unexpected_type: 'El tipo del conector es inesperado.',
|
||||
invalid_request_parameters: 'La solicitud contiene parámetros de entrada incorrectos.',
|
||||
insufficient_request_parameters: 'La solicitud puede faltar algunos parámetros de entrada.',
|
||||
invalid_config: 'La configuración del conector es inválida.',
|
||||
invalid_response: 'La respuesta del conector es inválida.',
|
||||
template_not_found:
|
||||
'No se puede encontrar la plantilla correcta en la configuración del conector.',
|
||||
not_implemented: '{{method}}: aún no se ha implementado.',
|
||||
social_invalid_access_token: 'El token de acceso del conector es inválido.',
|
||||
invalid_auth_code: 'El código de autenticación del conector es inválido.',
|
||||
social_invalid_id_token: 'El token de identificación del conector es inválido.',
|
||||
authorization_failed: 'El proceso de autorización del usuario no tuvo éxito.',
|
||||
social_auth_code_invalid:
|
||||
'No se puede obtener el token de acceso, por favor revise el código de autorización.',
|
||||
more_than_one_sms: 'El número de conectores de SMS es mayor que 1.',
|
||||
more_than_one_email: 'El número de conectores de correo electrónico es mayor que 1.',
|
||||
more_than_one_connector_factory:
|
||||
'Se encontraron múltiples fábricas de conectores (con ID {{connectorIds}}), puede desinstalar las innecesarias.',
|
||||
db_connector_type_mismatch: 'Hay un conector en la base de datos que no coincide con el tipo.',
|
||||
not_found_with_connector_id:
|
||||
'No se puede encontrar el conector con el ID estándar de conector proporcionado.',
|
||||
multiple_instances_not_supported:
|
||||
'No se pueden crear múltiples instancias con el conector estándar seleccionado.',
|
||||
invalid_type_for_syncing_profile:
|
||||
'Solo puede sincronizar el perfil de usuario con conectores sociales.',
|
||||
can_not_modify_target: "No se puede modificar el 'objetivo' del conector.",
|
||||
should_specify_target: "Debe especificar el 'objetivo'.",
|
||||
multiple_target_with_same_platform:
|
||||
'No puede tener múltiples conectores sociales que tengan el mismo objetivo y plataforma.',
|
||||
cannot_overwrite_metadata_for_non_standard_connector:
|
||||
"Los 'metadatos' de este conector no se pueden sobrescribir.",
|
||||
};
|
||||
|
||||
export default connector;
|
8
packages/phrases/src/locales/es/errors/entity.ts
Normal file
8
packages/phrases/src/locales/es/errors/entity.ts
Normal file
|
@ -0,0 +1,8 @@
|
|||
const entity = {
|
||||
create_failed: 'Fallo al crear {{name}}.',
|
||||
not_exists: 'El {{name}} no existe.',
|
||||
not_exists_with_id: 'El {{name}} con ID `{{id}}` no existe.',
|
||||
not_found: 'El recurso no existe.',
|
||||
};
|
||||
|
||||
export default entity;
|
9
packages/phrases/src/locales/es/errors/guard.ts
Normal file
9
packages/phrases/src/locales/es/errors/guard.ts
Normal file
|
@ -0,0 +1,9 @@
|
|||
const guard = {
|
||||
invalid_input: 'La solicitud {{type}} es inválida.',
|
||||
invalid_pagination: 'El valor de paginación de la solicitud es inválido.',
|
||||
can_not_get_tenant_id: 'No se puede obtener el ID del inquilino de la solicitud.',
|
||||
file_size_exceeded: 'Se excedió el tamaño del archivo.',
|
||||
mime_type_not_allowed: 'El tipo MIME no está permitido.',
|
||||
};
|
||||
|
||||
export default guard;
|
39
packages/phrases/src/locales/es/errors/index.ts
Normal file
39
packages/phrases/src/locales/es/errors/index.ts
Normal file
|
@ -0,0 +1,39 @@
|
|||
import auth from './auth.js';
|
||||
import connector from './connector.js';
|
||||
import entity from './entity.js';
|
||||
import guard from './guard.js';
|
||||
import localization from './localization.js';
|
||||
import log from './log.js';
|
||||
import oidc from './oidc.js';
|
||||
import password from './password.js';
|
||||
import request from './request.js';
|
||||
import role from './role.js';
|
||||
import scope from './scope.js';
|
||||
import session from './session.js';
|
||||
import sign_in_experiences from './sign-in-experiences.js';
|
||||
import storage from './storage.js';
|
||||
import swagger from './swagger.js';
|
||||
import user from './user.js';
|
||||
import verification_code from './verification-code.js';
|
||||
|
||||
const errors = {
|
||||
request,
|
||||
auth,
|
||||
guard,
|
||||
oidc,
|
||||
user,
|
||||
password,
|
||||
session,
|
||||
connector,
|
||||
verification_code,
|
||||
sign_in_experiences,
|
||||
localization,
|
||||
swagger,
|
||||
entity,
|
||||
log,
|
||||
role,
|
||||
scope,
|
||||
storage,
|
||||
};
|
||||
|
||||
export default errors;
|
8
packages/phrases/src/locales/es/errors/localization.ts
Normal file
8
packages/phrases/src/locales/es/errors/localization.ts
Normal file
|
@ -0,0 +1,8 @@
|
|||
const localization = {
|
||||
cannot_delete_default_language:
|
||||
'{{languageTag}} está establecido como tu idioma predeterminado y no se puede eliminar.',
|
||||
invalid_translation_structure:
|
||||
'Estructuras de datos no válidas. Por favor, verifica tu entrada e intenta de nuevo.',
|
||||
};
|
||||
|
||||
export default localization;
|
5
packages/phrases/src/locales/es/errors/log.ts
Normal file
5
packages/phrases/src/locales/es/errors/log.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
const log = {
|
||||
invalid_type: 'El tipo de registro es inválido.',
|
||||
};
|
||||
|
||||
export default log;
|
20
packages/phrases/src/locales/es/errors/oidc.ts
Normal file
20
packages/phrases/src/locales/es/errors/oidc.ts
Normal file
|
@ -0,0 +1,20 @@
|
|||
const oidc = {
|
||||
aborted: 'El usuario final abortó la interacción.',
|
||||
invalid_scope: 'El alcance {{scope}} no es compatible.',
|
||||
invalid_scope_plural: 'Los alcances {{scopes}} no son compatibles.',
|
||||
invalid_token: 'Se proporcionó un token no válido.',
|
||||
invalid_client_metadata: 'Se proporcionaron metadatos de cliente no válidos.',
|
||||
insufficient_scope: 'El token de acceso no tiene el alcance solicitado {{scopes}}.',
|
||||
invalid_request: 'La solicitud no es válida.',
|
||||
invalid_grant: 'La solicitud de concesión es incorrecta.',
|
||||
invalid_redirect_uri:
|
||||
'La `redirect_uri` no coincide con ninguna de las `redirect_uris` registradas del cliente.',
|
||||
access_denied: 'Acceso denegado.',
|
||||
invalid_target: 'Indicador de recurso no válido.',
|
||||
unsupported_grant_type: 'Tipo de concesión no admitido solicitado.',
|
||||
unsupported_response_mode: 'Modo de respuesta no compatible solicitado.',
|
||||
unsupported_response_type: 'Tipo de respuesta no admitido solicitado.',
|
||||
provider_error: 'Error interno de OIDC: {{message}}.',
|
||||
};
|
||||
|
||||
export default oidc;
|
6
packages/phrases/src/locales/es/errors/password.ts
Normal file
6
packages/phrases/src/locales/es/errors/password.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
const password = {
|
||||
unsupported_encryption_method: 'El método de encriptación {{name}} no es compatible.',
|
||||
pepper_not_found: 'No se encontró el password pepper. Por favor revisa tus variables de entorno.',
|
||||
};
|
||||
|
||||
export default password;
|
6
packages/phrases/src/locales/es/errors/request.ts
Normal file
6
packages/phrases/src/locales/es/errors/request.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
const request = {
|
||||
invalid_input: 'La entrada no es válida. {{detalles}}',
|
||||
general: 'Ocurrió un error en la solicitud.',
|
||||
};
|
||||
|
||||
export default request;
|
11
packages/phrases/src/locales/es/errors/role.ts
Normal file
11
packages/phrases/src/locales/es/errors/role.ts
Normal file
|
@ -0,0 +1,11 @@
|
|||
const role = {
|
||||
name_in_use: 'Este nombre de rol {{name}} ya está en uso',
|
||||
scope_exists: 'El id de alcance {{scopeId}} ya ha sido agregado a este rol',
|
||||
user_exists: 'El id de usuario {{userId}} ya ha sido agregado a este rol',
|
||||
default_role_missing:
|
||||
'Algunos de los nombres de roles predeterminados no existen en la base de datos, por favor asegúrese de crear los roles primero',
|
||||
internal_role_violation:
|
||||
'Tal vez esté intentando actualizar o eliminar un rol interno lo cual es prohibido por Logto. Si está creando un nuevo rol, intente con otro nombre que no empiece con "#internal:".',
|
||||
};
|
||||
|
||||
export default role;
|
6
packages/phrases/src/locales/es/errors/scope.ts
Normal file
6
packages/phrases/src/locales/es/errors/scope.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
const scope = {
|
||||
name_exists: 'El nombre del ámbito {{name}} ya está en uso',
|
||||
name_with_space: 'El nombre del ámbito no puede contener espacios.',
|
||||
};
|
||||
|
||||
export default scope;
|
27
packages/phrases/src/locales/es/errors/session.ts
Normal file
27
packages/phrases/src/locales/es/errors/session.ts
Normal file
|
@ -0,0 +1,27 @@
|
|||
const session = {
|
||||
not_found: 'Sesión no encontrada. Vuelva atrás e inicie sesión nuevamente.',
|
||||
invalid_credentials: 'Cuenta o contraseña incorrecta. Verifique su entrada.',
|
||||
invalid_sign_in_method: 'El método de inicio de sesión actual no está disponible.',
|
||||
invalid_connector_id: 'No se puede encontrar un conector disponible con el id {{connectorId}}.',
|
||||
insufficient_info: 'Información de inicio de sesión insuficiente.',
|
||||
connector_id_mismatch: 'El identificador del conector no coincide con el registro de la sesión.',
|
||||
connector_session_not_found:
|
||||
'No se encuentra la sesión del conector. Vuelva atrás e inicie sesión nuevamente.',
|
||||
verification_session_not_found:
|
||||
'La verificación no se completó correctamente. Reinicie el flujo de verificación e intente de nuevo.',
|
||||
verification_expired:
|
||||
'La conexión ha expirado. Verifique de nuevo para garantizar la seguridad de su cuenta.',
|
||||
unauthorized: 'Inicie sesión primero, por favor.',
|
||||
unsupported_prompt_name: 'Nombre de indicación no compatible.',
|
||||
forgot_password_not_enabled: 'Olvidé la contraseña no está habilitada.',
|
||||
verification_failed:
|
||||
'La verificación no se completó correctamente. Reinicie el flujo de verificación e intente de nuevo.',
|
||||
connector_validation_session_not_found:
|
||||
'No se encuentra la sesión del conector para la validación del token.',
|
||||
identifier_not_found:
|
||||
'Identificador de usuario no encontrado. Vuelva atrás e inicie sesión nuevamente.',
|
||||
interaction_not_found:
|
||||
'No se encuentra la sesión de interacción. Vuelva atrás y vuelva a iniciar la sesión.',
|
||||
};
|
||||
|
||||
export default session;
|
|
@ -0,0 +1,23 @@
|
|||
const sign_in_experiences = {
|
||||
empty_content_url_of_terms_of_use:
|
||||
'URL de contenido vacío de "Términos de uso". Por favor, agregue la URL de contenido si "Términos de uso" está habilitado.',
|
||||
empty_social_connectors:
|
||||
'Conectores sociales vacíos. Por favor, agregue conectores sociales habilitados cuando se habilita el método de inicio de sesión social.',
|
||||
enabled_connector_not_found: 'No se encontró el conector {{type}} habilitado.',
|
||||
not_one_and_only_one_primary_sign_in_method:
|
||||
'Debe haber un único método de inicio de sesión primario. Por favor revise su entrada.',
|
||||
username_requires_password:
|
||||
'Debe habilitar la configuración de contraseña para el identificador de registro de nombre de usuario.',
|
||||
passwordless_requires_verify:
|
||||
'Debe habilitar la verificación para el identificador de registro de correo electrónico/número de teléfono.',
|
||||
miss_sign_up_identifier_in_sign_in:
|
||||
'Los métodos de inicio de sesión deben contener el identificador de registro.',
|
||||
password_sign_in_must_be_enabled:
|
||||
'La firma de contraseña debe estar habilitada cuando se requiere una contraseña en el registro.',
|
||||
code_sign_in_must_be_enabled:
|
||||
'La firma de código de verificación debe estar habilitada cuando no se requiere contraseña en el registro.',
|
||||
unsupported_default_language: 'Este lenguaje - {{language}} no es compatible en este momento.',
|
||||
at_least_one_authentication_factor: 'Debe seleccionar al menos un factor de autenticación.',
|
||||
};
|
||||
|
||||
export default sign_in_experiences;
|
7
packages/phrases/src/locales/es/errors/storage.ts
Normal file
7
packages/phrases/src/locales/es/errors/storage.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
const storage = {
|
||||
not_configured: 'Proveedor de almacenamiento no está configurado.',
|
||||
missing_parameter: 'Falta el parámetro {{parameter}} para el proveedor de almacenamiento.',
|
||||
upload_error: 'Error al cargar el archivo al proveedor de almacenamiento.',
|
||||
};
|
||||
|
||||
export default storage;
|
7
packages/phrases/src/locales/es/errors/swagger.ts
Normal file
7
packages/phrases/src/locales/es/errors/swagger.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
const swagger = {
|
||||
invalid_zod_type: 'Tipo Zod inválido. Por favor, verifique la configuración del guardia de ruta.',
|
||||
not_supported_zod_type_for_params:
|
||||
'Tipo Zod no soportado para los parámetros. Por favor, verifique la configuración del guardia de ruta.',
|
||||
};
|
||||
|
||||
export default swagger;
|
34
packages/phrases/src/locales/es/errors/user.ts
Normal file
34
packages/phrases/src/locales/es/errors/user.ts
Normal file
|
@ -0,0 +1,34 @@
|
|||
const user = {
|
||||
username_already_in_use: 'Este nombre de usuario ya está en uso.',
|
||||
email_already_in_use: 'Este correo electrónico está asociado a una cuenta existente.',
|
||||
phone_already_in_use: 'Este número de teléfono está asociado a una cuenta existente.',
|
||||
invalid_email: 'Dirección de correo electrónico inválida.',
|
||||
invalid_phone: 'Número de teléfono inválido.',
|
||||
email_not_exist: 'La dirección de correo electrónico no ha sido registrada aún.',
|
||||
phone_not_exist: 'El número de teléfono no ha sido registrado aún.',
|
||||
identity_not_exist: 'La cuenta social no ha sido registrada aún.',
|
||||
identity_already_in_use: 'La cuenta social ha sido asociada a una cuenta existente.',
|
||||
social_account_exists_in_profile: 'Ya has asociado esta cuenta social.',
|
||||
cannot_delete_self: 'No puedes eliminarte a ti mismo.',
|
||||
sign_up_method_not_enabled: 'Este método de registro no está habilitado.',
|
||||
sign_in_method_not_enabled: 'Este método de inicio de sesión no está habilitado.',
|
||||
same_password: 'La nueva contraseña no puede ser igual a la anterior.',
|
||||
password_required_in_profile: 'Debes establecer una contraseña antes de iniciar sesión.',
|
||||
new_password_required_in_profile: 'Debes establecer una nueva contraseña.',
|
||||
password_exists_in_profile: 'La contraseña ya existe en tu perfil.',
|
||||
username_required_in_profile: 'Debes establecer un nombre de usuario antes de iniciar sesión.',
|
||||
username_exists_in_profile: 'El nombre de usuario ya existe en tu perfil.',
|
||||
email_required_in_profile:
|
||||
'Debes agregar una dirección de correo electrónico antes de iniciar sesión.',
|
||||
email_exists_in_profile: 'Tu perfil ya está asociado a una dirección de correo electrónico.',
|
||||
phone_required_in_profile: 'Debes agregar un número de teléfono antes de iniciar sesión.',
|
||||
phone_exists_in_profile: 'Tu perfil ya está asociado a un número de teléfono.',
|
||||
email_or_phone_required_in_profile:
|
||||
'Debes agregar una dirección de correo electrónico o un número de teléfono antes de iniciar sesión.',
|
||||
suspended: 'Esta cuenta ha sido suspendida.',
|
||||
user_not_exist: 'No existe un usuario con {{ identifier }}.',
|
||||
missing_profile: 'Debes proporcionar información adicional antes de iniciar sesión.',
|
||||
role_exists: 'El id de rol {{roleId}} ya ha sido agregado a este usuario',
|
||||
};
|
||||
|
||||
export default user;
|
15
packages/phrases/src/locales/es/errors/verification-code.ts
Normal file
15
packages/phrases/src/locales/es/errors/verification-code.ts
Normal file
|
@ -0,0 +1,15 @@
|
|||
const verification_code = {
|
||||
phone_email_empty: 'Tanto el teléfono como el correo electrónico están vacíos.',
|
||||
not_found:
|
||||
'No se encontró el código de verificación. Por favor enviar primero el código de verificación.',
|
||||
phone_mismatch: 'Teléfono no coincide. Por favor solicite un nuevo código de verificación.',
|
||||
email_mismatch:
|
||||
'Correo electrónico no coincide. Por favor solicite un nuevo código de verificación.',
|
||||
code_mismatch: 'Código de verificación inválido.',
|
||||
expired:
|
||||
'El código de verificación ha caducado. Por favor solicite un nuevo código de verificación.',
|
||||
exceed_max_try:
|
||||
'Se ha superado el límite de intentos de verificación de código. Por favor solicite un nuevo código de verificación.',
|
||||
};
|
||||
|
||||
export default verification_code;
|
11
packages/phrases/src/locales/es/index.ts
Normal file
11
packages/phrases/src/locales/es/index.ts
Normal file
|
@ -0,0 +1,11 @@
|
|||
import type { LocalePhrase } from '../../types.js';
|
||||
|
||||
import errors from './errors/index.js';
|
||||
import translation from './translation/index.js';
|
||||
|
||||
const es: LocalePhrase = Object.freeze({
|
||||
translation,
|
||||
errors,
|
||||
});
|
||||
|
||||
export default es;
|
|
@ -0,0 +1,31 @@
|
|||
const api_resource_details = {
|
||||
back_to_api_resources: 'Volver a los recursos de API',
|
||||
settings_tab: 'Configuración',
|
||||
permissions_tab: 'Permisos',
|
||||
settings: 'Configuración',
|
||||
settings_description:
|
||||
'Los recursos de API, también conocidos como indicadores de recurso, indican los servicios o recursos de destino que se solicitarán, generalmente, una variable de formato URI que representa la identidad del recurso.',
|
||||
token_expiration_time_in_seconds: 'Tiempo de expiración del token (en segundos)',
|
||||
token_expiration_time_in_seconds_placeholder: 'Ingrese el tiempo de expiración de su token',
|
||||
delete_description:
|
||||
'Esta acción no se puede deshacer. Eliminará permanentemente el recurso de API. Por favor, ingrese el nombre del recurso de api <span>{{name}}</span> para confirmar.',
|
||||
enter_your_api_resource_name: 'Ingrese el nombre de su recurso de API',
|
||||
api_resource_deleted: 'El recurso de API {{name}} ha sido eliminado con éxito',
|
||||
permission: {
|
||||
create_button: 'Crear permiso',
|
||||
create_title: 'Crear permiso',
|
||||
create_subtitle: 'Define los permisos (scopes) necesarios para esta API.',
|
||||
confirm_create: 'Crear permiso',
|
||||
name: 'Nombre del permiso',
|
||||
name_placeholder: 'leer:recurso',
|
||||
forbidden_space_in_name: 'El nombre del permiso no debe contener espacios.',
|
||||
description: 'Descripción',
|
||||
description_placeholder: 'Capacidad para leer los recursos',
|
||||
permission_created: 'El permiso {{name}} se ha creado correctamente',
|
||||
delete_description:
|
||||
'Si se elimina este permiso, el usuario que tenía este permiso perderá el acceso otorgado por él.',
|
||||
deleted: '¡El permiso "{{name}}" se eliminó con éxito!',
|
||||
},
|
||||
};
|
||||
|
||||
export default api_resource_details;
|
|
@ -0,0 +1,14 @@
|
|||
const api_resources = {
|
||||
title: 'Recursos de API',
|
||||
subtitle: 'Define APIs que las aplicaciones autorizadas pueden utilizar',
|
||||
create: 'Crear recurso de API',
|
||||
api_name: 'Nombre de la API',
|
||||
api_name_placeholder: 'Ingrese el nombre de su API',
|
||||
api_identifier: 'Identificador de API',
|
||||
api_identifier_tip:
|
||||
'El identificador único para el recurso de API. Debe ser una URI absoluta y no tiene componente de fragmento (#). Es igual al <a>parámetro de recurso</a> en OAuth 2.0.',
|
||||
api_resource_created: 'El recurso de API {{name}} se ha creado correctamente',
|
||||
api_identifier_placeholder: 'https://su-identificador-de-api/',
|
||||
};
|
||||
|
||||
export default api_resources;
|
|
@ -0,0 +1,50 @@
|
|||
const detalles_aplicacion = {
|
||||
back_to_applications: 'Volver a Aplicaciones',
|
||||
check_guide: 'Revisar Guía',
|
||||
settings: 'Configuraciones',
|
||||
settings_description:
|
||||
'Las aplicaciones se utilizan para identificar tus aplicaciones en Logto para OIDC, experiencia de inicio de sesión, registros de auditoría, etc.',
|
||||
advanced_settings: 'Configuraciones Avanzadas',
|
||||
advanced_settings_description:
|
||||
'Las configuraciones avanzadas incluyen términos relacionados con OIDC. Puedes revisar el Endpoint del Token para obtener más información.',
|
||||
application_name: 'Nombre de Aplicación',
|
||||
application_name_placeholder: 'Mi App',
|
||||
description: 'Descripción',
|
||||
description_placeholder: 'Ingresa la descripción de tu aplicación',
|
||||
authorization_endpoint: 'Endpoint de Autorización',
|
||||
authorization_endpoint_tip:
|
||||
'El endpoint para la autenticación y autorización. Se utiliza para OpenID Connect <a>Autenticación</a>.',
|
||||
application_id: 'ID de Aplicación',
|
||||
application_id_tip:
|
||||
'El identificador de aplicación único normalmente generado por Logto. También se conoce como “<a>client_id</a>” en OpenID Connect.',
|
||||
application_secret: 'Aplicación Secreta',
|
||||
redirect_uri: 'URI de Redirección',
|
||||
redirect_uris: 'URIs de Redirección',
|
||||
redirect_uri_placeholder: 'https://tu.pagina.com/app',
|
||||
redirect_uri_placeholder_native: 'io.logto://callback',
|
||||
redirect_uri_tip:
|
||||
'El URI hacia donde se redirecciona después de que un usuario inicie sesión (correctamente o no). Consulta OpenID Connect <a>AuthRequest</a> para más información.',
|
||||
post_sign_out_redirect_uri: 'Post Sign-out Redirect URI',
|
||||
post_sign_out_redirect_uris: 'Post Sign-out Redirect URIs',
|
||||
post_sign_out_redirect_uri_placeholder: 'https://tu.pagina.com/home',
|
||||
post_sign_out_redirect_uri_tip:
|
||||
'El URI hacia donde se redirecciona después de que un usuario cierre sesión (opcional). Puede que no tenga efecto para algunos tipos de aplicaciones.',
|
||||
cors_allowed_origins: 'Orígenes permitidos CORS',
|
||||
cors_allowed_origins_placeholder: 'https://tu.pagina.com',
|
||||
cors_allowed_origins_tip:
|
||||
'Por defecto, se permitirán todos los orígenes de los URIs de Redirección. Normalmente no es necesario hacer nada en este campo. Consulta la <a>documentación de MDN</a> para obtener información detallada.',
|
||||
id_token_expiration: 'Vencimiento del Token ID',
|
||||
refresh_token_expiration: 'Vencimiento del Token de Refresco',
|
||||
token_endpoint: 'Endpoint del Token',
|
||||
user_info_endpoint: 'Endpoint del Usuario',
|
||||
enable_admin_access: 'Habilitar acceso de administrador',
|
||||
enable_admin_access_label:
|
||||
'Habilita o deshabilita el acceso a la API de Gestión. Una vez habilitado, puedes utilizar tokens de acceso para llamar a la API de Gestión en nombre de esta aplicación.',
|
||||
delete_description:
|
||||
'Esta acción no se puede deshacer. Eliminará permanentemente la aplicación. Ingresa el nombre de la aplicación <span>{{name}}</span> para confirmar.',
|
||||
enter_your_application_name: 'Ingresa el nombre de tu aplicación',
|
||||
application_deleted: 'Se ha eliminado exitosamente la aplicación {{name}}',
|
||||
redirect_uri_required: 'Debes ingresar al menos un URI de Redirección',
|
||||
};
|
||||
|
||||
export default detalles_aplicacion;
|
|
@ -0,0 +1,53 @@
|
|||
const applications = {
|
||||
title: 'Aplicaciones',
|
||||
subtitle:
|
||||
'Configura la autenticación de Logto para tu aplicación nativa, de página única, de máquina a máquina o tradicional',
|
||||
create: 'Crear aplicación',
|
||||
application_name: 'Nombre de la aplicación',
|
||||
application_name_placeholder: 'Mi App',
|
||||
application_description: 'Descripción de la aplicación',
|
||||
application_description_placeholder: 'Introduce la descripción de tu aplicación',
|
||||
select_application_type: 'Seleccionar un tipo de aplicación',
|
||||
no_application_type_selected: 'Aún no has seleccionado ningún tipo de aplicación',
|
||||
application_created:
|
||||
'¡La aplicación {{name}} se ha creado correctamente! \nAhora completa la configuración de tu aplicación.',
|
||||
app_id: 'ID de la App',
|
||||
type: {
|
||||
native: {
|
||||
title: 'App nativa',
|
||||
subtitle: 'Una aplicación que se ejecuta en un entorno nativo',
|
||||
description: 'Por ejemplo, una app de iOS, una app de Android',
|
||||
},
|
||||
spa: {
|
||||
title: 'App de página única',
|
||||
subtitle:
|
||||
'Una aplicación que se ejecuta en un navegador web y actualiza dinámicamente los datos en su lugar',
|
||||
description: 'Por ejemplo, una app de React DOM, una app de Vue',
|
||||
},
|
||||
traditional: {
|
||||
title: 'Web tradicional',
|
||||
subtitle: 'Una aplicación que renderiza y actualiza páginas solo por el servidor web',
|
||||
description: 'Por ejemplo, Next.js, PHP',
|
||||
},
|
||||
machine_to_machine: {
|
||||
title: 'Máquina a máquina',
|
||||
subtitle: 'Una aplicación (generalmente un servicio) que habla directamente con recursos',
|
||||
description: 'Por ejemplo, servicio backend',
|
||||
},
|
||||
},
|
||||
guide: {
|
||||
get_sample_file: 'Obtener muestra',
|
||||
header_description:
|
||||
'Sigue una guía paso a paso para integrar tu aplicación o haz clic en el botón adecuado para obtener nuestro proyecto de muestra',
|
||||
title: 'La aplicación se ha creado correctamente',
|
||||
subtitle:
|
||||
'Sigue los pasos siguientes para completar la configuración de tu aplicación. Por favor, selecciona el tipo de SDK para continuar.',
|
||||
description_by_sdk:
|
||||
'Esta guía de inicio rápido muestra cómo integrar Logto en la aplicación {{sdk}}',
|
||||
},
|
||||
placeholder_title: 'Selecciona un tipo de aplicación para continuar',
|
||||
placeholder_description:
|
||||
'Logto utiliza una entidad de aplicación para OIDC para ayudar con tareas como la identificación de tus aplicaciones, la gestión de inicio de sesión y la creación de registros de auditoría.',
|
||||
};
|
||||
|
||||
export default applications;
|
|
@ -0,0 +1,114 @@
|
|||
const cloud = {
|
||||
welcome: {
|
||||
title: 'Bienvenido y creemos su propia vista previa de Logto Cloud',
|
||||
description:
|
||||
'Ya sea que sea un usuario de código abierto o en la nube, realice un recorrido por la vitrina y experimente el valor completo de Logto. La vista previa en la nube también sirve como una versión preliminar de Logto Cloud.',
|
||||
project_field: 'Estoy usando Logto para:',
|
||||
project_options: {
|
||||
personal: 'Proyecto personal',
|
||||
company: 'Proyecto empresarial',
|
||||
},
|
||||
deployment_type_field: '¿Prefiere el código abierto o la nube?',
|
||||
deployment_type_options: {
|
||||
open_source: 'Código abierto',
|
||||
cloud: 'Nube',
|
||||
},
|
||||
},
|
||||
about: {
|
||||
title: 'Un poco sobre ti',
|
||||
description:
|
||||
'Hagamos que su experiencia de Logto sea única para usted al conocerlo mejor. Su información está segura con nosotros.',
|
||||
title_field: 'Tu título',
|
||||
title_options: {
|
||||
developer: 'Desarrollador',
|
||||
team_lead: 'Líder de equipo',
|
||||
ceo: 'CEO',
|
||||
cto: 'CTO',
|
||||
product: 'Producto',
|
||||
others: 'Otros',
|
||||
},
|
||||
company_name_field: 'Nombre de la empresa',
|
||||
company_name_placeholder: 'Acme.co',
|
||||
company_size_field: '¿Cómo es el tamaño de su empresa?',
|
||||
company_options: {
|
||||
size_1: '1',
|
||||
size_2_49: '2-49',
|
||||
size_50_199: '50-199',
|
||||
size_200_999: '200-999',
|
||||
size_1000_plus: '1000+',
|
||||
},
|
||||
reason_field: 'Me registro porque',
|
||||
reason_options: {
|
||||
passwordless: 'Buscando autenticación sin contraseña y kit de IU',
|
||||
efficiency: 'Encontrar una infraestructura de identidad lista para usar',
|
||||
access_control: 'Controlar el acceso del usuario en función de roles y responsabilidades',
|
||||
multi_tenancy: 'Buscando estrategias para un producto de multipropiedad',
|
||||
enterprise: 'Encontrar soluciones SSO para la preparación empresarial',
|
||||
others: 'Otros',
|
||||
},
|
||||
},
|
||||
congrats: {
|
||||
title: '¡Excelentes noticias! ¡Está calificado para ganar crédito anticipado de Logto Cloud!',
|
||||
description:
|
||||
'¡No pierda la oportunidad de disfrutar de una suscripción gratuita de <strong>60 días</strong> a Logto Cloud después de su lanzamiento oficial! Comuníquese con el equipo de Logto ahora para obtener más información.',
|
||||
check_out_button: 'Ver la vista previa en vivo',
|
||||
reserve_title: 'Reserve su tiempo con el equipo de Logto',
|
||||
reserve_description: 'El crédito solo es elegible una vez validado.',
|
||||
book_button: 'Programar ahora',
|
||||
join_description:
|
||||
'Únase a nuestro <a>{{link}}</a> público para conectarse y charlar con otros desarrolladores.',
|
||||
discord_link: 'canal de discordia',
|
||||
enter_admin_console: 'Ingrese a Logto Cloud Preview',
|
||||
},
|
||||
gift: {
|
||||
title: 'Use Logto Cloud gratis durante 60 días. ¡Únase a los pioneros ahora!',
|
||||
description:
|
||||
'Reserve una sesión individual con nuestro equipo para obtener crédito anticipado.',
|
||||
reserve_title: 'Reserve su tiempo con el equipo de Logto',
|
||||
reserve_description: 'El crédito solo es elegible una vez evaluado.',
|
||||
book_button: 'Reservar',
|
||||
},
|
||||
sie: {
|
||||
title: 'Primero personalicemos su experiencia de inicio de sesión con facilidad',
|
||||
inspire: {
|
||||
title: 'Crear ejemplos convincentes',
|
||||
description:
|
||||
'¿Se siente inseguro acerca de la experiencia de inicio de sesión? ¡Simplemente haga clic en "Inspíreme" y deje que suceda la magia!',
|
||||
inspire_me: 'Inspírame',
|
||||
},
|
||||
logo_field: 'Logotipo de la aplicación',
|
||||
color_field: 'Color de marca',
|
||||
identifier_field: 'Identificador',
|
||||
identifier_options: {
|
||||
email: 'Correo electrónico',
|
||||
phone: 'Teléfono',
|
||||
user_name: 'Nombre de usuario',
|
||||
},
|
||||
authn_field: 'Autenticación',
|
||||
authn_options: {
|
||||
password: 'Contraseña',
|
||||
verification_code: 'Código de verificación',
|
||||
},
|
||||
social_field: 'Inicio de sesión social',
|
||||
finish_and_done: 'Terminar y listo',
|
||||
preview: {
|
||||
mobile_tab: 'Móvil',
|
||||
web_tab: 'Web',
|
||||
},
|
||||
connectors: {
|
||||
unlocked_later: 'Desbloqueado más adelante',
|
||||
unlocked_later_tip:
|
||||
'Una vez que haya completado el proceso de incorporación y haya ingresado al producto, tendrá acceso a una mayor cantidad de métodos de inicio de sesión social.',
|
||||
notice:
|
||||
'Evite utilizar el conector de demostración con fines de producción. Una vez que haya completado las pruebas, elimine amablemente el conector de demostración y configure su propio conector con sus credenciales.',
|
||||
},
|
||||
},
|
||||
broadcast: '📣 Está en Logto Cloud (Preview)',
|
||||
socialCallback: {
|
||||
title: 'Ha iniciado sesión correctamente',
|
||||
description:
|
||||
'Ha iniciado sesión correctamente utilizando su cuenta social. Para garantizar una integración perfecta y el acceso a todas las funciones de Logto, recomendamos que proceda a configurar su propio conector social.',
|
||||
},
|
||||
};
|
||||
|
||||
export default cloud;
|
|
@ -0,0 +1,15 @@
|
|||
const components = {
|
||||
uploader: {
|
||||
action_description: 'Arrastra y suelta o busca',
|
||||
uploading: 'Subiendo...',
|
||||
image_limit:
|
||||
'Sube imágenes de menos de {{size, number}}KB, solo {{extensions, list(style: narrow; type: conjunction;)}}.',
|
||||
error_upload: 'Algo salió mal. La subida de archivos falló.',
|
||||
error_file_size:
|
||||
'El archivo es demasiado grande. Por favor, sube un archivo de menos de {{size, number}}KB.',
|
||||
error_file_type:
|
||||
'El tipo de archivo no es compatible. Solo {{extensions, list(style: narrow; type: conjunction;)}}.',
|
||||
},
|
||||
};
|
||||
|
||||
export default components;
|
|
@ -0,0 +1,34 @@
|
|||
const detalles_conector = {
|
||||
back_to_connectors: 'Volver a conectores',
|
||||
check_readme: 'Ver el archivo README',
|
||||
settings: 'Configuraciones generales',
|
||||
settings_description:
|
||||
'Los conectores desempeñan un papel fundamental en Logto. Con su ayuda, Logto permite que los usuarios finales utilicen el registro o inicio de sesión sin contraseña y las capacidades para iniciar sesión con cuentas sociales.',
|
||||
parameter_configuration: 'Configuración de parámetros',
|
||||
test_connection: 'Probar conexión',
|
||||
save_error_empty_config: 'Por favor, ingrese la configuración',
|
||||
send: 'Enviar',
|
||||
send_error_invalid_format: 'Entrada no válida',
|
||||
edit_config_label: 'Ingrese su JSON aquí',
|
||||
test_email_sender: 'Probar su conector de correo electrónico',
|
||||
test_sms_sender: 'Probar su conector de SMS',
|
||||
test_email_placeholder: 'john.doe@example.com',
|
||||
test_sms_placeholder: '+1 555-123-4567',
|
||||
test_message_sent: 'Mensaje de prueba enviado',
|
||||
test_sender_description:
|
||||
'Logto utiliza la plantilla "Generic" para realizar pruebas. Recibirá un mensaje si su conector está configurado correctamente.',
|
||||
options_change_email: 'Cambiar conector de correo electrónico',
|
||||
options_change_sms: 'Cambiar conector de SMS',
|
||||
connector_deleted: 'El conector ha sido eliminado con éxito',
|
||||
type_email: 'Conector de correo electrónico',
|
||||
type_sms: 'Conector de SMS',
|
||||
type_social: 'Conector social',
|
||||
in_used_social_deletion_description:
|
||||
'Este conector se utiliza en su experiencia de inicio de sesión. Al eliminarlo, la experiencia de inicio de sesión de <name/> se eliminará en la configuración de la experiencia de inicio de sesión. Deberá reconfigurarlo si decide agregarlo nuevamente.',
|
||||
in_used_passwordless_deletion_description:
|
||||
'Este {{name}} se utiliza en su experiencia de inicio de sesión. Al eliminarlo, su experiencia de inicio de sesión no funcionará correctamente hasta que resuelva el conflicto. Deberá reconfigurarlo si decide agregarlo nuevamente.',
|
||||
deletion_description:
|
||||
'Está eliminando este conector. No se puede deshacer, y deberá reconfigurarlo si decide agregarlo nuevamente.',
|
||||
};
|
||||
|
||||
export default detalles_conector;
|
|
@ -0,0 +1,90 @@
|
|||
const connectors = {
|
||||
title: 'Conectores',
|
||||
subtitle:
|
||||
'Configure conectores para habilitar la experiencia de inicio de sesión sin contraseña y con redes sociales',
|
||||
create: 'Agregar conector social',
|
||||
config_sie_notice: 'Has configurado conectores. Asegúrate de configurarlo en <a>{{link}}</a>.',
|
||||
config_sie_link_text: 'experiencia de inicio de sesión',
|
||||
tab_email_sms: 'Conectores de correo electrónico y SMS',
|
||||
tab_social: 'Conectores sociales',
|
||||
connector_name: 'Nombre del conector',
|
||||
demo_tip:
|
||||
'El número máximo de mensajes permitidos para este conector de demostración está limitado a 100 y no se recomienda para implementación en un entorno de producción.',
|
||||
social_demo_tip:
|
||||
'El conector de demostración está diseñado exclusivamente para fines de demostración y no se recomienda para implementación en un entorno de producción.',
|
||||
connector_type: 'Tipo',
|
||||
connector_status: 'Experiencia de inicio de sesión',
|
||||
connector_status_in_use: 'En uso',
|
||||
connector_status_not_in_use: 'No en uso',
|
||||
not_in_use_tip: {
|
||||
content:
|
||||
'No en uso significa que tu experiencia de inicio de sesión no ha utilizado este método de inicio de sesión. <a>{{link}}</a> para agregar este método de inicio de sesión. ',
|
||||
go_to_sie: 'Ir a la experiencia de inicio de sesión',
|
||||
},
|
||||
placeholder_title: 'Conector social',
|
||||
placeholder_description:
|
||||
'Logto ha proporcionado muchos conectores de inicio de sesión social ampliamente utilizados, mientras tanto, puede crear el suyo con protocolos estándar.',
|
||||
save_and_done: 'Guardar y finalizar',
|
||||
type: {
|
||||
email: 'Conector de correo electrónico',
|
||||
sms: 'Conector SMS',
|
||||
social: 'Conector social',
|
||||
},
|
||||
setup_title: {
|
||||
email: 'Configure el conector de correo electrónico',
|
||||
sms: 'Configure el conector SMS',
|
||||
social: 'Agregar conector social',
|
||||
},
|
||||
guide: {
|
||||
subtitle: 'Una guía paso a paso para configurar su conector',
|
||||
general_setting: 'Configuraciones generales',
|
||||
parameter_configuration: 'Configuración de parámetros',
|
||||
test_connection: 'Prueba de conexión',
|
||||
name: 'Nombre para el botón de inicio de sesión social',
|
||||
name_placeholder: 'Ingrese el nombre para el botón de inicio de sesión social',
|
||||
name_tip:
|
||||
'El nombre del botón del conector se mostrará como "Continuar con {{name}}". Siempre tenga en cuenta la longitud del nombre en caso de que sea demasiado largo.',
|
||||
logo: 'URL del logotipo para el botón de inicio de sesión social',
|
||||
logo_placeholder: 'https://tudominio.cdn/logo.png',
|
||||
logo_tip:
|
||||
'La imagen del logotipo se mostrará en el conector. Obtenga un enlace de imagen accesible públicamente e insértelo aquí.',
|
||||
logo_dark: 'URL del logotipo para el botón de inicio de sesión social (modo oscuro)',
|
||||
logo_dark_placeholder: 'https://tudominio.cdn/logo.png',
|
||||
logo_dark_tip:
|
||||
'Configure el logotipo de su conector para el modo oscuro después de activarlo en la Experiencia de inicio de sesión del Panel de administrador.',
|
||||
logo_dark_collapse: 'Colapso',
|
||||
logo_dark_show: 'Mostrar configuración de logotipo para modo oscuro',
|
||||
target: 'Nombre del proveedor de identidad',
|
||||
target_placeholder: 'Ingrese el nombre del proveedor de identidad del conector',
|
||||
target_tip:
|
||||
'El valor de "nombre del IdP" puede ser una cadena de identificador única para distinguir sus identificadores sociales. Esta configuración no se puede cambiar después de crear el conector.',
|
||||
target_tooltip:
|
||||
'El "nombre del IdP" en los conectores sociales de Logto se refiere a la "fuente" de sus identidades sociales. En el diseño de Logto, no aceptamos el mismo "nombre del IdP" de una plataforma específica para evitar conflictos. Debe ser muy cuidadoso antes de agregar un conector ya que NO PUEDE cambiar su valor una vez que lo crea. <a>Obtener más información.</a>',
|
||||
target_conflict:
|
||||
'El nombre del IdP ingresado coincide con el conector de nombre <span></span>. Utilizar el mismo nombre del IdP puede provocar un comportamiento de inicio de sesión inesperado donde los usuarios pueden acceder a la misma cuenta a través de dos conectores diferentes.',
|
||||
target_conflict_line2:
|
||||
'Si desea reemplazar el conector actual con el mismo proveedor de identidad y permitir que los usuarios anteriores inicien sesión sin registrarse nuevamente, elimine el conector <span></span> y cree uno nuevo con el mismo "nombre de IdP".',
|
||||
target_conflict_line3:
|
||||
'Si desea conectarse a un proveedor de identidad diferente, modifique el "nombre del IdP" y continúe.',
|
||||
config: 'Ingrese su JSON de configuración',
|
||||
sync_profile: 'Sincronizar información del perfil',
|
||||
sync_profile_only_at_sign_up: 'Sincronice solo en el registro',
|
||||
sync_profile_each_sign_in: 'Siempre sincronice en cada inicio de sesión',
|
||||
sync_profile_tip:
|
||||
'Sincronice el perfil básico del proveedor social, como los nombres de los usuarios y sus avatares.',
|
||||
callback_uri: 'URI de devolución de llamada',
|
||||
callback_uri_description:
|
||||
'También llamado URI de redireccionamiento, es la URI en Logto a la que se enviarán los usuarios después de la autorización social, copie y pegue en la página de configuración del proveedor social.',
|
||||
},
|
||||
platform: {
|
||||
universal: 'Universal',
|
||||
web: 'Web',
|
||||
native: 'Nativo',
|
||||
},
|
||||
add_multi_platform: 'admite múltiples plataformas, seleccione una plataforma para continuar',
|
||||
drawer_title: 'Guía del conector',
|
||||
drawer_subtitle: 'Siga las instrucciones para integrar su conector',
|
||||
unknown: 'Conector desconocido',
|
||||
};
|
||||
|
||||
export default connectors;
|
|
@ -0,0 +1,22 @@
|
|||
const contact = {
|
||||
title: 'Contáctanos',
|
||||
description:
|
||||
'Únete a nuestra comunidad para proporcionar comentarios, pedir ayuda y compartir tus ideas con otros desarrolladores',
|
||||
discord: {
|
||||
title: 'Canal de Discord',
|
||||
description: 'Únete a nuestro canal público para chatear con otros desarrolladores',
|
||||
button: 'Únete',
|
||||
},
|
||||
github: {
|
||||
title: 'GitHub',
|
||||
description: 'Crea un problema y envíalo en GitHub',
|
||||
button: 'Abrir',
|
||||
},
|
||||
email: {
|
||||
title: 'Enviar correo electrónico',
|
||||
description: 'Envíanos un correo electrónico para obtener más información y ayuda',
|
||||
button: 'Enviar',
|
||||
},
|
||||
};
|
||||
|
||||
export default contact;
|
|
@ -0,0 +1,22 @@
|
|||
const dashboard = {
|
||||
title: 'Dashboard',
|
||||
description: 'Obtén una vista general sobre el rendimiento de tu aplicación',
|
||||
total_users: 'Usuarios totales',
|
||||
total_users_tip: 'Usuarios totales',
|
||||
new_users_today: 'Nuevos usuarios hoy',
|
||||
new_users_today_tip: 'Número de nuevos usuarios registrados en tu aplicación hoy',
|
||||
new_users_7_days: 'Nuevos usuarios últimos 7 días',
|
||||
new_users_7_days_tip:
|
||||
'Número de nuevos usuarios registrados en tu aplicación en los últimos 7 días',
|
||||
daily_active_users: 'Usuarios activos diarios',
|
||||
daily_active_users_tip:
|
||||
'Número de usuarios únicos que intercambiaron tokens en tu aplicación hoy',
|
||||
weekly_active_users: 'Usuarios activos semanales',
|
||||
weekly_active_users_tip:
|
||||
'Número de usuarios únicos que intercambiaron tokens en tu aplicación en los últimos 7 días',
|
||||
monthly_active_users: 'Usuarios activos mensuales',
|
||||
monthly_active_users_tip:
|
||||
'Número de usuarios únicos que intercambiaron tokens en tu aplicación en los últimos 30 días',
|
||||
};
|
||||
|
||||
export default dashboard;
|
|
@ -0,0 +1,25 @@
|
|||
const errors = {
|
||||
something_went_wrong: '¡Oops! Algo salió mal.',
|
||||
page_not_found: 'Página no encontrada',
|
||||
unknown_server_error: 'Ocurrió un error desconocido en el servidor',
|
||||
empty: 'Sin datos',
|
||||
missing_total_number: 'No se puede encontrar Total-Number en los encabezados de respuesta',
|
||||
invalid_uri_format: 'Formato de URI no válido',
|
||||
invalid_origin_format: 'Formato de origen de URI no válido',
|
||||
invalid_json_format: 'Formato JSON no válido',
|
||||
invalid_error_message_format: 'El formato del mensaje de error es inválido.',
|
||||
required_field_missing: 'Por favor ingrese {{field}}',
|
||||
required_field_missing_plural: 'Tienes que ingresar al menos un {{field}}',
|
||||
more_details: 'Más detalles',
|
||||
username_pattern_error:
|
||||
'El nombre de usuario solo debe contener letras, números o guiones bajos y no debe comenzar con un número.',
|
||||
password_pattern_error:
|
||||
'La contraseña requiere un mínimo de {{min}} caracteres y contiene una combinación de letras, números y símbolos.',
|
||||
insecure_contexts: 'Los contextos inseguros (no HTTPS) no son compatibles.',
|
||||
unexpected_error: 'Ocurrió un error inesperado.',
|
||||
not_found: '404 no encontrado',
|
||||
create_internal_role_violation:
|
||||
'Estás creando un nuevo rol interno que está prohibido por Logto. Prueba con otro nombre que no comience con "#intern:".',
|
||||
};
|
||||
|
||||
export default errors;
|
|
@ -0,0 +1,56 @@
|
|||
const general = {
|
||||
placeholder: 'Marcador de posición',
|
||||
skip: 'Omitir',
|
||||
next: 'Siguiente',
|
||||
back: 'Atrás',
|
||||
retry: 'Intentar de Nuevo',
|
||||
done: 'Hecho',
|
||||
search: 'Buscar',
|
||||
search_placeholder: 'Buscar',
|
||||
clear_result: 'Borrar Resultados',
|
||||
save: 'Guardar',
|
||||
save_changes: 'Guardar Cambios',
|
||||
saved: 'Guardado!',
|
||||
discard: 'Descartar',
|
||||
loading: 'Cargando...',
|
||||
redirecting: 'Redirigiendo...',
|
||||
add: 'Agregar',
|
||||
added: 'Agregado',
|
||||
cancel: 'Cancelar',
|
||||
confirm: 'Confirmar',
|
||||
check_out: 'Comprar',
|
||||
create: 'Crear',
|
||||
set_up: 'Configurar',
|
||||
customize: 'Personalizar',
|
||||
enable: 'Habilitar',
|
||||
reminder: 'Recordatorio',
|
||||
delete: 'Eliminar',
|
||||
more_options: 'MÁS OPCIONES',
|
||||
close: 'Cerrar',
|
||||
copy: 'Copiar',
|
||||
copying: 'Copiando',
|
||||
copied: 'Copiado',
|
||||
required: 'Requerido',
|
||||
add_another: 'Agregar Otro',
|
||||
deletion_confirmation: '¿Está seguro que desea eliminar este {{title}}?',
|
||||
settings_nav: 'Configuración',
|
||||
unsaved_changes_warning:
|
||||
'Ha realizado algunos cambios. ¿Está seguro que desea salir de esta página?',
|
||||
leave_page: 'Salir de la Página',
|
||||
stay_on_page: 'Permanecer en la Página',
|
||||
type_to_search: 'Escriba para buscar',
|
||||
got_it: 'Entendido',
|
||||
continue: 'Continuar',
|
||||
page_info: '{{min, number}}-{{max, number}} de {{total, number}}',
|
||||
learn_more: 'Saber más',
|
||||
tab_errors: '{{count, number}} errores',
|
||||
skip_for_now: 'Omitir por ahora',
|
||||
remove: 'Eliminar',
|
||||
visit: 'Visitar',
|
||||
join: 'Unirse',
|
||||
try_now: 'Probar Ahora',
|
||||
multiple_form_field: '(Múltiple)',
|
||||
demo: 'Demostración',
|
||||
};
|
||||
|
||||
export default general;
|
|
@ -0,0 +1,35 @@
|
|||
const get_started = {
|
||||
progress: 'Guía de inicio: {{completado}}/{{total}}',
|
||||
progress_dropdown_title: 'Algunas cosas que puedes hacer...',
|
||||
title: 'Algo para explorar que te ayudará a tener éxito',
|
||||
subtitle_part1: 'Algunas cosas que puedes hacer para obtener rápidamente el valor de Logto',
|
||||
subtitle_part2: 'Soy un profesional y he completado todos los pasos.',
|
||||
hide_this: 'Ocultar esto',
|
||||
confirm_message:
|
||||
'¿Estás seguro de que quieres ocultar esta página? Esta acción no se puede deshacer.',
|
||||
check_preview_title: 'Comprueba la vista previa en vivo',
|
||||
check_preview_subtitle:
|
||||
'Prueba la experiencia de inicio de sesión de Logto ahora para ver cómo funciona',
|
||||
integration_title: 'Crea e integra tu aplicación',
|
||||
integration_subtitle:
|
||||
'Configura la autenticación de Logto para tu aplicación nativa, de una sola página, de máquina a máquina o tradicional',
|
||||
custom_sie_title: 'Personaliza la experiencia de inicio de sesión',
|
||||
custom_sie_subtitle: 'Desbloquea una amplia gama de escenarios con opciones avanzadas',
|
||||
passwordless_title:
|
||||
'Escalabilidad del inicio de sesión sin contraseña agregando tus propios conectores',
|
||||
passwordless_subtitle:
|
||||
'Prueba el inicio de sesión sin contraseña y habilita una experiencia segura y sin fricciones para tus clientes',
|
||||
community_title: 'Únete a nuestra comunidad de Discordia',
|
||||
community_subtitle: 'Únete a nuestro canal público para chatear con otros desarrolladores',
|
||||
management_api_title: 'Interactúa con la API de administración',
|
||||
management_api_subtitle:
|
||||
'Conecta directamente tu sistema de autenticación a nuestra API de administración',
|
||||
further_readings_title: 'Lecturas adicionales',
|
||||
further_readings_subtitle:
|
||||
'Consulta nuestra documentación paso a paso y basada en escenarios sin conceptos tediosos',
|
||||
add_rbac_title: 'Agrega control de acceso basado en roles para proteger tus recursos',
|
||||
add_rbac_subtitle:
|
||||
'Controla tus recursos a través de una autorización basada en roles escalable para diversos casos de uso.',
|
||||
};
|
||||
|
||||
export default get_started;
|
|
@ -0,0 +1,62 @@
|
|||
import api_resource_details from './api-resource-details.js';
|
||||
import api_resources from './api-resources.js';
|
||||
import application_details from './application-details.js';
|
||||
import applications from './applications.js';
|
||||
import cloud from './cloud.js';
|
||||
import components from './components.js';
|
||||
import connector_details from './connector-details.js';
|
||||
import connectors from './connectors.js';
|
||||
import contact from './contact.js';
|
||||
import dashboard from './dashboard.js';
|
||||
import errors from './errors.js';
|
||||
import general from './general.js';
|
||||
import get_started from './get-started.js';
|
||||
import log_details from './log-details.js';
|
||||
import logs from './logs.js';
|
||||
import menu from './menu.js';
|
||||
import permissions from './permissions.js';
|
||||
import profile from './profile.js';
|
||||
import role_details from './role-details.js';
|
||||
import roles from './roles.js';
|
||||
import session_expired from './session-expired.js';
|
||||
import sign_in_exp from './sign-in-exp/index.js';
|
||||
import tab_sections from './tab-sections.js';
|
||||
import tabs from './tabs.js';
|
||||
import user_details from './user-details.js';
|
||||
import users from './users.js';
|
||||
import welcome from './welcome.js';
|
||||
|
||||
const admin_console = {
|
||||
title: 'Consola de administración',
|
||||
admin_user: 'Admin',
|
||||
system_app: 'Sistema',
|
||||
menu,
|
||||
general,
|
||||
errors,
|
||||
tab_sections,
|
||||
tabs,
|
||||
applications,
|
||||
application_details,
|
||||
api_resources,
|
||||
api_resource_details,
|
||||
connectors,
|
||||
connector_details,
|
||||
get_started,
|
||||
users,
|
||||
user_details,
|
||||
contact,
|
||||
sign_in_exp,
|
||||
dashboard,
|
||||
logs,
|
||||
log_details,
|
||||
session_expired,
|
||||
welcome,
|
||||
roles,
|
||||
role_details,
|
||||
permissions,
|
||||
cloud,
|
||||
profile,
|
||||
components,
|
||||
};
|
||||
|
||||
export default admin_console;
|
|
@ -0,0 +1,17 @@
|
|||
const log_details = {
|
||||
back_to_logs: 'Volver a los registros de auditoría',
|
||||
back_to_user: 'Volver a {{name}}',
|
||||
success: 'Éxito',
|
||||
failed: 'Fallido',
|
||||
event_key: 'Clave del evento',
|
||||
application: 'Aplicación',
|
||||
ip_address: 'Dirección IP',
|
||||
user: 'Usuario',
|
||||
log_id: 'ID de registro',
|
||||
time: 'Tiempo',
|
||||
user_agent: 'Agente de usuario',
|
||||
tab_details: 'Detalles',
|
||||
raw_data: 'Datos sin procesar',
|
||||
};
|
||||
|
||||
export default log_details;
|
|
@ -0,0 +1,11 @@
|
|||
const logs = {
|
||||
title: 'Registros de auditoría',
|
||||
subtitle: 'Ver datos de registro de eventos de autenticación realizados por sus usuarios.',
|
||||
event: 'Evento',
|
||||
user: 'Usuario',
|
||||
application: 'Aplicación',
|
||||
time: 'Tiempo',
|
||||
filter_by: 'Filtrar por',
|
||||
};
|
||||
|
||||
export default logs;
|
|
@ -0,0 +1,13 @@
|
|||
const menu = {
|
||||
profile: 'Perfil',
|
||||
language: 'Idioma',
|
||||
appearance: {
|
||||
label: 'Apariencia',
|
||||
light: 'Modo Claro',
|
||||
dark: 'Modo Oscuro',
|
||||
system: 'Sincronizar con el sistema',
|
||||
},
|
||||
sign_out: 'Cerrar sesión',
|
||||
};
|
||||
|
||||
export default menu;
|
|
@ -0,0 +1,12 @@
|
|||
const permissions = {
|
||||
search_placeholder: 'Buscar por API o nombre de permiso',
|
||||
search_placeholder_without_api: 'Buscar por nombre de permiso',
|
||||
name_column: 'Permiso',
|
||||
description_column: 'Descripción',
|
||||
api_column: 'API',
|
||||
placeholder_title: 'Permiso',
|
||||
placeholder_description:
|
||||
'Permiso se refiere a la autorización para acceder a un recurso (lo llamamos recurso de API).',
|
||||
};
|
||||
|
||||
export default permissions;
|
|
@ -0,0 +1,83 @@
|
|||
const profile = {
|
||||
title: 'Configuración de cuenta',
|
||||
description:
|
||||
'Cambie su configuración de cuenta y administre su información personal aquí para garantizar la seguridad de su cuenta.',
|
||||
settings: {
|
||||
title: 'AJUSTES DE PERFIL',
|
||||
profile_information: 'Información del perfil',
|
||||
avatar: 'Avatar',
|
||||
name: 'Nombre',
|
||||
username: 'Nombre de usuario',
|
||||
},
|
||||
link_account: {
|
||||
title: 'ENLAZAR CUENTA',
|
||||
email_sign_in: 'Inicio de sesión por correo electrónico',
|
||||
email: 'Correo electrónico',
|
||||
social_sign_in: 'Inicio de sesión social',
|
||||
link_email: 'Vincular correo electrónico',
|
||||
link_email_subtitle:
|
||||
'Vincule su correo electrónico para iniciar sesión o ayudar con la recuperación de la cuenta.',
|
||||
email_required: 'Se requiere correo electrónico',
|
||||
invalid_email: 'Dirección de correo electrónico no válida',
|
||||
identical_email_address:
|
||||
'La dirección de correo electrónico de entrada es idéntica a la actual',
|
||||
anonymous: 'Anónimo',
|
||||
},
|
||||
password: {
|
||||
title: 'CONTRASEÑA Y SEGURIDAD',
|
||||
password: 'Contraseña',
|
||||
password_setting: 'Configuración de contraseña',
|
||||
new_password: 'Nueva contraseña',
|
||||
confirm_password: 'Confirmar contraseña',
|
||||
enter_password: 'Ingrese contraseña',
|
||||
enter_password_subtitle: 'Verifique que sea usted para proteger la seguridad de su cuenta.',
|
||||
set_password: 'Establecer contraseña',
|
||||
verify_via_password: 'Verificar mediante contraseña',
|
||||
show_password: 'Mostrar contraseña',
|
||||
required: 'Se requiere contraseña',
|
||||
min_length: 'La contraseña requiere un mínimo de {{min}} caracteres',
|
||||
do_not_match: 'Las contraseñas no coinciden. Inténtelo de nuevo.',
|
||||
},
|
||||
code: {
|
||||
enter_verification_code: 'Ingrese el código de verificación',
|
||||
enter_verification_code_subtitle:
|
||||
'El código de verificación se ha enviado a <strong>{{target}}</strong>',
|
||||
verify_via_code: 'Verificar mediante el código de verificación',
|
||||
resend: 'Reenviar código de verificación',
|
||||
resend_countdown: 'Reenviar en {{countdown}} segundos',
|
||||
},
|
||||
delete_account: {
|
||||
title: 'ELIMINAR CUENTA',
|
||||
label: 'Eliminar cuenta',
|
||||
description:
|
||||
'La eliminación de su cuenta eliminará toda su información personal, datos de usuario y configuración. Esta acción no se puede deshacer.',
|
||||
button: 'Eliminar cuenta',
|
||||
dialog_paragraph_1:
|
||||
'Lamentamos mucho que quiera eliminar su cuenta. La eliminación de su cuenta eliminará permanentemente todos los datos, incluida la información del usuario, los registros y la configuración, y esta acción no se puede deshacer. Por lo tanto, asegúrese de realizar una copia de seguridad de cualquier dato importante antes de continuar.',
|
||||
dialog_paragraph_2:
|
||||
'Para iniciar el proceso de eliminación de la cuenta, envíe un correo electrónico a nuestro equipo de soporte en <a>{{mail}}</a> con el asunto "Solicitud de eliminación de cuenta". Le ayudaremos y nos aseguraremos de que todos sus datos se eliminen correctamente de nuestro sistema.',
|
||||
dialog_paragraph_3:
|
||||
'Gracias por elegir Logto Cloud. Si tiene más preguntas o inquietudes, no dude en comunicarse con nosotros.',
|
||||
},
|
||||
set: 'Establecer',
|
||||
change: 'Cambiar',
|
||||
link: 'Vincular',
|
||||
unlink: 'Desvincular',
|
||||
not_set: 'No configurado',
|
||||
change_avatar: 'Cambiar avatar',
|
||||
change_name: 'Cambiar nombre',
|
||||
change_username: 'Cambiar nombre de usuario',
|
||||
set_name: 'Establecer nombre',
|
||||
email_changed: '¡Se cambió el correo electrónico!',
|
||||
password_changed: '¡Se cambió la contraseña!',
|
||||
updated: '¡{{target}} actualizado!',
|
||||
linked: '¡{{target}} vinculado!',
|
||||
unlinked: '¡{{target}} desvinculado!',
|
||||
email_exists_reminder:
|
||||
'Este correo electrónico {{email}} está asociado con una cuenta existente. Vincule otro correo electrónico aquí.',
|
||||
unlink_confirm_text: 'Sí, desvincular',
|
||||
unlink_reminder:
|
||||
'Los usuarios no podrán iniciar sesión con la cuenta <span></span> si la desvincula. ¿Estás seguro de que quieres continuar?',
|
||||
};
|
||||
|
||||
export default profile;
|
|
@ -0,0 +1,50 @@
|
|||
const role_details = {
|
||||
back_to_roles: 'Volver a roles',
|
||||
identifier: 'Identificador',
|
||||
delete_description:
|
||||
'Al hacerlo, se eliminarán los permisos asociados con este rol de los usuarios afectados y se eliminará la asignación entre roles, usuarios y permisos.',
|
||||
role_deleted: '{{name}} fue eliminado correctamente!',
|
||||
settings_tab: 'Configuración',
|
||||
users_tab: 'Usuarios',
|
||||
permissions_tab: 'Permisos',
|
||||
settings: 'Configuración',
|
||||
settings_description:
|
||||
'Los roles son un agrupamiento de permisos que se pueden asignar a los usuarios. También proporcionan una manera de agregar permisos definidos para diferentes APIs, lo que hace más eficiente agregar, eliminar o ajustar permisos en comparación con asignarlos individualmente a los usuarios.',
|
||||
field_name: 'Nombre',
|
||||
field_description: 'Descripción',
|
||||
permission: {
|
||||
assign_button: 'Asignar permisos',
|
||||
assign_title: 'Asignar permisos',
|
||||
assign_subtitle:
|
||||
'Asigne permisos a este rol. El rol adquirirá los permisos agregados y los usuarios con este rol heredarán estos permisos.',
|
||||
assign_form_field: 'Asignar permisos',
|
||||
added_text_one: '{{count, number}} permiso agregado',
|
||||
added_text_other: '{{count, number}} permisos agregados',
|
||||
api_permission_count_one: '{{count, number}} permiso',
|
||||
api_permission_count_other: '{{count, number}} permisos',
|
||||
confirm_assign: 'Asignar permisos',
|
||||
permission_assigned: 'Los permisos seleccionados se asignaron correctamente a este rol',
|
||||
deletion_description:
|
||||
'Si se elimina este permiso, el usuario afectado con este rol perderá el acceso otorgado por este permiso.',
|
||||
permission_deleted: 'El permiso "{{name}}" fue eliminado correctamente de este rol',
|
||||
empty: 'No hay permisos disponibles',
|
||||
},
|
||||
users: {
|
||||
assign_button: 'Asignar usuarios',
|
||||
name_column: 'Usuario',
|
||||
app_column: 'Aplicación',
|
||||
latest_sign_in_column: 'Último inicio de sesión',
|
||||
delete_description:
|
||||
'Permanecerá en su conjunto de usuarios, pero perderá la autorización para este rol.',
|
||||
deleted: '{{name}} fue eliminado correctamente de este rol',
|
||||
assign_title: 'Asignar usuarios',
|
||||
assign_subtitle:
|
||||
'Asignar usuarios a este rol. Encuentre usuarios apropiados buscando nombre, correo electrónico, teléfono o ID de usuario.',
|
||||
assign_users_field: 'Asignar usuarios',
|
||||
confirm_assign: 'Asignar usuarios',
|
||||
users_assigned: 'Los usuarios seleccionados se asignaron correctamente a este rol',
|
||||
empty: 'No hay usuarios disponibles',
|
||||
},
|
||||
};
|
||||
|
||||
export default role_details;
|
|
@ -0,0 +1,23 @@
|
|||
const roles = {
|
||||
title: 'Roles',
|
||||
subtitle:
|
||||
'Los roles incluyen permisos que determinan lo que un usuario puede hacer. RBAC utiliza roles para dar acceso a recursos a los usuarios para acciones específicas.',
|
||||
create: 'Crear Rol',
|
||||
role_name: 'Rol',
|
||||
role_description: 'Descripción',
|
||||
role_name_placeholder: 'Ingrese el nombre de su rol',
|
||||
role_description_placeholder: 'Ingrese la descripción de su rol',
|
||||
assigned_users: 'Usuarios asignados',
|
||||
assign_permissions: 'Asignar permisos',
|
||||
create_role_title: 'Crear Rol',
|
||||
create_role_description:
|
||||
'Cree y administre roles para sus aplicaciones. Los roles contienen colecciones de permisos y pueden asignarse a los usuarios.',
|
||||
create_role_button: 'Crear Rol',
|
||||
role_created: 'El rol {{name}} se ha creado satisfactoriamente!',
|
||||
search: 'Buscar por nombre de rol, descripción o ID',
|
||||
placeholder_title: 'Roles',
|
||||
placeholder_description:
|
||||
'Los roles son un grupo de permisos que se pueden asignar a los usuarios. Asegúrese de agregar permisos antes de crear roles.',
|
||||
};
|
||||
|
||||
export default roles;
|
|
@ -0,0 +1,8 @@
|
|||
const session_expired = {
|
||||
title: 'Sesión expirada',
|
||||
subtitle:
|
||||
'Es posible que su sesión haya expirado y se haya desconectado. Haga clic en el botón de abajo para iniciar sesión en la consola de administración nuevamente.',
|
||||
button: 'Iniciar sesión de nuevo',
|
||||
};
|
||||
|
||||
export default session_expired;
|
|
@ -0,0 +1,86 @@
|
|||
import others from './others.js';
|
||||
import sign_up_and_sign_in from './sign-up-and-sign-in.js';
|
||||
|
||||
const sign_in_exp = {
|
||||
title: 'Experiencia de inicio de sesión',
|
||||
description:
|
||||
'Personalice la interfaz de inicio de sesión para que se adapte a su marca y visualice en tiempo real',
|
||||
tabs: {
|
||||
branding: 'Branding',
|
||||
sign_up_and_sign_in: 'Registro e inicio de sesión',
|
||||
others: 'Otros',
|
||||
},
|
||||
welcome: {
|
||||
title: 'Personalice la experiencia de inicio de sesión',
|
||||
description:
|
||||
'Comience rápidamente con su primera configuración de inicio de sesión. Esta guía lo guiará a través de todas las configuraciones necesarias.',
|
||||
get_started: 'Comenzar',
|
||||
apply_remind:
|
||||
'Tenga en cuenta que la experiencia de inicio de sesión se aplicará a todas las aplicaciones de esta cuenta.',
|
||||
},
|
||||
color: {
|
||||
title: 'COLOR',
|
||||
primary_color: 'Color de la marca',
|
||||
dark_primary_color: 'Color de la marca (oscuro)',
|
||||
dark_mode: 'Habilitar modo oscuro',
|
||||
dark_mode_description:
|
||||
'Su aplicación tendrá un tema de modo oscuro generado automáticamente en función del color de su marca y el algoritmo de Logto. Puede personalizarlo libremente.',
|
||||
dark_mode_reset_tip:
|
||||
'Vuelva a calcular el color del modo oscuro en función del color de la marca.',
|
||||
reset: 'Volver a calcular',
|
||||
},
|
||||
branding: {
|
||||
title: 'ÁREA DE BRANDING',
|
||||
ui_style: 'Estilo',
|
||||
favicon: 'Favicon',
|
||||
logo_image_url: 'URL de imagen del logotipo de la aplicación',
|
||||
logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
|
||||
dark_logo_image_url: 'URL de imagen del logotipo de la aplicación (oscuro)',
|
||||
dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
|
||||
logo_image: 'Logotipo de la aplicación',
|
||||
dark_logo_image: 'Logotipo de la aplicación (oscuro)',
|
||||
logo_image_error: 'Logotipo de la aplicación: {{error}}',
|
||||
favicon_error: 'Favicon: {{error}}',
|
||||
},
|
||||
custom_css: {
|
||||
title: 'CSS personalizado',
|
||||
css_code_editor_title: 'Personalice su IU con CSS personalizado',
|
||||
css_code_editor_description1: 'Vea el ejemplo de CSS personalizado.',
|
||||
css_code_editor_description2: '<a>{{link}}</a>',
|
||||
css_code_editor_description_link_content: 'Más información',
|
||||
css_code_editor_content_placeholder:
|
||||
'Ingrese su CSS personalizado para adaptar los estilos de cualquier cosa a sus especificaciones exactas. Expresa tu creatividad y haz que tu IU se destaque.',
|
||||
},
|
||||
sign_up_and_sign_in,
|
||||
others,
|
||||
setup_warning: {
|
||||
no_connector_sms:
|
||||
'Aún no se ha configurado el conector SMS. Antes de completar la configuración, los usuarios no podrán iniciar sesión con este método. <a>{{link}}</a> en "Conectores"',
|
||||
no_connector_email:
|
||||
'Aún no se ha configurado el conector de correo electrónico. Antes de completar la configuración, los usuarios no podrán iniciar sesión con este método. <a>{{link}}</a> en "Conectores"',
|
||||
no_connector_social:
|
||||
'Aún no se ha configurado el conector social. Antes de completar la configuración, los usuarios no podrán iniciar sesión con este método. <a>{{link}}</a> en "Conectores"',
|
||||
no_added_social_connector:
|
||||
'Ha configurado algunos conectores sociales ahora. Asegúrese de agregar algunos a su experiencia de inicio de sesión.',
|
||||
setup_link: 'Configuración',
|
||||
},
|
||||
save_alert: {
|
||||
description:
|
||||
'Está implementando nuevos procedimientos de inicio de sesión y registro. Todos sus usuarios pueden verse afectados por la nueva configuración. ¿Estás seguro de comprometerte con el cambio?',
|
||||
before: 'Antes',
|
||||
after: 'Después',
|
||||
sign_up: 'Registro',
|
||||
sign_in: 'Inicio de sesión',
|
||||
social: 'Social',
|
||||
},
|
||||
preview: {
|
||||
title: 'Previsualización del inicio de sesión',
|
||||
live_preview: 'Vista previa en vivo',
|
||||
live_preview_tip: 'Guarde para previsualizar los cambios',
|
||||
native: 'Nativo',
|
||||
desktop_web: 'Web de escritorio',
|
||||
mobile_web: 'Web móvil',
|
||||
},
|
||||
};
|
||||
|
||||
export default sign_in_exp;
|
|
@ -0,0 +1,48 @@
|
|||
const others = {
|
||||
terms_of_use: {
|
||||
title: 'TÉRMINOS',
|
||||
terms_of_use: 'URL de términos de uso',
|
||||
terms_of_use_placeholder: 'https://tus.terminos.de.uso/',
|
||||
privacy_policy: 'URL de política de privacidad',
|
||||
privacy_policy_placeholder: 'https://tu.politica.de.privacidad/',
|
||||
},
|
||||
languages: {
|
||||
title: 'IDIOMAS',
|
||||
enable_auto_detect: 'Habilitar la detección automática',
|
||||
description:
|
||||
'Tu software detecta la configuración regional del usuario y cambia al idioma local. Puedes agregar nuevos idiomas traduciendo la IU del inglés a otro idioma.',
|
||||
manage_language: 'Administrar idioma',
|
||||
default_language: 'Idioma predeterminado',
|
||||
default_language_description_auto:
|
||||
'Se usará el idioma predeterminado cuando el idioma detectado del usuario no esté incluido en la biblioteca de idiomas actual.',
|
||||
default_language_description_fixed:
|
||||
'Cuando la detección automática está desactivada, el idioma predeterminado es el único idioma que se mostrará en tu software. Activa la detección automática para agregar idiomas.',
|
||||
},
|
||||
manage_language: {
|
||||
title: 'Administrar idioma',
|
||||
subtitle:
|
||||
'Localiza la experiencia del producto agregando idiomas y traducciones. Tu contribución se puede establecer como el idioma predeterminado.',
|
||||
add_language: 'Agregar idioma',
|
||||
logto_provided: 'Logto proporcionado',
|
||||
key: 'Llave',
|
||||
logto_source_values: 'Valores de origen de Logto',
|
||||
custom_values: 'Valores personalizados',
|
||||
clear_all_tip: 'Borrar todos los valores',
|
||||
unsaved_description: 'Los cambios no se guardarán si sales de esta página sin guardar.',
|
||||
deletion_tip: 'Borrar el idioma',
|
||||
deletion_title: '¿Deseas borrar el idioma agregado?',
|
||||
deletion_description:
|
||||
'Después de la eliminación, tus usuarios no podrán navegar en ese idioma de nuevo.',
|
||||
default_language_deletion_title: 'El idioma predeterminado no se puede borrar.',
|
||||
default_language_deletion_description:
|
||||
'{{idioma}} está establecido como tu idioma predeterminado y no se puede borrar.',
|
||||
},
|
||||
advanced_options: {
|
||||
title: 'OPCIONES AVANZADAS',
|
||||
enable_user_registration: 'Habilitar registro de usuario',
|
||||
enable_user_registration_description:
|
||||
'Habilita o deshabilita el registro de usuarios. Una vez deshabilitado, los usuarios aún pueden ser agregados en la consola de administración, pero los usuarios ya no pueden establecer cuentas a través de la UI de inicio de sesión.',
|
||||
},
|
||||
};
|
||||
|
||||
export default others;
|
|
@ -0,0 +1,61 @@
|
|||
const sign_up_and_sign_in = {
|
||||
identifiers_email: 'Dirección de correo electrónico',
|
||||
identifiers_phone: 'Número de teléfono',
|
||||
identifiers_username: 'Nombre de usuario',
|
||||
identifiers_email_or_sms: 'Dirección de correo electrónico o número de teléfono',
|
||||
identifiers_none: 'No aplicable',
|
||||
and: 'y',
|
||||
or: 'o',
|
||||
sign_up: {
|
||||
title: 'REGISTRARSE',
|
||||
sign_up_identifier: 'Identificador de registro',
|
||||
identifier_description:
|
||||
'El identificador de registro es necesario para la creación de la cuenta y debe incluirse en la pantalla de inicio de sesión.',
|
||||
sign_up_authentication: 'Configuración de autenticación para el registro',
|
||||
authentication_description:
|
||||
'Todas las acciones seleccionadas serán obligatorias para que los usuarios completen el proceso.',
|
||||
set_a_password_option: 'Crea una contraseña',
|
||||
verify_at_sign_up_option: 'Verificar al registrarse',
|
||||
social_only_creation_description:
|
||||
'(Esto se aplica solo a la creación de cuentas mediante redes sociales)',
|
||||
},
|
||||
sign_in: {
|
||||
title: 'INICIAR SESIÓN',
|
||||
sign_in_identifier_and_auth:
|
||||
'Identificador y configuración de autenticación para iniciar sesión',
|
||||
description:
|
||||
'Los usuarios pueden iniciar sesión usando cualquiera de las opciones disponibles. Ajusta el diseño arrastrando y soltando las opciones a continuación.',
|
||||
add_sign_in_method: 'Agregar método de inicio de sesión',
|
||||
password_auth: 'Contraseña',
|
||||
verification_code_auth: 'Código de verificación',
|
||||
auth_swap_tip:
|
||||
'Intercambia las opciones a continuación para determinar cuál aparece primero en el proceso.',
|
||||
require_auth_factor: 'Debes seleccionar al menos un factor de autenticación.',
|
||||
},
|
||||
social_sign_in: {
|
||||
title: 'INICIO DE SESIÓN SOCIAL',
|
||||
social_sign_in: 'Inicio de sesión social',
|
||||
description:
|
||||
'Dependiendo del identificador obligatorio que hayas establecido, se puede solicitar al usuario que proporcione un identificador al registrarse mediante un conector social.',
|
||||
add_social_connector: 'Agregar conector social',
|
||||
set_up_hint: {
|
||||
not_in_list: '¿No está en la lista?',
|
||||
set_up_more: 'Configura',
|
||||
go_to: 'otros conectores sociales ahora.',
|
||||
},
|
||||
},
|
||||
tip: {
|
||||
set_a_password:
|
||||
'Es esencial que se establezca una contraseña única para que coincida con tu nombre de usuario.',
|
||||
verify_at_sign_up:
|
||||
'Actualmente solo admitimos correo electrónico verificado. Tu base de usuarios puede contener un gran número de direcciones de correo electrónico de baja calidad si no se valida.',
|
||||
password_auth:
|
||||
'Es esencial ya que has habilitado la opción de establecer una contraseña durante el proceso de registro.',
|
||||
verification_code_auth:
|
||||
'Es esencial ya que solo has habilitado la opción de proporcionar un código de verificación al registrarse. Se puede desactivar la opción si se permite la configuración de contraseña durante el proceso de registro.',
|
||||
delete_sign_in_method:
|
||||
'Es esencial ya que has seleccionado {{identifier}} como identificador obligatorio.',
|
||||
},
|
||||
};
|
||||
|
||||
export default sign_up_and_sign_in;
|
|
@ -0,0 +1,9 @@
|
|||
const tab_sections = {
|
||||
overview: 'Visión general',
|
||||
resource_management: 'Gestión de recursos',
|
||||
user_management: 'Gestión de usuarios',
|
||||
access_control: 'Control de acceso',
|
||||
help_and_support: 'Ayuda y soporte',
|
||||
};
|
||||
|
||||
export default tab_sections;
|
|
@ -0,0 +1,16 @@
|
|||
const tabs = {
|
||||
get_started: 'Empezar',
|
||||
dashboard: 'Tablero',
|
||||
applications: 'Aplicaciones',
|
||||
api_resources: 'Recursos de API',
|
||||
sign_in_experience: 'Experiencia de inicio de sesión',
|
||||
connectors: 'Conectores',
|
||||
users: 'Gestión de usuarios',
|
||||
audit_logs: 'Registros de auditoría',
|
||||
roles: 'Roles',
|
||||
docs: 'Documentos',
|
||||
contact_us: 'Contáctanos',
|
||||
settings: 'Configuraciones',
|
||||
};
|
||||
|
||||
export default tabs;
|
|
@ -0,0 +1,64 @@
|
|||
const user_details = {
|
||||
back_to_users: 'Volver a la gestión de usuarios',
|
||||
created_title: 'Se ha creado el usuario con éxito',
|
||||
created_guide: 'Puede enviar al usuario la siguiente información de inicio de sesión',
|
||||
created_username: 'Nombre de usuario:',
|
||||
created_password: 'Contraseña:',
|
||||
menu_delete: 'Eliminar',
|
||||
delete_description: 'Esta acción no se puede deshacer. Eliminará permanentemente al usuario.',
|
||||
deleted: 'Se ha eliminado al usuario con éxito',
|
||||
reset_password: {
|
||||
reset_password: 'Restablecer contraseña',
|
||||
title: '¿Está seguro de que desea restablecer la contraseña?',
|
||||
content:
|
||||
'Esta acción no se puede deshacer. Esto restablecerá la información de inicio de sesión del usuario.',
|
||||
congratulations: 'Se ha restablecido la información de inicio de sesión del usuario',
|
||||
new_password: 'Nueva contraseña:',
|
||||
},
|
||||
tab_settings: 'Configuración',
|
||||
tab_roles: 'Roles',
|
||||
tab_logs: 'Registros de usuario',
|
||||
settings: 'Configuración',
|
||||
settings_description:
|
||||
'Cada usuario tiene un perfil que contiene toda la información del usuario. Consta de datos básicos, identidades sociales y datos personalizados.',
|
||||
field_email: 'Correo electrónico principal',
|
||||
field_phone: 'Teléfono principal',
|
||||
field_username: 'Nombre de usuario',
|
||||
field_name: 'Nombre',
|
||||
field_avatar: 'URL de imagen de avatar',
|
||||
field_avatar_placeholder: 'https://tu.dominio.cdn/avatar.png',
|
||||
field_custom_data: 'Datos personalizados',
|
||||
field_custom_data_tip:
|
||||
'Información adicional del usuario no incluida en las propiedades de usuario predefinidas, como el color y el idioma preferidos del usuario.',
|
||||
field_connectors: 'Conexiones sociales',
|
||||
custom_data_invalid: 'Los datos personalizados deben ser un objeto JSON válido',
|
||||
connectors: {
|
||||
connectors: 'Conectores',
|
||||
user_id: 'ID de usuario',
|
||||
remove: 'Eliminar',
|
||||
not_connected: 'El usuario no está conectado a ningún conector social',
|
||||
deletion_confirmation:
|
||||
'Está eliminando la identidad de <name/> existente. ¿Está seguro de que desea hacer esto?',
|
||||
},
|
||||
suspended: 'Suspendido',
|
||||
roles: {
|
||||
name_column: 'Rol',
|
||||
description_column: 'Descripción',
|
||||
assign_button: 'Asignar roles',
|
||||
delete_description:
|
||||
'Esta acción eliminará este rol de este usuario. El rol en sí seguirá existiendo, pero ya no estará asociado con este usuario.',
|
||||
deleted: 'Se eliminó "{{name}}" correctamente de este usuario.',
|
||||
assign_title: 'Asigne roles a {{name}}',
|
||||
assign_subtitle: 'Autorice {{name}} uno o más roles',
|
||||
assign_role_field: 'Asignar roles',
|
||||
role_search_placeholder: 'Buscar por nombre de rol',
|
||||
added_text: '{{value, number}} agregados',
|
||||
assigned_user_count: '{{value, number}} usuarios',
|
||||
confirm_assign: 'Asignar roles',
|
||||
role_assigned: 'Rol(es) asignado(s) con éxito',
|
||||
search: 'Buscar por nombre de rol, descripción o ID',
|
||||
empty: 'No hay roles disponibles',
|
||||
},
|
||||
};
|
||||
|
||||
export default user_details;
|
|
@ -0,0 +1,20 @@
|
|||
const users = {
|
||||
title: 'Gestión de usuarios',
|
||||
subtitle:
|
||||
'Administrar identidades de usuario, incluyendo la creación de usuarios, la edición de información de usuario, la visualización de registros de usuario, la restablecimiento de contraseña y la eliminación de usuarios',
|
||||
create: 'Agregar usuario',
|
||||
user_name: 'Usuario',
|
||||
application_name: 'De la aplicación',
|
||||
latest_sign_in: 'Último inicio de sesión',
|
||||
create_form_username: 'Nombre de usuario',
|
||||
create_form_password: 'Contraseña',
|
||||
create_form_name: 'Nombre completo',
|
||||
unnamed: 'Sin nombre',
|
||||
search: 'Buscar por nombre, correo electrónico, teléfono o nombre de usuario',
|
||||
check_user_detail: 'Ver detalles del usuario',
|
||||
placeholder_title: 'Gestión de usuarios',
|
||||
placeholder_description:
|
||||
'Cada usuario tiene un perfil que contiene toda su información. Consta de datos básicos, identidades sociales y datos personalizados.',
|
||||
};
|
||||
|
||||
export default users;
|
|
@ -0,0 +1,8 @@
|
|||
const welcome = {
|
||||
title: 'Bienvenido a la Consola de Administración',
|
||||
description:
|
||||
'La consola de administración es una aplicación web para administrar Logto sin necesidad de conocimientos de programación. Primero creamos una cuenta. Con esta cuenta, puedes administrar Logto por ti mismo o en nombre de tu empresa.',
|
||||
create_account: 'Crear cuenta',
|
||||
};
|
||||
|
||||
export default welcome;
|
13
packages/phrases/src/locales/es/translation/demo-app.ts
Normal file
13
packages/phrases/src/locales/es/translation/demo-app.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
const demo_app = {
|
||||
title: '¡Ha iniciado sesión correctamente en la vista previa en vivo!',
|
||||
subtitle: 'Aquí está su información de inicio de sesión:',
|
||||
username: 'Nombre de usuario: ',
|
||||
user_id: 'ID de usuario: ',
|
||||
sign_out: 'Cerrar sesión en la vista previa en vivo',
|
||||
continue_explore: 'O continúe explorando',
|
||||
customize_sign_in_experience: 'Personalice la experiencia de inicio de sesión',
|
||||
enable_passwordless: 'Habilitar sin contraseña',
|
||||
add_social_connector: 'Agregar conector social',
|
||||
};
|
||||
|
||||
export default demo_app;
|
11
packages/phrases/src/locales/es/translation/index.ts
Normal file
11
packages/phrases/src/locales/es/translation/index.ts
Normal file
|
@ -0,0 +1,11 @@
|
|||
import admin_console from './admin-console/index.js';
|
||||
import demo_app from './demo-app.js';
|
||||
import oidc from './oidc.js';
|
||||
|
||||
const translation = {
|
||||
admin_console,
|
||||
demo_app,
|
||||
oidc,
|
||||
};
|
||||
|
||||
export default translation;
|
5
packages/phrases/src/locales/es/translation/oidc.ts
Normal file
5
packages/phrases/src/locales/es/translation/oidc.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
const oidc = {
|
||||
logout_success: 'Ha cerrado sesión con éxito.',
|
||||
};
|
||||
|
||||
export default oidc;
|
Loading…
Add table
Reference in a new issue