Initial commit: Pireon Admin — headless admin panel and public API

Laravel 13 + Filament 5 admin panel and REST API for a non-profit developer
collective, backed by the Pireon OAuth identity server. The public site is a
separate, server-rendered application consuming /api/public/v1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-19 17:55:27 +02:00
commit 3897113313
534 changed files with 64050 additions and 0 deletions

119
lang/ca/actions.php Normal file
View File

@@ -0,0 +1,119 @@
<?php
declare(strict_types=1);
return [
'accept' => 'Acceptar',
'action' => 'Acció',
'actions' => 'Accions',
'add' => 'Afegeix',
'admin' => 'Admin',
'agree' => 'Acordar',
'archive' => 'Arxiu',
'assign' => 'Assignar',
'associate' => 'Associat',
'attach' => 'Adjuntar',
'browse' => 'Navega',
'cancel' => 'Cancel · lar',
'choose' => 'Tria',
'choose_file' => 'Trieu l\'arxiu',
'choose_image' => 'Trieu Imatge',
'click_to_copy' => 'Feu clic per copiar',
'close' => 'Tanca',
'collapse' => 'Col·lapse',
'collapse_all' => 'Col · lapsar tot',
'comment' => 'Comenta',
'confirm' => 'Confirmeu',
'connect' => 'Connecta\'t',
'create' => 'Crear',
'delete' => 'Suprimeix',
'detach' => 'Separar',
'details' => 'Detalls',
'disable' => 'Desactivar',
'discard' => 'Descartar',
'done' => 'Fet',
'down' => 'Avall',
'duplicate' => 'Duplicat',
'edit' => 'Edita',
'enable' => 'Activa',
'expand' => 'Ampliar',
'expand_all' => 'Amplia-ho tot',
'explanation' => 'Explicació',
'export' => 'Exporta',
'file' => 'Dossier',
'files' => 'Fitxers',
'go_home' => 'Aneu a l\'inici',
'hide' => 'Amaga',
'home' => 'Inici',
'image' => 'Imatge',
'impersonate' => 'Suplantar la identitat',
'impersonation' => 'Suplantació d\'identitat',
'import' => 'Importar',
'introduction' => 'Introducció',
'like' => 'M\'agrada',
'load' => 'Carrega',
'localize' => 'Localitza',
'log_in' => 'Iniciar Sessió',
'log_out' => 'Tancar sessió',
'named' => [
'add' => 'Afegeix :name',
'choose' => 'Trieu :name',
'create' => 'Crea :name',
'delete' => 'Suprimeix :name',
'duplicate' => 'Duplicat: nom',
'edit' => 'Edita :name',
'export' => 'Export :name',
'hide' => 'Amaga :name',
'import' => 'Importació :name',
'new' => 'Nou :name',
'restore' => 'Restaurar :name',
'save' => 'Estalvia :name',
'search' => 'Cerca :name',
'show' => 'Mostra :name',
'update' => 'Actualització :name',
'view' => 'Vista :name',
],
'new' => 'Nou',
'no' => 'No',
'open' => 'Obert',
'open_website' => 'Obert al lloc web',
'preview' => 'Vista prèvia',
'price' => 'Preu',
'record' => 'Registre',
'restore' => 'Restaurar',
'save' => 'Desa',
'save_and_close' => 'Desa i tanca',
'save_and_return' => 'Guarda i torna',
'search' => 'Cerca',
'select' => 'Seleccioneu',
'select_all' => 'Seleccionar tot',
'send' => 'Enviar',
'settings' => 'Configuració',
'show' => 'Espectacle',
'show_all' => 'Mostrar tots',
'sign_in' => 'Inicieu la sessió',
'solve' => 'Resol',
'start' => 'Començar',
'stop' => 'Atura',
'submit' => 'Presentar',
'subscribe' => 'Subscriu-te',
'switch' => 'Interruptor',
'switch_to_role' => 'Canvia al rol',
'tag' => 'Etiqueta',
'tags' => 'Etiquetes',
'target_link' => [
'blank' => 'Obre en una finestra nova',
'parent' => 'Obre en un marc principal',
'self' => 'Obre en una finestra actual',
'top' => 'Obre al marc superior',
],
'translate' => 'Traduir',
'translate_it' => 'Tradueix-ho',
'unpack' => 'Desempaquetar',
'unsubscribe' => 'Cancel·la la subscripció',
'up' => 'Amunt',
'update' => 'Actualització',
'user' => 'Usuari',
'view' => 'Veure',
'yes' => 'Sí',
];

9
lang/ca/auth.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
return [
'failed' => 'Aquestes credencials no concorden amb els nostres registres.',
'password' => 'La contrasenya és incorrecta.',
'throttle' => 'Ha superat el nombre màxim d\'intents d\'accés. Si us plau, torni a intentar-ho en :seconds segons.',
];

28
lang/ca/console.php Normal file
View File

@@ -0,0 +1,28 @@
<?php
declare(strict_types=1);
return [
'prune' => [
'dry_run' => 'Simulació: no s\'esborra res.',
'revisions' => 'Entrades d\'historial antigues',
'trash' => 'Registres eliminats definitivament',
'media' => 'Imatges que ja no fa servir ningú',
'missing_urls' => 'URL no trobades d\'una sola visita',
'views' => 'Xifres de lectura antigues',
],
'types' => [
'no_spec' => 'No hi ha especificació publicada a public/openapi.yaml.',
'current' => 'Els tipus estan al dia.',
'stale' => 'Els tipus no coincideixen amb l\'especificació. Executa: php artisan api:types',
'written' => ':count esquemes escrits a :path',
],
'schedule' => [
'closed' => 'tancada (va passar la seva data)',
'pending' => 'Esperant la seva data de publicació',
'off_site' => 'Fora del web per haver caducat',
'summary' => '{0}No hi havia convocatòries per tancar.|{1}S\'ha tancat 1 convocatòria vençuda.|[2,*]S\'han tancat :count convocatòries vençudes.',
],
];

7
lang/ca/docs.php Normal file
View File

@@ -0,0 +1,7 @@
<?php
declare(strict_types=1);
return [
'title' => 'Documentació de l\'API',
];

68
lang/ca/enums.php Normal file
View File

@@ -0,0 +1,68 @@
<?php
declare(strict_types=1);
return [
'page_status' => [
'draft' => 'Esborrany',
'review' => 'En revisió',
'published' => 'Publicada',
'archived' => 'Arxivada',
],
'project_status' => [
'idea' => 'Idea',
'active' => 'En marxa',
'paused' => 'En pausa',
'completed' => 'Acabat',
'archived' => 'Arxivat',
],
'missing_url_status' => [
'pending' => 'Sense decidir',
'resolved' => 'Resolta',
'ignored' => 'Ignorada',
],
'review_event' => [
'requested' => 'Revisió demanada',
'returned' => 'Retornat',
'published' => 'Publicat',
'commented' => 'Comentari',
],
'call_status' => [
'open' => 'Oberta',
'filled' => 'Coberta',
'closed' => 'Tancada',
],
'application_status' => [
'new' => 'Sense respondre',
'contacted' => 'Contactada',
'accepted' => 'Acceptada',
'declined' => 'Descartada',
'spam' => 'Spam',
],
'application_kind' => [
'contribute' => 'Vol ajudar',
'request' => 'Demana ajuda',
],
'radar_ring' => [
'adopt' => 'Adoptar',
'trial' => 'Provar',
'assess' => 'Avaluar',
'hold' => 'Evitar',
],
'technology_category' => [
'language' => 'Llenguatge',
'framework' => 'Framework',
'datastore' => 'Emmagatzematge',
'infrastructure' => 'Infraestructura',
'tool' => 'Eina',
'practice' => 'Pràctica',
],
];

149
lang/ca/health.php Normal file
View File

