new funcionality

This commit is contained in:
2026-07-27 17:20:02 +02:00
parent c2b5291a74
commit c5ce8a7a36
101 changed files with 6889 additions and 176 deletions

View File

@@ -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.",
},
};