feat(i18n): implement deep merging for locale chunks and enhance Cebuano translations
All checks were successful
Deploy to production / deploy (push) Successful in 2m48s

- Introduced a deep merge function to combine locale chunks, improving the handling of language data for Cebuano.
- Updated Cebuano locale files with comprehensive translations, including new sections for admin, social network, and settings.
- Enhanced existing translations for clarity and consistency across various components, ensuring a better user experience.
- Added new fields in the settings and profile sections to capture more user attributes, improving personalization options.
This commit is contained in:
Torsten Schulz (local)
2026-04-07 16:23:11 +02:00
parent e9f0f6c133
commit f715c6125d
17 changed files with 4380 additions and 1173 deletions

View File

@@ -37,6 +37,9 @@
},
"notifications": {
"notify_election_created": "Se ha convocado una nueva elección.",
"director_death": "{characterName} ha fallecido a la edad de {ageYears} años. Como empleador debes nombrar un nuevo director.{regionLabel}{spouses}{children}{lovers}",
"relationship_death": "{characterName} ha fallecido a la edad de {ageYears} años.{regionLabel}{spouses}{children}{lovers}",
"child_death": "Tu hijo/a {characterName} ha fallecido a la edad de {ageYears} años.{regionLabel}",
"production": {
"overproduction": "Sobreproducción: tu producción está un {value}% por encima de la demanda."
},
@@ -118,12 +121,22 @@
},
"overview": {
"title": "Falukant - Resumen",
"heroIntro": "Tu situación en economía, familia y patrimonio, de un vistazo.",
"heirSelection": {
"title": "Elección de heredero",
"description": "Tu personaje anterior ya no está disponible. Elige un heredero de la lista para seguir jugando.",
"loading": "Cargando posibles herederos…",
"noHeirs": "No hay herederos disponibles.",
"select": "Elegir como personaje",
"error": "Error al elegir al heredero."
},
"metadata": {
"title": "Datos personales",
"name": "Nombre",
"money": "Patrimonio",
"age": "Edad",
"years": "años",
"days": "días",
"mainbranch": "Ciudad natal",
"nobleTitle": "Rango",
"certificate": "Certificado"
@@ -171,6 +184,16 @@
"two_of": "Al menos dos condiciones de estatus"
}
},
"summary": {
"certificateHint": "Determina qué categorías de producto puedes fabricar ahora.",
"branches": "Sucursales",
"branchesHint": "Acceso directo a tus principales ubicaciones.",
"productions": "Producciones activas",
"productionsHint": "Producciones en curso que pronto requieren conclusión o control.",
"stock": "Posiciones de almacén",
"stockHint": "Vista resumida del inventario en todas las regiones.",
"open": "Abrir"
},
"productions": {
"title": "Producciones"
},
@@ -196,6 +219,8 @@
"toddler": "niño pequeño",
"child": "niño",
"adolescence": "joven",
"teen": "jovencito",
"youngAdult": "joven adulto",
"adult": "hombre",
"mature": "señor",
"elder": "anciano"
@@ -205,6 +230,8 @@
"toddler": "niña pequeña",
"child": "niña",
"adolescence": "joven",
"teen": "jovencita",
"youngAdult": "joven adulta",
"adult": "mujer",
"mature": "señora",
"elder": "anciana"
@@ -256,6 +283,8 @@
},
"branch": {
"title": "Sucursal",
"heroEyebrow": "Sucursal",
"heroIntro": "Producción, almacén, venta y transporte en un panel ligado al mundo del juego.",
"debtorsPrison": {
"branchLocked": "En la prisión por deudas se bloquean los nuevos pasos económicos. Las sucursales cerradas o embargadas también se reflejarán aquí.",
"branchRisk": "Tu mora pone en peligro sucursales, vehículos y mercancías almacenadas.",
@@ -393,7 +422,10 @@
"current": "Producciones en curso",
"product": "Producto",
"remainingTime": "Tiempo restante (segundos)",
"noProductions": "No hay producciones en curso."
"noProductions": "No hay producciones en curso.",
"status": "Estado",
"sleep": "En pausa",
"active": "Activo"
},
"columns": {
"city": "Ciudad",
@@ -792,6 +824,23 @@
"time": "Hora",
"prev": "Anterior",
"next": "Siguiente",
"graph": {
"open": "Mostrar evolución",
"title": "Evolución del dinero",
"close": "Cerrar",
"loading": "Cargando historial…",
"noData": "No hay movimientos en el periodo seleccionado.",
"yesterday": "Ayer",
"range": {
"label": "Periodo",
"today": "Hoy",
"24h": "Últimas 24 horas",
"week": "Última semana",
"month": "Último mes",
"year": "Último año",
"all": "Todo el historial"
}
},
"activities": {
"Product sale": "Productos vendidos",
"Production cost": "Costes de producción",
@@ -882,7 +931,8 @@
"apathetic": "Apático",
"relieved": "Aliviado",
"proud": "Orgulloso",
"ashamed": "Avergonzado"
"ashamed": "Avergonzado",
"calm": "Tranquilo"
},
"character": {
"brave": "Valiente",
@@ -1027,7 +1077,34 @@
"reputation": {
"title": "Reputación",
"overview": {
"title": "Resumen"
"title": "Resumen",
"current": "Reputación actual"
},
"actions": {
"title": "Acciones de reputación",
"description": "Puedes realizar distintas acciones para mejorar tu reputación.",
"none": "No hay acciones de reputación disponibles.",
"action": "Acción",
"cost": "Coste",
"gain": "Ganancia",
"timesUsed": "Usado",
"execute": "Ejecutar",
"running": "En curso…",
"dailyLimit": "Límite diario: quedan {remaining} de {cap} acciones",
"cooldown": "Enfriamiento: aún {minutes} minutos",
"type": {
"soup_kitchen": "Comedor social",
"library_donation": "Donación a la biblioteca",
"scholarships": "Becas",
"church_hospice": "Hospicio eclesiástico",
"school_funding": "Financiación escolar",
"orphanage_build": "Construir orfanato",
"bridge_build": "Construir puente",
"hospital_donation": "Donación al hospital",
"patronage": "Mecenazgo",
"statue_build": "Erigir estatua",
"well_build": "Construir pozo"
}
},
"party": {
"title": "Fiestas",
@@ -1078,6 +1155,17 @@
},
"church": {
"title": "Iglesia",
"offices": {
"lay-preacher": "Predicador laico",
"village-priest": "Párroco del pueblo",
"parish-priest": "Párroco",
"dean": "Decano",
"archdeacon": "Arcediano",
"bishop": "Obispo",
"archbishop": "Arzobispo",
"cardinal": "Cardenal",
"pope": "Papa"
},
"tabs": {
"baptism": "Bautizos",
"current": "Cargos actuales",
@@ -1254,7 +1342,12 @@
"drunkOfLife": "Elixir de la vida",
"barber": "Barbero"
},
"choose": "Por favor, selecciona"
"choose": "Por favor, selecciona",
"errors": {
"tooClose": "No puedes aplicar medidas tan a menudo.",
"generic": "Se ha producido un error."
},
"nextMeasureAt": "Próxima medida a partir de"
},
"politics": {
"title": "Política",
@@ -1264,6 +1357,10 @@
"upcoming": "Cargos pendientes de (re)elección",
"elections": "Elecciones"
},
"bookmarkCandidate": "Recordar esta candidatura",
"voteError": "Error al emitir el voto",
"voteAllError": "Error al emitir los votos",
"applyError": "No se pudo enviar la candidatura.",
"benefits": {
"daily_salary": "Estipendio diario (una vez al día): {amount}",
"tax_exemption": "Exención fiscal: {regions}",
@@ -1326,9 +1423,13 @@
"region": "Región",
"date": "Fecha",
"candidacy": "Candidatura",
"candidacyWithAge": "Candidatura (desde 16 años)",
"none": "No hay cargos abiertos.",
"apply": "Presentarse a los cargos seleccionados"
"apply": "Presentarse a los cargos seleccionados",
"minAgeHint": "La candidatura solo es posible a partir de 16 años.",
"ageRequirement": "Para todos los cargos políticos: candidatura solo a partir de 16 años."
},
"too_young": "Tu personaje es demasiado joven. La candidatura solo es posible a partir de 16 años.",
"upcoming": {
"office": "Cargo",
"region": "Región",