@@ -0,0 +1,149 @@
<?php
declare(strict_types=1);
return [
'title' => 'Salut del lloc',
'subheading' => 'El que està malament al web públic i no es veu des d\'aquí.',
'all_clear' => 'Tot en ordre. No hi ha res a arreglar.',
'problem_summary' => '{1}Hi ha 1 cosa a revisar|[2,*]Hi ha :count coses a revisar',
'problem_hint' => 'El web és en un altre lloc, així que aquests errors no es veuen editant: es veuen visitant-lo.',
'passing' => '{1}1 comprovació sense problemes|[2,*]:count comprovacions sense problemes',
'and_more' => 'i :count més',
'refreshed' => 'Comprovacions actualitzades',
'severity' => [
'ok' => 'Bé',
'warning' => 'Avís',
'error' => 'Error',
],
'actions' => [
'refresh' => 'Tornar a comprovar',
'go_fix' => 'Anar a arreglar-ho',
],
'bits' => [
'description' => 'sense meta descripció',
'cover' => 'sense portada',
'gallery_image' => 'Imatge de galeria sense descriure',
'itself' => 'ella mateixa',
],
'checks' => [
'missing-slugs' => [
'title' => 'Slugs que falten',
'ok' => 'Tot el que està traduït té el seu slug.',
'problem' => '{1}1 registre està traduït a un idioma però no hi té slug, així que la seva URL en aquell idioma no existeix o fa 404.|[2,*]:count registres estan traduïts a algun idioma sense tenir-hi slug, així que aquelles URL no existeixen o fan 404.',
],
'duplicate-slugs' => [
'title' => 'Slugs repetits',
'ok' => 'Cada URL resol a un sol registre.',
'problem' => '{1}1 slug està repetit dins del mateix idioma: l\'API resol aquella URL al primer que troba.|[2,*]:count slugs estan repetits dins del mateix idioma: l\'API resol aquelles URL al primer que troba.',
],
'broken-images' => [
'title' => 'Imatges trencades',
'ok' => 'Tots els fitxers d\'imatge són on toca.',
'problem' => '{1}1 imatge que el web està publicant ja no existeix al disc o no s\'ha pogut llegir.|[2,*]:count imatges que el web està publicant ja no existeixen al disc o no s\'han pogut llegir.',
],
'missing-translations' => [
'title' => 'Contingut sense traduir',
'ok' => 'Tot el que està publicat és als tres idiomes.',
'problem' => '{1}1 registre publicat no està traduït a algun idioma, així que aquella versió del web se\'n queda sense.|[2,*]:count registres publicats no estan traduïts a algun idioma, així que aquelles versions del web se\'n queden sense.',
],
'images-without-alt' => [
'title' => 'Imatges sense descriure',
'ok' => 'Totes les imatges publicades tenen text alternatiu.',
'problem' => '{1}1 imatge publicada no té text alternatiu: qui no la pot veure no sap que hi és.|[2,*]:count imatges publicades no tenen text alternatiu: qui no les pot veure no sap que hi són.',
],
'incomplete-seo' => [
'title' => 'Fitxes incompletes',
'ok' => 'Tot el que està publicat té descripció i portada.',
'problem' => '{1}1 registre publicat no té què ensenyar a un cercador o en enganxar l\'enllaç a un xat.|[2,*]:count registres publicats no tenen què ensenyar a un cercador o en enganxar l\'enllaç a un xat.',
],
'expired-calls' => [
'title' => 'Convocatòries vençudes',
'ok' => 'Cap convocatòria oberta ha passat la data de tancament.',
'problem' => '{1}1 convocatòria continua marcada com a oberta amb la data de tancament passada. Ja no surt al web, però infla el comptador del panell.|[2,*]:count convocatòries continuen marcades com a obertes amb la data de tancament passada. Ja no surten al web, però inflen el comptador del panell.',
],
'unanswered-submissions' => [
'title' => 'Gent esperant resposta',
'ok' => 'No hi ha ningú esperant des de fa més d\'una setmana.',
'problem' => '{1}1 persona va escriure fa més d\'una setmana i encara no té resposta.|[2,*]:count persones van escriure fa més d\'una setmana i encara no tenen resposta.',
],
'stalled-media' => [
'title' => 'Imatges sense processar',
'ok' => 'No hi ha cap imatge esperant a processar-se.',
'problem' => '{1}1 imatge fa més d\'una hora que espera: segurament no hi ha cap worker de cues ni scheduler funcionant.|[2,*]:count imatges fa més d\'una hora que esperen: segurament no hi ha cap worker de cues ni scheduler funcionant.',
],
'services-without-work' => [
'title' => 'Serveis sense obra al darrere',
'ok' => 'Tots els serveis publicats ensenyen feina real.',
'problem' => '{1}1 servei publicat no enllaça cap projecte publicat: és una promesa, no una oferta.|[2,*]:count serveis publicats no enllacen cap projecte publicat: són promeses, no ofertes.',
],
'clients-without-logo' => [
'title' => 'Clients sense logo',
'ok' => 'Tots els clients del mur tenen logo.',
'problem' => '{1}1 client surt al mur de logos sense tenir-ne: és un forat que sembla un error.|[2,*]:count clients surten al mur de logos sense tenir-ne: són forats que semblen un error.',
],
'testimonials-missing-original' => [
'title' => 'Cites sense l\'original',
'ok' => 'Totes les cites tenen les paraules que es van dir de veritat.',
'problem' => '{1}1 testimoni no té la cita en el seu idioma original: s\'està publicant una traducció d\'una cosa que ningú pot comprovar.|[2,*]:count testimonis no tenen la cita en el seu idioma original: s\'estan publicant traduccions de coses que ningú pot comprovar.',
],
'talks-without-speaker' => [
'title' => 'Xerrades sense ponent',
'ok' => 'Totes les xerrades acrediten algú.',
'problem' => '{1}1 xerrada no diu qui la va fer, així que no surt al perfil de ningú.|[2,*]:count xerrades no diuen qui les va fer, així que no surten al perfil de ningú.',
],
'broken-redirects' => [
'title' => 'Redireccions trencades',
'ok' => 'Cap redirecció dona voltes ni encadena amb una altra.',
'problem' => '{1}1 redirecció apunta a ella mateixa o a una altra redirecció: el navegador dona voltes o paga un salt de més.|[2,*]:count redireccions apunten a elles mateixes o a una altra redirecció: el navegador dona voltes o paga salts de més.',
],
'redirects-to-nowhere' => [
'title' => 'Redireccions a enlloc',
'ok' => 'Totes les redireccions porten a una pàgina que existeix.',
'problem' => '{1}1 redirecció porta a una adreça que ja no respon: és pitjor que el 404 que venia a evitar.|[2,*]:count redireccions porten a adreces que ja no responen: és pitjor que els 404 que venien a evitar.',
],
'missing-urls' => [
'title' => 'URL que ningú no troba',
'ok' => 'Cap adreça trencada esperant redirecció.',
'problem' => '{1}1 adreça dona 404 i s\'ha demanat més d\'una vegada: cada visita que hi arriba es perd.|[2,*]:count adreces donen 404 i s\'han demanat més d\'una vegada: cada visita que hi arriba es perd.',
],
'stale-reviews' => [
'title' => 'Revisions sense contestar',
'ok' => 'Ningú no espera una revisió.',
'problem' => '{1}1 cosa fa més d\'una setmana que espera revisió: qui la va escriure es pensa que hi passa alguna cosa.|[2,*]:count coses fa més d\'una setmana que esperen revisió: qui les va escriure es pensa que hi passa alguna cosa.',
],
'stale-translations' => [
'title' => 'Traduccions desactualitzades',
'ok' => 'Cap traducció no s\'ha quedat enrere de l\'original.',
'problem' => '{1}1 registre traduït diu una cosa que l\'original va deixar de dir: la traducció hi és, així que res més no ho avisa.|[2,*]:count registres traduïts diuen coses que els originals van deixar de dir: les traduccions hi són, així que res més no ho avisa.',
],
'stale-repositories' => [
'title' => 'Repositoris que no sincronitzen',
'ok' => 'Tots els repositoris sincronitzen bé.',
'problem' => '{1}1 repositori porta uns quants intents fallant. El web continua ensenyant els seus darrers números, que ja no són certs.|[2,*]:count repositoris porten uns quants intents fallant. El web continua ensenyant els seus darrers números, que ja no són certs.',
],
],
];

