Files
TREK/shared/src/i18n/ca/admin.ts
T
jubnl 1e6ab069cd Fix/sdk default (#2199)
* feat(plugin-sdk): settings-field default + unknown-attribute warning

* feat(shared): default on the plugin settings-field contract

* feat(server): persist and serve plugin settings-field defaults

* feat(client): pre-fill plugin settings defaults in the admin and user forms

* feat(server): enforce required plugin settings on both save paths

* feat(client): block plugin-settings save on an empty required field

* feat(server): resolve plugin settings defaults at runtime

A settings-field `default` was stored and served to the form but never
reached the plugin: the child's init envelope, `ctx.settings.get()`, the
channel dispatch's readAll and the OAuth provider config all read the
stored blob only. Fold `stored ?? default` in on every path that hands
config to a plugin (settings-defaults.ts), and let a default satisfy
`required` on both save gates — refusing a save the runtime would have
accepted was a contradiction.

Also: one `isFilled` rule shared by the save gate and `hasRequired`
(checkbox exempt, whitespace empty); the install parser drops a
non-boolean checkbox default or a select default outside its options,
matching what the SDK already refuses; export SETTING_FIELD_KEYS so the
SDK's mirror can be parity-tested.

* feat(client): share the plugin settings form rules across all three forms

The mobile user settings screen was a third consumer of the fields/config
contract that never got `default` pre-fill or the required check, and
the seed/patch loops lived in five hand copies. Extract
seedSettingsValues / findMissingRequired / settingsPatch into one module
and use it from the admin instance form, the desktop user tab and the
mobile screen. The user forms now surface a 4xx `{ error }` from the
server (the required-field refusal) instead of the generic toast.

* feat(plugin-sdk): seed dev fixtures from manifest defaults

`trek-plugin dev` handed the plugin only the fixture values, so a plugin
relying on its manifest defaults read undefined in dev and only in dev.
Seed ctx.config / ctx.settings from the declared defaults (a fixture
value still wins) via a new exported settingDefaults(manifest, scope).
SETTING_FIELD_KEYS is now parity-tested against the host's list.

* docs(plugins): document settings defaults as runtime fallbacks

A `default` is the field's effective value wherever nobody set one, not
just a form pre-fill; `required` is enforced on both ends; unknown
attributes are dropped at install and warned on by validate. Add a
Settings section with the attribute table to the SDK README and update
the ctx type comments, the shared schema, and the wiki guide.

* add missing exports
2026-09-02 18:42:16 +02:00

638 lines
44 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { TranslationStrings } from '../types';
const admin: TranslationStrings = {
'admin.notifications.title': 'Notificacions',
'admin.notifications.hint': 'Tria un canal per rebre notificacions. Només un pot estar actiu alhora.',
'admin.notifications.none': 'Desactivat',
'admin.notifications.email': 'Correu (SMTP)',
'admin.notifications.webhook': 'Webhook',
'admin.notifications.save': 'Desar la configuració de notificacions',
'admin.notifications.saved': 'Configuració de notificacions desada',
'admin.notifications.testWebhook': 'Enviar webhook de prova',
'admin.notifications.testWebhookSuccess': 'Webhook de prova enviat correctament',
'admin.notifications.testWebhookFailed': 'Error en enviar el webhook de prova',
'admin.smtp.title': 'Correu i notificacions',
'admin.smtp.hint': "Configuració SMTP per a l'enviament de notificacions per correu.",
'admin.smtp.testButton': 'Enviar correu de prova',
'admin.webhook.hint': 'Enviar notificacions a un webhook extern (Discord, Slack, etc.).',
'admin.smtp.testSuccess': 'Correu de prova enviat correctament',
'admin.smtp.testFailed': 'Error en enviar el correu de prova',
'admin.title': 'Administració',
'admin.subtitle': "Gestió d'usuaris i ajustos del sistema",
'admin.tabs.users': 'Usuaris',
'admin.tabs.categories': 'Categories',
'admin.tabs.backup': 'Còpia de seguretat',
'admin.tabs.audit': 'Auditoria',
'admin.stats.users': 'Usuaris',
'admin.stats.trips': 'Viatges',
'admin.stats.places': 'Llocs',
'admin.stats.photos': 'Fotos',
'admin.stats.files': 'Fitxers',
'admin.table.user': 'Usuari',
'admin.table.email': 'Correu',
'admin.table.role': 'Rol',
'admin.table.created': 'Creat',
'admin.table.lastLogin': 'Últim accés',
'admin.table.actions': 'Accions',
'admin.you': '(Tu)',
'admin.editUser': 'Editar usuari',
'admin.newPassword': 'Contrasenya nova',
'admin.newPasswordHint': 'Deixa-ho buit per mantenir la contrasenya actual',
'admin.deleteUser': 'Eliminar l\'usuari "{name}"? Tots els seus viatges s\'esborraran permanentment.',
'admin.deleteUserTitle': 'Eliminar usuari',
'admin.newPasswordPlaceholder': 'Introdueix una contrasenya nova…',
'admin.toast.loadError': "No s'han pogut carregar les dades d'administració",
'admin.toast.userUpdated': 'Usuari actualitzat',
'admin.toast.updateError': "No s'ha pogut actualitzar",
'admin.toast.userDeleted': 'Usuari eliminat',
'admin.toast.deleteError': "No s'ha pogut eliminar",
'admin.toast.cannotDeleteSelf': 'No pots eliminar el teu propi compte',
'admin.toast.userCreated': 'Usuari creat',
'admin.toast.createError': "No s'ha pogut crear l'usuari",
'admin.toast.fieldsRequired': 'Usuari, correu i contrasenya són obligatoris',
'admin.createUser': 'Crea usuari',
'admin.invite.title': "Enllaços d'invitació",
'admin.invite.subtitle': "Crea enllaços de registre d'un sol ús",
'admin.invite.tripLabel': 'Afegeix al viatge (opcional)',
'admin.invite.tripNone': 'Cap viatge',
'admin.invite.tripHint':
"El nou usuari s'afegeix automàticament a aquest viatge quan es registra mitjançant l'enllaç.",
'admin.invite.boundTo': 'afegeix a {trip}',
'admin.invite.create': 'Crea enllaç',
'admin.invite.createAndCopy': 'Crea i copia',
'admin.invite.empty': "No s'ha creat cap enllaç de convidada",
'admin.invite.maxUses': 'Usos màx.',
'admin.invite.expiry': 'Expira després de',
'admin.invite.uses': 'utilitzat(s)',
'admin.invite.expiresAt': 'expira el',
'admin.invite.createdBy': 'per',
'admin.invite.active': 'Actiu',
'admin.invite.expired': 'Expirat',
'admin.invite.usedUp': 'Esgotat',
'admin.invite.copied': 'Enllaç de convidada copiat',
'admin.invite.copyLink': 'Copia enllaç',
'admin.invite.deleted': 'Enllaç de convidada eliminat',
'admin.invite.createError': "Error en crear l'enllaç",
'admin.invite.deleteError': "Error en eliminar l'enllaç",
'admin.tabs.settings': 'Configuració',
'admin.allowRegistration': 'Permetre el registre',
'admin.allowRegistrationHint': 'Els nous usuaris es poden registrar per si mateixos',
'admin.authMethods': "Mètodes d'autenticació",
'admin.passwordLogin': 'Inici de sessió amb contrasenya',
'admin.passwordLoginHint': 'Permet que els usuaris iniciïn sessió amb correu i contrasenya',
'admin.passwordRegistration': 'Registre amb contrasenya',
'admin.passwordRegistrationHint': 'Permet que els usuaris nous es registrin amb correu i contrasenya',
'admin.oidcLogin': 'Inici de sessió SSO',
'admin.oidcLoginHint': 'Permet que els usuaris iniciïn sessió amb SSO',
'admin.oidcRegistration': 'Aprovisionament automàtic SSO',
'admin.oidcRegistrationHint': 'Crea comptes automàticament per als nous usuaris SSO',
'admin.envOverrideHint':
"La configuració d'inici de sessió amb contrasenya està controlada per la variable d'entorn OIDC_ONLY i no es pot canviar aquí.",
'admin.lockoutWarning': "Almenys un mètode d'inici de sessió ha de romandre activat",
'admin.requireMfa': 'Exigir autenticació de dos factors (2FA)',
'admin.requireMfaHint':
"Els usuaris sense 2FA han de completar la configuració a Ajustos abans d'utilitzar l'aplicació.",
'admin.apiKeys': 'Claus API',
'admin.apiKeysHint': 'Opcional. Activa dades ampliades de llocs, com ara fotos i previsió meteorològica.',
'admin.mapsKey': 'Clau API de Google Maps',
'admin.mapsKeyHint': 'Obligatòria per cercar llocs. Aconsegueix-la a console.cloud.google.com',
'admin.mapsKeyHintLong':
"Sense una clau API, la cerca de llocs fa servir OpenStreetMap. Amb una clau de Google també es poden carregar fotos, valoracions i horaris d'obertura. Aconsegueix-la a console.cloud.google.com.",
'admin.recommended': 'Recomanat',
'admin.weatherKey': "Clau API d'OpenWeatherMap",
'admin.weatherKeyHint': 'Per a dades meteorològiques. Gratuït a openweathermap.org',
'admin.validateKey': 'Provar',
'admin.keyValid': 'Connectat',
'admin.keyInvalid': 'No vàlida',
'admin.keySaved': 'Claus API desades',
'admin.oidcTitle': 'Inici de sessió únic (OIDC)',
'admin.oidcSubtitle': 'Permet iniciar sessió mitjançant proveïdors externs com Google, Apple, Authentik o Keycloak.',
'admin.oidcDisplayName': 'Nom visible',
'admin.oidcIssuer': "URL de l'emissor",
'admin.oidcIssuerHint': "L'URL Issuer d'OpenID Connect del proveïdor. Ex.: https://accounts.google.com",
'admin.oidcSaved': 'Configuració OIDC desada',
'admin.fileTypes': 'Tipus de fitxer permesos',
'admin.fileTypesHint': 'Configura quins tipus de fitxer poden pujar els usuaris.',
'admin.fileTypesFormat':
'Extensions separades per comes (p. ex. jpg,png,pdf,doc). Utilitza * per permetre tots els tipus.',
'admin.fileTypesSaved': 'Ajustos de tipus de fitxer desats',
'admin.placesPhotos.title': 'Fotos de Llocs',
'admin.placesPhotos.subtitle':
"Obtén fotos de la Google Places API. Desactiva per estalviar quota d'API. Les fotos de Wikimedia no es veuen afectades.",
'admin.placesAutocomplete.title': 'Autocompletat de Llocs',
'admin.placesAutocomplete.subtitle':
"Utilitza la Google Places API per a suggeriments de cerca. Desactiva per estalviar quota d'API.",
'admin.placesDetails.title': 'Detalls del Lloc',
'admin.placesDetails.subtitle':
"Obtén informació detallada del lloc (horaris, valoració, web) de la Google Places API. Desactiva per estalviar quota d'API.",
'admin.placesEnrich.title': 'Enriquiment de llocs',
'admin.placesEnrich.subtitle':
"Mostra imatges i una descripció en afegir un lloc. Wikipedia i OpenStreetMap s'usen sempre; Google s'hi afegeix si Fotos de llocs o Detalls de llocs estan actius.",
'admin.bagTracking.title': "Seguiment d'equipatge",
'admin.bagTracking.subtitle': "Activar pes i assignació d'equipatge per a articles de la llista",
'admin.collab.chat.title': 'Xat',
'admin.collab.chat.subtitle': 'Missatgeria en temps real per a la col·laboració',
'admin.collab.notes.title': 'Notes',
'admin.collab.notes.subtitle': 'Notes i documents compartits',
'admin.collab.polls.title': 'Enquestes',
'admin.collab.polls.subtitle': 'Enquestes i votacions grupals',
'admin.collab.whatsnext.title': 'Què ve després',
'admin.collab.whatsnext.subtitle': "Suggeriments d'activitats i propers passos",
'admin.tabs.config': 'Personalització',
'admin.tabs.defaults': 'Valors per defecte',
'admin.defaultSettings.title': 'Configuració per defecte dels usuaris',
'admin.defaultSettings.description':
'Estableix valors per defecte per a tota la instància. Els usuaris que no hagin canviat una opció veuran aquests valors. Els seus propis canvis sempre tenen prioritat.',
'admin.defaultSettings.saved': 'Per defecte desat',
'admin.defaultSettings.reset': 'Restaurar al valor per defecte integrat',
'admin.defaultSettings.resetToBuiltIn': 'Restaurar',
'admin.tabs.templates': "Plantilles d'equipatge",
'admin.packingTemplates.title': "Plantilles d'equipatge",
'admin.packingTemplates.subtitle': "Crea llistes d'equipatge reutilitzables per als teus viatges",
'admin.packingTemplates.create': 'Nova plantilla',
'admin.packingTemplates.namePlaceholder': 'Nom de la plantilla (ex. Vacances a la platja)',
'admin.packingTemplates.empty': "Encara no s'ha creat cap plantilla",
'admin.packingTemplates.items': 'articles',
'admin.packingTemplates.categories': 'categories',
'admin.packingTemplates.itemName': "Nom de l'article",
'admin.packingTemplates.itemCategory': 'Categoria',
'admin.packingTemplates.categoryName': 'Nom de categoria (ex. Roba)',
'admin.packingTemplates.addCategory': 'Afegeix una categoria',
'admin.packingTemplates.created': 'Plantilla creada',
'admin.packingTemplates.deleted': 'Plantilla eliminada',
'admin.packingTemplates.loadError': 'Error en carregar les plantilles',
'admin.packingTemplates.createError': 'Error en crear la plantilla',
'admin.packingTemplates.deleteError': 'Error en eliminar la plantilla',
'admin.packingTemplates.deleteCategoryError': 'No es pot eliminar la categoria',
'admin.packingTemplates.deleteItemError': 'No es pot eliminar aquest element',
'admin.packingTemplates.saveError': 'Error en desar',
'admin.tabs.addons': 'Complements',
'admin.addons.title': 'Complements',
'admin.addons.subtitle': 'Activa o desactiva funcions per personalitzar la teva experiència a TREK.',
'admin.addons.subtitleBefore': 'Activa o desactiva funcions per personalitzar la teva experiència a ',
'admin.addons.subtitleAfter': '.',
'admin.addons.catalog.naver_list_import.name': 'Naver List Import',
'admin.addons.catalog.naver_list_import.description': 'Importa llocs des d’una llista compartida de Naver Maps',
'admin.addons.catalog.airtrail.name': 'AirTrail',
'admin.addons.catalog.airtrail.description': 'Sincronitza vols des de la teva instància d’AirTrail',
'admin.addons.catalog.llm_parsing.name': 'Anàlisi amb IA',
'admin.addons.catalog.llm_parsing.description': 'Llegeix reserves que l’analitzador integrat no entén, amb un model d’IA que triïs',
'admin.addons.enabled': 'Actiu',
'admin.addons.disabled': 'Desactivat',
'admin.addons.type.trip': 'Viatge',
'admin.addons.type.global': 'Global',
'admin.addons.type.integration': 'Integració',
'admin.addons.tripHint': 'Disponible com a pestanya dins de cada viatge',
'admin.addons.globalHint': 'Disponible com a secció independent en la navegació principal',
'admin.addons.integrationHint': "Serveis backend i integracions d'API sense pàgina dedicada",
'admin.addons.toast.updated': 'Complement actualitzat',
'admin.addons.toast.error': "No s'ha pogut actualitzar el complement",
'admin.addons.group.count': '{enabled} de {total} actius',
'admin.addons.noAddons': 'No hi ha complements disponibles',
'admin.weather.title': 'Dades meteorològiques',
'admin.weather.badge': 'Des del 24 de març de 2026',
'admin.weather.description':
'TREK utilitza Open-Meteo com a font de dades meteorològiques. Open-Meteo és un servei meteorològic gratuït i de codi obert: no requereix clau API.',
'admin.weather.forecast': 'Pronòstic de 16 dies',
'admin.weather.forecastDesc': 'Abans eren 5 dies (OpenWeatherMap)',
'admin.weather.climate': 'Dades climàtiques històriques',
'admin.weather.climateDesc': 'Mitjanes dels darrers 85 anys per a dates posteriors al pronòstic de 16 dies',
'admin.weather.requests': '10.000 sol·licituds / dia',
'admin.weather.requestsDesc': 'Gratuït, sense necessitat de clau API',
'admin.weather.locationHint':
'El temps es basa en el primer lloc amb coordenades de cada dia. Si no hi ha cap lloc assignat a un dia, es fa servir com a referència qualsevol lloc de la llista.',
'admin.tabs.mcpTokens': 'Accés MCP',
'admin.mcpTokens.title': 'Accés MCP',
'admin.mcpTokens.subtitle': "Gestionar sessions OAuth i tokens d'API de tots els usuaris",
'admin.mcpTokens.sectionTitle': "Tokens d'API",
'admin.mcpTokens.owner': 'Propietari',
'admin.mcpTokens.tokenName': 'Nom del token',
'admin.mcpTokens.created': 'Creat',
'admin.mcpTokens.lastUsed': 'Últim ús',
'admin.mcpTokens.never': 'Mai',
'admin.mcpTokens.empty': "Encara no s'ha creat cap token MCP",
'admin.mcpTokens.deleteTitle': 'Eliminar token',
'admin.mcpTokens.deleteMessage':
"Aquest token es revocarà immediatament. L'usuari perdrà l'accés MCP a través d'aquest token.",
'admin.mcpTokens.deleteSuccess': 'Token eliminat',
'admin.mcpTokens.deleteError': "No s'ha pogut eliminar el token",
'admin.mcpTokens.loadError': "No s'han pogut carregar els tokens",
'admin.oauthSessions.sectionTitle': 'Sessions OAuth',
'admin.oauthSessions.clientName': 'Client',
'admin.oauthSessions.owner': 'Propietari',
'admin.oauthSessions.scopes': 'Permisos',
'admin.oauthSessions.created': 'Creat',
'admin.oauthSessions.empty': 'No hi ha sessions OAuth actives',
'admin.oauthSessions.revokeTitle': 'Revocar sessió',
'admin.oauthSessions.revokeMessage': "Això revocarà la sessió OAuth immediatament. El client perdrà l'accés MCP.",
'admin.oauthSessions.revokeSuccess': 'Sessió revocada',
'admin.oauthSessions.revokeError': "No s'ha pogut revocar la sessió",
'admin.oauthSessions.loadError': "No s'han pogut carregar les sessions OAuth",
'admin.tabs.github': 'GitHub',
'admin.audit.subtitle':
'Esdeveniments sensibles de seguretat i administració (còpies de seguretat, usuaris, MFA, ajustos).',
'admin.audit.empty': "Encara no hi ha entrades d'auditoria.",
'admin.audit.refresh': 'Actualitzar',
'admin.audit.loadMore': 'Carregar més',
'admin.audit.showing': '{count} carregats · {total} en total',
'admin.audit.col.time': 'Data i hora',
'admin.audit.col.user': 'Usuari',
'admin.audit.col.action': 'Acció',
'admin.audit.col.resource': 'Recurs',
'admin.audit.col.ip': 'IP',
'admin.audit.col.details': 'Detalls',
'admin.github.title': 'Historial de versions',
'admin.github.subtitle': 'Últimes novetats de {repo}',
'admin.github.latest': 'Última',
'admin.github.prerelease': 'Prellançament',
'admin.github.showDetails': 'Mostrar els detalls',
'admin.github.hideDetails': 'Amagar detalls',
'admin.github.loadMore': 'Carregar més',
'admin.github.loading': 'Carregant...',
'admin.github.support': 'Ajuda a continuar desenvolupant TREK',
'admin.github.error': "No s'han pogut carregar les versions",
'admin.github.by': 'per',
'admin.update.available': 'Actualització disponible',
'admin.update.text': 'TREK {version} està disponible. Estàs utilitzant {current}.',
'admin.update.button': 'Veure a GitHub',
'admin.update.install': 'Instal·lar actualització',
'admin.update.confirmTitle': "Vols instal·lar l'actualització?",
'admin.update.confirmText':
"TREK s'actualitzarà de {current} a {version}. Després, el servidor es reiniciarà automàticament.",
'admin.update.dataInfo':
'Totes les teves dades (viatges, usuaris, claus API, pujades, Vacay, Atlas, pressupostos) es conservaran.',
'admin.update.warning': "L'aplicació estarà breument no disponible durant el reinici.",
'admin.update.confirm': 'Actualitzar ara',
'admin.update.installing': 'Actualitzant…',
'admin.update.success': "Actualització instal·lada! El servidor s'està reiniciant…",
'admin.update.failed': "L'actualització ha fallat",
'admin.update.backupHint': "Recomanem crear una còpia de seguretat abans d'actualitzar.",
'admin.update.backupLink': 'Anar a Còpia de seguretat',
'admin.update.howTo': 'Com actualitzar',
'admin.update.dockerText':
"La teva instància de TREK s'executa en Docker. Per actualitzar a {version}, executa les següents ordres al teu servidor:",
'admin.update.reloadHint': 'Recarrega la pàgina en uns segons.',
'admin.update.nonDockerText':
"Aquesta instància de TREK no s'executa amb Docker. Per actualitzar a {version}, torna a executar el mètode d'instal·lació o actualització que vas fer servir — per exemple, a Proxmox Community Scripts executa l'actualització des de la consola LXC:",
'admin.update.wikiLink': "Obre la guia d\\'actualització",
'admin.addons.catalog.memories.name': 'Fotos (Immich)',
'admin.addons.catalog.memories.description': "Comparteix fotos de viatge a través de la teva instància d'Immich",
'admin.addons.catalog.mcp.name': 'MCP',
'admin.addons.catalog.mcp.description': "Protocol de context de model per a integració amb assistents d'IA",
'admin.addons.catalog.packing.name': 'Llistes',
'admin.addons.catalog.packing.description': "Llistes d'equipatge i tasques pendents per als teus viatges",
'admin.addons.catalog.budget.name': 'Pressupost',
'admin.addons.catalog.budget.description': 'Controla les despeses del viatge i reparteix-les entre els viatgers',
'admin.addons.catalog.documents.name': 'Documents',
'admin.addons.catalog.documents.description': 'Guarda i gestiona la documentació del viatge',
'admin.addons.catalog.vacay.name': 'Vacances',
'admin.addons.catalog.vacay.description': 'Planificador personal de vacances amb vista de calendari',
'admin.addons.catalog.atlas.name': 'Atles',
'admin.addons.catalog.atlas.description': 'Mapa del món amb els països visitats i estadístiques de viatge',
'admin.addons.catalog.collab.name': 'Col·laboració',
'admin.addons.catalog.collab.description': 'Notes, enquestes, xat i suggeriments per planificar en grup',
'admin.addons.catalog.collections.name': 'Col·leccions',
'admin.addons.catalog.collections.description': 'Recull llocs de qualsevol viatge en llistes amb nom i reutilitza’ls',
'admin.oidcOnlyMode': 'Desactivar autenticació per contrasenya',
'admin.oidcOnlyModeHint':
"Si està activat, només es permet l'inici de sessió amb SSO. L'inici de sessió i registre amb contrasenya es bloquegen.",
'admin.tabs.permissions': 'Permisos',
'admin.group.users': 'Usuaris',
'admin.group.config': 'Configuració',
'admin.group.integration': 'Integracions',
'admin.group.maintenance': 'Manteniment',
'admin.notifications.emailPanel.title': 'Correu (SMTP)',
'admin.notifications.webhookPanel.title': 'Webhook',
'admin.notifications.inappPanel.title': 'In-App',
'admin.notifications.inappPanel.hint':
'Les notificacions in-app sempre estan actives i no es poden desactivar globalment.',
'admin.notifications.adminWebhookPanel.title': "Webhook d'administrador",
'admin.notifications.adminWebhookPanel.hint':
"Aquest webhook s'utilitza exclusivament per a notificacions d'administrador (ex. alertes de versió). És independent dels webhooks d'usuari i s'activa automàticament si hi ha una URL configurada.",
'admin.notifications.adminWebhookPanel.saved': "URL del webhook d'administrador desada",
'admin.notifications.adminWebhookPanel.testSuccess': 'Webhook de prova enviat correctament',
'admin.notifications.adminWebhookPanel.testFailed': 'Error en enviar el webhook de prova',
'admin.notifications.adminWebhookPanel.alwaysOnHint':
"El webhook d'administrador s'activa automàticament si hi ha una URL configurada",
'admin.notifications.ntfy': 'Ntfy',
'admin.ntfy.hint':
"Permet als usuaris configurar els seus propis temes ntfy per a notificacions push. Estableix el servidor per defecte a continuació per omplir automàticament els ajustos de l'usuari.",
'admin.notifications.testNtfy': 'Enviar Ntfy de prova',
'admin.notifications.testNtfySuccess': 'Ntfy de prova enviat correctament',
'admin.notifications.testNtfyFailed': 'Error en enviar el Ntfy de prova',
'admin.notifications.adminNtfyPanel.title': "Ntfy d'administrador",
'admin.notifications.adminNtfyPanel.hint':
"Aquest tema Ntfy s'utilitza exclusivament per a notificacions d'administrador (ex. alertes de versió). És independent dels temes per usuari i sempre s'activa quan està configurat.",
'admin.notifications.adminNtfyPanel.serverLabel': 'URL del servidor Ntfy',
'admin.notifications.adminNtfyPanel.serverHint':
"També s'utilitza com a servidor per defecte per a les notificacions ntfy dels usuaris. Deixa-ho en blanc per utilitzar ntfy.sh. Els usuaris poden canviar-lo en els seus propis ajustos.",
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
'admin.notifications.adminNtfyPanel.topicLabel': "Tema d'administrador",
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts',
'admin.notifications.adminNtfyPanel.tokenLabel': "Token d'accés (opcional)",
'admin.notifications.adminNtfyPanel.tokenCleared': "Token d'accés d'administrador eliminat",
'admin.notifications.adminNtfyPanel.saved': "Configuració de Ntfy d'administrador desada",
'admin.notifications.adminNtfyPanel.test': 'Enviar Ntfy de prova',
'admin.notifications.adminNtfyPanel.testSuccess': 'Ntfy de prova enviat correctament',
'admin.notifications.adminNtfyPanel.testFailed': 'Error en enviar el Ntfy de prova',
'admin.notifications.adminNtfyPanel.alwaysOnHint':
"El Ntfy d'administrador sempre s'activa quan hi ha un tema configurat",
'admin.notifications.adminNotificationsHint':
"Configura quins canals entreguen notificacions d'administrador (ex. alertes de versió). El webhook s'activa automàticament si hi ha una URL de webhook d'administrador configurada.",
'admin.notifications.tripReminders.title': 'Recordatoris de viatge',
'admin.notifications.tripReminders.hint':
'Envia una notificació de recordatori abans que comenci un viatge (requereix dies de recordatori configurats al viatge).',
'admin.notifications.tripReminders.enabled': 'Recordatoris de viatge activats',
'admin.notifications.tripReminders.disabled': 'Recordatoris de viatge desactivats',
'admin.tabs.notifications': 'Notificacions',
'admin.addons.catalog.journey.name': 'Travessia',
'admin.addons.catalog.journey.description':
"Seguiment de viatges i dietari de viatger amb registres d'ubicació, fotos i històries diàries",
'admin.passkey.title': "Inici de sessió amb clau d'accés",
'admin.passkey.cardHint':
"Permet que els usuaris iniciïn sessió amb claus d'accés (WebAuthn). Desactivat per defecte.",
'admin.passkey.login': "Activar inici de sessió amb clau d'accés",
'admin.passkey.loginHint':
'Mostra una opció "Iniciar sessió amb una clau d\'accés" i permet als usuaris registrar claus d\'accés als seus ajustos.',
'admin.passkey.notConfigured':
"Encara no es resol cap domini de WebAuthn per a aquesta instal·lació. Defineix APP_URL o l'ID de la part confiable a continuació: les claus d'accés romandran ocultes fins aleshores.",
'admin.passkey.rpId': 'ID de la part confiable (domini)',
'admin.passkey.rpIdHint':
"El domini pur al qual estan vinculades les claus d'accés, p. ex. trek.example.org. Deixa-ho buit per derivar-lo d'APP_URL. Canviar-lo més endavant invalida les claus d'accés existents.",
'admin.passkey.origins': 'Orígens permesos',
'admin.passkey.originsHint':
'Orígens complets separats per comes, p. ex. https://trek.example.org. Deixa-ho buit per utilitzar APP_URL.',
'admin.passkey.reset': "Restablir claus d'accés",
'admin.passkey.resetHint':
"Elimina totes les claus d'accés d'aquest usuari (p. ex. després de perdre un dispositiu). Encara podrà iniciar sessió amb la seva contrasenya.",
'admin.passkey.resetConfirm': "Vols eliminar totes les claus d'accés de {name}?",
'admin.passkey.resetDone': "S'han eliminat {count} clau(s) d'accés",
'admin.defaultSettings.mapProvider': 'Motor de mapes',
'admin.defaultSettings.mapProviderHint':
'El mapa per defecte per a tothom en aquesta instància. Cada usuari pot canviar-lo en els seus propis ajustos.',
'admin.defaultSettings.providerLeaflet': 'Estàndard (gratuït)',
'admin.defaultSettings.providerMapbox': 'Mapbox (3D)',
'admin.defaultSettings.providerMapLibre': 'MapLibre (OpenFreeMap)',
'admin.defaultSettings.mapboxToken': 'Token de Mapbox compartit',
'admin.defaultSettings.mapboxTokenHint':
"S'utilitza per a cada usuari que no hagi introduït el seu propi token, de manera que tota la instància obtingui Mapbox sense compartir la clau individualment. S'emmagatzema xifrat.",
'admin.defaultSettings.mapboxStyle': 'Estil de mapa',
'admin.defaultSettings.mapboxStylePlaceholder': 'Tria un estil…',
'admin.defaultSettings.mapbox3d': 'Edificis i terreny en 3D',
'admin.defaultSettings.mapboxQuality': "Mode d'alta qualitat",
'admin.defaultSettings.cartoKey': 'Clau CARTO compartida',
'admin.defaultSettings.cartoKeyHint':
"S'utilitza per a cada usuari que no hagi introduït la seva pròpia clau, de manera que tota la instància obtingui tessel·les de CARTO sense marca d'aigua. S'emmagatzema xifrada.",
'admin.unsplashKey': "Clau API d'Unsplash",
'admin.unsplashKeyHint': "Per a la cerca d'imatges. Gratuït a unsplash.com/developers",
'admin.tabs.plugins': 'Connectors',
'admin.tabs.storage': 'Emmagatzematge',
'admin.plugins.rescan': 'Torna a escanejar',
'admin.plugins.rescanned': "S'ha tornat a escanejar la carpeta de connectors",
'admin.plugins.upload': 'Puja el connector',
'admin.plugins.dropToUpload': 'Deixa anar un .zip de connector per instal·lar-lo',
'admin.plugins.uploaded': "Connector “{name}” pujat — activa'l per executar-lo",
'admin.plugins.sideloaded': 'Carregat manualment',
'admin.plugins.devLinkBadge': 'Dev-Link',
'admin.plugins.devLinkHint':
"Carregat des d'un directori de compilació local i recarregat en calent amb dades reals — només per a desenvolupament",
'admin.plugins.devLinkTitle': 'Vincula un connector local',
'admin.plugins.devLinkPathPlaceholder': '/absolute/path/to/your/plugin',
'admin.plugins.devLinkButton': 'Vincula',
'admin.plugins.devLinkLinked': "{id} vinculat — activa'l per executar-lo",
'admin.plugins.sideloadedHint': 'Pujat manualment — no prové del registre, sense signar ni revisar',
'admin.plugins.browse': 'Explora els connectors',
'admin.plugins.installed': 'Instal·lat',
'admin.plugins.install': 'Instal·la',
'admin.plugins.registryEmpty': 'Encara no hi ha connectors disponibles al registre.',
'admin.plugins.actionError': "L'acció ha fallat",
'admin.plugins.activate': 'Activa',
'admin.plugins.activated': 'Connector activat',
'admin.plugins.deactivate': 'Desactiva',
'admin.plugins.deactivated': 'Connector desactivat',
'admin.plugins.viewErrors': "Mostra el registre d'errors",
'admin.plugins.errorLog': "Registre d'errors",
'admin.plugins.allowedHosts': 'Amfitrions permesos',
'admin.plugins.allowedHosts.hint':
'Aquest connector es comunica amb un servei que només tu pots indicar (un servidor autoallotjat). Afegeix els amfitrions als quals pot accedir; no pot accedir a cap altre.',
'admin.plugins.allowedHosts.none': "Encara no s'ha afegit cap amfitrió.",
'admin.plugins.allowedHosts.unsupported':
"Aquest connector no utilitza amfitrions proporcionats per l'operador. Els seus amfitrions permesos estan fixats al seu manifest.",
'admin.plugins.allowedHosts.restartNote': 'En desar es reinicia el connector perquè apliqui la nova llista.',
'admin.plugins.allowedHosts.add': 'Afegeix un amfitrió permès',
'admin.plugins.allowedHosts.count': '{n} amfitrió(ns) permès(os)',
'admin.plugins.operatorEgressPill': '+ amfitrions que afegeixis',
'admin.plugins.operatorEgressHint':
"Aquest connector es comunica amb un servei que només tu pots indicar (un servidor autoallotjat). Després d'instal·lar-lo, afegeix els amfitrions als quals pot accedir a ⋯ → Amfitrions permesos. No pot accedir a cap altre.",
'admin.plugins.noErrors': 'No hi ha errors registrats.',
'admin.plugins.uninstalled': 'Connector desinstal·lat',
'admin.plugins.uninstallTitle': 'Vols desinstal·lar el connector?',
'admin.plugins.uninstallBody':
"Això atura el connector, n'elimina el codi i esborra totes les seves dades. Aquesta acció no es pot desfer.",
'admin.plugins.status.starting': "S'està iniciant…",
'admin.plugins.type.widget': 'Giny',
'admin.plugins.type.page': 'Pàgina',
'admin.plugins.type.integration': 'Integració',
'admin.plugins.type.trip-page': 'Pàgina de viatge',
'admin.plugins.reviewed': 'Revisat',
'admin.plugins.unreviewed': 'Sense revisar',
'admin.plugins.updated': 'Connector actualitzat',
'admin.plugins.updateTo': 'Actualitzar → v{version}',
'admin.plugins.enabledToggle': 'Activar el connector',
'plugins.notFound': "No s'ha trobat el connector",
'plugins.frameLoadFailed': 'This plugin could not be loaded.',
'admin.plugins.title': 'Connectors',
'admin.plugins.subtitle': 'Instal·la i gestiona connectors de tercers a la teva instància.',
'admin.plugins.disabledTitle': 'Els connectors estan desactivats',
'admin.plugins.disabledBody':
"L'entorn d'execució de connectors està desactivat (TREK_PLUGINS_ENABLED). Cap connector es pot executar fins que un administrador l'activi a la configuració del servidor.",
'admin.plugins.empty': 'Encara no hi ha cap connector instal·lat.',
'admin.plugins.loadError': "No s'han pogut carregar els connectors.",
'admin.plugins.scaffoldNote':
"La instal·lació i l'activació de connectors arribaran en una actualització posterior. Ara mateix, aquest tauler només mostra els connectors instal·lats.",
'admin.plugins.status.active': 'Actiu',
'admin.plugins.status.inactive': 'Inactiu',
'admin.plugins.status.disabled': 'Desactivat',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.plugins.details': 'Detalls',
'admin.plugins.detailError': "No s'han pogut carregar els detalls del connector.",
'admin.plugins.permissionsTitle': 'Permisos',
'admin.plugins.noPermissions': 'Aquest connector no sol·licita cap permís especial.',
'admin.plugins.egressNote': 'Es pot connectar a: {hosts}',
'admin.plugins.setupTitle': 'Configuració',
'admin.plugins.noSetup': 'Funciona de seguida — no cal configurar res.',
'admin.plugins.scope.instance': 'Per a tota la instància',
'admin.plugins.scope.user': 'Per usuari',
'admin.plugins.fieldRequired': 'Obligatori',
'admin.plugins.sourceRepo': 'Repositori de codi',
'admin.plugins.reportIssue': "Informar d'un problema",
'admin.plugins.homepage': 'Lloc web',
'admin.plugins.requiresTrek': 'Requereix TREK {version}+',
'admin.plugins.reviewedOn': 'Verificat el {date}',
'admin.plugins.perm.hook:map-layer-provider': 'Dibuixar rutes, corredors i zones al mapa del viatge',
'admin.plugins.perm.hook:route-provider':
'Oferir perfils de ruta amb què el planificador pot calcular els dies (p. ex. rutes per a cotxe elèctric amb parades de recàrrega)',
'admin.plugins.perm.hook:day-schedule-provider':
'Afegir entrades horàries al pla del dia (parades de recàrrega, marges de seguretat)',
'admin.plugins.perm.hook:day-tint-provider':
'Acolorir els dies del pla del dia (per exemple, a quin tram del viatge pertany un dia)',
'admin.plugins.cap.mcpTools': 'Publica eines d’IA',
'admin.plugins.mcpToolsTitle': 'Eines d’IA que publica',
'admin.plugins.mcpToolsHint': 'Un assistent pot executar-les en nom d’un usuari. Cadascuna actua amb els permisos concedits a dalt.',
'admin.plugins.perm.mcp:tools':
"Publicar eines que un assistent d'IA pot executar en nom teu (actua amb els permisos que concedeixes aquí al connector, no amb els seus)",
'admin.plugins.perm.geolocation:read':
"Consultar la teva ubicació en temps real mentre una de les seves vistes és oberta (el TREK la llegeix amb el permís d'ubicació d'aquest lloc, no amb un permís propi del connector)",
'admin.plugins.updateConsentTitle': 'Aquesta actualització necessita permisos nous',
'admin.plugins.updateConsentBody':
"{name} v{version} demana permisos que encara no has concedit. La versió nova està instal·lada, però roman desactivada fins que l'aprovis.",
'admin.plugins.updateNewPermissions': 'Permisos sol·licitats nous',
'admin.plugins.updateNewEgress': 'Connexions de sortida noves',
'admin.plugins.updateApprove': 'Aprovar i activar',
'admin.plugins.updateLater': 'Deixar-lo desactivat de moment',
'admin.plugins.updateKeptOff': 'Actualització instal·lada — es deixa desactivada fins que aprovis els permisos nous',
'admin.plugins.reviewedMeaning':
'"Verificat" significa que un mantenidor de TREK ha analitzat aquest connector a la recerca de programari maliciós en cada versió, no la seva qualitat ni si funciona. No és cap garantia que un connector sigui inofensiu.',
'admin.plugins.security.title': 'Com es contenen els connectors — i els límits',
'admin.plugins.security.isolationTitle': "Cada connector s'executa aïllat",
'admin.plugins.security.isolationBody':
"Un connector s'executa com el seu propi procés blindat que només pot llegir els seus propis fitxers. No pot llegir la teva base de dades, el teu secret d'inici de sessió ni la teva clau de xifratge, no pot iniciar altres programes i no pot escriure fitxers enlloc. La seva interfície s'executa en un marc de navegador segellat que no pot llegir la teva galeta de sessió ni tocar la pàgina de TREK que l'envolta.",
'admin.plugins.security.permsTitle': 'Què signifiquen els permisos',
'admin.plugins.security.permsBody':
"Els permisos que es mostren abans d'instal·lar són un límit estricte que TREK aplica mentre el connector s'executa: literalment no pot fer res que no sigui a la llista. Però t'indiquen el que un connector pot fer, no el que fa realment. Un connector amb permís per llegir els teus viatges i connectar-se a un servidor pot enviar els teus viatges a aquest servidor, així que llegeix els permisos i els amfitrions de sortida, no només la descripció.",
'admin.plugins.security.limitsTitle': 'El que no podem prometre',
'admin.plugins.security.limitsBody':
"L'aïllament és una frontera de programari sòlida, però no absoluta. Un connector actua exactament amb els permisos que aprovis, així que, dins d'aquests permisos, pot comportar-se de manera diferent del que suggereix la seva descripció i pot enviar les dades que té legítimament als amfitrions que ha declarat. TREK no llegeix ni jutja el que fa realment el codi d'un connector.",
'admin.plugins.security.worstTitle': 'El pitjor dels casos',
'admin.plugins.security.worstBody':
"Un connector hostil que activis pot fer un mal ús de les dades i connexions que li has concedit — per exemple, filtrar els viatges que té permís per llegir. No pot robar contrasenyes, falsificar un inici de sessió d'administrador, executar ordres al teu servidor ni accedir a dades que no li has concedit. El dany es limita al que has aprovat, i desactivar el connector l'atura.",
'admin.plugins.security.reviewedTitle': 'Què vol dir "Revisat"',
'admin.plugins.security.reviewedBody':
"Un connector revisat ha estat analitzat manualment a la recerca de programari maliciós per un mantenidor de TREK a cada versió — s'hi ha buscat codi hostil, no pas si funciona bé. No és cap garantia que el connector sigui inofensiu.",
'admin.plugins.security.signedTitle': 'Què vol dir "Signat"',
'admin.plugins.security.signedBody':
"La suma de verificació que TREK comprova a cada instal·lació demostra que els fitxers són exactament els que el registre avala. Una signatura demostra una altra cosa: que provenen de l'autor, signats amb una clau que només ell posseeix. Un connector signat té totes dues coses. Un connector sense signar no és insegur — simplement té una garantia menys, i actualment la majoria dels connectors del registre no estan signats.",
'admin.plugins.signed': 'Signat',
'admin.plugins.signedHint': "Verificat amb la clau de signatura de l'autor en el moment de la instal·lació",
'admin.plugins.unsigned': 'Sense signar',
'admin.plugins.unsignedHint':
"Els fitxers coincideixen amb el que el registre avala, però res no els vincula amb l'autor. Una garantia menys — no és insegur.",
'admin.plugins.updateBlocked': 'Actualització bloquejada — {reason}',
'admin.plugins.reviewBlock': 'Revisar',
'admin.plugins.retrusted': "Nova clau de signatura acceptada — el connector s'ha actualitzat",
'admin.plugins.sig.title': "No s'ha pogut verificar la signatura de {name}",
'admin.plugins.sig.keyChangedBody':
"La clau de signatura de l'autor no és la mateixa amb què es va instal·lar aquest connector. Els autors sí que canvien de clau — però un atacant que hagués pres el control del connector es veuria exactament així.",
'admin.plugins.sig.invalidBody':
"Els fitxers no coincideixen amb la signatura de l'autor. No són el que l'autor va signar — o bé s'han malmès, o bé s'han manipulat. Això no es pot ometre.",
'admin.plugins.sig.missingBody':
'Aquest connector estava signat quan el vas instal·lar, però la nova versió no inclou cap signatura. TREK no acceptarà aquesta degradació en silenci. Això no es pot ometre.',
'admin.plugins.sig.incompleteBody':
"L'entrada del registre està signada a mitges: declara una clau d'autor però la versió no porta cap signatura (o a l'inrevés). És un error per part del connector. Això no es pot ometre.",
'admin.plugins.sig.pinnedKey': 'Clau amb què es va instal·lar',
'admin.plugins.sig.newKey': 'Clau que ofereix ara',
'admin.plugins.sig.confirmOutOfBand':
"TREK no pot distingir una rotació de clau legítima d'una presa de control — des d'aquí totes dues es veuen idèntiques. Confirma la nova clau amb l'autor a través d'un canal en què ja confiïs abans d'acceptar-la. Un cop ho facis, el connector s'actualitza i la nova clau es recorda.",
'admin.plugins.sig.retrustConfirm': 'Confiar en la nova clau i actualitzar',
'admin.plugins.sig.cancel': 'No confiar-hi',
'admin.plugins.sig.consentUnsigned':
"Res no vincula aquesta versió amb el seu autor — els fitxers coincideixen amb el registre, però no porten cap signatura de l'autor.",
'admin.plugins.security.trustTitle': 'En resum',
'admin.plugins.security.trustBody':
"Instal·lar un connector és com instal·lar qualsevol aplicació de tercers: afegeix només codi d'autors en qui confiïs i, en cas de dubte, inspecciona'l tu mateix primer. TREK no assumeix cap responsabilitat pels connectors de tercers.",
'admin.plugins.runtimeOn': "Entorn d'execució actiu",
'admin.plugins.tabDiscover': 'Descobreix',
'admin.plugins.searchPlaceholder': 'Cerca connectors…',
'admin.plugins.filterType': 'Tipus',
'admin.plugins.filterStatus': 'Estat',
'admin.plugins.sortBy': 'Ordena',
'admin.plugins.allTypes': 'Tots els tipus',
'admin.plugins.allStatuses': 'Tots',
'admin.plugins.stateOff': 'Desactivat',
'admin.plugins.filterUpdate': 'Actualització disponible',
'admin.plugins.sortName': 'Nom',
'admin.plugins.sortRecent': 'Actualitzats recentment',
'admin.plugins.sortUpdates': 'Primer les actualitzacions',
'admin.plugins.sortDownloads': 'Més baixades',
'admin.plugins.updatesAvailable': '{count} actualitzacions disponibles per als teus connectors.',
'admin.plugins.newerNeedsTrek': 'v{version} disponible — necessita TREK {range}',
'admin.plugins.versionsTitle': 'Versions',
'admin.plugins.versionPickerTitle': 'Canvia la versió — {name}',
'admin.plugins.versionSwitch': 'Canvia a {version}',
'admin.plugins.versionNeedsTrek': 'necessita TREK {range}',
'admin.plugins.changeVersion': 'Canvia la versió…',
'admin.plugins.noVersions': 'No s\'han trobat versions publicades al registre.',
'admin.plugins.downgradeTitle': 'Vols revertir aquest connector?',
'admin.plugins.downgradeBody': 'Canvi de v{from} a v{to}: les dades escrites per la versió més nova es mantenen, i la versió antiga pot no entendre-les.',
'admin.plugins.downgradeConfirm': 'Reverteix',
'admin.plugins.updatesHeld': 'Actualitzacions en pausa a la v{version}',
'admin.plugins.resumeUpdates': 'Reprèn les actualitzacions',
'admin.plugins.updatesResumed': 'Actualitzacions represes',
'admin.plugins.updateAll': 'Actualitza-ho tot',
'admin.plugins.noMatchInstalled': 'Cap connector instal·lat coincideix amb la teva cerca.',
'admin.plugins.noMatchRegistry': 'Cap connector del registre coincideix amb la teva cerca.',
'admin.plugins.restart': 'Reinicia',
'admin.plugins.restarted': 'Connector reiniciat',
'admin.plugins.instanceSettings': 'Configuració de la instància',
'admin.plugins.settingsSaved': 'Configuració desada',
'admin.plugins.settingsSavedRestarted': 'Configuració desada — connector reiniciat',
'admin.plugins.requiredMissing': '"{field}" és obligatori',
'admin.plugins.cap.readsTrips': 'Llegeix els teus viatges',
'admin.plugins.cap.readsUsers': 'Llegeix els perfils bàsics',
'admin.plugins.cap.readsCosts': 'Llegeix les teves despeses',
'admin.plugins.cap.readsPacking': "Llegeix les llistes d'equipatge",
'admin.plugins.cap.readsFiles': 'Llegeix els fitxers del viatge',
'admin.plugins.cap.writesCosts': 'Afegeix despeses',
'admin.plugins.cap.writesPlaces': 'Edita els llocs',
'admin.plugins.cap.writesDays': 'Edita els dies',
'admin.plugins.cap.writesItinerary': "Edita l'itinerari",
'admin.plugins.cap.writesTrips': 'Edita els viatges',
'admin.plugins.cap.metadata': 'Afegeix metadades',
'admin.plugins.cap.widget': 'Giny del tauler',
'admin.plugins.cap.heroWidget': "Giny de targeta d'embarcament",
'admin.plugins.cap.placeSlot': 'Detall del lloc',
'admin.plugins.cap.daySlot': 'Detall del dia',
'admin.plugins.cap.reservationSlot': 'Detall de la reserva',
'admin.plugins.cap.replacesTabs': 'Substitueix pestanyes del planificador',
'admin.plugins.cap.realtime': 'Actualitzacions en temps real',
'admin.plugins.cap.notificationChannel': 'Canal de notificacions',
'admin.plugins.cap.photos': 'Proporciona fotos',
'admin.plugins.cap.calendar': 'Proporciona esdeveniments de calendari',
'admin.plugins.cap.placeDetails': 'Enriqueix els llocs',
'admin.plugins.cap.warnings': 'Marca problemes',
'admin.plugins.cap.mapLayers': 'Dibuixa al mapa',
'admin.plugins.cap.routing': 'Calcula rutes',
'admin.plugins.cap.daySchedule': 'Afegeix horaris al pla',
'admin.plugins.cap.dayTint': 'Acoloreix els dies',
'admin.plugins.cap.geolocation': 'Llegeix la teva ubicació',
'admin.plugins.cap.events': "Reacciona a l'activitat",
'admin.plugins.cap.requiresAddon': 'Requereix {addon}',
'admin.plugins.cap.dependsOn': 'Necessita {id} {version}',
'admin.plugins.dep.addonDisabledToast': 'Activa primer els complements necessaris: {addons}',
'admin.plugins.dep.autoEnabled': "S'han activat primer els connectors necessaris: {plugins}",
'admin.plugins.dep.downloaded': "S'ha baixat {id}",
'admin.plugins.dep.resolveTitle': 'Dependències que falten',
'admin.plugins.dep.resolveBody':
'«{name}» necessita que aquests connectors estiguin instal·lats abans de poder-se activar.',
'admin.plugins.dep.requires': 'Requereix {version}',
'admin.plugins.dep.mismatch': 'Necessita {wanted} — {installed} està instal·lat',
'admin.plugins.dep.download': 'Baixa',
'admin.plugins.dep.update': 'Actualitza',
'admin.plugins.dep.resolveHint': 'Baixa la darrera versió compatible, incloses les seves pròpies dependències.',
'admin.plugins.dep.trekIncompatible': 'Necessita TREK {range} — aquest servidor executa {host}',
'admin.plugins.dep.trekUnknown': 'No indica quines versions de TREK admet',
'admin.plugins.installCompatible': 'Instal·la {version}',
'admin.plugins.incompatible': 'Incompatible',
'admin.plugins.accessTitle': 'A què pot accedir',
'admin.plugins.connectsTitle': 'Es connecta a',
'admin.plugins.detailsTitle': 'Detalls',
'admin.plugins.noAccess': 'No necessita cap accés especial.',
'admin.plugins.metaVersion': 'Versió',
'admin.plugins.metaSize': 'Mida',
'admin.plugins.metaRequires': 'Requereix',
'admin.plugins.metaReviewed': 'Revisat el',
'admin.plugins.downloads': 'Baixades',
};
export default admin;