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:
119
lang/es/actions.php
Normal file
119
lang/es/actions.php
Normal file
@@ -0,0 +1,119 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'accept' => 'Aceptar',
|
||||
'action' => 'Acción',
|
||||
'actions' => 'Acciones',
|
||||
'add' => 'Agregar',
|
||||
'admin' => 'Administrar',
|
||||
'agree' => 'Aceptar',
|
||||
'archive' => 'Archivar',
|
||||
'assign' => 'Asignar',
|
||||
'associate' => 'Asociar',
|
||||
'attach' => 'Adjuntar',
|
||||
'browse' => 'Navegar',
|
||||
'cancel' => 'Cancelar',
|
||||
'choose' => 'Elegir',
|
||||
'choose_file' => 'Elegir archivo',
|
||||
'choose_image' => 'Elegir Imagen',
|
||||
'click_to_copy' => 'Haga clic para copiar',
|
||||
'close' => 'Cerrar',
|
||||
'collapse' => 'Colapsar',
|
||||
'collapse_all' => 'Colapsar todo',
|
||||
'comment' => 'Comentar',
|
||||
'confirm' => 'Confirmar',
|
||||
'connect' => 'Conectar',
|
||||
'create' => 'Crear',
|
||||
'delete' => 'Borrar',
|
||||
'detach' => 'Desasociar',
|
||||
'details' => 'Detalles',
|
||||
'disable' => 'Desactivar',
|
||||
'discard' => 'Descartar',
|
||||
'done' => 'Hecho',
|
||||
'down' => 'Abajo',
|
||||
'duplicate' => 'Duplicar',
|
||||
'edit' => 'Editar',
|
||||
'enable' => 'Permitir',
|
||||
'expand' => 'Expandir',
|
||||
'expand_all' => 'Expandir todo',
|
||||
'explanation' => 'Explicación',
|
||||
'export' => 'Exportar',
|
||||
'file' => 'Archivo',
|
||||
'files' => 'Archivos',
|
||||
'go_home' => 'Ir a Inicio',
|
||||
'hide' => 'Ocultar',
|
||||
'home' => 'Inicio',
|
||||
'image' => 'Imagen',
|
||||
'impersonate' => 'Personificar',
|
||||
'impersonation' => 'Personificación',
|
||||
'import' => 'Importar',
|
||||
'introduction' => 'Introducción',
|
||||
'like' => 'Me gusta',
|
||||
'load' => 'Cargar',
|
||||
'localize' => 'Localizar',
|
||||
'log_in' => 'Acceder',
|
||||
'log_out' => 'Cerrar sesión',
|
||||
'named' => [
|
||||
'add' => 'Agregar :name',
|
||||
'choose' => 'Elegir :name',
|
||||
'create' => 'Crear :name',
|
||||
'delete' => 'Eliminar :name',
|
||||
'duplicate' => 'Duplicar :name',
|
||||
'edit' => 'Editar :name',
|
||||
'export' => 'Exportar :name',
|
||||
'hide' => 'Ocultar :name',
|
||||
'import' => 'Importar :name',
|
||||
'new' => 'Nuevo :name',
|
||||
'restore' => 'Restaurar :name',
|
||||
'save' => 'Guardar :name',
|
||||
'search' => 'Buscar :name',
|
||||
'show' => 'Mostrar :name',
|
||||
'update' => 'Actualizar :name',
|
||||
'view' => 'Ver :name',
|
||||
],
|
||||
'new' => 'Nuevo',
|
||||
'no' => 'No',
|
||||
'open' => 'Abrir',
|
||||
'open_website' => 'Abrir en el sitio web',
|
||||
'preview' => 'Previsualizar',
|
||||
'price' => 'Precio',
|
||||
'record' => 'Registro',
|
||||
'restore' => 'Restaurar',
|
||||
'save' => 'Guardar',
|
||||
'save_and_close' => 'Guardar y cerrar',
|
||||
'save_and_return' => 'Guardar y volver',
|
||||
'search' => 'Buscar',
|
||||
'select' => 'Seleccionar',
|
||||
'select_all' => 'Seleccionar todo',
|
||||
'send' => 'Enviar',
|
||||
'settings' => 'Ajustes',
|
||||
'show' => 'Mostrar',
|
||||
'show_all' => 'Mostrar todo',
|
||||
'sign_in' => 'Iniciar sesión',
|
||||
'solve' => 'Resolver',
|
||||
'start' => 'Comenzar',
|
||||
'stop' => 'Detener',
|
||||
'submit' => 'Enviar',
|
||||
'subscribe' => 'Suscribir',
|
||||
'switch' => 'Cambiar',
|
||||
'switch_to_role' => 'Cambiar de rol',
|
||||
'tag' => 'Etiqueta',
|
||||
'tags' => 'Etiquetas',
|
||||
'target_link' => [
|
||||
'blank' => 'Abrir en una ventana nueva',
|
||||
'parent' => 'Abrir en el marco principal',
|
||||
'self' => 'Abrir en la ventana actual',
|
||||
'top' => 'Abrir en el marco superior',
|
||||
],
|
||||
'translate' => 'Traducir',
|
||||
'translate_it' => 'Traducirlo',
|
||||
'unpack' => 'Desglosar',
|
||||
'unsubscribe' => 'Darse de baja',
|
||||
'up' => 'Arriba',
|
||||
'update' => 'Actualizar',
|
||||
'user' => 'Usuario',
|
||||
'view' => 'Ver',
|
||||
'yes' => 'Sí',
|
||||
];
|
||||
9
lang/es/auth.php
Normal file
9
lang/es/auth.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'failed' => 'Estas credenciales no coinciden con nuestros registros.',
|
||||
'password' => 'La contraseña es incorrecta.',
|
||||
'throttle' => 'Demasiados intentos de acceso. Por favor intente nuevamente en :seconds segundos.',
|
||||
];
|
||||
28
lang/es/console.php
Normal file
28
lang/es/console.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'prune' => [
|
||||
'dry_run' => 'Simulación: no se borra nada.',
|
||||
'revisions' => 'Entradas de historial antiguas',
|
||||
'trash' => 'Registros eliminados definitivamente',
|
||||
'media' => 'Imágenes que ya no usa nadie',
|
||||
'missing_urls' => 'URLs no encontradas de una sola visita',
|
||||
'views' => 'Cifras de lectura antiguas',
|
||||
],
|
||||
|
||||
'types' => [
|
||||
'no_spec' => 'No hay especificación publicada en public/openapi.yaml.',
|
||||
'current' => 'Los tipos están al día.',
|
||||
'stale' => 'Los tipos no coinciden con la especificación. Ejecuta: php artisan api:types',
|
||||
'written' => ':count esquemas escritos en :path',
|
||||
],
|
||||
|
||||
'schedule' => [
|
||||
'closed' => 'cerrada (pasó su fecha)',
|
||||
'pending' => 'Esperando su fecha de publicación',
|
||||
'off_site' => 'Fuera de la web por haber caducado',
|
||||
'summary' => '{0}No había convocatorias que cerrar.|{1}Se cerró 1 convocatoria vencida.|[2,*]Se cerraron :count convocatorias vencidas.',
|
||||
],
|
||||
];
|
||||
7
lang/es/docs.php
Normal file
7
lang/es/docs.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'title' => 'Documentación de la API',
|
||||
];
|
||||
68
lang/es/enums.php
Normal file
68
lang/es/enums.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'page_status' => [
|
||||
'draft' => 'Borrador',
|
||||
'review' => 'En revisión',
|
||||
'published' => 'Publicada',
|
||||
'archived' => 'Archivada',
|
||||
],
|
||||
|
||||
'project_status' => [
|
||||
'idea' => 'Idea',
|
||||
'active' => 'En marcha',
|
||||
'paused' => 'En pausa',
|
||||
'completed' => 'Terminado',
|
||||
'archived' => 'Archivado',
|
||||
],
|
||||
|
||||
'missing_url_status' => [
|
||||
'pending' => 'Sin decidir',
|
||||
'resolved' => 'Resuelta',
|
||||
'ignored' => 'Ignorada',
|
||||
],
|
||||
|
||||
'review_event' => [
|
||||
'requested' => 'Pedida revisión',
|
||||
'returned' => 'Devuelto',
|
||||
'published' => 'Publicado',
|
||||
'commented' => 'Comentario',
|
||||
],
|
||||
|
||||
'call_status' => [
|
||||
'open' => 'Abierta',
|
||||
'filled' => 'Cubierta',
|
||||
'closed' => 'Cerrada',
|
||||
],
|
||||
|
||||
'application_status' => [
|
||||
'new' => 'Sin responder',
|
||||
'contacted' => 'Contactada',
|
||||
'accepted' => 'Aceptada',
|
||||
'declined' => 'Descartada',
|
||||
'spam' => 'Spam',
|
||||
],
|
||||
|
||||
'application_kind' => [
|
||||
'contribute' => 'Quiere ayudar',
|
||||
'request' => 'Pide ayuda',
|
||||
],
|
||||
|
||||
'radar_ring' => [
|
||||
'adopt' => 'Adoptar',
|
||||
'trial' => 'Probar',
|
||||
'assess' => 'Evaluar',
|
||||
'hold' => 'Evitar',
|
||||
],
|
||||
|
||||
'technology_category' => [
|
||||
'language' => 'Lenguaje',
|
||||
'framework' => 'Framework',
|
||||
'datastore' => 'Almacenamiento',
|
||||
'infrastructure' => 'Infraestructura',
|
||||
'tool' => 'Herramienta',
|
||||
'practice' => 'Práctica',
|
||||
],
|
||||
];
|
||||
149
lang/es/health.php
Normal file
149
lang/es/health.php
Normal file
@@ -0,0 +1,149 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'title' => 'Salud del sitio',
|
||||
'subheading' => 'Lo que está mal en la web pública y no se ve desde aquí.',
|
||||
|
||||
'all_clear' => 'Todo en orden. No hay nada que arreglar.',
|
||||
'problem_summary' => '{1}Hay 1 cosa que revisar|[2,*]Hay :count cosas que revisar',
|
||||
'problem_hint' => 'La web está en otro sitio, así que estos fallos no se ven editando: se ven visitándola.',
|
||||
'passing' => '{1}1 comprobación sin problemas|[2,*]:count comprobaciones sin problemas',
|
||||
'and_more' => 'y :count más',
|
||||
'refreshed' => 'Comprobaciones actualizadas',
|
||||
|
||||
'severity' => [
|
||||
'ok' => 'Bien',
|
||||
'warning' => 'Aviso',
|
||||
'error' => 'Fallo',
|
||||
],
|
||||
|
||||
'actions' => [
|
||||
'refresh' => 'Volver a comprobar',
|
||||
'go_fix' => 'Ir a arreglarlo',
|
||||
],
|
||||
|
||||
'bits' => [
|
||||
'description' => 'sin meta descripción',
|
||||
'cover' => 'sin portada',
|
||||
'gallery_image' => 'Imagen de galería sin describir',
|
||||
'itself' => 'sí misma',
|
||||
],
|
||||
|
||||
'checks' => [
|
||||
'missing-slugs' => [
|
||||
'title' => 'Slugs que faltan',
|
||||
'ok' => 'Todo lo traducido tiene su slug.',
|
||||
'problem' => '{1}1 registro está traducido a un idioma pero no tiene slug en él, así que su URL en ese idioma no existe o apunta a un 404.|[2,*]:count registros están traducidos a algún idioma sin tener slug en él, así que esas URLs no existen o apuntan a un 404.',
|
||||
],
|
||||
|
||||
'duplicate-slugs' => [
|
||||
'title' => 'Slugs repetidos',
|
||||
'ok' => 'Cada URL resuelve a un solo registro.',
|
||||
'problem' => '{1}1 slug está repetido dentro del mismo idioma: la API resuelve esa URL al primero que encuentra.|[2,*]:count slugs están repetidos dentro del mismo idioma: la API resuelve esas URLs al primero que encuentra.',
|
||||
],
|
||||
|
||||
'broken-images' => [
|
||||
'title' => 'Imágenes rotas',
|
||||
'ok' => 'Todos los archivos de imagen están donde deben.',
|
||||
'problem' => '{1}1 imagen que la web está publicando ya no existe en disco o no se pudo leer.|[2,*]:count imágenes que la web está publicando ya no existen en disco o no se pudieron leer.',
|
||||
],
|
||||
|
||||
'missing-translations' => [
|
||||
'title' => 'Contenido sin traducir',
|
||||
'ok' => 'Todo lo publicado está en los tres idiomas.',
|
||||
'problem' => '{1}1 registro publicado no está traducido a algún idioma, así que esa versión de la web se queda sin él.|[2,*]:count registros publicados no están traducidos a algún idioma, así que esas versiones de la web se quedan sin ellos.',
|
||||
],
|
||||
|
||||
'images-without-alt' => [
|
||||
'title' => 'Imágenes sin describir',
|
||||
'ok' => 'Todas las imágenes publicadas tienen texto alternativo.',
|
||||
'problem' => '{1}1 imagen publicada no tiene texto alternativo: quien no puede verla no se entera de que está.|[2,*]:count imágenes publicadas no tienen texto alternativo: quien no puede verlas no se entera de que están.',
|
||||
],
|
||||
|
||||
'incomplete-seo' => [
|
||||
'title' => 'Fichas incompletas',
|
||||
'ok' => 'Todo lo publicado tiene descripción y portada.',
|
||||
'problem' => '{1}1 registro publicado no tiene qué enseñar en un buscador o al pegar el enlace en un chat.|[2,*]:count registros publicados no tienen qué enseñar en un buscador o al pegar el enlace en un chat.',
|
||||
],
|
||||
|
||||
'expired-calls' => [
|
||||
'title' => 'Convocatorias vencidas',
|
||||
'ok' => 'Ninguna convocatoria abierta ha pasado su fecha de cierre.',
|
||||
'problem' => '{1}1 convocatoria sigue marcada como abierta con la fecha de cierre pasada. Ya no sale en la web, pero infla el contador del panel.|[2,*]:count convocatorias siguen marcadas como abiertas con la fecha de cierre pasada. Ya no salen en la web, pero inflan el contador del panel.',
|
||||
],
|
||||
|
||||
'unanswered-submissions' => [
|
||||
'title' => 'Gente esperando respuesta',
|
||||
'ok' => 'No hay nadie esperando desde hace más de una semana.',
|
||||
'problem' => '{1}1 persona escribió hace más de una semana y sigue sin respuesta.|[2,*]:count personas escribieron hace más de una semana y siguen sin respuesta.',
|
||||
],
|
||||
|
||||
'stalled-media' => [
|
||||
'title' => 'Imágenes sin procesar',
|
||||
'ok' => 'No hay imágenes esperando a procesarse.',
|
||||
'problem' => '{1}1 imagen lleva más de una hora sin procesarse: probablemente no hay ningún worker de colas ni scheduler corriendo.|[2,*]:count imágenes llevan más de una hora sin procesarse: probablemente no hay ningún worker de colas ni scheduler corriendo.',
|
||||
],
|
||||
|
||||
'services-without-work' => [
|
||||
'title' => 'Servicios sin obra detrás',
|
||||
'ok' => 'Todos los servicios publicados enseñan trabajo real.',
|
||||
'problem' => '{1}1 servicio publicado no enlaza ningún proyecto publicado: es una promesa, no una oferta.|[2,*]:count servicios publicados no enlazan ningún proyecto publicado: son promesas, no ofertas.',
|
||||
],
|
||||
|
||||
'clients-without-logo' => [
|
||||
'title' => 'Clientes sin logo',
|
||||
'ok' => 'Todos los clientes del muro tienen logo.',
|
||||
'problem' => '{1}1 cliente sale en el muro de logos sin tener logo: es un hueco que parece un fallo.|[2,*]:count clientes salen en el muro de logos sin tener logo: son huecos que parecen un fallo.',
|
||||
],
|
||||
|
||||
'testimonials-missing-original' => [
|
||||
'title' => 'Citas sin el original',
|
||||
'ok' => 'Todas las citas tienen las palabras que se dijeron de verdad.',
|
||||
'problem' => '{1}1 testimonio no tiene la cita en su idioma original: se está publicando una traducción de algo que nadie puede comprobar.|[2,*]:count testimonios no tienen la cita en su idioma original: se están publicando traducciones de algo que nadie puede comprobar.',
|
||||
],
|
||||
|
||||
'talks-without-speaker' => [
|
||||
'title' => 'Charlas sin ponente',
|
||||
'ok' => 'Todas las charlas tienen a alguien acreditado.',
|
||||
'problem' => '{1}1 charla no dice quién la dio, así que no sale en el perfil de nadie.|[2,*]:count charlas no dicen quién las dio, así que no salen en el perfil de nadie.',
|
||||
],
|
||||
|
||||
'broken-redirects' => [
|
||||
'title' => 'Redirecciones rotas',
|
||||
'ok' => 'Ninguna redirección da vueltas ni encadena con otra.',
|
||||
'problem' => '{1}1 redirección apunta a sí misma o a otra redirección: el navegador da vueltas o paga un salto de más.|[2,*]:count redirecciones apuntan a sí mismas o a otra redirección: el navegador da vueltas o paga saltos de más.',
|
||||
],
|
||||
|
||||
'redirects-to-nowhere' => [
|
||||
'title' => 'Redirecciones a ninguna parte',
|
||||
'ok' => 'Todas las redirecciones llevan a una página que existe.',
|
||||
'problem' => '{1}1 redirección lleva a una dirección que ya no responde: es peor que el 404 que venía a evitar.|[2,*]:count redirecciones llevan a direcciones que ya no responden: es peor que el 404 que venían a evitar.',
|
||||
],
|
||||
|
||||
'missing-urls' => [
|
||||
'title' => 'URLs que nadie encuentra',
|
||||
'ok' => 'Ninguna dirección rota esperando redirección.',
|
||||
'problem' => '{1}1 dirección da 404 y se ha pedido más de una vez: cada visita que llega por ahí se pierde.|[2,*]:count direcciones dan 404 y se han pedido más de una vez: cada visita que llega por ahí se pierde.',
|
||||
],
|
||||
|
||||
'stale-reviews' => [
|
||||
'title' => 'Revisiones sin contestar',
|
||||
'ok' => 'Nadie lleva esperando una revisión.',
|
||||
'problem' => '{1}1 cosa lleva más de una semana esperando revisión: quien la escribió cree que algo está pasando.|[2,*]:count cosas llevan más de una semana esperando revisión: quien las escribió cree que algo está pasando.',
|
||||
],
|
||||
|
||||
'stale-translations' => [
|
||||
'title' => 'Traducciones desactualizadas',
|
||||
'ok' => 'Ninguna traducción se ha quedado atrás del original.',
|
||||
'problem' => '{1}1 registro traducido dice algo que el original dejó de decir: existe la traducción, así que nada más lo avisa.|[2,*]:count registros traducidos dicen algo que el original dejó de decir: existen las traducciones, así que nada más lo avisa.',
|
||||
],
|
||||
|
||||
'stale-repositories' => [
|
||||
'title' => 'Repositorios que no sincronizan',
|
||||
'ok' => 'Todos los repositorios sincronizan bien.',
|
||||
'problem' => '{1}1 repositorio lleva varios intentos fallando. La web sigue enseñando sus últimos números, que ya no son ciertos.|[2,*]:count repositorios llevan varios intentos fallando. La web sigue enseñando sus últimos números, que ya no son ciertos.',
|
||||
],
|
||||
],
|
||||
];
|
||||
84
lang/es/http-statuses.php
Normal file
84
lang/es/http-statuses.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'0' => 'Error desconocido',
|
||||
'100' => 'Continuar',
|
||||
'101' => 'Protocolos de conmutación',
|
||||
'102' => 'Procesando',
|
||||
'200' => 'DE ACUERDO',
|
||||
'201' => 'Creado',
|
||||
'202' => 'Aceptado',
|
||||
'203' => 'Información no autorizada',
|
||||
'204' => 'Sin contenido',
|
||||
'205' => 'Restablecer contenido',
|
||||
'206' => 'Contenido parcial',
|
||||
'207' => 'Multiestado',
|
||||
'208' => 'Ya Reportado',
|
||||
'226' => 'IM usado',
|
||||
'300' => 'Múltiples opciones',
|
||||
'301' => 'Movido permanentemente',
|
||||
'302' => 'Encontrado',
|
||||
'303' => 'Ver otros',
|
||||
'304' => 'No modificado',
|
||||
'305' => 'Usa proxy',
|
||||
'307' => 'Redirección temporal',
|
||||
'308' => 'Redirección permanente',
|
||||
'400' => 'Solicitud incorrecta',
|
||||
'401' => 'No autorizado',
|
||||
'402' => 'Pago requerido',
|
||||
'403' => 'Prohibido',
|
||||
'404' => 'No encontrado',
|
||||
'405' => 'Método no permitido',
|
||||
'406' => 'Inaceptable',
|
||||
'407' => 'Se requiere autenticación proxy',
|
||||
'408' => 'Solicitud de tiempo de espera',
|
||||
'409' => 'Conflicto',
|
||||
'410' => 'Recurso no disponible',
|
||||
'411' => 'Longitud requerida',
|
||||
'412' => 'Error de condición previa',
|
||||
'413' => 'Solicitud demasiado grande',
|
||||
'414' => 'URI demasiado largo',
|
||||
'415' => 'Tipo de medio no admitido',
|
||||
'416' => 'Rango no satisfactorio',
|
||||
'417' => 'Expectativa fallida',
|
||||
'418' => 'Soy una tetera',
|
||||
'419' => 'La sesión ha expirado',
|
||||
'421' => 'Solicitud mal dirigida',
|
||||
'422' => 'Entidad no procesable',
|
||||
'423' => 'Bloqueado',
|
||||
'424' => 'Dependencia fallida',
|
||||
'425' => 'Demasiado temprano',
|
||||
'426' => 'Se requiere actualización',
|
||||
'428' => 'Precondición requerida',
|
||||
'429' => 'Demasiadas solicitudes',
|
||||
'431' => 'Campos de encabezado de solicitud demasiado grandes',
|
||||
'444' => 'Conexión cerrada sin respuesta',
|
||||
'449' => 'Reintentar con',
|
||||
'451' => 'No disponible por razones legales',
|
||||
'499' => 'Solicitud cerrada del cliente',
|
||||
'500' => 'Error interno del servidor',
|
||||
'501' => 'No se ha implementado',
|
||||
'502' => 'Mala puerta de enlace',
|
||||
'503' => 'Modo de mantenimiento',
|
||||
'504' => 'Tiempo de espera de puerta de enlace',
|
||||
'505' => 'Versión HTTP no compatible',
|
||||
'506' => 'Variante También Negocia',
|
||||
'507' => 'Espacio insuficiente',
|
||||
'508' => 'Bucle detectado',
|
||||
'509' => 'Límite de ancho de banda excedido',
|
||||
'510' => 'no extendido',
|
||||
'511' => 'Se requiere autenticación de red',
|
||||
'520' => 'Error desconocido',
|
||||
'521' => 'El servidor web está caído',
|
||||
'522' => 'Tiempo de conexión agotado',
|
||||
'523' => 'El origen es inalcanzable',
|
||||
'524' => 'Se produjo un tiempo de espera',
|
||||
'525' => 'Protocolo de enlace SSL fallido',
|
||||
'526' => 'Certificado SSL no válido',
|
||||
'527' => 'Error de cañón de riel',
|
||||
'598' => 'Error de tiempo de espera de lectura de red',
|
||||
'599' => 'Error de tiempo de espera de conexión de red',
|
||||
'unknownError' => 'Error desconocido',
|
||||
];
|
||||
34
lang/es/maintenance.php
Normal file
34
lang/es/maintenance.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'title' => 'Modo mantenimiento',
|
||||
'subheading' => 'Afecta solo a la web pública. El panel y la API de administración siguen funcionando.',
|
||||
'badge' => 'Web caída',
|
||||
|
||||
'status_up' => 'La web pública está operativa.',
|
||||
'status_down' => 'La web pública está en mantenimiento.',
|
||||
'since' => 'Desde :time',
|
||||
'lifts_at' => 'se levanta el :time',
|
||||
'panel_unaffected' => 'Podéis seguir editando: el panel no se ve afectado.',
|
||||
|
||||
'notice' => 'Aviso para los visitantes',
|
||||
'notice_hint' => 'Lo devuelve la API pública en el 503 para que el frontend lo muestre. Si lo dejas vacío se usa el texto por defecto.',
|
||||
'default_message' => 'Estamos haciendo cambios en la web. Volvemos en un rato.',
|
||||
|
||||
'until' => 'Se levanta automáticamente',
|
||||
'until_hint' => 'Opcional. Evita que un mantenimiento olvidado deje la web caída indefinidamente.',
|
||||
|
||||
'enable' => 'Activar mantenimiento',
|
||||
'enable_confirm' => 'Los visitantes dejarán de ver la web y recibirán el aviso. El panel seguirá disponible.',
|
||||
'disable' => 'Levantar mantenimiento',
|
||||
'save_message' => 'Guardar aviso',
|
||||
|
||||
'enabled_notice' => 'La web pública está en mantenimiento',
|
||||
'disabled_notice' => 'La web pública vuelve a estar operativa',
|
||||
'message_saved' => 'Aviso guardado',
|
||||
|
||||
'bypass_hint' => 'El equipo puede seguir viendo la web real usando el token de preview o desde una IP de confianza (SITE_TRUSTED_IPS).',
|
||||
'no_permission' => 'No tienes permiso para activar o levantar el mantenimiento.',
|
||||
];
|
||||
8
lang/es/pagination.php
Normal file
8
lang/es/pagination.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'next' => 'Siguiente »',
|
||||
'previous' => '« Anterior',
|
||||
];
|
||||
844
lang/es/panel.php
Normal file
844
lang/es/panel.php
Normal file
@@ -0,0 +1,844 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'untitled' => 'Sin título',
|
||||
|
||||
'duplicates' => [
|
||||
'title' => 'Título parecido',
|
||||
'body' => 'Ya existe algo muy parecido: :titles',
|
||||
'open' => 'Ver ficha existente',
|
||||
],
|
||||
|
||||
'sessions' => [
|
||||
'title' => 'Sesiones',
|
||||
'this_one' => 'Esta sesión',
|
||||
'unknown_device' => 'Dispositivo desconocido',
|
||||
'fields' => [
|
||||
'ip_address' => 'Dirección IP',
|
||||
'device' => 'Dispositivo',
|
||||
'last_activity' => 'Última actividad',
|
||||
],
|
||||
'actions' => [
|
||||
'revoke' => 'Cerrar sesión',
|
||||
],
|
||||
'revoked' => 'Sesión cerrada. Esa conexión deja de valer en la próxima petición.',
|
||||
'empty' => [
|
||||
'heading' => 'Sin sesiones abiertas',
|
||||
'description' => 'Nadie ha iniciado sesión con esta cuenta, o llevan tiempo sin usarla.',
|
||||
],
|
||||
],
|
||||
|
||||
'environment' => [
|
||||
'production' => 'Producción — esto es real',
|
||||
'other' => 'Entorno de :name',
|
||||
],
|
||||
|
||||
'concurrency' => [
|
||||
'title' => 'No se ha guardado',
|
||||
'body' => 'Alguien más ha cambiado esto mientras lo editabas. Recarga la página para ver la versión actual: si guardas ahora, perderías ese cambio.',
|
||||
'body_with_author' => ':name ha cambiado esto mientras lo editabas. Recarga la página para ver su versión: si guardas ahora, perderías ese cambio.',
|
||||
],
|
||||
|
||||
'presence' => [
|
||||
'title' => 'Alguien más lo tiene abierto',
|
||||
'body' => 'Ahora mismo también lo está editando: :names.',
|
||||
],
|
||||
|
||||
'groups' => [
|
||||
'collective' => 'Colectivo',
|
||||
'content' => 'Contenido',
|
||||
'administration' => 'Administración',
|
||||
],
|
||||
|
||||
'language' => [
|
||||
'label' => 'Idioma',
|
||||
'switch' => 'Cambiar idioma',
|
||||
],
|
||||
|
||||
'pages' => [
|
||||
'label' => 'Página',
|
||||
'plural' => 'Páginas',
|
||||
'sections' => [
|
||||
'content' => 'Contenido',
|
||||
'content_hint' => 'Cada pestaña es un idioma. El idioma principal es obligatorio; el resto se rellena con él si lo dejas vacío.',
|
||||
'publishing' => 'Publicación',
|
||||
'seo' => 'SEO',
|
||||
'seo_hint' => 'Metadatos para buscadores y redes sociales.',
|
||||
],
|
||||
'fields' => [
|
||||
'title' => 'Título',
|
||||
'slug' => 'Slug',
|
||||
'excerpt' => 'Extracto',
|
||||
'body' => 'Contenido',
|
||||
'meta_title' => 'Meta título',
|
||||
'meta_description' => 'Meta descripción',
|
||||
'category' => 'Categoría',
|
||||
'author' => 'Autor',
|
||||
'status' => 'Estado',
|
||||
'featured_image' => 'Imagen destacada',
|
||||
'featured_image_alt' => 'Texto alternativo',
|
||||
'featured_image_alt_hint' => 'Qué se ve en la imagen, para quien no puede verla. Si es puramente decorativa, déjalo vacío.',
|
||||
'is_featured' => 'Destacada',
|
||||
'published_at' => 'Fecha de publicación',
|
||||
'published_at_hint' => 'Con una fecha futura, la página no sale en la web hasta que llegue.',
|
||||
'unpublish_at' => 'Retirar el',
|
||||
'unpublish_at_hint' => 'Opcional. Al llegar, la página desaparece sola de la web. Para avisos con fecha de caducidad.',
|
||||
'translations' => 'Traducciones',
|
||||
],
|
||||
'filters' => [
|
||||
'translated_in' => 'Traducida a',
|
||||
'missing_translation' => 'Sin traducir a',
|
||||
],
|
||||
'actions' => [
|
||||
'publish' => 'Publicar',
|
||||
'unpublish' => 'Despublicar',
|
||||
],
|
||||
],
|
||||
|
||||
'categories' => [
|
||||
'label' => 'Categoría',
|
||||
'plural' => 'Categorías',
|
||||
'fields' => [
|
||||
'name' => 'Nombre',
|
||||
'slug' => 'Slug',
|
||||
'description' => 'Descripción',
|
||||
'color' => 'Color',
|
||||
'position' => 'Orden',
|
||||
'is_visible' => 'Visible',
|
||||
'pages_count' => 'Páginas',
|
||||
],
|
||||
],
|
||||
|
||||
'users' => [
|
||||
'label' => 'Usuario',
|
||||
'plural' => 'Usuarios',
|
||||
'sections' => [
|
||||
'identity' => 'Identidad',
|
||||
'identity_hint' => 'Gestionada por el servidor OAuth. Se actualiza automáticamente en cada inicio de sesión.',
|
||||
'access' => 'Acceso y permisos',
|
||||
'access_hint' => 'Gestionado por esta aplicación.',
|
||||
],
|
||||
'fields' => [
|
||||
'name' => 'Nombre',
|
||||
'email' => 'Correo electrónico',
|
||||
'oauth_id' => 'ID en el servidor OAuth',
|
||||
'roles' => 'Roles',
|
||||
'locale' => 'Idioma preferido',
|
||||
'is_active' => 'Activo',
|
||||
'last_login_at' => 'Último acceso',
|
||||
'remote_roles' => 'Roles remotos',
|
||||
'never' => 'Nunca',
|
||||
],
|
||||
'actions' => [
|
||||
'activate' => 'Activar',
|
||||
'deactivate' => 'Desactivar',
|
||||
],
|
||||
],
|
||||
|
||||
'roles' => [
|
||||
'label' => 'Rol',
|
||||
'plural' => 'Roles',
|
||||
'fields' => [
|
||||
'name' => 'Nombre',
|
||||
'permissions' => 'Permisos',
|
||||
'users_count' => 'Usuarios',
|
||||
],
|
||||
'protected' => 'Rol protegido: no se puede eliminar.',
|
||||
'select_all' => 'Seleccionar todos',
|
||||
],
|
||||
|
||||
'permissions' => [
|
||||
'groups' => [
|
||||
'general' => 'General',
|
||||
'projects' => 'Proyectos',
|
||||
'members' => 'Miembros',
|
||||
'services' => 'Servicios',
|
||||
'clients' => 'Clientes',
|
||||
'testimonials' => 'Testimonios',
|
||||
'talks' => 'Charlas',
|
||||
'technologies' => 'Tecnologías',
|
||||
'calls' => 'Convocatorias',
|
||||
'applications' => 'Buzón',
|
||||
'repositories' => 'Repositorios',
|
||||
'media' => 'Medios',
|
||||
'redirects' => 'Redirecciones',
|
||||
'pages' => 'Páginas',
|
||||
'categories' => 'Categorías',
|
||||
'users' => 'Usuarios',
|
||||
'roles' => 'Roles',
|
||||
'settings' => 'Ajustes',
|
||||
],
|
||||
'abilities' => [
|
||||
'sync' => 'Sincronizar',
|
||||
'maintenance' => 'Activar modo mantenimiento',
|
||||
'panel_access' => 'Acceder al panel',
|
||||
'view_any' => 'Listar',
|
||||
'view' => 'Ver detalle',
|
||||
'create' => 'Crear',
|
||||
'update' => 'Editar',
|
||||
'delete' => 'Eliminar',
|
||||
'restore' => 'Restaurar',
|
||||
'force_delete' => 'Eliminar definitivamente',
|
||||
'publish' => 'Publicar',
|
||||
],
|
||||
],
|
||||
|
||||
'actions' => [
|
||||
'duplicate' => 'Duplicar',
|
||||
'duplicate_heading' => 'Duplicar este registro',
|
||||
'duplicated' => 'Duplicado. Ponle un slug y una fecha antes de publicarlo.',
|
||||
],
|
||||
|
||||
'preview' => [
|
||||
'label' => 'Vista previa',
|
||||
'heading' => 'Enlaces de vista previa',
|
||||
'hint' => 'Se pueden compartir y caducan en :hours horas. Cada uno sirve solo para este registro.',
|
||||
'open' => 'Abrir',
|
||||
],
|
||||
|
||||
'trash' => [
|
||||
'title' => 'Papelera',
|
||||
'subheading' => 'Todo lo borrado, junto, con el botón de deshacer al lado.',
|
||||
'empty' => 'La papelera está vacía.',
|
||||
'deleted_at' => 'Borrado :when',
|
||||
'restore' => 'Recuperar',
|
||||
'erase' => 'Eliminar',
|
||||
'erase_confirm' => 'Esto no se puede deshacer. ¿Seguro?',
|
||||
'restored' => 'Recuperado',
|
||||
'erased' => 'Eliminado definitivamente',
|
||||
],
|
||||
|
||||
'today' => [
|
||||
'all_clear' => 'No hay nada esperando',
|
||||
'all_clear_hint' => 'Ni gente sin respuesta ni contenido a medias.',
|
||||
],
|
||||
|
||||
'widgets' => [
|
||||
'stats' => [
|
||||
'pages' => 'Páginas',
|
||||
'published' => 'Publicadas',
|
||||
'users' => 'Usuarios activos',
|
||||
'missing_translations' => 'Sin traducir',
|
||||
'missing_translations_hint' => 'Páginas que faltan en algún idioma',
|
||||
'projects' => 'Proyectos',
|
||||
'projects_description' => 'Proyectos publicados',
|
||||
'active_projects' => 'Proyectos en marcha',
|
||||
'active_projects_description' => 'Buscando quien colabore',
|
||||
'members' => 'Miembros',
|
||||
'members_description' => 'Gente activa en el colectivo',
|
||||
'open_calls' => 'Convocatorias abiertas',
|
||||
'open_calls_description' => 'Buscando participantes',
|
||||
'good_first_issues' => 'Tareas para empezar',
|
||||
'good_first_issues_description' => 'Libres para cogerlas',
|
||||
'help_wanted' => 'Se busca ayuda',
|
||||
'help_wanted_description' => 'Issues abiertas',
|
||||
],
|
||||
|
||||
'growth_chart' => 'Crecimiento en el tiempo',
|
||||
'growth' => [
|
||||
'projects' => 'Proyectos',
|
||||
'members' => 'Miembros',
|
||||
'issues' => 'Tareas para empezar',
|
||||
],
|
||||
|
||||
'languages_chart' => 'Reparto de lenguajes',
|
||||
'languages' => [
|
||||
'repositories' => 'Repositorios',
|
||||
],
|
||||
],
|
||||
|
||||
'projects' => [
|
||||
'label' => 'Proyecto',
|
||||
'plural' => 'Proyectos',
|
||||
'sections' => [
|
||||
'content' => 'Contenido',
|
||||
'writeup' => 'Decisiones y postmortem',
|
||||
'writeup_hint' => 'Lo que una consultora no puede publicar y vosotros sí. Es el contenido que otros desarrolladores leen de verdad.',
|
||||
'details' => 'Detalles',
|
||||
],
|
||||
'fields' => [
|
||||
'title' => 'Título',
|
||||
'slug' => 'Slug',
|
||||
'tagline' => 'Frase resumen',
|
||||
'description' => 'Descripción',
|
||||
'decisions' => 'Decisiones técnicas',
|
||||
'decisions_hint' => 'Por qué elegisteis lo que elegisteis, y qué descartasteis.',
|
||||
'postmortem' => 'Postmortem',
|
||||
'postmortem_hint' => 'Qué salió mal y qué aprendisteis. No hace falta que sea un éxito.',
|
||||
'status' => 'Estado',
|
||||
'published_at' => 'Publicado el',
|
||||
'unpublish_at' => 'Retirar el',
|
||||
'unpublish_at_hint' => 'Opcional. Al llegar, el proyecto desaparece solo de la web.',
|
||||
'published_at_hint' => 'Vacío = no visible en la web pública.',
|
||||
'technologies' => 'Tecnologías',
|
||||
'lead' => 'Responsable',
|
||||
'members' => 'Participantes',
|
||||
'client' => 'Para quién',
|
||||
'client_hint' => 'La ONG, asociación o entidad destinataria. Si no está en la lista, puedes crearla aquí mismo.',
|
||||
'services' => 'Servicios',
|
||||
'demo_url' => 'Demo',
|
||||
'cover_image' => 'Imagen de portada',
|
||||
'cover_image_alt' => 'Texto alternativo',
|
||||
'cover_image_alt_hint' => 'Qué se ve en la portada, para quien no puede verla. Si es puramente decorativa, déjalo vacío.',
|
||||
'started_at' => 'Inicio',
|
||||
'ended_at' => 'Fin',
|
||||
'is_featured' => 'Destacado',
|
||||
'needs_help' => 'Busca gente',
|
||||
'needs_help_hint' => 'Lo muestra en la sección de colaboración de la web.',
|
||||
],
|
||||
'filters' => ['unpublished' => 'Sin publicar'],
|
||||
'actions' => ['publish' => 'Publicar'],
|
||||
],
|
||||
|
||||
'members' => [
|
||||
'label' => 'Miembro',
|
||||
'plural' => 'Miembros',
|
||||
'sections' => [
|
||||
'profile' => 'Perfil público',
|
||||
'profile_hint' => 'Es el escaparate personal de cada uno: la moneda con la que se paga el trabajo voluntario.',
|
||||
'membership' => 'Pertenencia',
|
||||
],
|
||||
'fields' => [
|
||||
'name' => 'Nombre',
|
||||
'slug' => 'Slug',
|
||||
'headline' => 'Titular',
|
||||
'bio' => 'Biografía',
|
||||
'avatar' => 'Foto',
|
||||
'avatar_hint' => 'El texto alternativo es el nombre de la persona, así que no hay que escribirlo.',
|
||||
'github_username' => 'Usuario de GitHub',
|
||||
'user' => 'Cuenta del panel',
|
||||
'user_hint' => 'Opcional. La mayoría de miembros no necesita acceso al admin.',
|
||||
'technologies' => 'Tecnologías',
|
||||
'projects' => 'Proyectos',
|
||||
'is_public' => 'Visible en la web',
|
||||
'is_founder' => 'Fundador/a',
|
||||
'position' => 'Orden',
|
||||
'joined_at' => 'Se unió',
|
||||
'left_at' => 'Se fue',
|
||||
'left_at_hint' => 'Sale del listado actual pero conserva su historial.',
|
||||
],
|
||||
'filters' => ['current' => 'Solo actuales'],
|
||||
],
|
||||
|
||||
'technologies' => [
|
||||
'label' => 'Tecnología',
|
||||
'plural' => 'Tecnologías',
|
||||
'off_radar' => 'Fuera del radar',
|
||||
'sections' => ['prose' => 'Descripción y nota del radar'],
|
||||
'fields' => [
|
||||
'name' => 'Nombre',
|
||||
'slug' => 'Slug',
|
||||
'category' => 'Categoría',
|
||||
'radar_ring' => 'Anillo del radar',
|
||||
'radar_ring_hint' => 'Vacío = se puede usar como etiqueta pero no sale en el radar.',
|
||||
'radar_note' => 'Nota del radar',
|
||||
'radar_note_hint' => 'Por qué está en ese anillo. Es la parte que la gente lee.',
|
||||
'description' => 'Descripción',
|
||||
'color' => 'Color',
|
||||
'logo' => 'Logo',
|
||||
'logo_hint' => 'Preferiblemente SVG o PNG con fondo transparente. Sale en el radar y en las fichas.',
|
||||
'website' => 'Web',
|
||||
'position' => 'Orden',
|
||||
'projects' => 'Proyectos',
|
||||
'members' => 'Miembros',
|
||||
],
|
||||
],
|
||||
|
||||
'calls' => [
|
||||
'label' => 'Convocatoria',
|
||||
'plural' => 'Convocatorias',
|
||||
'no_project' => 'General',
|
||||
'sections' => [
|
||||
'commitment' => 'Compromiso',
|
||||
'commitment_hint' => 'Lo escaso aquí es el tiempo, no el dinero. Ser concreto es lo que hace que alguien se decida.',
|
||||
],
|
||||
'fields' => [
|
||||
'title' => 'Título',
|
||||
'slug' => 'Slug',
|
||||
'description' => 'Descripción',
|
||||
'what_you_get' => 'Qué te llevas',
|
||||
'what_you_get_hint' => 'Aprendizaje, portfolio, referencias, mentoría. Decirlo abiertamente suma.',
|
||||
'status' => 'Estado',
|
||||
'project' => 'Proyecto',
|
||||
'project_hint' => 'Vacío = convocatoria general del colectivo.',
|
||||
'technologies' => 'Tecnologías',
|
||||
'hours_per_week' => 'Horas por semana',
|
||||
'duration_weeks' => 'Semanas',
|
||||
'seniority' => 'Nivel',
|
||||
'commitment' => 'Dedicación',
|
||||
'opens_at' => 'Abre',
|
||||
'closes_at' => 'Cierra',
|
||||
],
|
||||
'seniority' => ['any' => 'Cualquiera', 'junior' => 'Junior', 'mid' => 'Intermedio', 'senior' => 'Senior'],
|
||||
'commitment_summary' => '{0}:hoursh/semana|{1}:hoursh/semana · :weeks semana|[2,*]:hoursh/semana · :weeks semanas',
|
||||
],
|
||||
|
||||
'applications' => [
|
||||
'label' => 'Solicitud',
|
||||
'plural' => 'Buzón',
|
||||
'general_enquiry' => 'Mensaje general',
|
||||
'badge_tooltip' => 'Personas esperando respuesta',
|
||||
'saved' => 'Notas guardadas',
|
||||
'reply_subject' => 'Re: :subject',
|
||||
'sections' => [
|
||||
'message' => 'Lo que nos han escrito',
|
||||
'internal' => 'Seguimiento interno',
|
||||
'internal_hint' => 'Solo lo veis vosotros. Quien escribió no ve nada de esto.',
|
||||
],
|
||||
'fields' => [
|
||||
'name' => 'Nombre',
|
||||
'email' => 'Email',
|
||||
'organisation' => 'Entidad',
|
||||
'kind' => 'Tipo',
|
||||
'subject' => 'Sobre',
|
||||
'call' => 'Convocatoria',
|
||||
'hours_per_week' => 'Horas/semana',
|
||||
'hours_asked' => 'La convocatoria pedía :hours h/semana',
|
||||
'message' => 'Mensaje',
|
||||
'links' => 'Enlaces',
|
||||
'link_name' => 'Nombre',
|
||||
'link_url' => 'URL',
|
||||
'status' => 'Estado',
|
||||
'received_at' => 'Recibida',
|
||||
'handled_by' => 'Atendida por',
|
||||
'handled_at' => 'Atendida el',
|
||||
'locale' => 'Escribió en',
|
||||
'notes' => 'Notas',
|
||||
'notes_empty' => 'Sin notas',
|
||||
'notes_hint' => 'Para el resto del equipo: qué habéis hablado, en qué quedó.',
|
||||
],
|
||||
'actions' => [
|
||||
'group' => 'Marcar como',
|
||||
'open' => 'Abrir solicitud',
|
||||
'reply' => 'Responder',
|
||||
'notes' => 'Notas',
|
||||
'contacted' => 'Contactada',
|
||||
'accepted' => 'Aceptada',
|
||||
'declined' => 'Descartada',
|
||||
'spam' => 'Spam',
|
||||
],
|
||||
'tabs' => [
|
||||
'pending' => 'Sin responder',
|
||||
'contribute' => 'Quieren ayudar',
|
||||
'request' => 'Piden ayuda',
|
||||
'all' => 'Todas',
|
||||
'spam' => 'Spam',
|
||||
],
|
||||
'empty' => [
|
||||
'heading' => 'No hay nada que responder',
|
||||
'description' => 'Aquí llega lo que la gente escribe desde la web pública.',
|
||||
'call_heading' => 'Todavía no ha escrito nadie',
|
||||
],
|
||||
'notification' => [
|
||||
'contribute' => ':name quiere echar una mano',
|
||||
'request' => ':name pide ayuda para un proyecto',
|
||||
],
|
||||
'mail' => [
|
||||
'greeting' => 'Hay alguien esperando respuesta.',
|
||||
'from' => 'De :name (:email)',
|
||||
],
|
||||
],
|
||||
|
||||
'publishing' => [
|
||||
'published_count' => '{0}No había nada que publicar: ya estaba en la web.|{1}Publicada 1 ficha.|[2,*]Publicadas :count fichas.',
|
||||
'scheduled' => 'Programada',
|
||||
'expired' => 'Caducada',
|
||||
'expired_at' => 'Caducó el :time',
|
||||
'expires_in' => 'Caduca :time',
|
||||
'live' => 'En la web',
|
||||
'unpublished' => 'Sin publicar',
|
||||
],
|
||||
|
||||
'gallery' => [
|
||||
'title' => 'Galería',
|
||||
'missing_alt' => 'Sin describir',
|
||||
'pending' => 'Procesando',
|
||||
'fields' => [
|
||||
'image' => 'Imagen',
|
||||
'alt' => 'Texto alternativo',
|
||||
'alt_hint' => 'Qué se ve, para quien no puede verlo.',
|
||||
'caption' => 'Pie de foto',
|
||||
'caption_hint' => 'Se muestra a todo el mundo. Aquí van los «antes» y «después».',
|
||||
'size' => 'Tamaño',
|
||||
],
|
||||
'actions' => [
|
||||
'add' => 'Añadir imagen',
|
||||
],
|
||||
'empty' => [
|
||||
'heading' => 'Sin imágenes todavía',
|
||||
'description' => 'Capturas, antes y después, lo que haga falta para que se entienda el proyecto. Se pueden reordenar arrastrando.',
|
||||
],
|
||||
],
|
||||
|
||||
'services' => [
|
||||
'label' => 'Servicio',
|
||||
'plural' => 'Servicios',
|
||||
'no_projects' => 'Sin ningún proyecto detrás: es una promesa, no una oferta.',
|
||||
'sections' => [
|
||||
'evidence' => 'Lo que lo respalda',
|
||||
'evidence_hint' => 'Un servicio que no puede señalar trabajo real es una promesa. Enlaza los proyectos que lo demuestran.',
|
||||
'seo' => 'SEO',
|
||||
],
|
||||
'fields' => [
|
||||
'title' => 'Título',
|
||||
'slug' => 'Slug',
|
||||
'tagline' => 'Frase resumen',
|
||||
'tagline_hint' => 'Una línea. Es lo que se lee en la tarjeta de la portada.',
|
||||
'description' => 'Descripción',
|
||||
'projects' => 'Proyectos',
|
||||
'technologies' => 'Tecnologías',
|
||||
'icon' => 'Icono',
|
||||
'icon_hint' => 'Nombre de un icono de Heroicons, por ejemplo heroicon-o-code-bracket.',
|
||||
'position' => 'Orden',
|
||||
'is_published' => 'Publicado',
|
||||
'is_featured' => 'Destacado',
|
||||
'is_featured_hint' => 'Para que la portada pueda elegir unos pocos.',
|
||||
'published_at' => 'Publicar el',
|
||||
'published_at_hint' => 'Con una fecha futura, no sale en la web hasta que llegue.',
|
||||
'unpublish_at' => 'Retirar el',
|
||||
'unpublish_at_hint' => 'Opcional. Al llegar, desaparece solo de la web.',
|
||||
'meta_title' => 'Meta título',
|
||||
'meta_description' => 'Meta descripción',
|
||||
'translations' => 'Traducciones',
|
||||
],
|
||||
|
||||
'actions' => [
|
||||
'publish' => 'Publicar',
|
||||
],
|
||||
],
|
||||
|
||||
'clients' => [
|
||||
'label' => 'Cliente',
|
||||
'plural' => 'Clientes',
|
||||
'fields' => [
|
||||
'name' => 'Nombre',
|
||||
'slug' => 'Slug',
|
||||
'sector' => 'Sector',
|
||||
'logo' => 'Logo',
|
||||
'logo_hint' => 'Preferiblemente en SVG o PNG con fondo transparente.',
|
||||
'url' => 'Web',
|
||||
'projects' => 'Proyectos',
|
||||
'is_public' => 'Se puede mostrar',
|
||||
'is_public_hint' => 'Desmárcalo si la entidad prefiere no aparecer en la web.',
|
||||
'position' => 'Orden',
|
||||
],
|
||||
'filters' => [
|
||||
'without_logo' => 'Sin logo',
|
||||
],
|
||||
],
|
||||
|
||||
'testimonials' => [
|
||||
'label' => 'Testimonio',
|
||||
'plural' => 'Testimonios',
|
||||
'sections' => [
|
||||
'quote' => 'La cita',
|
||||
'quote_hint' => 'Escribe en el idioma original lo que dijeron de verdad. Las otras pestañas son traducciones vuestras, y la web lo indicará.',
|
||||
'author' => 'Quién lo dijo',
|
||||
'about' => 'De qué habla',
|
||||
'about_hint' => 'Enlázalo a un cliente, un proyecto o un servicio: así la web pide los que tocan en cada página en vez de tener una lista suelta.',
|
||||
],
|
||||
'fields' => [
|
||||
'quote' => 'Cita',
|
||||
'original_locale' => 'Idioma original',
|
||||
'original_locale_hint' => 'En qué idioma lo dijeron. Traducir una cita es ponerle palabras en la boca a alguien, así que la web lo avisa.',
|
||||
'author_name' => 'Nombre',
|
||||
'author_role' => 'Cargo',
|
||||
'avatar' => 'Foto',
|
||||
'client' => 'Cliente',
|
||||
'project' => 'Proyecto',
|
||||
'service' => 'Servicio',
|
||||
'is_public' => 'Visible',
|
||||
'position' => 'Orden',
|
||||
'given_at' => 'Fecha',
|
||||
],
|
||||
],
|
||||
|
||||
'talks' => [
|
||||
'label' => 'Charla',
|
||||
'plural' => 'Charlas',
|
||||
'fields' => [
|
||||
'title' => 'Título',
|
||||
'title_hint' => 'No se traduce: es el nombre de una charla que se dio una vez y en un idioma.',
|
||||
'language' => 'Idioma',
|
||||
'summary' => 'Resumen',
|
||||
'event' => 'Evento',
|
||||
'city' => 'Ciudad',
|
||||
'held_at' => 'Fecha',
|
||||
'video_url' => 'Vídeo',
|
||||
'slides_url' => 'Diapositivas',
|
||||
'member' => 'Ponente',
|
||||
'member_hint' => 'Aparecerá también en su perfil, sin escribirlo dos veces.',
|
||||
'project' => 'Proyecto',
|
||||
'is_public' => 'Visible',
|
||||
],
|
||||
],
|
||||
|
||||
'repositories' => [
|
||||
'label' => 'Repositorio',
|
||||
'plural' => 'Repositorios',
|
||||
'never_synced' => 'Nunca',
|
||||
'fields' => [
|
||||
'provider' => 'Proveedor',
|
||||
'full_name' => 'Repositorio',
|
||||
'full_name_hint' => 'Formato «owner/repo». Todo lo demás se trae solo.',
|
||||
'project' => 'Proyecto',
|
||||
'is_primary' => 'Principal',
|
||||
'is_primary_hint' => 'El que representa al proyecto cuando hay varios.',
|
||||
'show_publicly' => 'Visible en la web',
|
||||
'language' => 'Lenguaje',
|
||||
'contributors' => 'Contribuidores',
|
||||
'good_first_issues' => 'Tareas para empezar',
|
||||
'pushed_at' => 'Último push',
|
||||
'last_synced_at' => 'Sincronizado',
|
||||
],
|
||||
'filters' => ['failing' => 'Con errores', 'dormant' => 'Sin actividad'],
|
||||
'actions' => ['sync' => 'Sincronizar', 'sync_selected' => 'Sincronizar seleccionados'],
|
||||
'notifications' => [
|
||||
'synced' => 'Repositorio sincronizado',
|
||||
'synced_body' => ':stars★ · :issues tareas para empezar',
|
||||
'sync_failed' => 'No se pudo sincronizar',
|
||||
'queued' => ':count repositorios en cola',
|
||||
],
|
||||
],
|
||||
|
||||
'revisions' => [
|
||||
'title' => 'Historial',
|
||||
'system' => 'El sistema',
|
||||
'before' => 'Antes',
|
||||
'after' => 'Después',
|
||||
'no_changes' => 'Esta entrada no registra cambios de campos.',
|
||||
'restored' => 'Valores restaurados',
|
||||
'restore_confirm' => 'Se devolverán los campos a como estaban en ese momento. La restauración queda registrada también, así que siempre se puede deshacer.',
|
||||
'diff_heading' => 'Cambio de :author · :when',
|
||||
'fields' => [
|
||||
'event' => 'Qué pasó',
|
||||
'author' => 'Quién',
|
||||
'fields' => 'Campos',
|
||||
'when' => 'Cuándo',
|
||||
],
|
||||
'events' => [
|
||||
'created' => 'Creado',
|
||||
'updated' => 'Editado',
|
||||
'published' => 'Publicado',
|
||||
'unpublished' => 'Despublicado',
|
||||
'deleted' => 'Borrado',
|
||||
'restored' => 'Recuperado',
|
||||
'erased' => 'Eliminado del todo',
|
||||
],
|
||||
'actions' => [
|
||||
'diff' => 'Ver cambio',
|
||||
'restore' => 'Restaurar estos valores',
|
||||
],
|
||||
],
|
||||
|
||||
'media' => [
|
||||
'label' => 'Archivo',
|
||||
'plural' => 'Medios',
|
||||
'subheading' => ':count archivos · :size MB en disco, contando las versiones derivadas.',
|
||||
'pending' => 'Sin procesar',
|
||||
'in_use' => 'En uso',
|
||||
'orphan' => 'Sin usar',
|
||||
'fields' => [
|
||||
'file' => 'Archivo',
|
||||
'size' => 'Medidas',
|
||||
'versions' => 'Versiones',
|
||||
'weight' => 'Peso',
|
||||
'used' => 'Uso',
|
||||
'error' => 'Error',
|
||||
],
|
||||
'filters' => [
|
||||
'pending' => 'Sin procesar',
|
||||
'failed' => 'Con error',
|
||||
'orphans' => 'Que no usa nadie',
|
||||
'missing' => 'Sin archivo en disco',
|
||||
],
|
||||
'actions' => [
|
||||
'open' => 'Abrir',
|
||||
'reprocess' => 'Reprocesar',
|
||||
'reprocess_all' => 'Reprocesar todo',
|
||||
'reprocess_all_hint' => 'Vuelve a generar medidas, versiones y placeholders de todas las imágenes. Es lo que hay que hacer tras cambiar los anchos o añadir un formato.',
|
||||
'reprocess_queued' => 'Encolado. Se procesa en cuanto corra la cola.',
|
||||
],
|
||||
'empty' => [
|
||||
'heading' => 'Todavía no hay archivos',
|
||||
'description' => 'Aparecen aquí solos según se suben imágenes en proyectos, páginas, miembros o la vitrina.',
|
||||
],
|
||||
],
|
||||
|
||||
'redirects' => [
|
||||
'label' => 'Redirección',
|
||||
'plural' => 'Redirecciones',
|
||||
'hint' => 'Rutas tal y como las ve la web, empezando por barra. Al renombrar un slug se crea una sola.',
|
||||
'every_locale' => 'Todos los idiomas',
|
||||
'automatic' => 'Automática',
|
||||
'manual' => 'A mano',
|
||||
'fields' => [
|
||||
'from' => 'De',
|
||||
'from_hint' => 'La dirección que dejó de funcionar.',
|
||||
'to' => 'A',
|
||||
'status' => 'Tipo',
|
||||
'status_hint' => 'Permanente es lo normal: le dice a Google que actualice el enlace.',
|
||||
'locale' => 'Idioma',
|
||||
'locale_hint' => 'Déjalo vacío para que valga en los tres.',
|
||||
'is_enabled' => 'Activa',
|
||||
'hits' => 'Usos',
|
||||
'origin' => 'Origen',
|
||||
],
|
||||
'statuses' => [
|
||||
'301' => 'Permanente (301)',
|
||||
'302' => 'Temporal (302)',
|
||||
],
|
||||
'filters' => [
|
||||
'unused' => 'Sin usar todavía',
|
||||
],
|
||||
'empty' => [
|
||||
'heading' => 'Todavía no hay redirecciones',
|
||||
'description' => 'Se crean solas al cambiar el slug de algo publicado. Aquí puedes añadir a mano las de enlaces anteriores a esta web.',
|
||||
],
|
||||
],
|
||||
|
||||
'translations' => [
|
||||
'filters' => [
|
||||
'stale' => 'Traducción desactualizada',
|
||||
],
|
||||
],
|
||||
|
||||
'views' => [
|
||||
'column' => 'Visitas',
|
||||
'column_hint' => 'Lecturas de los últimos 30 días, sumando todos los idiomas. Vacío mientras el frontend no las reporte.',
|
||||
'in_days' => 'en :days días',
|
||||
'filters' => [
|
||||
'unread' => 'Publicado y sin visitas',
|
||||
],
|
||||
],
|
||||
|
||||
'reviews' => [
|
||||
'title' => 'Revisión',
|
||||
'column' => 'Revisión',
|
||||
'waiting' => 'Esperando',
|
||||
'waiting_for_you' => 'Esperan tu revisión',
|
||||
'waiting_for_you_hint' => 'Alguien terminó algo y no puede publicarlo.',
|
||||
'anyone' => 'Cualquiera que pueda publicar',
|
||||
'requested' => 'Pedida la revisión. Avisamos a quien puede publicarlo.',
|
||||
'requested_count' => '{0}No había nada que pedir: ya estaba en revisión o publicado.|{1}Pedida la revisión de 1 ficha.|[2,*]Pedida la revisión de :count fichas.',
|
||||
'returned' => 'Devuelto a quien lo escribió, con tu motivo.',
|
||||
'fields' => [
|
||||
'reviewer' => 'Se lo pides a',
|
||||
'reviewer_hint' => 'Déjalo vacío y lo verá todo el que pueda publicar esto.',
|
||||
'note' => 'Nota',
|
||||
'note_hint' => 'Opcional. Lo que quien revise necesita saber antes de mirarlo.',
|
||||
'reason' => 'Qué hay que cambiar',
|
||||
'reason_hint' => 'Obligatorio: devolver algo sin decir por qué es lo que hace que nadie use la revisión.',
|
||||
'event' => 'Qué pasó',
|
||||
'who' => 'Quién',
|
||||
'when' => 'Cuándo',
|
||||
],
|
||||
'filters' => [
|
||||
'mine' => 'Esperando mi revisión',
|
||||
],
|
||||
'actions' => [
|
||||
'request' => 'Pedir revisión',
|
||||
'request_bulk' => 'Pedir revisión (selección)',
|
||||
'request_heading' => 'Decir que esto ya está',
|
||||
'request_hint' => 'Tú no puedes publicarlo, así que esto avisa a quien sí puede.',
|
||||
'return' => 'Devolver',
|
||||
'return_heading' => 'Devolverlo a quien lo escribió',
|
||||
'comment' => 'Comentar',
|
||||
'open' => 'Abrir',
|
||||
],
|
||||
'notification' => [
|
||||
'title' => ':name pide que revises algo',
|
||||
'returned' => ':name te ha devuelto algo',
|
||||
],
|
||||
'empty' => [
|
||||
'heading' => 'Nada que comentar todavía',
|
||||
'description' => 'Aquí queda lo que se pidió, lo que se devolvió y por qué. Es lo que el historial de cambios no puede guardar.',
|
||||
],
|
||||
],
|
||||
|
||||
'missing_urls' => [
|
||||
'label' => 'URL no encontrada',
|
||||
'plural' => 'URLs no encontradas',
|
||||
'linked_from_us' => 'Enlazada desde nuestra propia web',
|
||||
'no_referrer' => 'Sin procedencia',
|
||||
'fields' => [
|
||||
'path' => 'Dirección',
|
||||
'hits' => 'Visitas',
|
||||
'locale' => 'Idioma',
|
||||
'status' => 'Estado',
|
||||
'referrer' => 'Venían de',
|
||||
'last_seen' => 'Última vez',
|
||||
],
|
||||
'filters' => [
|
||||
'internal' => 'Enlazadas desde nuestra web',
|
||||
'repeated' => 'Más de una visita',
|
||||
],
|
||||
'actions' => [
|
||||
'redirect' => 'Crear redirección',
|
||||
'redirect_heading' => 'Mandar esta dirección a otro sitio',
|
||||
'redirect_hint' => 'La dirección que falla ya está puesta. Solo hace falta decir a dónde debería llevar.',
|
||||
'redirected' => 'Redirección creada. Esta dirección deja de dar 404.',
|
||||
'locale_hint' => 'Viene del idioma en que se pidió. Vacío para que valga en todos.',
|
||||
'ignore' => 'Ignorar',
|
||||
'unignore' => 'Dejar de ignorar',
|
||||
],
|
||||
'empty' => [
|
||||
'heading' => 'Nadie se ha topado con un 404',
|
||||
'description' => 'Aquí aparecen las direcciones que la web no supo resolver, para poder redirigirlas. Las reporta el frontend, así que hace falta configurar SITE_INGEST_TOKEN.',
|
||||
],
|
||||
],
|
||||
|
||||
'settings' => [
|
||||
'label' => 'Configuración',
|
||||
'plural' => 'Configuraciones',
|
||||
'sections' => [
|
||||
'general' => 'General',
|
||||
],
|
||||
'fields' => [
|
||||
'key' => 'Clave',
|
||||
'value' => 'Valor',
|
||||
'value_hint' => 'El valor tal cual, en JSON. Si no es JSON válido no se guarda.',
|
||||
],
|
||||
'actions' => [
|
||||
'add_setting' => 'Agregar configuración',
|
||||
'delete_setting' => 'Eliminar configuración',
|
||||
],
|
||||
],
|
||||
|
||||
'issues' => [
|
||||
'label' => 'Tarea',
|
||||
'plural' => 'Tareas',
|
||||
'sections' => [
|
||||
'details' => 'Detalles',
|
||||
'classification' => 'Clasificación',
|
||||
'metadata' => 'Metadatos',
|
||||
],
|
||||
'fields' => [
|
||||
'number' => 'Número',
|
||||
'title' => 'Título',
|
||||
'repository' => 'Repositorio',
|
||||
'author' => 'Autor',
|
||||
'assignee' => 'Asignado a',
|
||||
'assignee_hint' => 'Usuario de GitHub o vacío para marcar sin asignar',
|
||||
'url' => 'URL',
|
||||
'is_good_first_issue' => 'Tarea para empezar',
|
||||
'is_good_first_issue_hint' => 'Recomendada para nuevos colaboradores del proyecto',
|
||||
'is_help_wanted' => 'Ayuda buscada',
|
||||
'is_help_wanted_hint' => 'Abierta a contribuciones de la comunidad',
|
||||
'comments' => 'Comentarios',
|
||||
'issue_created_at' => 'Creada',
|
||||
'issue_updated_at' => 'Actualizada',
|
||||
'labels' => 'Etiquetas',
|
||||
'unassigned' => 'Sin asignar',
|
||||
],
|
||||
'filters' => [
|
||||
'repository' => 'Repositorio',
|
||||
'good_first_issue' => 'Tareas para empezar',
|
||||
'help_wanted' => 'Ayuda buscada',
|
||||
'unclaimed' => 'Sin asignar',
|
||||
'claimed' => 'Asignadas',
|
||||
],
|
||||
],
|
||||
];
|
||||
11
lang/es/passwords.php
Normal file
11
lang/es/passwords.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'reset' => 'Su contraseña ha sido restablecida.',
|
||||
'sent' => 'Le hemos enviado por correo electrónico el enlace para restablecer su contraseña.',
|
||||
'throttled' => 'Por favor espere antes de intentar de nuevo.',
|
||||
'token' => 'El token de restablecimiento de contraseña es inválido.',
|
||||
'user' => 'No encontramos ningún usuario con ese correo electrónico.',
|
||||
];
|
||||
27
lang/es/pireon.php
Normal file
27
lang/es/pireon.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'sign_in' => 'Entrar',
|
||||
'sign_in_intro' => 'Accede con tu email y tu contraseña.',
|
||||
'signing_in' => 'Comprobando tus credenciales…',
|
||||
'password_grant_disabled' => 'El acceso con contraseña está desactivado en esta instalación. Avisa a un administrador.',
|
||||
'server_unavailable' => 'El servidor de identidad no está respondiendo. No es cosa de tus credenciales; avisa a un administrador.',
|
||||
'sign_out' => 'Cerrar sesión',
|
||||
|
||||
'denied' => 'No se completó el acceso: :reason',
|
||||
'inactive' => 'Tu cuenta está desactivada. Contacta con un administrador.',
|
||||
'pending_approval' => 'Tu registro todavía está pendiente de aprobación por un administrador.',
|
||||
'no_permission' => 'Tu cuenta no tiene permiso para acceder a este panel. Pídele a un administrador que te asigne un rol.',
|
||||
'cannot_grant_super_admin' => 'Solo un super administrador puede conceder el rol de super administrador.',
|
||||
|
||||
'not_configured_title' => 'El cliente OAuth no está configurado',
|
||||
'not_configured_body' => 'Registra esta aplicación en :server y rellena PIREON_CLIENT_ID y PIREON_CLIENT_SECRET en el fichero .env.',
|
||||
|
||||
'account' => [
|
||||
'remote_roles' => 'Roles en el servidor de identidad',
|
||||
'remote_roles_hint' => 'Informativos: los permisos de esta aplicación se gestionan aquí, no en el servidor OAuth.',
|
||||
'managed_remotely' => 'Este campo se gestiona en :server y se actualiza en cada inicio de sesión.',
|
||||
],
|
||||
];
|
||||
31
lang/es/rules.php
Normal file
31
lang/es/rules.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'translatable' => [
|
||||
'type' => 'El campo :attribute debe ser un texto o un objeto de traducciones (idioma => texto).',
|
||||
'unsupported_locale' => 'El idioma «:locale» no está soportado en :attribute. Idiomas disponibles: :supported.',
|
||||
'max' => 'La traducción de :attribute en «:locale» no puede superar los :max caracteres.',
|
||||
'default_required' => 'Falta la traducción de :attribute en el idioma principal («:locale»).',
|
||||
],
|
||||
|
||||
'slug' => [
|
||||
'unique' => 'El slug «:slug» ya está en uso en el idioma «:locale».',
|
||||
],
|
||||
|
||||
'applications' => [
|
||||
'attributes' => [
|
||||
'name' => 'nombre',
|
||||
'email' => 'email',
|
||||
'message' => 'mensaje',
|
||||
'organisation' => 'entidad',
|
||||
'hours_per_week' => 'horas por semana',
|
||||
'consent' => 'consentimiento',
|
||||
],
|
||||
],
|
||||
|
||||
'pages' => [
|
||||
'cannot_publish' => 'No tienes permiso para publicar páginas.',
|
||||
],
|
||||
];
|
||||
20
lang/es/site.php
Normal file
20
lang/es/site.php
Normal 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 reporte de URLs no encontradas está desactivado en este servidor.',
|
||||
'forbidden' => 'Token de ingesta no válido.',
|
||||
],
|
||||
|
||||
'applications' => [
|
||||
'received' => 'Hemos recibido tu mensaje. Te contestamos en cuanto podamos.',
|
||||
'closed' => 'Ahora mismo no estamos aceptando mensajes. Vuelve a intentarlo en un rato.',
|
||||
],
|
||||
];
|
||||
290
lang/es/validation.php
Normal file
290
lang/es/validation.php
Normal file
@@ -0,0 +1,290 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'accepted' => 'El campo :attribute debe ser aceptado.',
|
||||
'accepted_if' => 'El campo :attribute debe ser aceptado cuando :other sea :value.',
|
||||
'active_url' => 'El campo :attribute debe ser una URL válida.',
|
||||
'after' => 'El campo :attribute debe ser una fecha posterior a :date.',
|
||||
'after_or_equal' => 'El campo :attribute debe ser una fecha posterior o igual a :date.',
|
||||
'alpha' => 'El campo :attribute sólo debe contener letras.',
|
||||
'alpha_dash' => 'El campo :attribute sólo debe contener letras, números, guiones y guiones bajos.',
|
||||
'alpha_num' => 'El campo :attribute sólo debe contener letras y números.',
|
||||
'any_of' => 'El campo :attribute no es válido.',
|
||||
'array' => 'El campo :attribute debe ser un conjunto.',
|
||||
'array_keys' => 'El campo :attribute solo debe contener las siguientes claves: :values.',
|
||||
'ascii' => 'El campo :attribute solo debe contener caracteres alfanuméricos y símbolos de un solo byte.',
|
||||
'base64' => 'El campo :attribute debe ser una cadena Base64 válida.',
|
||||
'before' => 'El campo :attribute debe ser una fecha anterior a :date.',
|
||||
'before_or_equal' => 'El campo :attribute debe ser una fecha anterior o igual a :date.',
|
||||
'between' => [
|
||||
'array' => 'El campo :attribute tiene que tener entre :min - :max elementos.',
|
||||
'file' => 'El campo :attribute debe pesar entre :min - :max kilobytes.',
|
||||
'numeric' => 'El campo :attribute tiene que estar entre :min - :max.',
|
||||
'string' => 'El campo :attribute tiene que tener entre :min - :max caracteres.',
|
||||
],
|
||||
'boolean' => 'El campo :attribute debe tener un valor verdadero o falso.',
|
||||
'can' => 'El campo :attribute contiene un valor no autorizado.',
|
||||
'confirmed' => 'La confirmación de :attribute no coincide.',
|
||||
'contains' => 'Al campo :attribute le falta un valor obligatorio.',
|
||||
'current_password' => 'La contraseña es incorrecta.',
|
||||
'date' => 'El campo :attribute debe ser una fecha válida.',
|
||||
'date_equals' => 'El campo :attribute debe ser una fecha igual a :date.',
|
||||
'date_format' => 'El campo :attribute debe coincidir con el formato :format.',
|
||||
'decimal' => 'El campo :attribute debe tener :decimal cifras decimales.',
|
||||
'declined' => 'El campo :attribute debe ser rechazado.',
|
||||
'declined_if' => 'El campo :attribute debe ser rechazado cuando :other sea :value.',
|
||||
'different' => 'El campo :attribute y :other deben ser diferentes.',
|
||||
'digits' => 'El campo :attribute debe tener :digits dígitos.',
|
||||
'digits_between' => 'El campo :attribute debe tener entre :min y :max dígitos.',
|
||||
'dimensions' => 'El campo :attribute tiene dimensiones de imagen no válidas.',
|
||||
'distinct' => 'El campo :attribute contiene un valor duplicado.',
|
||||
'doesnt_contain' => 'El campo :attribute no debe contener ninguno de los siguientes valores: :values.',
|
||||
'doesnt_end_with' => 'El campo :attribute no debe finalizar con uno de los siguientes: :values.',
|
||||
'doesnt_start_with' => 'El campo :attribute no debe comenzar con uno de los siguientes: :values.',
|
||||
'email' => 'El campo :attribute no es un correo válido.',
|
||||
'encoding' => 'El campo :attribute debe estar codificado en :encoding.',
|
||||
'ends_with' => 'El campo :attribute debe finalizar con uno de los siguientes valores: :values',
|
||||
'enum' => 'El campo :attribute no está en la lista de valores permitidos.',
|
||||
'exists' => 'El campo :attribute no existe.',
|
||||
'extensions' => 'El campo :attribute debe tener una de las siguientes extensiones: :values.',
|
||||
'file' => 'El campo :attribute debe ser un archivo.',
|
||||
'filled' => 'El campo :attribute es obligatorio.',
|
||||
'gt' => [
|
||||
'array' => 'El campo :attribute debe tener más de :value elementos.',
|
||||
'file' => 'El campo :attribute debe tener más de :value kilobytes.',
|
||||
'numeric' => 'El campo :attribute debe ser mayor que :value.',
|
||||
'string' => 'El campo :attribute debe tener más de :value caracteres.',
|
||||
],
|
||||
'gte' => [
|
||||
'array' => 'El campo :attribute debe tener como mínimo :value elementos.',
|
||||
'file' => 'El campo :attribute debe tener como mínimo :value kilobytes.',
|
||||
'numeric' => 'El campo :attribute debe ser como mínimo :value.',
|
||||
'string' => 'El campo :attribute debe tener como mínimo :value caracteres.',
|
||||
],
|
||||
'hex_color' => 'El campo :attribute debe tener un color hexadecimal válido.',
|
||||
'image' => 'El campo :attribute debe ser una imagen.',
|
||||
'in' => 'El campo :attribute no está en la lista de valores permitidos.',
|
||||
'in_array' => 'El campo :attribute debe existir en :other.',
|
||||
'in_array_keys' => 'El campo :attribute debe contener al menos una de las siguientes claves: :values.',
|
||||
'integer' => 'El campo :attribute debe ser un número entero.',
|
||||
'ip' => 'El campo :attribute debe ser una dirección IP válida.',
|
||||
'ipv4' => 'El campo :attribute debe ser una dirección IPv4 válida.',
|
||||
'ipv6' => 'El campo :attribute debe ser una dirección IPv6 válida.',
|
||||
'json' => 'El campo :attribute debe ser una cadena JSON válida.',
|
||||
'list' => 'El campo :attribute debe ser una lista.',
|
||||
'lowercase' => 'El campo :attribute debe estar en minúscula.',
|
||||
'lt' => [
|
||||
'array' => 'El campo :attribute debe tener menos de :value elementos.',
|
||||
'file' => 'El campo :attribute debe tener menos de :value kilobytes.',
|
||||
'numeric' => 'El campo :attribute debe ser menor que :value.',
|
||||
'string' => 'El campo :attribute debe tener menos de :value caracteres.',
|
||||
],
|
||||
'lte' => [
|
||||
'array' => 'El campo :attribute debe tener como máximo :value elementos.',
|
||||
'file' => 'El campo :attribute debe tener como máximo :value kilobytes.',
|
||||
'numeric' => 'El campo :attribute debe ser como máximo :value.',
|
||||
'string' => 'El campo :attribute debe tener como máximo :value caracteres.',
|
||||
],
|
||||
'mac_address' => 'El campo :attribute debe ser una dirección MAC válida.',
|
||||
'max' => [
|
||||
'array' => 'El campo :attribute no debe tener más de :max elementos.',
|
||||
'file' => 'El campo :attribute no debe ser mayor que :max kilobytes.',
|
||||
'numeric' => 'El campo :attribute no debe ser mayor que :max.',
|
||||
'string' => 'El campo :attribute no debe ser mayor que :max caracteres.',
|
||||
],
|
||||
'max_digits' => 'El campo :attribute no debe tener más de :max dígitos.',
|
||||
'mimes' => 'El campo :attribute debe ser un archivo con formato: :values.',
|
||||
'mimetypes' => 'El campo :attribute debe ser un archivo con formato: :values.',
|
||||
'min' => [
|
||||
'array' => 'El campo :attribute debe tener al menos :min elementos.',
|
||||
'file' => 'El tamaño de :attribute debe ser de al menos :min kilobytes.',
|
||||
'numeric' => 'El tamaño de :attribute debe ser de al menos :min.',
|
||||
'string' => 'El campo :attribute debe contener al menos :min caracteres.',
|
||||
],
|
||||
'min_digits' => 'El campo :attribute debe tener al menos :min dígitos.',
|
||||
'missing' => 'El campo :attribute no debe estar presente.',
|
||||
'missing_if' => 'El campo :attribute no debe estar presente cuando :other sea :value.',
|
||||
'missing_unless' => 'El campo :attribute no debe estar presente a menos que :other sea :value.',
|
||||
'missing_with' => 'El campo :attribute no debe estar presente si alguno de los campos :values está presente.',
|
||||
'missing_with_all' => 'El campo :attribute no debe estar presente cuando los campos :values estén presentes.',
|
||||
'multiple_of' => 'El campo :attribute debe ser múltiplo de :value',
|
||||
'not_in' => 'El campo :attribute no debe estar en la lista.',
|
||||
'not_regex' => 'El formato del campo :attribute no es válido.',
|
||||
'numeric' => 'El campo :attribute debe ser numérico.',
|
||||
'password' => [
|
||||
'letters' => 'La :attribute debe contener al menos una letra.',
|
||||
'mixed' => 'La :attribute debe contener al menos una letra mayúscula y una minúscula.',
|
||||
'numbers' => 'La :attribute debe contener al menos un número.',
|
||||
'symbols' => 'La :attribute debe contener al menos un símbolo.',
|
||||
'uncompromised' => 'La :attribute proporcionada se ha visto comprometida en una filtración de datos (data leak). Elija una :attribute diferente.',
|
||||
],
|
||||
'present' => 'El campo :attribute debe estar presente.',
|
||||
'present_if' => 'El campo :attribute debe estar presente cuando :other es :value.',
|
||||
'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.',
|
||||
'present_with' => 'El campo :attribute debe estar presente cuando :values esté presente.',
|
||||
'present_with_all' => 'El campo :attribute debe estar presente cuando :values estén presentes.',
|
||||
'prohibited' => 'El campo :attribute está prohibido.',
|
||||
'prohibited_if' => 'El campo :attribute está prohibido cuando :other es :value.',
|
||||
'prohibited_if_accepted' => 'El campo :attribute está prohibido cuando se acepta :other.',
|
||||
'prohibited_if_declined' => 'El campo :attribute está prohibido cuando se rechaza :other.',
|
||||
'prohibited_unless' => 'El campo :attribute está prohibido a menos que :other sea :values.',
|
||||
'prohibits' => 'El campo :attribute prohibe que :other esté presente.',
|
||||
'regex' => 'El formato del campo :attribute no es válido.',
|
||||
'required' => 'El campo :attribute es obligatorio.',
|
||||
'required_array_keys' => 'El campo :attribute debe contener entradas para: :values.',
|
||||
'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.',
|
||||
'required_if_accepted' => 'El campo :attribute es obligatorio si :other es aceptado.',
|
||||
'required_if_declined' => 'El campo :attribute es obligatorio si :other es rechazado.',
|
||||
'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.',
|
||||
'required_with' => 'El campo :attribute es obligatorio cuando :values está presente.',
|
||||
'required_with_all' => 'El campo :attribute es obligatorio cuando :values están presentes.',
|
||||
'required_without' => 'El campo :attribute es obligatorio cuando :values no está presente.',
|
||||
'required_without_all' => 'El campo :attribute es obligatorio cuando ninguno de :values está presente.',
|
||||
'same' => 'Los campos :attribute y :other deben coincidir.',
|
||||
'size' => [
|
||||
'array' => 'El campo :attribute debe contener :size elementos.',
|
||||
'file' => 'El tamaño de :attribute debe ser :size kilobytes.',
|
||||
'numeric' => 'El tamaño de :attribute debe ser :size.',
|
||||
'string' => 'El campo :attribute debe contener :size caracteres.',
|
||||
],
|
||||
'starts_with' => 'El campo :attribute debe comenzar con uno de los siguientes valores: :values',
|
||||
'string' => 'El campo :attribute debe ser una cadena de caracteres.',
|
||||
'timezone' => 'El campo :attribute debe ser una zona horaria válida.',
|
||||
'ulid' => 'El campo :attribute debe ser un ULID válido.',
|
||||
'unique' => 'El campo :attribute ya ha sido registrado.',
|
||||
'uploaded' => 'Subir :attribute ha fallado.',
|
||||
'uppercase' => 'El campo :attribute debe estar en mayúscula.',
|
||||
'url' => 'El campo :attribute debe ser una URL válida.',
|
||||
'uuid' => 'El campo :attribute debe ser un UUID válido.',
|
||||
'attributes' => [
|
||||
'address' => 'dirección',
|
||||
'affiliate_url' => 'URL de afiliado',
|
||||
'age' => 'edad',
|
||||
'amount' => 'cantidad',
|
||||
'announcement' => 'anuncio',
|
||||
'area' => 'área',
|
||||
'audience_prize' => 'premio del público',
|
||||
'audience_winner' => 'ganador del público',
|
||||
'available' => 'disponible',
|
||||
'birthday' => 'cumpleaños',
|
||||
'body' => 'contenido',
|
||||
'city' => 'ciudad',
|
||||
'color' => 'color',
|
||||
'company' => 'compañía',
|
||||
'compilation' => 'compilación',
|
||||
'concept' => 'concepto',
|
||||
'conditions' => 'condiciones',
|
||||
'content' => 'contenido',
|
||||
'contest' => 'concurso',
|
||||
'country' => 'país',
|
||||
'cover' => 'portada',
|
||||
'created_at' => 'creado el',
|
||||
'creator' => 'creador',
|
||||
'currency' => 'moneda',
|
||||
'current_password' => 'contraseña actual',
|
||||
'customer' => 'cliente',
|
||||
'date' => 'fecha',
|
||||
'date_of_birth' => 'fecha de nacimiento',
|
||||
'dates' => 'fechas',
|
||||
'day' => 'día',
|
||||
'deleted_at' => 'eliminado el',
|
||||
'description' => 'descripción',
|
||||
'display_type' => 'tipo de visualización',
|
||||
'district' => 'distrito',
|
||||
'duration' => 'duración',
|
||||
'email' => 'correo electrónico',
|
||||
'excerpt' => 'extracto',
|
||||
'filter' => 'filtro',
|
||||
'finished_at' => 'terminado el',
|
||||
'first_name' => 'nombre',
|
||||
'gender' => 'género',
|
||||
'grand_prize' => 'gran Premio',
|
||||
'group' => 'grupo',
|
||||
'hour' => 'hora',
|
||||
'image' => 'imagen',
|
||||
'image_desktop' => 'imagen de escritorio',
|
||||
'image_main' => 'imagen principal',
|
||||
'image_mobile' => 'imagen móvil',
|
||||
'images' => 'imágenes',
|
||||
'is_audience_winner' => 'es ganador de audiencia',
|
||||
'is_hidden' => 'está oculto',
|
||||
'is_subscribed' => 'está suscrito',
|
||||
'is_visible' => 'es visible',
|
||||
'is_winner' => 'es ganador',
|
||||
'items' => 'elementos',
|
||||
'key' => 'clave',
|
||||
'last_name' => 'apellidos',
|
||||
'lesson' => 'lección',
|
||||
'line_address_1' => 'línea de dirección 1',
|
||||
'line_address_2' => 'línea de dirección 2',
|
||||
'login' => 'acceso',
|
||||
'message' => 'mensaje',
|
||||
'middle_name' => 'segundo nombre',
|
||||
'minute' => 'minuto',
|
||||
'mobile' => 'móvil',
|
||||
'month' => 'mes',
|
||||
'name' => 'nombre',
|
||||
'national_code' => 'código nacional',
|
||||
'number' => 'número',
|
||||
'password' => 'contraseña',
|
||||
'password_confirmation' => 'confirmación de la contraseña',
|
||||
'phone' => 'teléfono',
|
||||
'photo' => 'foto',
|
||||
'portfolio' => 'portafolio',
|
||||
'postal_code' => 'código postal',
|
||||
'preview' => 'vista preliminar',
|
||||
'price' => 'precio',
|
||||
'product_id' => 'ID del producto',
|
||||
'product_uid' => 'UID del producto',
|
||||
'product_uuid' => 'UUID del producto',
|
||||
'promo_code' => 'código promocional',
|
||||
'province' => 'provincia',
|
||||
'quantity' => 'cantidad',
|
||||
'reason' => 'razón',
|
||||
'recaptcha_response_field' => 'respuesta del recaptcha',
|
||||
'referee' => 'árbitro',
|
||||
'referees' => 'árbitros',
|
||||
'region' => 'región',
|
||||
'reject_reason' => 'motivo de rechazo',
|
||||
'remember' => 'recordar',
|
||||
'restored_at' => 'restaurado el',
|
||||
'result_text_under_image' => 'texto bajo la imagen',
|
||||
'role' => 'rol',
|
||||
'rule' => 'regla',
|
||||
'rules' => 'reglas',
|
||||
'second' => 'segundo',
|
||||
'sex' => 'sexo',
|
||||
'shipment' => 'envío',
|
||||
'short_text' => 'texto corto',
|
||||
'size' => 'tamaño',
|
||||
'skills' => 'habilidades',
|
||||
'slug' => 'slug',
|
||||
'specialization' => 'especialización',
|
||||
'started_at' => 'comenzado el',
|
||||
'state' => 'estado',
|
||||
'status' => 'estado',
|
||||
'street' => 'calle',
|
||||
'student' => 'estudiante',
|
||||
'subject' => 'asunto',
|
||||
'tag' => 'etiqueta',
|
||||
'tags' => 'etiquetas',
|
||||
'teacher' => 'profesor',
|
||||
'terms' => 'términos',
|
||||
'test_description' => 'descripción de prueba',
|
||||
'test_locale' => 'idioma de prueba',
|
||||
'test_name' => 'nombre de prueba',
|
||||
'text' => 'texto',
|
||||
'time' => 'hora',
|
||||
'title' => 'título',
|
||||
'type' => 'tipo',
|
||||
'updated_at' => 'actualizado el',
|
||||
'user' => 'usuario',
|
||||
'username' => 'usuario',
|
||||
'value' => 'valor',
|
||||
'winner' => 'ganador',
|
||||
'work' => 'trabajo',
|
||||
'year' => 'año',
|
||||
],
|
||||
];
|
||||
Reference in New Issue
Block a user