84
lang/ca/http-statuses.php Normal file
View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
return [
'0' => 'Error desconegut',
'100' => 'Continua',
'101' => 'Protocols de commutació',
'102' => 'Processament',
'200' => 'D\'acord',
'201' => 'Creat',
'202' => 'Acceptat',
'203' => 'Informació no autoritzada',
'204' => 'Sense contingut',
'205' => 'Restablir contingut',
'206' => 'Contingut parcial',
'207' => 'Multiestatus',
'208' => 'Ja s\'ha informat',
'226' => 'IM utilitzat',
'300' => 'Opcions múltiples',
'301' => 'Mogut permanentment',
'302' => 'Trobat',
'303' => 'Vegeu Altres',
'304' => 'No modificat',
'305' => 'Utilitzeu el proxy',
'307' => 'Redirecció temporal',
'308' => 'Redirecció permanent',
'400' => 'Petició dolenta',
'401' => 'No autoritzat',
'402' => 'Pagament obligatori',
'403' => 'Prohibit',
'404' => 'No trobat',
'405' => 'Mètode no permès',
'406' => 'No és acceptable',
'407' => 'Es requereix autenticació de proxy',
'408' => 'Temps d\'espera esgotat',
'409' => 'Conflicte',
'410' => 'Desaparegut',
'411' => 'Longitud requerida',
'412' => 'La condició prèvia ha fallat',
'413' => 'Càrrega útil massa gran',
'414' => 'URI massa llarg',
'415' => 'Tipus de suport no compatible',
'416' => 'Interval no satisfactori',
'417' => 'L\'expectativa ha fallat',
'418' => 'Sóc una tetera',
'419' => 'La sessió ha caducat',
'421' => 'Sol·licitud mal dirigida',
'422' => 'Entitat no processable',
'423' => 'Tancat',
'424' => 'Dependència fallida',
'425' => 'Massa aviat',
'426' => 'Actualització necessària',
'428' => 'Condició prèvia requerida',
'429' => 'Massa sol·licituds',
'431' => 'Els camps de la capçalera de la sol·licitud són massa grans',
'444' => 'Connexió tancada sense resposta',
'449' => 'Torna-ho a provar amb',
'451' => 'No disponible per motius legals',
'499' => 'Sol·licitud de client tancada',
'500' => 'error del servidor intern',
'501' => 'No implementat',
'502' => 'Porta d\'enllaç incorrecta',
'503' => 'mode de manteniment',
'504' => 'Temps d\'espera de la passarel·la',
'505' => 'Versió HTTP no compatible',
'506' => 'La variant també es negocia',
'507' => 'Emmagatzematge insuficient',
'508' => 'Bucle detectat',
'509' => 'Límit d\'ample de banda excedit',
'510' => 'No ampliat',
'511' => 'Es requereix autenticació de xarxa',
'520' => 'Error desconegut',
'521' => 'El servidor web està caigut',
'522' => 'Temps de connexió esgotat',
'523' => 'L\'origen és inabastable',
'524' => 'S\'ha produït un temps mort',
'525' => 'SSL Handshake ha fallat',
'526' => 'Certificat SSL no vàlid',
'527' => 'Error de canó de ferrocarril',
'598' => 'Error de temps d\'espera de lectura de la xarxa',
'599' => 'Error de temps d\'espera de connexió a la xarxa',
'unknownError' => 'Error desconegut',
];

34
lang/ca/maintenance.php Normal file
View File

@@ -0,0 +1,34 @@
<?php
declare(strict_types=1);
return [
'title' => 'Mode manteniment',
'subheading' => 'Afecta només el web públic. El tauler i l\'API d\'administració continuen funcionant.',
'badge' => 'Web caiguda',
'status_up' => 'El web públic està operatiu.',
'status_down' => 'El web públic està en manteniment.',
'since' => 'Des de :time',
'lifts_at' => 's\'aixeca el :time',
'panel_unaffected' => 'Podeu continuar editant: el tauler no es veu afectat.',
'notice' => 'Avís per als visitants',
'notice_hint' => 'El retorna l\'API pública al 503 perquè el frontend el mostri. Si el deixes buit s\'usa el text per defecte.',
'default_message' => 'Estem fent canvis al web. Tornem de seguida.',
'until' => 'S\'aixeca automàticament',
'until_hint' => 'Opcional. Evita que un manteniment oblidat deixi el web caigut indefinidament.',
'enable' => 'Activa el manteniment',
'enable_confirm' => 'Els visitants deixaran de veure el web i rebran l\'avís. El tauler continuarà disponible.',
'disable' => 'Aixeca el manteniment',
'save_message' => 'Desa l\'avís',
'enabled_notice' => 'El web públic està en manteniment',
'disabled_notice' => 'El web públic torna a estar operatiu',
'message_saved' => 'Avís desat',
'bypass_hint' => 'L\'equip pot continuar veient el web real amb el token de preview o des d\'una IP de confiança (SITE_TRUSTED_IPS).',
'no_permission' => 'No tens permís per activar o aixecar el manteniment.',
];

8
lang/ca/pagination.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
declare(strict_types=1);
return [
'next' => 'Següent &raquo;',
'previous' => '&laquo; Anterior',
];

844
lang/ca/panel.php Normal file
View File

