new funcionality
This commit is contained in:
@@ -6,8 +6,10 @@ const ca: MessageSchema = {
|
||||
clients: 'Clients OAuth',
|
||||
tokens: 'Personal Access Tokens',
|
||||
authorizedApps: 'Apps autoritzades',
|
||||
security: 'Seguretat',
|
||||
users: 'Usuaris',
|
||||
analytics: 'Analítiques',
|
||||
auditLog: 'Audit log',
|
||||
apiDocs: 'API Docs',
|
||||
logout: 'Sortir',
|
||||
},
|
||||
@@ -32,6 +34,34 @@ const ca: MessageSchema = {
|
||||
noAccount: 'No tens compte?',
|
||||
signUp: "Registra't",
|
||||
invalidCredentials: 'Credencials no vàlides.',
|
||||
twoFactorTitle: 'Verificació en dos passos',
|
||||
twoFactorSubtitle: "Introdueix el codi de la teva app autenticadora (o un codi de recuperació).",
|
||||
twoFactorCode: 'Codi',
|
||||
twoFactorSubmit: 'Verificar',
|
||||
invalidTwoFactorCode: 'Codi no vàlid.',
|
||||
backToLogin: 'Tornar a entrar',
|
||||
forgotPassword: 'Has oblidat la contrasenya?',
|
||||
},
|
||||
forgotPassword: {
|
||||
title: 'Restablir contrasenya',
|
||||
subtitle: "Introdueix el teu email i t'enviarem un enllaç per triar una contrasenya nova.",
|
||||
email: 'Email',
|
||||
submit: 'Enviar enllaç',
|
||||
submitting: 'Enviant…',
|
||||
sent: "Si existeix un compte amb aquest email, t'hem enviat un enllaç per restablir la contrasenya. Revisa la teva bústia.",
|
||||
backToLogin: 'Tornar a entrar',
|
||||
},
|
||||
resetPassword: {
|
||||
title: 'Tria una contrasenya nova',
|
||||
subtitle: 'Gairebé — confirma la contrasenya nova per al teu compte.',
|
||||
password: 'Contrasenya nova',
|
||||
passwordConfirm: 'Confirmar contrasenya',
|
||||
submit: 'Restablir contrasenya',
|
||||
submitting: 'Restablint…',
|
||||
success: "La teva contrasenya s'ha restablert. Ja pots entrar amb la nova — hem tancat les sessions actives per seguretat.",
|
||||
goToLogin: 'Anar a entrar',
|
||||
invalidLink: 'Aquest enllaç no és vàlid o ha caducat. Demana\'n un de nou.',
|
||||
missingParams: 'Falta informació a l\'enllaç. Demana\'n un de nou des de "Has oblidat la contrasenya?".',
|
||||
},
|
||||
register: {
|
||||
title: 'Crear compte',
|
||||
@@ -58,6 +88,8 @@ const ca: MessageSchema = {
|
||||
tokensDesc: "Genera tokens d'accés directe a l'API, com API keys.",
|
||||
appsTitle: 'Apps autoritzades',
|
||||
appsDesc: 'Apps de tercers a les quals has donat accés al teu compte.',
|
||||
securityTitle: 'Seguretat',
|
||||
securityDesc: 'Activa la verificació en dos passos (2FA) per al teu compte.',
|
||||
usersTitle: 'Usuaris',
|
||||
usersDesc: 'Alta, edició de rol/estat i baixa de comptes (només admins).',
|
||||
analyticsTitle: 'Analítiques',
|
||||
@@ -85,6 +117,32 @@ const ca: MessageSchema = {
|
||||
revokeConfirm: 'Vols revocar el client "{name}"? Els seus tokens deixaran de funcionar.',
|
||||
clientIdShort: 'client_id',
|
||||
redirectLabel: 'redirect',
|
||||
webhooksTitle: 'Webhooks',
|
||||
hideWebhooks: 'Amagar webhooks',
|
||||
webhooksDesc: "Notificacions sortints a la teva app quan passa alguna cosa rellevant — sense haver de fer polling.",
|
||||
webhookSecretWarning: 'Guarda aquest secret ara, no es podrà tornar a veure. Fes-lo servir per verificar la signatura HMAC-SHA256 a la capçalera X-Webhook-Signature.',
|
||||
webhookSecretLabel: 'secret:',
|
||||
webhookPaused: 'pausat',
|
||||
lastDelivery: 'últim enviament',
|
||||
pending: 'pendent',
|
||||
pause: 'Pausar',
|
||||
resume: 'Reprendre',
|
||||
viewHistory: 'Veure historial',
|
||||
hideHistory: 'Amagar historial',
|
||||
noDeliveries: 'Encara no hi ha hagut entregues per a aquest webhook.',
|
||||
attempts: 'intents: {count}',
|
||||
retryDelivery: 'Reintentar',
|
||||
retrying: 'Reintentant…',
|
||||
noWebhooks: 'Encara no has registrat cap webhook per a aquesta app.',
|
||||
webhookUrl: 'URL del webhook',
|
||||
addWebhook: 'Afegir webhook',
|
||||
webhookDeleteConfirm: 'Vols esborrar el webhook "{url}"?',
|
||||
eventTokenRevoked: 'Token revocat',
|
||||
eventUserDeactivated: 'Usuari desactivat',
|
||||
rotateSecret: 'Rotar secret',
|
||||
rotateSecretConfirm: 'Vols rotar el secret de "{name}"? El secret actual seguirà funcionant 48 hores més per no tallar integracions que encara no s\'han actualitzat.',
|
||||
rotateSecretFailed: 'No s\'ha pogut rotar el secret.',
|
||||
previousSecretStillValid: 'El secret anterior segueix sent vàlid fins al {date}.',
|
||||
},
|
||||
tokens: {
|
||||
title: 'Personal Access Tokens',
|
||||
@@ -169,6 +227,14 @@ const ca: MessageSchema = {
|
||||
reject: 'Rebutjar',
|
||||
rejectConfirm: 'Vols rebutjar el registre de "{name}"? Anirà a la paperera i es pot restaurar després.',
|
||||
rejectFailed: "No s'ha pogut rebutjar el registre.",
|
||||
sessionsTitle: 'Sessions actives',
|
||||
sessionsDesc: "Tokens OAuth vigents d'aquest usuari — apps amb accés al seu compte ara mateix.",
|
||||
noSessions: 'No hi ha sessions actives.',
|
||||
sessionUnknownClient: '(app esborrada)',
|
||||
revokeSession: 'Revocar',
|
||||
revokeSessionConfirm: 'Vols revocar la sessió de "{name}"? Aquesta app deixarà de tenir accés.',
|
||||
revokeAllSessions: 'Tancar totes',
|
||||
revokeAllSessionsConfirm: 'Vols tancar totes les sessions actives de "{name}"? Tots els seus tokens OAuth quedaran revocats.',
|
||||
},
|
||||
analytics: {
|
||||
title: 'Analítiques',
|
||||
@@ -176,6 +242,7 @@ const ca: MessageSchema = {
|
||||
last7: 'Últims 7 dies',
|
||||
last30: 'Últims 30 dies',
|
||||
last90: 'Últims 90 dies',
|
||||
exportPdf: 'Exportar PDF',
|
||||
totalUsers: 'Usuaris totals',
|
||||
activeSessions: 'Sessions actives',
|
||||
activeSessionsHint: 'tokens OAuth vigents',
|
||||
@@ -203,6 +270,86 @@ const ca: MessageSchema = {
|
||||
tooltipAppLabel: 'Apps (OAuth):',
|
||||
tooltipSessionLabel: 'Tauler admin:',
|
||||
barAriaLabel: "{date}: {oauth} logins d'apps, {session} al tauler admin",
|
||||
loginFailureRate: 'Taxa de fallades de login',
|
||||
loginFailureRateHint: '{count} fallits en els últims 7 dies',
|
||||
oauthApprovalRate: "Taxa d'aprovació OAuth",
|
||||
oauthApprovalRateHint: '{approved}/{attempted} en aquest període',
|
||||
funnelTitle: "Funnel d'autorització OAuth",
|
||||
funnelEmpty: "Encara no hi ha intents d'autorització en aquest període.",
|
||||
colClient: 'Client',
|
||||
colAttempted: 'Intents',
|
||||
colApproved: 'Aprovats',
|
||||
colDenied: 'Denegats',
|
||||
colApprovalRate: 'Aprovació',
|
||||
activeTokensByClient: 'Tokens actius per client',
|
||||
noActiveTokens: 'No hi ha tokens actius ara mateix.',
|
||||
scopeUsageTitle: "Ús d'scopes",
|
||||
noScopeUsage: "Encara no s'ha concedit cap scope en aquest període.",
|
||||
},
|
||||
auditLog: {
|
||||
title: 'Audit log',
|
||||
subtitle: "Canvis de permisos, altes/baixes d'usuaris i clients OAuth.",
|
||||
allSubjects: 'Tots els subjectes',
|
||||
subjectUser: 'Usuaris',
|
||||
subjectClient: 'Clients OAuth',
|
||||
allActions: 'Totes les accions',
|
||||
empty: 'Encara no hi ha esdeveniments registrats.',
|
||||
colWhen: 'Quan',
|
||||
colActor: 'Qui',
|
||||
colAction: 'Acció',
|
||||
colSubject: 'Subjecte',
|
||||
colDetails: 'Detalls',
|
||||
colIp: 'IP',
|
||||
systemActor: '(sistema)',
|
||||
fieldChanged: '{field} canviat',
|
||||
prevPage: 'Anterior',
|
||||
nextPage: 'Següent',
|
||||
pageInfo: 'Pàgina {page} de {lastPage} — {total} esdeveniments',
|
||||
actions: {
|
||||
userCreated: 'Usuari creat',
|
||||
userUpdated: 'Usuari editat',
|
||||
userDeleted: 'Usuari esborrat',
|
||||
userRestored: 'Usuari restaurat',
|
||||
userForceDeleted: 'Usuari esborrat definitivament',
|
||||
userApproved: 'Usuari aprovat',
|
||||
appRoleAssigned: 'Rol per app assignat',
|
||||
appRoleRevoked: 'Rol per app revocat',
|
||||
clientCreated: 'Client OAuth creat',
|
||||
clientRevoked: 'Client OAuth revocat',
|
||||
twoFactorEnabled: '2FA activat',
|
||||
twoFactorDisabled: '2FA desactivat',
|
||||
twoFactorRecoveryRegenerated: 'Codis de recuperació regenerats',
|
||||
sessionRevoked: 'Sessió revocada',
|
||||
sessionsRevokedAll: 'Totes les sessions tancades',
|
||||
webhookCreated: 'Webhook creat',
|
||||
webhookDeleted: 'Webhook esborrat',
|
||||
secretRotated: 'Secret rotat',
|
||||
passwordReset: 'Contrasenya restablerta',
|
||||
},
|
||||
},
|
||||
security: {
|
||||
title: 'Seguretat',
|
||||
subtitle: 'Verificació en dos passos (2FA) per al teu compte.',
|
||||
enabled: '2FA activat',
|
||||
enabledDesc: "El teu compte demana un codi de la teva app autenticadora cada cop que inicies sessió.",
|
||||
disabled: '2FA desactivat',
|
||||
disabledDesc: 'Afegeix una capa extra de seguretat: un codi del teu telèfon a més de la contrasenya.',
|
||||
enable: 'Activar 2FA',
|
||||
disable: 'Desactivar',
|
||||
disableConfirm: 'Confirmar desactivació',
|
||||
regenerateCodes: 'Regenerar codis de recuperació',
|
||||
confirmPassword: 'Confirma la teva contrasenya',
|
||||
confirm: 'Confirmar',
|
||||
setupTitle: 'Escaneja el codi QR',
|
||||
setupDesc: 'Fes servir Google Authenticator, Authy o qualsevol app compatible amb TOTP.',
|
||||
manualEntry: 'No pots escanejar? Introdueix aquest codi a mà:',
|
||||
enterCode: 'Codi de 6 dígits',
|
||||
invalidCode: 'Codi no vàlid. Torna-ho a provar.',
|
||||
invalidPassword: 'Contrasenya incorrecta.',
|
||||
setupFailed: "No s'ha pogut iniciar l'activació del 2FA.",
|
||||
qrAlt: 'Codi QR per configurar el 2FA',
|
||||
recoveryCodesTitle: 'Guarda aquests codis de recuperació',
|
||||
recoveryCodesWarning: "Cadascun serveix una sola vegada. Fes-los servir si perds l'accés a la teva app autenticadora. No es tornaran a mostrar.",
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -6,8 +6,10 @@ const en: MessageSchema = {
|
||||
clients: 'OAuth Clients',
|
||||
tokens: 'Personal Access Tokens',
|
||||
authorizedApps: 'Authorized Apps',
|
||||
security: 'Security',
|
||||
users: 'Users',
|
||||
analytics: 'Analytics',
|
||||
auditLog: 'Audit log',
|
||||
apiDocs: 'API Docs',
|
||||
logout: 'Sign out',
|
||||
},
|
||||
@@ -32,6 +34,34 @@ const en: MessageSchema = {
|
||||
noAccount: "Don't have an account?",
|
||||
signUp: 'Sign up',
|
||||
invalidCredentials: 'Invalid credentials.',
|
||||
twoFactorTitle: 'Two-factor verification',
|
||||
twoFactorSubtitle: 'Enter the code from your authenticator app (or a recovery code).',
|
||||
twoFactorCode: 'Code',
|
||||
twoFactorSubmit: 'Verify',
|
||||
invalidTwoFactorCode: 'Invalid code.',
|
||||
backToLogin: 'Back to sign in',
|
||||
forgotPassword: 'Forgot your password?',
|
||||
},
|
||||
forgotPassword: {
|
||||
title: 'Reset password',
|
||||
subtitle: "Enter your email and we'll send you a link to choose a new password.",
|
||||
email: 'Email',
|
||||
submit: 'Send link',
|
||||
submitting: 'Sending…',
|
||||
sent: "If an account exists with that email, we've sent a link to reset the password. Check your inbox.",
|
||||
backToLogin: 'Back to sign in',
|
||||
},
|
||||
resetPassword: {
|
||||
title: 'Choose a new password',
|
||||
subtitle: "Almost done — confirm the new password for your account.",
|
||||
password: 'New password',
|
||||
passwordConfirm: 'Confirm password',
|
||||
submit: 'Reset password',
|
||||
submitting: 'Resetting…',
|
||||
success: 'Your password has been reset. You can sign in with the new one now — we closed your active sessions for security.',
|
||||
goToLogin: 'Go to sign in',
|
||||
invalidLink: 'This link is invalid or has expired. Request a new one.',
|
||||
missingParams: 'This link is missing information. Request a new one from "Forgot your password?".',
|
||||
},
|
||||
register: {
|
||||
title: 'Create account',
|
||||
@@ -58,6 +88,8 @@ const en: MessageSchema = {
|
||||
tokensDesc: 'Generate tokens for direct API access, like API keys.',
|
||||
appsTitle: 'Authorized Apps',
|
||||
appsDesc: "Third-party apps you've granted access to your account.",
|
||||
securityTitle: 'Security',
|
||||
securityDesc: 'Enable two-factor authentication (2FA) for your account.',
|
||||
usersTitle: 'Users',
|
||||
usersDesc: 'Create, edit role/status and delete accounts (admins only).',
|
||||
analyticsTitle: 'Analytics',
|
||||
@@ -85,6 +117,32 @@ const en: MessageSchema = {
|
||||
revokeConfirm: 'Revoke client "{name}"? Its tokens will stop working.',
|
||||
clientIdShort: 'client_id',
|
||||
redirectLabel: 'redirect',
|
||||
webhooksTitle: 'Webhooks',
|
||||
hideWebhooks: 'Hide webhooks',
|
||||
webhooksDesc: 'Outgoing notifications to your app when something relevant happens — no polling needed.',
|
||||
webhookSecretWarning: 'Save this secret now, it cannot be shown again. Use it to verify the HMAC-SHA256 signature in the X-Webhook-Signature header.',
|
||||
webhookSecretLabel: 'secret:',
|
||||
webhookPaused: 'paused',
|
||||
lastDelivery: 'last delivery',
|
||||
pending: 'pending',
|
||||
pause: 'Pause',
|
||||
resume: 'Resume',
|
||||
viewHistory: 'View history',
|
||||
hideHistory: 'Hide history',
|
||||
noDeliveries: 'No deliveries for this webhook yet.',
|
||||
attempts: 'attempts: {count}',
|
||||
retryDelivery: 'Retry',
|
||||
retrying: 'Retrying…',
|
||||
noWebhooks: "You haven't registered any webhooks for this app yet.",
|
||||
webhookUrl: 'Webhook URL',
|
||||
addWebhook: 'Add webhook',
|
||||
webhookDeleteConfirm: 'Delete the webhook "{url}"?',
|
||||
eventTokenRevoked: 'Token revoked',
|
||||
eventUserDeactivated: 'User deactivated',
|
||||
rotateSecret: 'Rotate secret',
|
||||
rotateSecretConfirm: 'Rotate the secret for "{name}"? The current secret will keep working for 48 more hours so integrations that haven\'t updated yet don\'t break.',
|
||||
rotateSecretFailed: 'Could not rotate the secret.',
|
||||
previousSecretStillValid: 'The previous secret stays valid until {date}.',
|
||||
},
|
||||
tokens: {
|
||||
title: 'Personal Access Tokens',
|
||||
@@ -169,6 +227,14 @@ const en: MessageSchema = {
|
||||
reject: 'Reject',
|
||||
rejectConfirm: 'Reject the registration for "{name}"? It will go to the trash and can be restored later.',
|
||||
rejectFailed: 'Could not reject the registration.',
|
||||
sessionsTitle: 'Active sessions',
|
||||
sessionsDesc: 'Active OAuth tokens for this user — apps with access to their account right now.',
|
||||
noSessions: 'No active sessions.',
|
||||
sessionUnknownClient: '(deleted app)',
|
||||
revokeSession: 'Revoke',
|
||||
revokeSessionConfirm: 'Revoke the session for "{name}"? That app will lose access.',
|
||||
revokeAllSessions: 'Revoke all',
|
||||
revokeAllSessionsConfirm: 'Revoke all active sessions for "{name}"? All their OAuth tokens will be revoked.',
|
||||
},
|
||||
analytics: {
|
||||
title: 'Analytics',
|
||||
@@ -176,6 +242,7 @@ const en: MessageSchema = {
|
||||
last7: 'Last 7 days',
|
||||
last30: 'Last 30 days',
|
||||
last90: 'Last 90 days',
|
||||
exportPdf: 'Export PDF',
|
||||
totalUsers: 'Total users',
|
||||
activeSessions: 'Active sessions',
|
||||
activeSessionsHint: 'valid OAuth tokens',
|
||||
@@ -203,6 +270,86 @@ const en: MessageSchema = {
|
||||
tooltipAppLabel: 'Apps (OAuth):',
|
||||
tooltipSessionLabel: 'Admin panel:',
|
||||
barAriaLabel: '{date}: {oauth} app logins, {session} to admin panel',
|
||||
loginFailureRate: 'Login failure rate',
|
||||
loginFailureRateHint: '{count} failed in the last 7 days',
|
||||
oauthApprovalRate: 'OAuth approval rate',
|
||||
oauthApprovalRateHint: '{approved}/{attempted} in this period',
|
||||
funnelTitle: 'OAuth authorization funnel',
|
||||
funnelEmpty: 'No authorization attempts in this period yet.',
|
||||
colClient: 'Client',
|
||||
colAttempted: 'Attempts',
|
||||
colApproved: 'Approved',
|
||||
colDenied: 'Denied',
|
||||
colApprovalRate: 'Approval',
|
||||
activeTokensByClient: 'Active tokens by client',
|
||||
noActiveTokens: 'No active tokens right now.',
|
||||
scopeUsageTitle: 'Scope usage',
|
||||
noScopeUsage: 'No scopes granted in this period yet.',
|
||||
},
|
||||
auditLog: {
|
||||
title: 'Audit log',
|
||||
subtitle: 'Permission changes, user and OAuth client create/delete events.',
|
||||
allSubjects: 'All subjects',
|
||||
subjectUser: 'Users',
|
||||
subjectClient: 'OAuth clients',
|
||||
allActions: 'All actions',
|
||||
empty: 'No events recorded yet.',
|
||||
colWhen: 'When',
|
||||
colActor: 'Who',
|
||||
colAction: 'Action',
|
||||
colSubject: 'Subject',
|
||||
colDetails: 'Details',
|
||||
colIp: 'IP',
|
||||
systemActor: '(system)',
|
||||
fieldChanged: '{field} changed',
|
||||
prevPage: 'Previous',
|
||||
nextPage: 'Next',
|
||||
pageInfo: 'Page {page} of {lastPage} — {total} events',
|
||||
actions: {
|
||||
userCreated: 'User created',
|
||||
userUpdated: 'User updated',
|
||||
userDeleted: 'User deleted',
|
||||
userRestored: 'User restored',
|
||||
userForceDeleted: 'User permanently deleted',
|
||||
userApproved: 'User approved',
|
||||
appRoleAssigned: 'App role assigned',
|
||||
appRoleRevoked: 'App role revoked',
|
||||
clientCreated: 'OAuth client created',
|
||||
clientRevoked: 'OAuth client revoked',
|
||||
twoFactorEnabled: '2FA enabled',
|
||||
twoFactorDisabled: '2FA disabled',
|
||||
twoFactorRecoveryRegenerated: 'Recovery codes regenerated',
|
||||
sessionRevoked: 'Session revoked',
|
||||
sessionsRevokedAll: 'All sessions revoked',
|
||||
webhookCreated: 'Webhook created',
|
||||
webhookDeleted: 'Webhook deleted',
|
||||
secretRotated: 'Secret rotated',
|
||||
passwordReset: 'Password reset',
|
||||
},
|
||||
},
|
||||
security: {
|
||||
title: 'Security',
|
||||
subtitle: 'Two-factor authentication (2FA) for your account.',
|
||||
enabled: '2FA enabled',
|
||||
enabledDesc: 'Your account asks for a code from your authenticator app every time you sign in.',
|
||||
disabled: '2FA disabled',
|
||||
disabledDesc: 'Add an extra layer of security: a code from your phone in addition to your password.',
|
||||
enable: 'Enable 2FA',
|
||||
disable: 'Disable',
|
||||
disableConfirm: 'Confirm disable',
|
||||
regenerateCodes: 'Regenerate recovery codes',
|
||||
confirmPassword: 'Confirm your password',
|
||||
confirm: 'Confirm',
|
||||
setupTitle: 'Scan the QR code',
|
||||
setupDesc: 'Use Google Authenticator, Authy, or any TOTP-compatible app.',
|
||||
manualEntry: "Can't scan? Enter this code manually:",
|
||||
enterCode: '6-digit code',
|
||||
invalidCode: 'Invalid code. Try again.',
|
||||
invalidPassword: 'Incorrect password.',
|
||||
setupFailed: 'Could not start 2FA setup.',
|
||||
qrAlt: 'QR code to set up 2FA',
|
||||
recoveryCodesTitle: 'Save these recovery codes',
|
||||
recoveryCodesWarning: "Each one works once. Use them if you lose access to your authenticator app. They won't be shown again.",
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -4,8 +4,10 @@ const es = {
|
||||
clients: 'Clientes OAuth',
|
||||
tokens: 'Personal Access Tokens',
|
||||
authorizedApps: 'Apps autorizadas',
|
||||
security: 'Seguridad',
|
||||
users: 'Usuarios',
|
||||
analytics: 'Analíticas',
|
||||
auditLog: 'Audit log',
|
||||
apiDocs: 'API Docs',
|
||||
logout: 'Salir',
|
||||
},
|
||||
@@ -30,6 +32,34 @@ const es = {
|
||||
noAccount: '¿No tenés cuenta?',
|
||||
signUp: 'Registrate',
|
||||
invalidCredentials: 'Credenciales inválidas.',
|
||||
twoFactorTitle: 'Verificación en dos pasos',
|
||||
twoFactorSubtitle: 'Ingresá el código de tu app autenticadora (o un código de recuperación).',
|
||||
twoFactorCode: 'Código',
|
||||
twoFactorSubmit: 'Verificar',
|
||||
invalidTwoFactorCode: 'Código inválido.',
|
||||
backToLogin: 'Volver a ingresar',
|
||||
forgotPassword: '¿Olvidaste tu contraseña?',
|
||||
},
|
||||
forgotPassword: {
|
||||
title: 'Restablecer contraseña',
|
||||
subtitle: 'Ingresá tu email y te mandamos un enlace para elegir una contraseña nueva.',
|
||||
email: 'Email',
|
||||
submit: 'Enviar enlace',
|
||||
submitting: 'Enviando…',
|
||||
sent: 'Si existe una cuenta con ese email, te enviamos un enlace para restablecer la contraseña. Revisá tu bandeja de entrada.',
|
||||
backToLogin: 'Volver a ingresar',
|
||||
},
|
||||
resetPassword: {
|
||||
title: 'Elegí una contraseña nueva',
|
||||
subtitle: 'Ya casi — confirmá la contraseña nueva para tu cuenta.',
|
||||
password: 'Contraseña nueva',
|
||||
passwordConfirm: 'Confirmar contraseña',
|
||||
submit: 'Restablecer contraseña',
|
||||
submitting: 'Restableciendo…',
|
||||
success: 'Tu contraseña se restableció. Ya podés ingresar con la nueva — cerramos las sesiones activas por seguridad.',
|
||||
goToLogin: 'Ir a ingresar',
|
||||
invalidLink: 'Este enlace es inválido o venció. Pedí uno nuevo.',
|
||||
missingParams: 'Falta información en el enlace. Pedí uno nuevo desde "¿Olvidaste tu contraseña?".',
|
||||
},
|
||||
register: {
|
||||
title: 'Crear cuenta',
|
||||
@@ -56,6 +86,8 @@ const es = {
|
||||
tokensDesc: 'Generá tokens de acceso directo a la API, como API keys.',
|
||||
appsTitle: 'Apps autorizadas',
|
||||
appsDesc: 'Apps de terceros a las que le diste acceso a tu cuenta.',
|
||||
securityTitle: 'Seguridad',
|
||||
securityDesc: 'Activá verificación en dos pasos (2FA) para tu cuenta.',
|
||||
usersTitle: 'Usuarios',
|
||||
usersDesc: 'Alta, edición de rol/estado y baja de cuentas (solo admins).',
|
||||
analyticsTitle: 'Analíticas',
|
||||
@@ -83,6 +115,32 @@ const es = {
|
||||
revokeConfirm: '¿Revocar el cliente "{name}"? Sus tokens dejarán de funcionar.',
|
||||
clientIdShort: 'client_id',
|
||||
redirectLabel: 'redirect',
|
||||
webhooksTitle: 'Webhooks',
|
||||
hideWebhooks: 'Ocultar webhooks',
|
||||
webhooksDesc: 'Notificaciones salientes a tu app cuando pasa algo relevante — sin tener que hacer polling.',
|
||||
webhookSecretWarning: 'Guardá este secret ahora, no se puede volver a ver. Usalo para verificar la firma HMAC-SHA256 en el header X-Webhook-Signature.',
|
||||
webhookSecretLabel: 'secret:',
|
||||
webhookPaused: 'pausado',
|
||||
lastDelivery: 'último envío',
|
||||
pending: 'pendiente',
|
||||
pause: 'Pausar',
|
||||
resume: 'Reanudar',
|
||||
viewHistory: 'Ver historial',
|
||||
hideHistory: 'Ocultar historial',
|
||||
noDeliveries: 'Todavía no hubo entregas para este webhook.',
|
||||
attempts: 'intentos: {count}',
|
||||
retryDelivery: 'Reintentar',
|
||||
retrying: 'Reintentando…',
|
||||
noWebhooks: 'Todavía no registraste ningún webhook para esta app.',
|
||||
webhookUrl: 'URL del webhook',
|
||||
addWebhook: 'Agregar webhook',
|
||||
webhookDeleteConfirm: '¿Borrar el webhook "{url}"?',
|
||||
eventTokenRevoked: 'Token revocado',
|
||||
eventUserDeactivated: 'Usuario desactivado',
|
||||
rotateSecret: 'Rotar secret',
|
||||
rotateSecretConfirm: '¿Rotar el secret de "{name}"? El secret actual va a seguir funcionando 48 horas más para no cortar integraciones que todavía no se actualizaron.',
|
||||
rotateSecretFailed: 'No se pudo rotar el secret.',
|
||||
previousSecretStillValid: 'El secret anterior sigue siendo válido hasta el {date}.',
|
||||
},
|
||||
tokens: {
|
||||
title: 'Personal Access Tokens',
|
||||
@@ -167,6 +225,14 @@ const es = {
|
||||
reject: 'Rechazar',
|
||||
rejectConfirm: '¿Rechazar el registro de "{name}"? Va a la papelera y se puede restaurar después.',
|
||||
rejectFailed: 'No se pudo rechazar el registro.',
|
||||
sessionsTitle: 'Sesiones activas',
|
||||
sessionsDesc: 'Tokens OAuth vigentes de este usuario — apps con acceso a su cuenta ahora mismo.',
|
||||
noSessions: 'No hay sesiones activas.',
|
||||
sessionUnknownClient: '(app borrada)',
|
||||
revokeSession: 'Revocar',
|
||||
revokeSessionConfirm: '¿Revocar la sesión de "{name}"? Esa app va a dejar de tener acceso.',
|
||||
revokeAllSessions: 'Cerrar todas',
|
||||
revokeAllSessionsConfirm: '¿Cerrar todas las sesiones activas de "{name}"? Todos sus tokens OAuth van a quedar revocados.',
|
||||
},
|
||||
analytics: {
|
||||
title: 'Analíticas',
|
||||
@@ -174,6 +240,7 @@ const es = {
|
||||
last7: 'Últimos 7 días',
|
||||
last30: 'Últimos 30 días',
|
||||
last90: 'Últimos 90 días',
|
||||
exportPdf: 'Exportar PDF',
|
||||
totalUsers: 'Usuarios totales',
|
||||
activeSessions: 'Sesiones activas',
|
||||
activeSessionsHint: 'tokens OAuth vigentes',
|
||||
@@ -201,6 +268,86 @@ const es = {
|
||||
tooltipAppLabel: 'Apps (OAuth):',
|
||||
tooltipSessionLabel: 'Panel admin:',
|
||||
barAriaLabel: '{date}: {oauth} logins de apps, {session} al panel admin',
|
||||
loginFailureRate: 'Tasa de fallos de login',
|
||||
loginFailureRateHint: '{count} fallidos en 7 días',
|
||||
oauthApprovalRate: 'Tasa de aprobación OAuth',
|
||||
oauthApprovalRateHint: '{approved}/{attempted} en el período',
|
||||
funnelTitle: 'Funnel de autorización OAuth',
|
||||
funnelEmpty: 'Todavía no hay intentos de autorización en este período.',
|
||||
colClient: 'Cliente',
|
||||
colAttempted: 'Intentos',
|
||||
colApproved: 'Aprobados',
|
||||
colDenied: 'Denegados',
|
||||
colApprovalRate: 'Aprobación',
|
||||
activeTokensByClient: 'Tokens activos por cliente',
|
||||
noActiveTokens: 'No hay tokens activos por ahora.',
|
||||
scopeUsageTitle: 'Uso de scopes',
|
||||
noScopeUsage: 'Todavía no se otorgó ningún scope en este período.',
|
||||
},
|
||||
auditLog: {
|
||||
title: 'Audit log',
|
||||
subtitle: 'Cambios de permisos, altas/bajas de usuarios y clientes OAuth.',
|
||||
allSubjects: 'Todos los sujetos',
|
||||
subjectUser: 'Usuarios',
|
||||
subjectClient: 'Clientes OAuth',
|
||||
allActions: 'Todas las acciones',
|
||||
empty: 'Todavía no hay eventos registrados.',
|
||||
colWhen: 'Cuándo',
|
||||
colActor: 'Quién',
|
||||
colAction: 'Acción',
|
||||
colSubject: 'Sujeto',
|
||||
colDetails: 'Detalles',
|
||||
colIp: 'IP',
|
||||
systemActor: '(sistema)',
|
||||
fieldChanged: '{field} cambiada',
|
||||
prevPage: 'Anterior',
|
||||
nextPage: 'Siguiente',
|
||||
pageInfo: 'Página {page} de {lastPage} — {total} eventos',
|
||||
actions: {
|
||||
userCreated: 'Usuario creado',
|
||||
userUpdated: 'Usuario editado',
|
||||
userDeleted: 'Usuario borrado',
|
||||
userRestored: 'Usuario restaurado',
|
||||
userForceDeleted: 'Usuario borrado definitivamente',
|
||||
userApproved: 'Usuario aprobado',
|
||||
appRoleAssigned: 'Rol por app asignado',
|
||||
appRoleRevoked: 'Rol por app revocado',
|
||||
clientCreated: 'Cliente OAuth creado',
|
||||
clientRevoked: 'Cliente OAuth revocado',
|
||||
twoFactorEnabled: '2FA activado',
|
||||
twoFactorDisabled: '2FA desactivado',
|
||||
twoFactorRecoveryRegenerated: 'Códigos de recuperación regenerados',
|
||||
sessionRevoked: 'Sesión revocada',
|
||||
sessionsRevokedAll: 'Todas las sesiones cerradas',
|
||||
webhookCreated: 'Webhook creado',
|
||||
webhookDeleted: 'Webhook borrado',
|
||||
secretRotated: 'Secret rotado',
|
||||
passwordReset: 'Contraseña restablecida',
|
||||
},
|
||||
},
|
||||
security: {
|
||||
title: 'Seguridad',
|
||||
subtitle: 'Verificación en dos pasos (2FA) para tu cuenta.',
|
||||
enabled: '2FA activo',
|
||||
enabledDesc: 'Tu cuenta pide un código de tu app autenticadora cada vez que iniciás sesión.',
|
||||
disabled: '2FA desactivado',
|
||||
disabledDesc: 'Agregá una capa extra de seguridad: un código de tu teléfono además de la contraseña.',
|
||||
enable: 'Activar 2FA',
|
||||
disable: 'Desactivar',
|
||||
disableConfirm: 'Confirmar desactivación',
|
||||
regenerateCodes: 'Regenerar códigos de recuperación',
|
||||
confirmPassword: 'Confirmá tu contraseña',
|
||||
confirm: 'Confirmar',
|
||||
setupTitle: 'Escaneá el código QR',
|
||||
setupDesc: 'Usá Google Authenticator, Authy o cualquier app compatible con TOTP.',
|
||||
manualEntry: '¿No podés escanear? Ingresá este código a mano:',
|
||||
enterCode: 'Código de 6 dígitos',
|
||||
invalidCode: 'Código inválido. Probá de nuevo.',
|
||||
invalidPassword: 'Contraseña incorrecta.',
|
||||
setupFailed: 'No se pudo iniciar la activación de 2FA.',
|
||||
qrAlt: 'Código QR para configurar 2FA',
|
||||
recoveryCodesTitle: 'Guardá estos códigos de recuperación',
|
||||
recoveryCodesWarning: 'Cada uno sirve una sola vez. Usalos si perdés acceso a tu app autenticadora. No se van a volver a mostrar.',
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user