17396466a9
CI / build-and-test (pull_request) Successful in 1m13s
Adds a /gridstack route demonstrating GridStackLayout: four default widgets (line/bar/pie chart cards plus a usage hint), buttons to add and remove widgets at runtime, a reset-layout button and a layout-change status line. Layout is persisted per browser via the existing localStorage support. The view gets its own SideNavItem in MainLayout and full de/en/es translations. Fixes an infinite recursion in GridStackLayout.add(Component): a single-argument add(item) resolves to that overload rather than the varargs one, so its delegation to add(item) called itself. It now appends through the element API and passes a GridStackItem through unwrapped. Adds the first test sources (browserless UI tests) covering the view's widget count and the add/remove buttons. Closes #7 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PYAcKoXKPN3rJ7nBroKZkc
111 lines
2.8 KiB
Properties
111 lines
2.8 KiB
Properties
# Spanish
|
||
|
||
app.title=Chart App
|
||
action.themeToggle=Cambiar esquema de color
|
||
action.language=Cambiar idioma
|
||
lang.de=Deutsch
|
||
lang.en=English
|
||
lang.es=Español
|
||
|
||
nav.dashboard=Panel
|
||
nav.form=Formulario
|
||
nav.table=Tabla
|
||
nav.gridstack=Cuadrícula
|
||
|
||
page.dashboard=Panel
|
||
page.form=Formulario
|
||
page.table=Tabla
|
||
page.gridstack=Diseño de cuadrícula
|
||
|
||
card.revenueTrend=Evolución de ingresos
|
||
card.revenueByMonth=Ingresos por mes
|
||
card.revenueByRegion=Ingresos por región
|
||
card.registration=Registro
|
||
card.employees=Empleados
|
||
card.gridstackHint=Cómo funciona
|
||
|
||
gridstack.hint=Arrastra las tarjetas por su título para moverlas y cambia su tamaño desde la esquina inferior derecha. El diseño se guarda en el navegador y se restaura en la próxima visita.
|
||
gridstack.addWidget=Añadir widget
|
||
gridstack.removeWidget=Quitar el último
|
||
gridstack.reset=Restablecer diseño
|
||
gridstack.status=Diseño modificado – {0} widgets
|
||
gridstack.statusInitial=Diseño sin cambios
|
||
gridstack.widget=Widget {0}
|
||
gridstack.widgetText=Tarjeta de colocación libre.
|
||
|
||
chart.revenueSeries=Ingresos 2026
|
||
chart.pointClick=Serie {0}, punto {1}
|
||
chart.sliceClick=Sector {0}
|
||
|
||
month.jan=Ene
|
||
month.feb=Feb
|
||
month.mar=Mar
|
||
month.apr=Abr
|
||
month.may=May
|
||
month.jun=Jun
|
||
|
||
region.north=Norte
|
||
region.south=Sur
|
||
region.east=Este
|
||
region.west=Oeste
|
||
|
||
form.firstName=Nombre
|
||
form.lastName=Apellido
|
||
form.email=Correo electrónico
|
||
form.password=Contraseña
|
||
form.age=Edad
|
||
form.salary=Salario (€)
|
||
form.birthdate=Fecha de nacimiento
|
||
form.time=Hora preferida
|
||
form.country=País
|
||
form.department=Departamento
|
||
form.interests=Intereses
|
||
form.salutation=Tratamiento
|
||
form.newsletter=Suscribirse al boletín
|
||
form.remark=Observación
|
||
form.save=Guardar
|
||
form.reset=Restablecer
|
||
form.today=Hoy
|
||
form.cancel=Cancelar
|
||
form.time.badInput=Hora inválida
|
||
form.time.required=La hora es obligatoria
|
||
form.time.min=La hora es anterior a la hora mínima permitida
|
||
form.time.max=La hora es posterior a la hora máxima permitida
|
||
|
||
country.de=Alemania
|
||
country.at=Austria
|
||
country.ch=Suiza
|
||
country.fr=Francia
|
||
country.nl=Países Bajos
|
||
|
||
dept.sales=Ventas
|
||
dept.marketing=Marketing
|
||
dept.dev=Desarrollo
|
||
dept.support=Soporte
|
||
dept.management=Dirección
|
||
|
||
interest.newsletter=Temas del boletín
|
||
interest.webinars=Seminarios web
|
||
interest.updates=Actualizaciones de producto
|
||
interest.events=Eventos
|
||
|
||
salutation.mrs=Sra.
|
||
salutation.mr=Sr.
|
||
salutation.diverse=Diverso
|
||
salutation.none=Sin especificar
|
||
|
||
valid.firstNameRequired=El nombre es obligatorio
|
||
valid.lastNameRequired=El apellido es obligatorio
|
||
valid.emailRequired=El correo electrónico es obligatorio
|
||
valid.emailInvalid=Dirección de correo no válida
|
||
valid.ageRange=La edad debe estar entre 0 y 120
|
||
|
||
notify.saved=Guardado: {0} {1}
|
||
notify.checkInput=Por favor revise los datos ingresados
|
||
|
||
table.search=Buscar…
|
||
col.name=Nombre
|
||
col.department=Departamento
|
||
col.city=Ciudad
|
||
col.salary=Salario (€)
|