@@ -0,0 +1,844 @@
<?php
declare(strict_types=1);
return [
'untitled' => 'Sense títol',
'duplicates' => [
'title' => 'Títol semblant',
'body' => 'Ja existeix alguna cosa molt semblant: :titles',
'open' => 'Veure fitxa existent',
],
'sessions' => [
'title' => 'Sessions',
'this_one' => 'Aquesta sessió',
'unknown_device' => 'Dispositiu desconegut',
'fields' => [
'ip_address' => 'Adreça IP',
'device' => 'Dispositiu',
'last_activity' => 'Última activitat',
],
'actions' => [
'revoke' => 'Tancar sessió',
],
'revoked' => 'Sessió tancada. Aquesta connexió deixa de valer a la propera petició.',
'empty' => [
'heading' => 'Sense sessions obertes',
'description' => 'Ningú no ha iniciat sessió amb aquest compte, o fa temps que no la fa servir.',
],
],
'environment' => [
'production' => 'Producció — això és real',
'other' => 'Entorn de :name',
],
'concurrency' => [
'title' => 'No s\'ha desat',
'body' => 'Algú altre ha canviat això mentre ho editaves. Recarrega la pàgina per veure la versió actual: si ho deses ara, perdries aquest canvi.',
'body_with_author' => ':name ha canviat això mentre ho editaves. Recarrega la pàgina per veure la seva versió: si ho deses ara, perdries aquest canvi.',
],
'presence' => [
'title' => 'Algú altre ho té obert',
'body' => 'Ara mateix també ho està editant: :names.',
],
'groups' => [
'collective' => 'Col·lectiu',
'content' => 'Contingut',
'administration' => 'Administració',
],
'language' => [
'label' => 'Idioma',
'switch' => 'Canvia d\'idioma',
],
'pages' => [
'label' => 'Pàgina',
'plural' => 'Pàgines',
'sections' => [
'content' => 'Contingut',
'content_hint' => 'Cada pestanya és un idioma. L\'idioma principal és obligatori; la resta s\'omple amb ell si el deixes buit.',
'publishing' => 'Publicació',
'seo' => 'SEO',
'seo_hint' => 'Metadades per a cercadors i xarxes socials.',
],
'fields' => [
'title' => 'Títol',
'slug' => 'Slug',
'excerpt' => 'Extracte',
'body' => 'Contingut',
'meta_title' => 'Meta títol',
'meta_description' => 'Meta descripció',
'category' => 'Categoria',
'author' => 'Autor',
'status' => 'Estat',
'featured_image' => 'Imatge destacada',
'featured_image_alt' => 'Text alternatiu',
'featured_image_alt_hint' => 'Què es veu a la imatge, per a qui no la pot veure. Si és purament decorativa, deixa-ho buit.',
'is_featured' => 'Destacada',
'published_at' => 'Data de publicació',
'published_at_hint' => 'Amb una data futura, la pàgina no surt al web fins que arribi.',
'unpublish_at' => 'Retirar el',
'unpublish_at_hint' => 'Opcional. En arribar, la pàgina desapareix sola del web. Per a avisos amb data de caducitat.',
'translations' => 'Traduccions',
],
'filters' => [
'translated_in' => 'Traduïda a',
'missing_translation' => 'Sense traduir a',
],
'actions' => [
'publish' => 'Publica',
'unpublish' => 'Despublica',
],
],
'categories' => [
'label' => 'Categoria',
'plural' => 'Categories',
'fields' => [
'name' => 'Nom',
'slug' => 'Slug',
'description' => 'Descripció',
'color' => 'Color',
'position' => 'Ordre',
'is_visible' => 'Visible',
'pages_count' => 'Pàgines',
],
],
'users' => [
'label' => 'Usuari',
'plural' => 'Usuaris',
'sections' => [
'identity' => 'Identitat',
'identity_hint' => 'Gestionada pel servidor OAuth. S\'actualitza automàticament a cada inici de sessió.',
'access' => 'Accés i permisos',
'access_hint' => 'Gestionat per aquesta aplicació.',
],
'fields' => [
'name' => 'Nom',
'email' => 'Correu electrònic',
'oauth_id' => 'ID al servidor OAuth',
'roles' => 'Rols',
'locale' => 'Idioma preferit',
'is_active' => 'Actiu',
'last_login_at' => 'Últim accés',
'remote_roles' => 'Rols remots',
'never' => 'Mai',
],
'actions' => [
'activate' => 'Activa',
'deactivate' => 'Desactiva',
],
],
'roles' => [
'label' => 'Rol',
'plural' => 'Rols',
'fields' => [
'name' => 'Nom',
'permissions' => 'Permisos',
'users_count' => 'Usuaris',
],
'protected' => 'Rol protegit: no es pot eliminar.',
'select_all' => 'Selecciona-ho tot',
],
'permissions' => [
'groups' => [
'general' => 'General',
'projects' => 'Projectes',
'members' => 'Membres',
'services' => 'Serveis',
'clients' => 'Clients',
'testimonials' => 'Testimonis',
'talks' => 'Xerrades',
'technologies' => 'Tecnologies',
'calls' => 'Convocatòries',
'applications' => 'Bústia',
'repositories' => 'Repositoris',
'media' => 'Mitjans',
'redirects' => 'Redireccions',
'pages' => 'Pàgines',
'categories' => 'Categories',
'users' => 'Usuaris',
'roles' => 'Rols',
'settings' => 'Configuració',
],
'abilities' => [
'sync' => 'Sincronitza',
'maintenance' => 'Activar el mode manteniment',
'panel_access' => 'Accedir al tauler',
'view_any' => 'Llistar',
'view' => 'Veure detall',
'create' => 'Crear',
'update' => 'Editar',
'delete' => 'Eliminar',
'restore' => 'Restaurar',
'force_delete' => 'Eliminar definitivament',
'publish' => 'Publicar',
],
],
'actions' => [
'duplicate' => 'Duplicar',
'duplicate_heading' => 'Duplicar aquest registre',
'duplicated' => 'Duplicat. Posa-li un slug i una data abans de publicar-lo.',
],
'preview' => [
'label' => 'Vista prèvia',
'heading' => 'Enllaços de vista prèvia',
'hint' => 'Es poden compartir i caduquen en :hours hores. Cadascun serveix només per a aquest registre.',
'open' => 'Obrir',
],
'trash' => [
'title' => 'Paperera',
'subheading' => 'Tot el que s\'ha esborrat, junt, amb el botó de desfer al costat.',
'empty' => 'La paperera és buida.',
'deleted_at' => 'Esborrat :when',
'restore' => 'Recuperar',
'erase' => 'Eliminar',
'erase_confirm' => 'Això no es pot desfer. Segur?',
'restored' => 'Recuperat',
'erased' => 'Eliminat definitivament',
],
'today' => [
'all_clear' => 'No hi ha res esperant',
'all_clear_hint' => 'Ni gent sense resposta ni contingut a mitges.',
],
'widgets' => [
'stats' => [
'pages' => 'Pàgines',
'published' => 'Publicades',
'users' => 'Usuaris actius',
'missing_translations' => 'Sense traduir',
'missing_translations_hint' => 'Pàgines que falten en algun idioma',
'projects' => 'Projectes',
'projects_description' => 'Projectes publicats',
'active_projects' => 'Projectes en marxa',
'active_projects_description' => 'Cercant qui hi col·labori',
'members' => 'Membres',
'members_description' => 'Gent activa al col·lectiu',
'open_calls' => 'Convocatòries obertes',
'open_calls_description' => 'Cercant participants',
'good_first_issues' => 'Tasques per començar',
'good_first_issues_description' => 'Lliures per agafar',
'help_wanted' => 'Es busca ajuda',
'help_wanted_description' => 'Issues obertes',
],
'growth_chart' => 'Creixement en el temps',
'growth' => [
'projects' => 'Projectes',
'members' => 'Membres',
'issues' => 'Tasques per començar',
],
'languages_chart' => 'Repartiment de llenguatges',
'languages' => [
'repositories' => 'Repositoris',
],
],
'projects' => [
'label' => 'Projecte',
'plural' => 'Projectes',
'sections' => [
'content' => 'Contingut',
'writeup' => 'Decisions i postmortem',
'writeup_hint' => 'El que una consultora no pot publicar i vosaltres sí. És el contingut que altres desenvolupadors llegeixen de debò.',
'details' => 'Detalls',
],
'fields' => [
'title' => 'Títol',
'slug' => 'Slug',
'tagline' => 'Frase resum',
'description' => 'Descripció',
'decisions' => 'Decisions tècniques',
'decisions_hint' => 'Per què vau triar el que vau triar, i què vau descartar.',
'postmortem' => 'Postmortem',
'postmortem_hint' => 'Què va sortir malament i què vau aprendre. No cal que sigui un èxit.',
'status' => 'Estat',
'published_at' => 'Publicat el',
'unpublish_at' => 'Retirar el',
'unpublish_at_hint' => 'Opcional. En arribar, el projecte desapareix sol del web.',
'published_at_hint' => 'Buit = no visible al web públic.',
'technologies' => 'Tecnologies',
'lead' => 'Responsable',
'members' => 'Participants',
'client' => 'Per a qui',
'client_hint' => 'L\'ONG, associació o entitat destinatària. Si no hi és a la llista, la pots crear aquí mateix.',
'services' => 'Serveis',
'demo_url' => 'Demo',
'cover_image' => 'Imatge de portada',
'cover_image_alt' => 'Text alternatiu',
'cover_image_alt_hint' => 'Què es veu a la portada, per a qui no la pot veure. Si és purament decorativa, deixa-ho buit.',
'started_at' => 'Inici',
'ended_at' => 'Fi',
'is_featured' => 'Destacat',
'needs_help' => 'Busca gent',
'needs_help_hint' => 'El mostra a la secció de col·laboració del web.',
],
'filters' => ['unpublished' => 'Sense publicar'],
'actions' => ['publish' => 'Publica'],
],
'members' => [
'label' => 'Membre',
'plural' => 'Membres',
'sections' => [
'profile' => 'Perfil públic',
'profile_hint' => 'És l\'aparador personal de cadascú: la moneda amb què es paga el treball voluntari.',
'membership' => 'Pertinença',
],
'fields' => [
'name' => 'Nom',
'slug' => 'Slug',
'headline' => 'Titular',
'bio' => 'Biografia',
'avatar' => 'Foto',
'avatar_hint' => 'El text alternatiu és el nom de la persona, així que no cal escriure\'l.',
'github_username' => 'Usuari de GitHub',
'user' => 'Compte del tauler',
'user_hint' => 'Opcional. La majoria de membres no necessita accés a l\'admin.',
'technologies' => 'Tecnologies',
'projects' => 'Projectes',
'is_public' => 'Visible al web',
'is_founder' => 'Fundador/a',
'position' => 'Ordre',
'joined_at' => 'S\'hi va unir',
'left_at' => 'Va marxar',
'left_at_hint' => 'Surt del llistat actual però conserva el seu historial.',
],
'filters' => ['current' => 'Només actuals'],
],
'technologies' => [
'label' => 'Tecnologia',
'plural' => 'Tecnologies',
'off_radar' => 'Fora del radar',
'sections' => ['prose' => 'Descripció i nota del radar'],
'fields' => [
'name' => 'Nom',
'slug' => 'Slug',
'category' => 'Categoria',
'radar_ring' => 'Anell del radar',
'radar_ring_hint' => 'Buit = es pot fer servir com a etiqueta però no surt al radar.',
'radar_note' => 'Nota del radar',
'radar_note_hint' => 'Per què és en aquell anell. És la part que la gent llegeix.',
'description' => 'Descripció',
'color' => 'Color',
'logo' => 'Logo',
'logo_hint' => 'Preferiblement SVG o PNG amb fons transparent. Surt al radar i a les fitxes.',
'website' => 'Web',
'position' => 'Ordre',
'projects' => 'Projectes',
'members' => 'Membres',
],
],
'calls' => [
'label' => 'Convocatòria',
'plural' => 'Convocatòries',
'no_project' => 'General',
'sections' => [
'commitment' => 'Compromís',
'commitment_hint' => 'El que escasseja aquí és el temps, no els diners. Ser concret és el que fa que algú s\'hi decideixi.',
],
'fields' => [
'title' => 'Títol',
'slug' => 'Slug',
'description' => 'Descripció',
'what_you_get' => 'Què t\'endús',
'what_you_get_hint' => 'Aprenentatge, portfolio, referències, mentoria. Dir-ho obertament hi suma.',
'status' => 'Estat',
'project' => 'Projecte',
'project_hint' => 'Buit = convocatòria general del col·lectiu.',
'technologies' => 'Tecnologies',
'hours_per_week' => 'Hores per setmana',
'duration_weeks' => 'Setmanes',
'seniority' => 'Nivell',
'commitment' => 'Dedicació',
'opens_at' => 'Obre',
'closes_at' => 'Tanca',
],
'seniority' => ['any' => 'Qualsevol', 'junior' => 'Júnior', 'mid' => 'Intermedi', 'senior' => 'Sènior'],
'commitment_summary' => '{0}:hoursh/setmana|{1}:hoursh/setmana · :weeks setmana|[2,*]:hoursh/setmana · :weeks setmanes',
],
'applications' => [
'label' => 'Sol·licitud',
'plural' => 'Bústia',
'general_enquiry' => 'Missatge general',
'badge_tooltip' => 'Persones esperant resposta',
'saved' => 'Notes desades',
'reply_subject' => 'Re: :subject',
'sections' => [
'message' => 'El que ens han escrit',
'internal' => 'Seguiment intern',
'internal_hint' => 'Només ho veieu vosaltres. Qui va escriure no en veu res.',
],
'fields' => [
'name' => 'Nom',
'email' => 'Correu',
'organisation' => 'Entitat',
'kind' => 'Tipus',
'subject' => 'Sobre',
'call' => 'Convocatòria',
'hours_per_week' => 'Hores/setmana',
'hours_asked' => 'La convocatòria en demanava :hours h/setmana',
'message' => 'Missatge',
'links' => 'Enllaços',
'link_name' => 'Nom',
'link_url' => 'URL',
'status' => 'Estat',
'received_at' => 'Rebuda',
'handled_by' => 'Atesa per',
'handled_at' => 'Atesa el',
'locale' => 'Va escriure en',
'notes' => 'Notes',
'notes_empty' => 'Sense notes',
'notes_hint' => 'Per a la resta de l\'equip: què heu parlat, com va quedar.',
],
'actions' => [
'group' => 'Marcar com a',
'open' => 'Obrir sol·licitud',
'reply' => 'Respondre',
'notes' => 'Notes',
'contacted' => 'Contactada',
'accepted' => 'Acceptada',
'declined' => 'Descartada',
'spam' => 'Spam',
],
'tabs' => [
'pending' => 'Sense respondre',
'contribute' => 'Volen ajudar',
'request' => 'Demanen ajuda',
'all' => 'Totes',
'spam' => 'Spam',
],
'empty' => [
'heading' => 'No hi ha res a respondre',
'description' => 'Aquí arriba el que la gent escriu des del web públic.',
'call_heading' => 'Encara no ha escrit ningú',
],
'notification' => [
'contribute' => ':name vol donar un cop de mà',
'request' => ':name demana ajuda per a un projecte',
],
'mail' => [
'greeting' => 'Hi ha algú esperant resposta.',
'from' => 'De :name (:email)',
],
],
'publishing' => [
'published_count' => '{0}No hi havia res a publicar: ja era a la web.|{1}Publicada 1 fitxa.|[2,*]Publicades :count fitxes.',
'scheduled' => 'Programada',
'expired' => 'Caducada',
'expired_at' => 'Va caducar el :time',
'expires_in' => 'Caduca :time',
'live' => 'Al web',
'unpublished' => 'Sense publicar',
],
'gallery' => [
'title' => 'Galeria',
'missing_alt' => 'Sense descriure',
'pending' => 'Processant',
'fields' => [
'image' => 'Imatge',
'alt' => 'Text alternatiu',
'alt_hint' => 'Què s\'hi veu, per a qui no ho pot veure.',
'caption' => 'Peu de foto',
'caption_hint' => 'Es mostra a tothom. Aquí van els «abans» i «després».',
'size' => 'Mida',
],
'actions' => [
'add' => 'Afegir imatge',
],
'empty' => [
'heading' => 'Encara no hi ha imatges',
'description' => 'Captures, abans i després, el que calgui perquè s\'entengui el projecte. Es poden reordenar arrossegant.',
],
],
'services' => [
'label' => 'Servei',
'plural' => 'Serveis',
'no_projects' => 'Sense cap projecte al darrere: és una promesa, no una oferta.',
'sections' => [
'evidence' => 'El que ho avala',
'evidence_hint' => 'Un servei que no pot assenyalar feina real és una promesa. Enllaça els projectes que ho demostren.',
'seo' => 'SEO',
],
'fields' => [
'title' => 'Títol',
'slug' => 'Slug',
'tagline' => 'Frase resum',
'tagline_hint' => 'Una línia. És el que es llegeix a la targeta de la portada.',
'description' => 'Descripció',
'projects' => 'Projectes',
'technologies' => 'Tecnologies',
'icon' => 'Icona',
'icon_hint' => 'Nom d\'una icona de Heroicons, per exemple heroicon-o-code-bracket.',
'position' => 'Ordre',
'is_published' => 'Publicat',
'is_featured' => 'Destacat',
'is_featured_hint' => 'Perquè la portada en pugui triar uns quants.',
'published_at' => 'Publicar el',
'published_at_hint' => 'Amb una data futura, no surt al web fins que arribi.',
'unpublish_at' => 'Retirar el',
'unpublish_at_hint' => 'Opcional. En arribar, desapareix sol del web.',
'meta_title' => 'Meta títol',
'meta_description' => 'Meta descripció',
'translations' => 'Traduccions',
],
'actions' => [
'publish' => 'Publicar',
],
],
'clients' => [
'label' => 'Client',
'plural' => 'Clients',
'fields' => [
'name' => 'Nom',
'slug' => 'Slug',
'sector' => 'Sector',
'logo' => 'Logo',
'logo_hint' => 'Preferiblement en SVG o PNG amb fons transparent.',
'url' => 'Web',
'projects' => 'Projectes',
'is_public' => 'Es pot mostrar',
'is_public_hint' => 'Desmarca-ho si l\'entitat prefereix no sortir al web.',
'position' => 'Ordre',
],
'filters' => [
'without_logo' => 'Sense logo',
],
],
'testimonials' => [
'label' => 'Testimoni',
'plural' => 'Testimonis',
'sections' => [
'quote' => 'La cita',
'quote_hint' => 'Escriu en l\'idioma original el que van dir de veritat. Les altres pestanyes són traduccions vostres, i el web ho indicarà.',
'author' => 'Qui ho va dir',
'about' => 'De què parla',
'about_hint' => 'Enllaça-ho a un client, un projecte o un servei: així el web demana els que toquen a cada pàgina en comptes de tenir una llista solta.',
],
'fields' => [
'quote' => 'Cita',
'original_locale' => 'Idioma original',
'original_locale_hint' => 'En quin idioma ho van dir. Traduir una cita és posar paraules a la boca d\'algú, així que el web ho avisa.',
'author_name' => 'Nom',
'author_role' => 'Càrrec',
'avatar' => 'Foto',
'client' => 'Client',
'project' => 'Projecte',
'service' => 'Servei',
'is_public' => 'Visible',
'position' => 'Ordre',
'given_at' => 'Data',
],
],
'talks' => [
'label' => 'Xerrada',
'plural' => 'Xerrades',
'fields' => [
'title' => 'Títol',
'title_hint' => 'No es tradueix: és el nom d\'una xerrada que es va fer una vegada i en un idioma.',
'language' => 'Idioma',
'summary' => 'Resum',
'event' => 'Esdeveniment',
'city' => 'Ciutat',
'held_at' => 'Data',
'video_url' => 'Vídeo',
'slides_url' => 'Diapositives',
'member' => 'Ponent',
'member_hint' => 'Sortirà també al seu perfil, sense escriure-ho dues vegades.',
'project' => 'Projecte',
'is_public' => 'Visible',
],
],
'repositories' => [
'label' => 'Repositori',
'plural' => 'Repositoris',
'never_synced' => 'Mai',
'fields' => [
'provider' => 'Proveïdor',
'full_name' => 'Repositori',
'full_name_hint' => 'Format «owner/repo». La resta es porta sol.',
'project' => 'Projecte',
'is_primary' => 'Principal',
'is_primary_hint' => 'El que representa el projecte quan n\'hi ha diversos.',
'show_publicly' => 'Visible al web',
'language' => 'Llenguatge',
'contributors' => 'Contribuïdors',
'good_first_issues' => 'Tasques per començar',
'pushed_at' => 'Últim push',
'last_synced_at' => 'Sincronitzat',
],
'filters' => ['failing' => 'Amb errors', 'dormant' => 'Sense activitat'],
'actions' => ['sync' => 'Sincronitza', 'sync_selected' => 'Sincronitza seleccionats'],
'notifications' => [
'synced' => 'Repositori sincronitzat',
'synced_body' => ':stars★ · :issues tasques per començar',
'sync_failed' => 'No s\'ha pogut sincronitzar',
'queued' => ':count repositoris a la cua',
],
],
'revisions' => [
'title' => 'Historial',
'system' => 'El sistema',
'before' => 'Abans',
'after' => 'Després',
'no_changes' => 'Aquesta entrada no registra canvis de camps.',
'restored' => 'Valors restaurats',
'restore_confirm' => 'Els camps tornaran a com estaven en aquell moment. La restauració també queda registrada, així que sempre es pot desfer.',
'diff_heading' => 'Canvi de :author · :when',
'fields' => [
'event' => 'Què va passar',
'author' => 'Qui',
'fields' => 'Camps',
'when' => 'Quan',
],
'events' => [
'created' => 'Creat',
'updated' => 'Editat',
'published' => 'Publicat',
'unpublished' => 'Despublicat',
'deleted' => 'Esborrat',
'restored' => 'Recuperat',
'erased' => 'Eliminat del tot',
],
'actions' => [
'diff' => 'Veure el canvi',
'restore' => 'Restaurar aquests valors',
],
],
'media' => [
'label' => 'Fitxer',
'plural' => 'Mitjans',
'subheading' => ':count fitxers · :size MB al disc, comptant-hi les versions derivades.',
'pending' => 'Sense processar',
'in_use' => 'En ús',
'orphan' => 'Sense fer servir',
'fields' => [
'file' => 'Fitxer',
'size' => 'Mides',
'versions' => 'Versions',
'weight' => 'Pes',
'used' => 'Ús',
'error' => 'Error',
],
'filters' => [
'pending' => 'Sense processar',
'failed' => 'Amb error',
'orphans' => 'Que no fa servir ningú',
'missing' => 'Sense fitxer al disc',
],
'actions' => [
'open' => 'Obrir',
'reprocess' => 'Reprocessar',
'reprocess_all' => 'Reprocessar-ho tot',
'reprocess_all_hint' => 'Torna a generar mides, versions i placeholders de totes les imatges. És el que cal fer després de canviar les amplades o afegir un format.',
'reprocess_queued' => 'Encuat. Es processa tan bon punt corri la cua.',
],
'empty' => [
'heading' => 'Encara no hi ha fitxers',
'description' => 'Apareixen aquí sols a mesura que es pugen imatges a projectes, pàgines, membres o la vitrina.',
],
],
'redirects' => [
'label' => 'Redirecció',
'plural' => 'Redireccions',
'hint' => 'Rutes tal com les veu el web, començant per barra. En canviar un slug se\'n crea una de sola.',
'every_locale' => 'Tots els idiomes',
'automatic' => 'Automàtica',
'manual' => 'A mà',
'fields' => [
'from' => 'De',
'from_hint' => 'L\'adreça que va deixar de funcionar.',
'to' => 'A',
'status' => 'Tipus',
'status_hint' => 'Permanent és el normal: diu a Google que actualitzi l\'enllaç.',
'locale' => 'Idioma',
'locale_hint' => 'Deixa-ho buit perquè valgui als tres.',
'is_enabled' => 'Activa',
'hits' => 'Usos',
'origin' => 'Origen',
],
'statuses' => [
'301' => 'Permanent (301)',
'302' => 'Temporal (302)',
],
'filters' => [
'unused' => 'Sense fer servir encara',
],
'empty' => [
'heading' => 'Encara no hi ha redireccions',
'description' => 'Es creen soles en canviar l\'slug d\'alguna cosa publicada. Aquí pots afegir a mà les d\'enllaços anteriors a aquest web.',
],
],
'translations' => [
'filters' => [
'stale' => 'Traducció desactualitzada',
],
],
'views' => [
'column' => 'Visites',
'column_hint' => 'Lectures dels últims 30 dies, sumant tots els idiomes. Buit mentre el frontend no les reporti.',
'in_days' => 'en :days dies',
'filters' => [
'unread' => 'Publicat i sense visites',
],
],
'reviews' => [
'title' => 'Revisió',
'column' => 'Revisió',
'waiting' => 'Esperant',
'waiting_for_you' => 'Esperen la teva revisió',
'waiting_for_you_hint' => 'Algú va acabar alguna cosa i no la pot publicar.',
'anyone' => 'Qualsevol que pugui publicar',
'requested' => 'Revisió demanada. Avisem qui ho pot publicar.',
'requested_count' => '{0}No hi havia res a demanar: ja estava en revisió o publicat.|{1}Demanada la revisió d\'1 fitxa.|[2,*]Demanada la revisió de :count fitxes.',
'returned' => 'Retornat a qui ho va escriure, amb el teu motiu.',
'fields' => [
'reviewer' => 'Ho demanes a',
'reviewer_hint' => 'Deixa-ho buit i ho veurà tothom qui pugui publicar-ho.',
'note' => 'Nota',
'note_hint' => 'Opcional. El que qui revisi necessita saber abans de mirar-ho.',
'reason' => 'Què cal canviar',
'reason_hint' => 'Obligatori: retornar una feina sense dir per què és el que fa que ningú faci servir la revisió.',
'event' => 'Què va passar',
'who' => 'Qui',
'when' => 'Quan',
],
'filters' => [
'mine' => 'Esperant la meva revisió',
],
'actions' => [
'request' => 'Demanar revisió',
'request_bulk' => 'Demanar revisió (selecció)',
'request_heading' => 'Dir que això ja està',
'request_hint' => 'Tu no ho pots publicar, així que això avisa qui sí que pot.',
'return' => 'Retornar',
'return_heading' => 'Retornar-ho a qui ho va escriure',
'comment' => 'Comentar',
'open' => 'Obrir',
],
'notification' => [
'title' => ':name demana que revisis alguna cosa',
'returned' => ':name t\'ha retornat alguna cosa',
],
'empty' => [
'heading' => 'Encara no s\'ha dit res',
'description' => 'Aquí queda què es va demanar, què es va retornar i per què. És el que l\'historial de canvis no pot guardar.',
],
],
'missing_urls' => [
'label' => 'URL no trobada',
'plural' => 'URL no trobades',
'linked_from_us' => 'Enllaçada des del nostre propi web',
'no_referrer' => 'Sense procedència',
'fields' => [
'path' => 'Adreça',
'hits' => 'Visites',
'locale' => 'Idioma',
'status' => 'Estat',
'referrer' => 'Venien de',
'last_seen' => 'Última vegada',
],
'filters' => [
'internal' => 'Enllaçades des del nostre web',
'repeated' => 'Més d\'una visita',
],
'actions' => [
'redirect' => 'Crear redirecció',
'redirect_heading' => 'Enviar aquesta adreça a un altre lloc',
'redirect_hint' => 'L\'adreça que falla ja hi és. Només cal dir on hauria de portar.',
'redirected' => 'Redirecció creada. Aquesta adreça deixa de donar 404.',
'locale_hint' => 'Ve de l\'idioma en què es va demanar. Buit perquè valgui a tots.',
'ignore' => 'Ignorar',
'unignore' => 'Deixar d\'ignorar',
],
'empty' => [
'heading' => 'Ningú s\'ha trobat amb un 404',
'description' => 'Aquí apareixen les adreces que el web no va saber resoldre, per poder redirigir-les. Les reporta el frontend, així que cal configurar SITE_INGEST_TOKEN.',
],
],
'settings' => [
'label' => 'Configuració',
'plural' => 'Configuracions',
'sections' => [
'general' => 'General',
],
'fields' => [
'key' => 'Clau',
'value' => 'Valor',
'value_hint' => 'El valor tal qual, en JSON. Si no és JSON vàlid no es desa.',
],
'actions' => [
'add_setting' => 'Afegir configuració',
'delete_setting' => 'Eliminar configuració',
],
],
'issues' => [
'label' => 'Tasca',
'plural' => 'Tasques',
'sections' => [
'details' => 'Detalls',
'classification' => 'Classificació',
'metadata' => 'Metadades',
],
'fields' => [
'number' => 'Número',
'title' => 'Títol',
'repository' => 'Repositori',
'author' => 'Autor',
'assignee' => 'Assignat a',
'assignee_hint' => 'Usuari de GitHub o buit per marcar sense assignar',
'url' => 'URL',
'is_good_first_issue' => 'Tasca per començar',
'is_good_first_issue_hint' => 'Recomanada per a nous col·laboradors del projecte',
'is_help_wanted' => 'Ajuda buscada',
'is_help_wanted_hint' => 'Oberta a contribucions de la comunitat',
'comments' => 'Comentaris',
'issue_created_at' => 'Creada',
'issue_updated_at' => 'Actualitzada',
'labels' => 'Etiquetes',
'unassigned' => 'Sense assignar',
],
'filters' => [
'repository' => 'Repositori',
'good_first_issue' => 'Tasques per començar',
'help_wanted' => 'Ajuda buscada',
'unclaimed' => 'Sense assignar',
'claimed' => 'Assignades',
],
],
];

