357 lines
16 KiB
TypeScript
357 lines
16 KiB
TypeScript
import type { MessageSchema } from './es';
|
|
|
|
const ca: MessageSchema = {
|
|
nav: {
|
|
dashboard: 'Tauler',
|
|
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',
|
|
},
|
|
common: {
|
|
loading: 'Carregant…',
|
|
creating: 'Creant…',
|
|
create: 'Crear',
|
|
save: 'Desar',
|
|
cancel: 'Cancel·lar',
|
|
close: 'Tancar',
|
|
edit: 'Editar',
|
|
delete: 'Esborrar',
|
|
none: '(cap)',
|
|
},
|
|
login: {
|
|
title: 'Entrar',
|
|
subtitle: "Servidor OAuth2 — tauler d'administració.",
|
|
email: 'Email',
|
|
password: 'Contrasenya',
|
|
submit: 'Entrar',
|
|
submitting: 'Entrant…',
|
|
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',
|
|
name: 'Nom',
|
|
email: 'Email',
|
|
password: 'Contrasenya',
|
|
passwordConfirm: 'Confirmar contrasenya',
|
|
submit: 'Crear compte',
|
|
submitFirstUser: 'Crear compte d\'administrador',
|
|
submitting: 'Creant…',
|
|
haveAccount: 'Ja tens compte?',
|
|
signIn: 'Entra',
|
|
firstUserBanner: 'Encara no hi ha cap usuari. Aquest compte quedarà com a administrador, amb accés immediat (sense aprovació).',
|
|
pendingTitle: 'Compte creat',
|
|
pendingBody: "Un administrador ha d'aprovar el teu compte abans que puguis entrar. És possible que t'avisin fora de l'app quan estigui llest.",
|
|
backToLogin: 'Tornar a entrar',
|
|
},
|
|
dashboard: {
|
|
greeting: 'Hola, {name}',
|
|
subtitle: "Aquest és el tauler d'administració del servidor OAuth2.",
|
|
clientsTitle: 'Clients OAuth',
|
|
clientsDesc: 'Registra apps (Authorization Code+PKCE, Client Credentials o Password Grant).',
|
|
tokensTitle: 'Personal Access Tokens',
|
|
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',
|
|
analyticsDesc: 'Sessions actives, logins per app i usuaris més actius (només admins).',
|
|
apiTitle: 'API REST',
|
|
apiDesc: 'Aquest servidor exposa el recurs {resource} (scopes {read}/{write}) perquè aplicacions de tercers gestionin usuaris via OAuth2. Requereix un access token de Passport. Documentació interactiva a {link}.',
|
|
},
|
|
clients: {
|
|
title: 'Clients OAuth',
|
|
subtitle: 'Apps registrades que poden demanar tokens a aquest servidor.',
|
|
secretWarning: 'Desa aquest client secret ara, no el podràs tornar a veure:',
|
|
clientIdLabel: 'client_id:',
|
|
clientSecretLabel: 'client_secret:',
|
|
newClient: 'Nou client',
|
|
name: 'Nom',
|
|
grantType: 'Grant type',
|
|
grantAuthCode: 'Authorization Code + PKCE',
|
|
grantClientCredentials: 'Client Credentials',
|
|
grantPassword: 'Password Grant',
|
|
redirectUris: 'Redirect URIs (separades per coma)',
|
|
confidentialLabel: "Client confidencial (amb secret). Desmarca-ho per a un client públic que només faci servir PKCE.",
|
|
create: 'Crear client',
|
|
empty: 'Encara no has creat cap client.',
|
|
revoke: 'Revocar',
|
|
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',
|
|
subtitle: "Tokens d'accés directe a l'API, sense passar pel flux d'authorize (tipus API key).",
|
|
tokenWarning: 'Desa aquest token ara, no el podràs tornar a veure:',
|
|
newToken: 'Nou token',
|
|
name: 'Nom',
|
|
namePlaceholder: 'El meu script',
|
|
scopes: 'Scopes',
|
|
create: 'Crear token',
|
|
empty: 'Encara no has creat cap token.',
|
|
revoke: 'Revocar',
|
|
revokeConfirm: 'Vols revocar el token "{name}"?',
|
|
scopesLabel: 'scopes',
|
|
},
|
|
authorizedApps: {
|
|
title: 'Apps autoritzades',
|
|
subtitle: 'Aplicacions de tercers a les quals has donat accés al teu compte.',
|
|
empty: 'Encara no has autoritzat cap app.',
|
|
revoke: 'Revocar accés',
|
|
revokeConfirm: "Vols revocar l'accés de \"{name}\"?",
|
|
scopesLabel: 'scopes',
|
|
},
|
|
authorize: {
|
|
title: 'Autoritzar aplicació',
|
|
wantsAccess: '{client} vol accedir al teu compte ({email}) amb els següents permisos:',
|
|
noScopes: "No sol·licita permisos addicionals (accés bàsic).",
|
|
approve: 'Autoritzar',
|
|
cancel: 'Cancel·lar',
|
|
notFoundTitle: 'Sol·licitud no trobada',
|
|
notFoundBody: "Aquesta pantalla només funciona quan hi arribes redirigit per una aplicació client via {path}. Torna-ho a provar des d'aquella app.",
|
|
goDashboard: 'Anar al tauler',
|
|
},
|
|
adminUsers: {
|
|
title: 'Usuaris',
|
|
subtitle: 'Alta, edició de rol/estat i baixa de comptes.',
|
|
newUser: 'Nou usuari',
|
|
name: 'Nom',
|
|
email: 'Email',
|
|
password: 'Contrasenya',
|
|
role: 'Rol',
|
|
roleUser: 'Usuari',
|
|
roleAdmin: 'Admin',
|
|
create: 'Crear usuari',
|
|
colName: 'Nom',
|
|
colEmail: 'Email',
|
|
colRole: 'Rol',
|
|
colStatus: 'Estat',
|
|
active: 'Actiu',
|
|
inactive: 'Desactivat',
|
|
noRole: '(sense rol)',
|
|
edit: 'Editar',
|
|
delete: 'Esborrar',
|
|
deleteConfirm: 'Vols esborrar l\'usuari "{name}"? Anirà a la paperera i es pot restaurar.',
|
|
deleteFailed: "No s'ha pogut esborrar l'usuari.",
|
|
newPassword: 'Nova contrasenya',
|
|
noChange: '(sense canvis)',
|
|
save: 'Desar',
|
|
cancel: 'Cancel·lar',
|
|
appRolesTitle: 'Rols per app',
|
|
appRolesDesc: 'El rol global de dalt mana en aquest panell. Aquí es defineix quin rol té {name} dins de cada app quan aquella app demana el seu usuari per API.',
|
|
noAppRoles: 'Encara no hi ha rols assignats en cap app.',
|
|
chooseApp: 'Tria una app…',
|
|
assign: 'Assignar',
|
|
assignFailed: "No s'ha pogut assignar el rol.",
|
|
trashTitle: 'Paperera',
|
|
viewTrash: 'Veure paperera',
|
|
viewActive: 'Veure actius',
|
|
trashEmpty: 'No hi ha usuaris esborrats.',
|
|
deletedAt: 'Esborrat el {date}',
|
|
restore: 'Restaurar',
|
|
restoreFailed: "No s'ha pogut restaurar l'usuari.",
|
|
forceDelete: 'Esborrar definitivament',
|
|
forceDeleteConfirm: 'Vols esborrar definitivament "{name}"? Aquesta acció no es pot desfer.',
|
|
forceDeleteFailed: "No s'ha pogut esborrar definitivament.",
|
|
pendingTitle: 'Pendents',
|
|
viewPending: 'Pendents',
|
|
pendingEmpty: "No hi ha registres pendents d'aprovació.",
|
|
registeredAt: 'Es va registrar el {date}',
|
|
approve: 'Aprovar',
|
|
approveFailed: "No s'ha pogut aprovar l'usuari.",
|
|
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',
|
|
subtitle: "Sessions, logins per app i activitat d'usuaris.",
|
|
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',
|
|
loginsToday: 'Logins avui',
|
|
logins7d: 'Logins últims 7 dies',
|
|
loginsByDay: 'Logins per dia',
|
|
appsOAuth: 'Apps (OAuth)',
|
|
panelAdmin: 'Tauler admin',
|
|
loginsByApp: 'Logins per app',
|
|
topUsers: 'Usuaris més actius',
|
|
noAppLogins: 'Encara no hi ha logins d\'apps en aquest període.',
|
|
noUserActivity: 'Encara no hi ha activitat en aquest període.',
|
|
recentActivity: 'Activitat recent',
|
|
hide: 'Amagar',
|
|
viewAll: 'Veure-ho tot',
|
|
colUser: 'Usuari',
|
|
colApp: 'App',
|
|
colType: 'Tipus',
|
|
colIp: 'IP',
|
|
colWhen: 'Quan',
|
|
serviceNoUser: '(servei, sense usuari)',
|
|
deletedApp: '(app esborrada)',
|
|
recentCount: '{count} esdeveniments recents — clica "Veure-ho tot" per a la taula completa.',
|
|
chartAriaLabel: 'Logins per dia, apilat per tipus',
|
|
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.",
|
|
},
|
|
};
|
|
|
|
export default ca;
|