11
lang/ca/passwords.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
return [
'reset' => 'La contrasenya s\'ha restablert!',
'sent' => 'Li hem enviat un correu electrònic amb un enllaç per a reiniciar la teva contrasenya!',
'throttled' => 'Si us plau, esperi abans de tornar-ho a intentar.',
'token' => 'Aquest token de recuperació de contrasenya és invàlid.',
'user' => 'No existeix cap usuari amb aquest correu.',
];

27
lang/ca/pireon.php Normal file
View File

@@ -0,0 +1,27 @@
<?php
declare(strict_types=1);
return [
'sign_in' => 'Entra',
'sign_in_intro' => 'Accedeix amb el teu correu i la teva contrasenya.',
'signing_in' => 'Comprovant les teves credencials…',
'password_grant_disabled' => 'L\'accés amb contrasenya està desactivat en aquesta instal·lació. Avisa un administrador.',
'server_unavailable' => 'El servidor d\'identitat no respon. No és cosa de les teves credencials; avisa un administrador.',
'sign_out' => 'Tanca la sessió',
'denied' => 'No s\'ha completat l\'accés: :reason',
'inactive' => 'El teu compte està desactivat. Contacta amb un administrador.',
'pending_approval' => 'El teu registre encara està pendent d\'aprovació per part d\'un administrador.',
'no_permission' => 'El teu compte no té permís per accedir a aquest tauler. Demana a un administrador que t\'assigni un rol.',
'cannot_grant_super_admin' => 'Només un super administrador pot concedir el rol de super administrador.',
'not_configured_title' => 'El client OAuth no està configurat',
'not_configured_body' => 'Registra aquesta aplicació a :server i omple PIREON_CLIENT_ID i PIREON_CLIENT_SECRET al fitxer .env.',
'account' => [
'remote_roles' => 'Rols al servidor d\'identitat',
'remote_roles_hint' => 'Només informatius: els permisos d\'aquesta aplicació es gestionen aquí, no al servidor OAuth.',
'managed_remotely' => 'Aquest camp es gestiona a :server i s\'actualitza a cada inici de sessió.',
],
];

31
lang/ca/rules.php Normal file
View File

@@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
return [
'translatable' => [
'type' => 'El camp :attribute ha de ser un text o un objecte de traduccions (idioma => text).',
'unsupported_locale' => 'L\'idioma «:locale» no està suportat a :attribute. Idiomes disponibles: :supported.',
'max' => 'La traducció de :attribute en «:locale» no pot superar els :max caràcters.',
'default_required' => 'Falta la traducció de :attribute en l\'idioma principal («:locale»).',
],
'slug' => [
'unique' => 'El slug «:slug» ja està en ús en l\'idioma «:locale».',
],
'applications' => [
'attributes' => [
'name' => 'nom',
'email' => 'correu',
'message' => 'missatge',
'organisation' => 'entitat',
'hours_per_week' => 'hores per setmana',
'consent' => 'consentiment',
],
],
'pages' => [
'cannot_publish' => 'No tens permís per publicar pàgines.',
],
];

20
lang/ca/site.php Normal file
View File

@@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
/*
* Texts the public API returns to the public frontend, in the language the
* visitor is browsing in. They are rendered by the frontend as-is.
*/
return [
'telemetry' => [
'disabled' => 'El report d\'URL no trobades està desactivat en aquest servidor.',
'forbidden' => 'Token d\'ingesta no vàlid.',
],
'applications' => [
'received' => 'Hem rebut el teu missatge. Et contestem tan aviat com puguem.',
'closed' => 'Ara mateix no acceptem missatges. Torna-ho a provar d\'aquí a una estona.',
],
];

290
lang/ca/validation.php Normal file
View File

@@ -0,0 +1,290 @@
<?php
declare(strict_types=1);
return [
'accepted' => ':Attribute ha de ser acceptat.',
'accepted_if' => 'El :attribute s\'ha d\'acceptar quan :other és :value.',
'active_url' => ':Attribute no és un URL vàlid.',
'after' => ':Attribute ha de ser una data posterior a :date.',
'after_or_equal' => ':Attribute ha de ser una data posterior o igual a :date.',
'alpha' => ':Attribute només pot contenir lletres.',
'alpha_dash' => ':Attribute només pot contenir lletres, números i guions.',
'alpha_num' => ':Attribute només pot contenir lletres i números.',
'any_of' => 'El camp :attribute no és vàlid.',
'array' => ':Attribute ha de ser una matriu.',
'array_keys' => 'The :attribute field must only contain the following keys: :values.',
'ascii' => 'El :attribute només ha de contenir caràcters i símbols alfanumèrics d\'un sol byte.',
'base64' => 'The :attribute field must be a valid Base64 string.',
'before' => ':Attribute ha de ser una data anterior a :date.',
'before_or_equal' => ':Attribute ha de ser una data anterior o igual a :date.',
'between' => [
'array' => ':Attribute ha de tenir entre :min - :max ítems.',
'file' => ':Attribute ha de pesar entre :min - :max kilobytes.',
'numeric' => ':Attribute ha d\'estar entre :min - :max.',
'string' => ':Attribute ha de tenir entre :min - :max caràcters.',
],
'boolean' => 'El camp :attribute ha de ser verdader o fals',
'can' => 'El camp :attribute conté un valor no autoritzat.',
'confirmed' => 'La confirmació de :attribute no coincideix.',
'contains' => 'Al camp :attribute li falta un valor obligatori.',
'current_password' => 'La contrasenya és incorrecta.',
'date' => ':Attribute no és una data vàlida.',
'date_equals' => 'El :attribute ha de ser una data igual a :date.',
'date_format' => 'El camp :attribute no concorda amb el format :format.',
'decimal' => 'El :attribute ha de tenir :decimal decimals.',
'declined' => 'Els :attribute s\'han de rebutjar.',
'declined_if' => 'El :attribute s\'ha de rebutjar quan :other és :value.',
'different' => ':Attribute i :other han de ser diferents.',
'digits' => ':Attribute ha de tenir :digits dígits.',
'digits_between' => ':Attribute ha de tenir entre :min i :max dígits.',
'dimensions' => 'Les dimensions de la imatge :attribute no són vàlides.',
'distinct' => 'El camp :attribute té un valor duplicat.',
'doesnt_contain' => 'El camp :attribute no ha de contenir cap dels següents: :values.',
'doesnt_end_with' => 'El :attribute no pot acabar amb un dels següents: :values.',
'doesnt_start_with' => 'El :attribute no pot començar amb un dels següents: :values.',
'email' => ':Attribute no és un e-mail vàlid',
'encoding' => 'El camp :attribute s\'ha de codificar en :encoding.',
'ends_with' => 'La :attribute ha d\'acabar amb una de les següents: :values.',
'enum' => 'El :attribute seleccionat no és vàlid.',
'exists' => ':Attribute és invàlid.',
'extensions' => 'El camp :attribute ha de tenir una de les extensions següents: :values.',
'file' => 'El camp :attribute ha de ser un arxiu.',
'filled' => 'El camp :attribute és obligatori.',
'gt' => [
'array' => 'El :attribute ha de tenir més de :value ítems.',
'file' => 'El :attribute ha de ser superior a :value kilobytes.',
'numeric' => 'El :attribute ha de ser superior a :value.',
'string' => 'El :attribute ha de superar els :value caràcters.',
],
'gte' => [
'array' => 'El :attribute ha de tenir :value ítems o més.',
'file' => 'El :attribute ha de ser igual o superior a :value kilobytes.',
'numeric' => 'El :attribute ha de ser igual o superior a :value.',
'string' => 'El :attribute ha de ser igual o superior a :value caràcters.',
],
'hex_color' => 'El camp :attribute ha de ser un color hexadecimal vàlid.',
'image' => ':Attribute ha de ser una imatge.',
'in' => ':Attribute és invàlid',
'in_array' => 'El camp :attribute no existeix dintre de :other.',
'in_array_keys' => 'El camp :attribute ha de contenir almenys una de les tecles següents: :values.',
'integer' => ':Attribute ha de ser un nombre enter.',
'ip' => ':Attribute ha de ser una adreça IP vàlida.',
'ipv4' => ':Attribute ha de ser una adreça IPv4 vàlida.',
'ipv6' => ':Attribute ha de ser una adreça IPv6 vàlida.',
'json' => 'El camp :attribute ha de ser una cadena JSON vàlida.',
'list' => 'El camp :attribute ha de ser una llista.',
'lowercase' => 'El :attribute ha d\'anar en minúscula.',
'lt' => [
'array' => 'El :attribute ha de tenir menys de :value ítems.',
'file' => 'El :attribute ha de ser inferior a :value kilobytes.',
'numeric' => 'El :attribute ha de ser inferior a :value.',
'string' => 'El :attribute no ha de superar els :value caràcters.',
],
'lte' => [
'array' => 'El :attribute no ha de tenir més de :value ítems.',
'file' => 'El :attribute ha de ser igual o inferior a :value kilobytes.',
'numeric' => 'El :attribute ha de ser igual o inferior a :value.',
'string' => 'El :attribute ha de ser igual o inferior a :value caràcters.',
],
'mac_address' => 'El :attribute ha de ser una adreça MAC vàlida.',
'max' => [
'array' => ':Attribute no pot tenir més de :max ítems.',
'file' => ':Attribute no pot ser més gran que :max kilobytes.',
'numeric' => ':Attribute no pot ser més gran que :max.',
'string' => ':Attribute no pot ser més gran que :max caràcters.',
],
'max_digits' => 'El :attribute no ha de tenir més de :max dígits.',
'mimes' => ':Attribute ha de ser un arxiu amb format: :values.',
'mimetypes' => ':Attribute ha de ser un arxiu amb format: :values.',
'min' => [
'array' => ':Attribute ha de tenir almenys :min ítems.',
'file' => 'La mida de :attribute ha de ser d\'almenys :min kilobytes.',
'numeric' => 'La mida de :attribute ha de ser d\'almenys :min.',
'string' => ':Attribute ha de contenir almenys :min caràcters.',
],
'min_digits' => 'El :attribute ha de tenir almenys :min dígits.',
'missing' => 'El camp :attribute ha de faltar.',
'missing_if' => 'El camp :attribute ha de faltar quan :other és :value.',
'missing_unless' => 'El camp :attribute ha de faltar, tret que :other sigui :value.',
'missing_with' => 'El camp :attribute ha de faltar quan hi ha :values.',
'missing_with_all' => 'El camp :attribute ha de faltar quan n\'hi ha :values.',
'multiple_of' => 'La :attribute ha de ser un múltiple de :value',
'not_in' => ':Attribute és invàlid.',
'not_regex' => 'El format de :attribute no és vàlid.',
'numeric' => ':Attribute ha de ser numèric.',
'password' => [
'letters' => 'El :attribute ha de contenir almenys una lletra.',
'mixed' => 'El :attribute ha de contenir almenys una lletra majúscula i una minúscula.',
'numbers' => 'El :attribute ha de contenir almenys un número.',
'symbols' => 'El :attribute ha de contenir almenys un símbol.',
'uncompromised' => 'El :attribute donat ha aparegut en una filtració de dades. Si us plau, trieu un :attribute diferent.',
],
'present' => 'El camp :attribute ha d\'existir.',
'present_if' => 'El camp :attribute ha d\'estar present quan :other és :value.',
'present_unless' => 'El camp :attribute ha d\'estar present tret que :other sigui :value.',
'present_with' => 'El camp :attribute ha d\'estar present quan n\'hi ha :values.',
'present_with_all' => 'El camp :attribute ha d\'estar present quan n\'hi ha :values.',
'prohibited' => 'La :attribute camp està prohibit.',
'prohibited_if' => 'La :attribute camp és prohibida quan :other és :value.',
'prohibited_if_accepted' => 'El camp :attribute està prohibit quan s’accepta :other.',
'prohibited_if_declined' => 'El camp :attribute està prohibit quan es declina :other.',
'prohibited_unless' => 'La :attribute camp és prohibida, tret que :other és en :values.',
'prohibits' => 'El camp :attribute prohibeix la presència de :other.',
'regex' => 'El format de :attribute és invàlid.',
'required' => 'El camp :attribute és obligatori.',
'required_array_keys' => 'El camp :attribute ha de contenir entrades per a: :values.',
'required_if' => 'El camp :attribute és obligatori quan :other és :value.',
'required_if_accepted' => 'El camp :attribute és obligatori quan s\'accepta :other.',
'required_if_declined' => 'El camp :attribute és obligatori quan es rebutja :other.',
'required_unless' => 'El camp :attribute és obligatori a no ser que :other sigui a :values.',
'required_with' => 'El camp :attribute és obligatori quan hi ha :values.',
'required_with_all' => 'El camp :attribute és obligatori quan hi ha :values.',
'required_without' => 'El camp :attribute és obligatori quan no hi ha :values.',
'required_without_all' => 'El camp :attribute és obligatori quan no hi ha cap valor dels següents: :values.',
'same' => ':Attribute i :other han de coincidir.',
'size' => [
'array' => ':Attribute ha de contenir :size ítems.',
'file' => 'La mida de :attribute ha de ser :size kilobytes.',
'numeric' => 'La mida de :attribute ha de ser :size.',
'string' => ':Attribute ha de contenir :size caràcters.',
],
'starts_with' => 'El :attribute ha de començar per un dels valors següents: :values',
'string' => 'El camp :attribute ha de ser una cadena.',
'timezone' => 'El camp :attribute ha de ser una zona vàlida.',
'ulid' => 'El :attribute ha de ser un ULID vàlid.',
'unique' => ':Attribute ja està registrat i no es pot repetir.',
'uploaded' => ':Attribute ha fallat al pujar.',
'uppercase' => 'El :attribute ha d\'anar en majúscula.',
'url' => ':Attribute no és una adreça web vàlida.',
'uuid' => 'El :attribute ha de ser un indentificador únic universal (UUID) vàlid.',
'attributes' => [
'address' => 'adreça',
'affiliate_url' => 'URL d\'afiliat',
'age' => 'edat',
'amount' => 'quantitat',
'announcement' => 'anunci',
'area' => 'zona',
'audience_prize' => 'premi del públic',
'audience_winner' => 'audience winner',
'available' => 'disponible',
'birthday' => 'aniversari',
'body' => 'cos',
'city' => 'ciutat',
'color' => 'color',
'company' => 'company',
'compilation' => 'compilació',
'concept' => 'concepte',
'conditions' => 'condicions',
'content' => 'contingut',
'contest' => 'contest',
'country' => 'país',
'cover' => 'coberta',
'created_at' => 'creat a',
'creator' => 'creador',
'currency' => 'moneda',
'current_password' => 'Contrasenya actual',
'customer' => 'client',
'date' => 'data',
'date_of_birth' => 'data de naixement',
'dates' => 'dates',
'day' => 'dia',
'deleted_at' => 'esborrat a les',
'description' => 'descripció',
'display_type' => 'tipus de visualització',
'district' => 'districte',
'duration' => 'durada',
'email' => 'adreça electrònica',
'excerpt' => 'extracte',
'filter' => 'filtre',
'finished_at' => 'acabat a les',
'first_name' => 'nom',
'gender' => 'gènere',
'grand_prize' => 'gran premi',
'group' => 'grup',
'hour' => 'hora',
'image' => 'imatge',
'image_desktop' => 'imatge d\'escriptori',
'image_main' => 'imatge principal',
'image_mobile' => 'imatge mòbil',
'images' => 'imatges',
'is_audience_winner' => 'és el guanyador del públic',
'is_hidden' => 'està amagat',
'is_subscribed' => 'està subscrit',
'is_visible' => 'és visible',
'is_winner' => 'és el guanyador',
'items' => 'elements',
'key' => 'clau',
'last_name' => 'cognom',
'lesson' => 'lliçó',
'line_address_1' => 'adreça de línia 1',
'line_address_2' => 'adreça de línia 2',
'login' => 'iniciar Sessió',
'message' => 'missatge',
'middle_name' => 'segon nom',
'minute' => 'minut',
'mobile' => 'mòbil',
'month' => 'mes',
'name' => 'nom',
'national_code' => 'codi nacional',
'number' => 'nombre',
'password' => 'contrasenya',
'password_confirmation' => 'confirmació de la contrasenya',
'phone' => 'telèfon',
'photo' => 'foto',
'portfolio' => 'cartera',
'postal_code' => 'Codi Postal',
'preview' => 'Vista prèvia',
'price' => 'preu',
'product_id' => 'ID del producte',
'product_uid' => 'UID del producte',
'product_uuid' => 'UUID del producte',
'promo_code' => 'codi promocional',
'province' => 'província',
'quantity' => 'quantitat',
'reason' => 'raó',
'recaptcha_response_field' => 'camp de resposta recaptcha',
'referee' => 'àrbitre',
'referees' => 'àrbitres',
'region' => 'region',
'reject_reason' => 'rebutjar la raó',
'remember' => 'recorda',
'restored_at' => 'restaurat a',
'result_text_under_image' => 'text del resultat sota la imatge',
'role' => 'paper',
'rule' => 'regla',
'rules' => 'regles',
'second' => 'segon',
'sex' => 'sexe',
'shipment' => 'enviament',
'short_text' => 'text breu',
'size' => 'mida',
'skills' => 'habilitats',
'slug' => 'llimac',
'specialization' => 'especialització',
'started_at' => 'va començar a',
'state' => 'estat',
'status' => 'estat',
'street' => 'carrer',
'student' => 'estudiant',
'subject' => 'assumpte',
'tag' => 'etiqueta',
'tags' => 'etiquetes',
'teacher' => 'professor',
'terms' => 'termes',
'test_description' => 'descripció de la prova',
'test_locale' => 'localització de prova',
'test_name' => 'nom de la prova',
'text' => 'text',
'time' => 'hora',
'title' => 'títol',
'type' => 'tipus',
'updated_at' => 'actualitzat a',
'user' => 'usuari',
'username' => 'usuari',
'value' => 'valor',
'winner' => 'winner',
'work' => 'work',
'year' => 'any',
],
];