From 6ff4efdc20c923e9aee52372f5a794e7be71f76f Mon Sep 17 00:00:00 2001
From: Kalle <38327916+Sendouc@users.noreply.github.com>
Date: Thu, 3 Nov 2022 22:10:24 +0200
Subject: [PATCH] Add American Spanish language
Closes #985
Just in-game names are different. Rest is copied from EU translation.
---
app/modules/i18n/config.ts | 8 +-
app/routes/contributions.tsx | 2 +-
public/locales/da/gear.json | 1 +
public/locales/{es => es-ES}/analyzer.json | 0
public/locales/{es => es-ES}/badges.json | 0
public/locales/{es => es-ES}/builds.json | 0
public/locales/{es => es-ES}/calendar.json | 0
public/locales/{es => es-ES}/common.json | 0
.../locales/{es => es-ES}/contributions.json | 0
public/locales/{es => es-ES}/faq.json | 0
public/locales/{es => es-ES}/front.json | 0
public/locales/{es => es-ES}/game-misc.json | 0
public/locales/{es => es-ES}/gear.json | 0
public/locales/{es => es-ES}/user.json | 0
public/locales/{es => es-ES}/weapons.json | 0
public/locales/es-US/analyzer.json | 94 +++++++
public/locales/es-US/badges.json | 9 +
public/locales/es-US/builds.json | 15 +
public/locales/es-US/calendar.json | 52 ++++
public/locales/es-US/common.json | 57 ++++
public/locales/es-US/contributions.json | 8 +
public/locales/es-US/faq.json | 10 +
public/locales/es-US/front.json | 12 +
public/locales/es-US/game-misc.json | 14 +
public/locales/es-US/gear.json | 258 ++++++++++++++++++
public/locales/es-US/user.json | 10 +
public/locales/es-US/weapons.json | 86 ++++++
scripts/create-analyzer-json.ts | 8 +-
scripts/create-gear-json.ts | 8 +-
scripts/create-misc-json.ts | 8 +-
scripts/utils.ts | 7 +
translation-progress.md | 169 +++++++++++-
32 files changed, 826 insertions(+), 10 deletions(-)
rename public/locales/{es => es-ES}/analyzer.json (100%)
rename public/locales/{es => es-ES}/badges.json (100%)
rename public/locales/{es => es-ES}/builds.json (100%)
rename public/locales/{es => es-ES}/calendar.json (100%)
rename public/locales/{es => es-ES}/common.json (100%)
rename public/locales/{es => es-ES}/contributions.json (100%)
rename public/locales/{es => es-ES}/faq.json (100%)
rename public/locales/{es => es-ES}/front.json (100%)
rename public/locales/{es => es-ES}/game-misc.json (100%)
rename public/locales/{es => es-ES}/gear.json (100%)
rename public/locales/{es => es-ES}/user.json (100%)
rename public/locales/{es => es-ES}/weapons.json (100%)
create mode 100644 public/locales/es-US/analyzer.json
create mode 100644 public/locales/es-US/badges.json
create mode 100644 public/locales/es-US/builds.json
create mode 100644 public/locales/es-US/calendar.json
create mode 100644 public/locales/es-US/common.json
create mode 100644 public/locales/es-US/contributions.json
create mode 100644 public/locales/es-US/faq.json
create mode 100644 public/locales/es-US/front.json
create mode 100644 public/locales/es-US/game-misc.json
create mode 100644 public/locales/es-US/gear.json
create mode 100644 public/locales/es-US/user.json
create mode 100644 public/locales/es-US/weapons.json
diff --git a/app/modules/i18n/config.ts b/app/modules/i18n/config.ts
index 828ddcc48..4b8e06fc1 100644
--- a/app/modules/i18n/config.ts
+++ b/app/modules/i18n/config.ts
@@ -14,8 +14,12 @@ export const languages = [
name: "English",
},
{
- code: "es",
- name: "Español",
+ code: "es-ES",
+ name: "Español Europeo",
+ },
+ {
+ code: "es-US",
+ name: "Español de América",
},
{
code: "fr",
diff --git a/app/routes/contributions.tsx b/app/routes/contributions.tsx
index d6e8228d3..e20d536c8 100644
--- a/app/routes/contributions.tsx
+++ b/app/routes/contributions.tsx
@@ -37,7 +37,7 @@ const TRANSLATORS: Array<{
},
{
translators: ["Hachi"],
- language: "es",
+ language: "es-ES",
},
{
translators: ["Charakiga"],
diff --git a/public/locales/da/gear.json b/public/locales/da/gear.json
index cdf6f0897..987b2d8e0 100644
--- a/public/locales/da/gear.json
+++ b/public/locales/da/gear.json
@@ -202,6 +202,7 @@
"C_10014": "Sudadera Celeste",
"H_21010": "Bream-Brim Cap",
"H_21011": "Lo-Vis Visor",
+ "H_21015": "Brain Strainer",
"H_25000": "Squid Hairclip",
"C_25000": "School Uniform A",
"S_25000": "School Shoes + Hi Socks",
diff --git a/public/locales/es/analyzer.json b/public/locales/es-ES/analyzer.json
similarity index 100%
rename from public/locales/es/analyzer.json
rename to public/locales/es-ES/analyzer.json
diff --git a/public/locales/es/badges.json b/public/locales/es-ES/badges.json
similarity index 100%
rename from public/locales/es/badges.json
rename to public/locales/es-ES/badges.json
diff --git a/public/locales/es/builds.json b/public/locales/es-ES/builds.json
similarity index 100%
rename from public/locales/es/builds.json
rename to public/locales/es-ES/builds.json
diff --git a/public/locales/es/calendar.json b/public/locales/es-ES/calendar.json
similarity index 100%
rename from public/locales/es/calendar.json
rename to public/locales/es-ES/calendar.json
diff --git a/public/locales/es/common.json b/public/locales/es-ES/common.json
similarity index 100%
rename from public/locales/es/common.json
rename to public/locales/es-ES/common.json
diff --git a/public/locales/es/contributions.json b/public/locales/es-ES/contributions.json
similarity index 100%
rename from public/locales/es/contributions.json
rename to public/locales/es-ES/contributions.json
diff --git a/public/locales/es/faq.json b/public/locales/es-ES/faq.json
similarity index 100%
rename from public/locales/es/faq.json
rename to public/locales/es-ES/faq.json
diff --git a/public/locales/es/front.json b/public/locales/es-ES/front.json
similarity index 100%
rename from public/locales/es/front.json
rename to public/locales/es-ES/front.json
diff --git a/public/locales/es/game-misc.json b/public/locales/es-ES/game-misc.json
similarity index 100%
rename from public/locales/es/game-misc.json
rename to public/locales/es-ES/game-misc.json
diff --git a/public/locales/es/gear.json b/public/locales/es-ES/gear.json
similarity index 100%
rename from public/locales/es/gear.json
rename to public/locales/es-ES/gear.json
diff --git a/public/locales/es/user.json b/public/locales/es-ES/user.json
similarity index 100%
rename from public/locales/es/user.json
rename to public/locales/es-ES/user.json
diff --git a/public/locales/es/weapons.json b/public/locales/es-ES/weapons.json
similarity index 100%
rename from public/locales/es/weapons.json
rename to public/locales/es-ES/weapons.json
diff --git a/public/locales/es-US/analyzer.json b/public/locales/es-US/analyzer.json
new file mode 100644
index 000000000..0c8febfc5
--- /dev/null
+++ b/public/locales/es-US/analyzer.json
@@ -0,0 +1,94 @@
+{
+ "attribute.weight": "Peso:",
+ "attribute.weight.Fast": "Ligero",
+ "attribute.weight.Slow": "Pesado",
+ "attribute.weight.Normal": "Normal",
+ "stat.category.main": "Arma principal",
+ "stat.category.sub": "Arma secundaria",
+ "stat.category.special": "Arma especial",
+ "stat.category.subDef": "Defensa contra arma secundaria",
+ "stat.category.actionsPerInkTank": "Acciones por tanque de tinta",
+ "stat.category.damage": "Daño",
+ "stat.category.movement": "Movilidad",
+ "stat.category.misc": "Misceláneos",
+ "stat.canopyHp": "Durabilidad del armazón",
+ "stat.fullChargeSeconds": "Tiempo de carga al máximo",
+ "stat.maxChargeHoldSeconds": "Tiempo máximo de retención de carga",
+ "stat.specialPoints": "Puntos para arma especial",
+ "stat.specialLost": "Especial perdido al ser reventado",
+ "stat.whiteInk": "Tiempo sin recuperar tinta después de uso",
+ "stat.squidFormInkRecoverySeconds": "Tiempo de recuperar completo el tanque de tinta (forma nadadora)",
+ "stat.quickRespawnTime": "Tiempo de regeneración rápida",
+ "stat.superJumpTimeGround": "Fotogramas vulnerables de supersalto",
+ "stat.superJumpTimeTotal": "Tiempo de supersalto (total)",
+ "stat.jumpShotSpread": "Dispersión de disparos en grados (saltando)",
+ "stat.groundShotSpread": "Dispersión de disparos en grados (parado)",
+ "stat.squidSurgeChargeFrames": "Tiempo de carga para saltar desde la tinta en fotogramas",
+ "stat.swimSpeed": "Velocidad de nado (unidades por fotograma)",
+ "stat.runSpeed": "Velocidad al correr (unidades por fotograma)",
+ "stat.runSpeedInEnemyInk": "Velocidad al correr sobre tinta rival",
+ "stat.framesBeforeTakingDamageInEnemyInk": "Fotogramas antes de daño de tinta rival",
+ "stat.damageTakenInEnemyInkPerSecond": "Daño de tinta rival por segundo",
+ "stat.enemyInkDamageLimit": "Daño máximo de tinta rival",
+ "stat.markedTime": "Tiempo de rastreo de {{weapon}}",
+ "stat.movementReduction": "Movilidad reducida por {{weapon}}",
+ "stat.damage": "Daño de {{weapon}}",
+ "stat.bombHdamage": "Daño de bomba fuerte",
+ "stat.bombLdamage": "Daño de bomba ligero",
+ "stat.consumption.NORMAL": "Disparos",
+ "stat.consumption.SWING": "Barridos",
+ "stat.consumption.SLOSH": "Lanzos de tinta",
+ "stat.consumption.VERTICAL_SWING": "Barrido vertical",
+ "stat.consumption.HORIZONTAL_SWING": "Barrido horizontal",
+ "stat.consumption.TAP_SHOT": "Disparos rapidos",
+ "stat.consumption.FULL_CHARGE": "Disparos de carga completa",
+ "stat.consumption.SPLATLING_CHARGE": "Carga completa",
+ "stat.consumption.SHIELD_LAUNCH": "Lanzamiento de armazón",
+ "stat.consumption.DUALIE_ROLL": "Rodar con la Clase Dual",
+ "stat.sub.velocity": "Velocidad (decide rango)",
+ "stat.sub.firstPhaseDuration": "Duración de fase de poder máximo",
+ "stat.sub.secondPhaseDuration": "Duración de fase media",
+ "stat.sub.markingTimeInSeconds": "Duración de marcado",
+ "stat.sub.markingRadius": "Radio de marcado",
+ "stat.sub.explosionRadius": "Radio de explosión",
+ "stat.sub.hp": "Durabilidad",
+ "stat.sub.qsjBoost": "Aumento de supersalto rapido",
+ "stat.special.duration": "Duración de {{weapon}}",
+ "stat.special.duration.inkStormExplanation": "Aumenta la distancia que derrama tinta pero no la cantidad de tinta.",
+ "stat.special.damageDistance": "Distancia de daño de {{weapon}}",
+ "stat.special.paintRadius": "Radio de pintar de {{weapon}}",
+ "stat.special.shieldHp": "Durabilidad de armadura de {{weapon}}",
+ "stat.special.deviceHp": "Durabilidad del dispositivo {{weapon}}",
+ "stat.special.inkConsumptionHook": "Consumo al engancharse con {{weapon}}",
+ "stat.special.inkConsumptionPerSecond": "Consumo de tinta de {{weapon}} por segundo",
+ "stat.special.reticleRadius": "Radio de retícula de {{weapon}}",
+ "stat.special.throwDistance": "Distancia para lanzar {{weapon}}",
+ "stat.special.autoChargeRate": "Velocidad de carga automatica de {{weapon}}",
+ "stat.special.maxRadius": "Radio máximo de ondas de {{weapon}}",
+ "stat.special.maxRadius.explanation": "La velocidad de la onda es igual a pesar del aumento del radio.",
+ "stat.special.radiusRange": "Radio del aspiro de {{weapon}}",
+ "stat.special.powerUpDuration": "Duración del effecto de {{weapon}}",
+ "damage.header.type": "Tipo",
+ "damage.header.damage": "Daño",
+ "damage.header.distance": "Distancia",
+ "damage.toSplat_other": "{{count}} golpes para reventar",
+ "damage.NORMAL_MIN": "Mínimo",
+ "damage.NORMAL_MAX": "Máximo",
+ "damage.DIRECT": "Directo",
+ "damage.FULL_CHARGE": "Disparo de carga completa",
+ "damage.MAX_CHARGE": "Carga parcial máxima",
+ "damage.TAP_SHOT": "Disparo rapido",
+ "damage.DISTANCE": "Daño de salpicadura",
+ "damage.SPLASH": "Daño de salpicadura",
+ "suffix.seconds": "s",
+ "suffix.hp": "hp",
+ "suffix.specialPointsShort": "p",
+ "base": "Base",
+ "value": "Valor",
+ "build": "Build",
+ "patch": "Parche:",
+ "abilityPoints": "Puntos de habilidad (AP)",
+ "abilityPoints.short": "AP",
+ "consumptionExplanation": "Este gráfico muestra la cantidad de acciones restantes con el arma principal después de usar un arma secundaria 0-{{maxSubsToUse}} veces. La cantidad máxima de armas secundarias consecutivas que se pueden usar con el tanque lleno es {{maxSubsToUse}}.",
+ "trackingSubDefExplanation": "Tiempos de rastreo de Rastreador, Mina de Tinta y Dardo Resaltador son calculados contra un oponente con 0AP de Resistencia Secundaria."
+}
diff --git a/public/locales/es-US/badges.json b/public/locales/es-US/badges.json
new file mode 100644
index 000000000..0cc424883
--- /dev/null
+++ b/public/locales/es-US/badges.json
@@ -0,0 +1,9 @@
+{
+ "patreon": "Supporter de sendou.ink en Patreon",
+ "patreon+": "Supporter+ de sendou.ink en Patreon",
+ "tournament_one": "Recibido por ganar {{tournament}}",
+ "tournament_other": "Recibido por ganar {{tournament}} (×{{count}})",
+ "forYourEvent": "¿Insignia para tu evento?",
+ "madeBy": "Insignia por <2>borzoic2>",
+ "managedBy": "Administrado por {{users}}"
+}
diff --git a/public/locales/es-US/builds.json b/public/locales/es-US/builds.json
new file mode 100644
index 000000000..4ab58c177
--- /dev/null
+++ b/public/locales/es-US/builds.json
@@ -0,0 +1,15 @@
+{
+ "addBuild": "Añadir build",
+ "noBuilds": "Aún no hay builds. ¡Agrega tu primer build!",
+ "buildCard.info": "Info",
+ "buildCard.edit": "Editar",
+
+ "forms.title": "Título",
+ "forms.modes": "Modos",
+ "forms.weapons": "Armas",
+ "forms.gear.HEAD": "Accesorios",
+ "forms.gear.CLOTHES": "Ropa",
+ "forms.gear.SHOES": "Calzado",
+
+ "deleteConfirm": "¿Borrar build '{{title}}'?"
+}
diff --git a/public/locales/es-US/calendar.json b/public/locales/es-US/calendar.json
new file mode 100644
index 000000000..796a101ff
--- /dev/null
+++ b/public/locales/es-US/calendar.json
@@ -0,0 +1,52 @@
+{
+ "inYourTimeZone": "Horas mostradas en tu zona local:",
+ "addNew": "Añadir nuevo",
+ "noEvents": "No hay eventos en la semana seleccionada",
+ "reportResults": "Puedes anunciar resultados:",
+ "day": "Día {{number}}",
+ "actions.reportWinners": "Anunciar ganadores",
+ "participatedCount": "{{count}} equipos participaron",
+ "members": "Miembros",
+ "results": "Resultados",
+
+ "forms.dates": "Fechas",
+ "forms.bracketUrl": "Enlace de cuadros",
+ "forms.discordInvite": "Enlace de invitación a Discord",
+ "forms.tags": "Etiquetas",
+ "forms.tags.placeholder": "Elegir etiquetas",
+ "forms.tags.info": "Etiqueta \"Premios de insignia\" se agrega automáticamente si corresponde.",
+ "forms.badges": "Premios de insignia",
+ "forms.badges.placeholder": "Elige un premio de insignia",
+
+ "forms.participantCount": "Participantes",
+ "forms.reportResultsHeader": "Anunciando resultados para {{eventName}}",
+ "forms.reportResultsInfo": "Tú decides cuántos resultados reportar. Puede ser solo el equipo ganador, los 3 primeros o lo que quieras.",
+ "forms.team.add": "Añadir equipo",
+ "forms.team.remove": "Remover equipo",
+ "forms.team.name": "Nombre de equipo",
+ "forms.team.placing": "Lugar",
+
+ "forms.team.player.header": "Jugador {{number}}",
+ "forms.team.player.add": "Añadir jugador",
+ "forms.team.player.remove": "Remover jugador",
+ "forms.team.player.addAsUser": "Añadir como usuario (recomendado)",
+ "forms.team.player.addAsText": "Añadir solo texto",
+
+ "forms.errors.uniqueTeamName": "Cada equipo requiere un nombre único.",
+ "forms.errors.duplicatePlayer": "No se puede tener el mismo jugador dos veces en el mismo equipo.",
+ "forms.errors.emptyTeam": "Cada equipo requiere por lo menos un jugador.",
+
+ "week.this": "Esta semana",
+ "week.next": "Próxima semana",
+ "week.last": "Semana pasada",
+
+ "tag.desc.BADGE": "Ganador de este evento recibe una insignia de sendou.ink.",
+ "tag.desc.SPECIAL": "Reglas que difieren del estándar, por ejemplo: limite de armas que se pueden usar.",
+ "tag.desc.ART": "Puedes ganar arte jugando este torneo.",
+ "tag.desc.MONEY": "Puedes ganar dinero jugando este torneo.",
+ "tag.desc.REGION": "Limite de jugadores en este evento según su ubicación.",
+ "tag.desc.LOW": "Quién puede jugar en este evento es limitado por habilidad.",
+ "tag.desc.COUNT": "Hay un limite de equipos que pueden registrarse.",
+ "tag.desc.LAN": "Este evento se juega en un área local.",
+ "tag.desc.QUALIFIER": "Este torneo es clasificatorio para otro evento."
+}
diff --git a/public/locales/es-US/common.json b/public/locales/es-US/common.json
new file mode 100644
index 000000000..059bff964
--- /dev/null
+++ b/public/locales/es-US/common.json
@@ -0,0 +1,57 @@
+{
+ "pages.admin": "Administración",
+ "pages.badges": "Insignias",
+ "pages.plus": "Plus Server",
+ "pages.contributors": "Contribuidores",
+ "pages.calendar": "Calendario",
+ "pages.faq": "FAQ",
+ "pages.builds": "Builds",
+ "pages.analyzer": "Analizador de builds",
+
+ "header.profile": "Perfil",
+ "header.logout": "Cerrar sesión",
+ "header.login": "Iniciar sesión",
+
+ "footer.github.subtitle": "Código fuente",
+ "footer.twitter.subtitle": "Actualizaciones",
+ "footer.discord.subtitle": "Ayuda y comentarios",
+ "footer.patreon.subtitle": "Apoyar",
+ "footer.thanks": "Gracias a los Patrons por su apoyo",
+
+ "actions.save": "Guardar",
+ "actions.saving": "Guardando...",
+ "actions.submit": "Finalizar",
+ "actions.edit": "Editar",
+ "actions.add": "Añadir",
+ "actions.remove": "Remover",
+ "actions.delete": "Borrar",
+ "actions.loadMore": "Cargar más",
+
+ "results": "Resultados",
+
+ "forms.name": "Nombre",
+ "forms.description": "Descripción",
+ "forms.errors.title": "Los siguientes errores deben corregirse.",
+
+ "tag.name.BADGE": "Premios de insignia",
+ "tag.name.SPECIAL": "Reglas especiales",
+ "tag.name.ART": "Premios de arte",
+ "tag.name.MONEY": "Premios de dinero",
+ "tag.name.REGION": "Region cerrada",
+ "tag.name.LOW": "Limite de habilidad",
+ "tag.name.COUNT": "Limite de entrada",
+ "tag.name.LAN": "LAN",
+ "tag.name.QUALIFIER": "Clasificatorio",
+
+ "weapon.category.SHOOTERS": "Lanzatintas",
+ "weapon.category.BLASTERS": "Lanzamotas/Devastador",
+ "weapon.category.ROLLERS": "Rodillos",
+ "weapon.category.BRUSHES": "Brochas",
+ "weapon.category.CHARGERS": "Cargatintas",
+ "weapon.category.SLOSHERS": "Derramatic",
+ "weapon.category.SPLATLINGS": "Garabateadores",
+ "weapon.category.DUALIES": "Armas duales",
+ "weapon.category.BRELLAS": "Paratintas",
+ "weapon.category.STRINGERS": "Arcromatizador",
+ "weapon.category.SPLATANAS": "Azotintadores"
+}
diff --git a/public/locales/es-US/contributions.json b/public/locales/es-US/contributions.json
new file mode 100644
index 000000000..46da42be3
--- /dev/null
+++ b/public/locales/es-US/contributions.json
@@ -0,0 +1,8 @@
+{
+ "project": "Sendou.ink es un proyecto hecho por <2>Sendou2> con ayuda de contribuidores:",
+ "code": "Varios contribuidores ayudaron con el codigo",
+ "lean": "Ayudó a descubrir partes internas de Splatoon y creó el bot Lanista",
+ "borzoic": "Creó insignias, íconos y el arte de la página principal",
+ "uberu": "Dibujó el emoji the Justito abrazando un corazón",
+ "translation": "Traducción"
+}
diff --git a/public/locales/es-US/faq.json b/public/locales/es-US/faq.json
new file mode 100644
index 000000000..22bdd83fc
--- /dev/null
+++ b/public/locales/es-US/faq.json
@@ -0,0 +1,10 @@
+{
+ "q1": "¿Qué es el Plus Server?",
+ "a1": "Plus Server es un servidor de Discord para jugadores occidentales de alto nivel que sirve para buscar personas con quien jugar o combatir. Fue fundado en septiembre de 2017. Es dividido en tres niveles, de los cuales +1 es el más alto. Obtienes acceso cuando un miembro del servidor te sugiere y pasas la votación mensual.\n\nDurante la votación, obtienes un porcentage basado en tu resultado. Un 0% significa que todos los participantes votaron en contra, mientras que 100% sería lo opuesto. Se requiere 50% para pasar el voto. Si un miembro recibe menos de 50%, baja un nivel o, en el caso de miembros en +3, serán expulsados.",
+
+ "q2": "¿Cómo puedo obtener un premio de insignia para mi evento?",
+ "a2": "Puedes contratar a borzoic#1991 para hacer tu insignia. El precio es de 10-30€, dependiendo de lo complejo que sea. Despues, contacta a Sendou para añadirlo al sitio.\n\nCualquier torneo puede tener una insignia como premio. Si quieres entregar insignias por otras hazañas, es mejor consultar primero a Sendou sobre tu idea.",
+
+ "q3": "¿Cómo puedo actualizar mi avatar o nombre de usuario?",
+ "a3": "Si actualizas tu nombre de usuario o avatar en Discord, no cambian de inmediato en sendou.ink. Para que eso suceda tienes dos opciones:\n\n1) Si eres miembro del Discord de este sitio o del Plus Server, simplemente puedes esperar. Hay una rutina diaria que se encarga de la actualización.\n\n2) Alternativamente, si deseas actualizarlos de inmediato, puede cerrar la sesión y reiniciarla en sendou.ink."
+}
diff --git a/public/locales/es-US/front.json b/public/locales/es-US/front.json
new file mode 100644
index 000000000..cf483fedb
--- /dev/null
+++ b/public/locales/es-US/front.json
@@ -0,0 +1,12 @@
+{
+ "websiteSubtitle": "Sitio Central de Splatoon Competitivo",
+ "buildsGoTo": "Explora builds hechos por jugadores de alto nivel y otros para todas las armas en Splatoon 3",
+ "calendarGoTo": "Revisa todos los eventos pasados y próximos en el calendario",
+ "moreFeatures": "Más funciones",
+ "plus.description": "Revisa el historial de votos del Plus Server y más",
+ "badges.description": "Lista de todas las insignias que puedes ganar para tu perfil",
+ "analyzer.description": "Descubre lo que hazen tus builds en realidad",
+ "recentWinners": "Ganadores recientes",
+ "upcomingEvents": "Eventos próximos",
+ "articleBy": "por {{author}}"
+}
diff --git a/public/locales/es-US/game-misc.json b/public/locales/es-US/game-misc.json
new file mode 100644
index 000000000..9f60f6370
--- /dev/null
+++ b/public/locales/es-US/game-misc.json
@@ -0,0 +1,14 @@
+{
+ "STAGE_0": "Desfiladero Fumarola",
+ "STAGE_1": "Callejones Crustáceo",
+ "STAGE_2": "Mercado Lenguado",
+ "STAGE_3": "Desagüe Navajuela",
+ "STAGE_4": "Desguace Mero",
+ "STAGE_5": "Puente Salmón",
+ "STAGE_6": "Museo del Pargo",
+ "STAGE_7": "Spa Cala Bacalao",
+ "STAGE_8": "Instituto Coralino",
+ "STAGE_9": "Astillero Beluga",
+ "STAGE_10": "Ultramarinos Orca",
+ "STAGE_11": "Pirañalandia"
+}
diff --git a/public/locales/es-US/gear.json b/public/locales/es-US/gear.json
new file mode 100644
index 000000000..099c41b29
--- /dev/null
+++ b/public/locales/es-US/gear.json
@@ -0,0 +1,258 @@
+{
+ "H_1": "Cinta blanca",
+ "H_1000": "Gorra de Erizos",
+ "C_1000": "Camiseta blanca",
+ "S_1000": "Tenis azules",
+ "C_1001": "Ojos calamar negra",
+ "H_1002": "Gorra Pulpioka",
+ "H_1003": "Gorra de diseño",
+ "C_1004": "Rockenberg blanca",
+ "H_1005": "Gorra calalienígena",
+ "C_1005": "Rockenberg negra",
+ "C_1006": "Camiseta negra",
+ "S_1008": "Tenis ultrablancos",
+ "S_1009": "Tenis ultrarrojos",
+ "H_1012": "Gorra ciclista",
+ "C_1013": "Vectores roja",
+ "C_1014": "Vectores gris",
+ "C_1015": "Cumbres azul",
+ "C_1016": "Cumbres marfil",
+ "C_1018": "Camiseta pirata",
+ "C_1019": "Camiseta marinera",
+ "H_1020": "Gorra obrera",
+ "C_1020": "Camiseta retro blanca",
+ "H_1021": "Gorra de Erizos lana",
+ "C_1021": "Camiseta retro negra",
+ "S_1021": "Botas wasabi",
+ "S_1022": "Tenis ante principiante",
+ "S_1023": "Tenis almeja negros",
+ "S_1024": "Tenis ante profesional",
+ "H_1028": "Gorra orejeras negra",
+ "C_1035": "Camiseta táctica blanca",
+ "H_1036": "Gorro de alta mar",
+ "C_1062": "Camiseta rasgada blanca",
+ "C_1063": "Camiseta Tentáctica tándem",
+ "C_1066": "Camiseta Annak collar",
+ "C_1067": "Camiseta Annak brazaletes",
+ "C_1069": "Camiseta reditada azul",
+ "C_1070": "Camiseta reditada marrón",
+ "C_1071": "Pañuelo Barazushi",
+ "C_1072": "Camiseta Barazushi arroz",
+ "C_1073": "Camiseta Barazushi negra",
+ "C_1074": "Camiseta Barazushi cerezo",
+ "C_1075": "Camiseta octolamar tándem",
+ "C_1076": "Camiseta tricalamar",
+ "C_1077": "Camiseta tripulpo",
+ "C_1082": "Camiseta de timbre piña",
+ "C_1083": "Camiseta de timbre manzana",
+ "C_1084": "Camiseta crepúsculo",
+ "C_1085": "Camiseta atardecer",
+ "C_1088": "Camiseta ofídica",
+ "C_1090": "Camiseta glóbulos verde",
+ "C_1091": "Camiseta glóbulos rosa",
+ "S_2000": "Tenis bota rojos",
+ "S_2001": "Tenis bota zombi",
+ "S_2003": "Tenis bota morados",
+ "C_2004": "Béisbol Zekko manga larga",
+ "S_2004": "Tenis bota olivo",
+ "S_2005": "Tenis bota rojos",
+ "H_2008": "Gorro tejido",
+ "S_2016": "Tenis orca ocaso",
+ "S_2017": "Calamark rojos y negros",
+ "S_2018": "Calamark azules y negros",
+ "S_2042": "Botas reforzadas",
+ "S_2043": "Octotenis rojos",
+ "S_2045": "Botas ostra blancas",
+ "C_3000": "Camiseta de capas blanca",
+ "S_3000": "Deportivos rosas",
+ "H_3001": "Gafas de buzo",
+ "C_3001": "Camiseta de capas amarilla",
+ "S_3001": "Velcro naranja",
+ "H_3002": "Gafas de aviador",
+ "H_3003": "Gafas tintadas",
+ "C_3004": "Tintaz de capas",
+ "S_3004": "Deportivos cian",
+ "C_3006": "Camiseta de capas chocolate",
+ "H_3008": "Gafas aviador retro",
+ "C_3008": "Vectores de capas",
+ "H_3009": "Gafas redondas",
+ "C_3009": "Camiseta verde oliva",
+ "H_3011": "Gafas montura gruesa",
+ "H_3012": "Gafas ovaladas dobles",
+ "S_3013": "Velcro Tonken",
+ "H_3016": "Gafas de natación",
+ "S_3020": "Tenis sashimi",
+ "H_3021": "Gafas tinte abisal",
+ "H_3022": "Gafas montura retro",
+ "S_3022": "Tenis turbo rojos",
+ "H_3023": "Gafas sin cristales",
+ "S_3023": "Tenis AL-GA 30XX",
+ "H_3024": "Gafas triple protección",
+ "S_3024": "Tenis megatensión",
+ "H_3025": "Gafas transparentes",
+ "S_3025": "Tenis aletas altas",
+ "H_3026": "Gafas de motociclista",
+ "S_3026": "Tenis camarón negros",
+ "H_3027": "Gafas Annak cuadradas",
+ "H_3029": "Gafas redondas aurora",
+ "S_4000": "Zuecos grises",
+ "S_4001": "Zuecos chocolate",
+ "H_4004": "Sombrero cónico",
+ "C_4004": "Polo negro",
+ "C_4005": "Jersey ciclista",
+ "H_4006": "Canotier de noche",
+ "S_4007": "Sandalias delta neón",
+ "H_4008": "Gorro impermeable",
+ "S_4008": "Chanclas negras",
+ "C_4009": "Polo rugby extra 010",
+ "S_4009": "Sandalias delta nieve",
+ "C_4010": "Polo rugby extra 008",
+ "S_4011": "Chanclas Sofrito",
+ "S_4012": "Chanclas Sofrito amarillas",
+ "S_4014": "Huaraches marrones",
+ "H_4015": "Bombín clásico",
+ "S_4015": "Sandalias flechas azules",
+ "H_4016": "Sombrero de mezclilla",
+ "S_4016": "Chanclas glóbulos",
+ "H_4017": "Sombrero mezclilla gemas",
+ "S_4017": "Sandalias ultranaranjas",
+ "H_4019": "Sombrero playero",
+ "S_4021": "Sandalias ultrarrosas",
+ "S_4022": "Sandalias ultracelestes",
+ "H_5000": "Auriculares pro",
+ "C_5000": "Rompevientos lima",
+ "S_5000": "Botas de montaña",
+ "H_5001": "Auriculares de diseñador",
+ "C_5001": "Rompevientos nylon Pulpioka",
+ "S_5001": "Botas de montaña especiales",
+ "H_5004": "Auriculares estéreo",
+ "C_5006": "Chaqueta roquera negra",
+ "H_5007": "Audífonos octoestéreo",
+ "H_5008": "Auriculares acorazados",
+ "C_5014": "Chaqueta satinada calamar",
+ "C_5015": "Chaqueta satinada volbagre",
+ "C_5019": "Plumífero yerba mate",
+ "C_5023": "Impermeable Tonken",
+ "C_5045": "Parka ártica",
+ "C_5046": "Anorak Barazushi",
+ "C_5047": "Chaqueta retazos",
+ "C_5048": "Chaqueta con ventilación",
+ "C_5049": "Chaqueta de remo negativa",
+ "C_5050": "Chaqueta orca negativa",
+ "C_5051": "Abrigo de lana crema",
+ "C_5054": "Chaqueta impermeable caqui",
+ "C_6000": "Baloncesto local",
+ "S_6000": "Botas de motociclista",
+ "H_6001": "Visera Sofrito",
+ "S_6001": "Botas de trabajo marrones",
+ "H_6003": "Visera Pulpioka",
+ "H_6004": "Visera tintada",
+ "S_6006": "Botas roqueras",
+ "S_6007": "Botas cerezo",
+ "C_6008": "Umibozu local",
+ "S_6012": "Botas impermeables",
+ "S_6020": "Botas de trabajo Skipjack",
+ "S_6021": "Botas de pato árticas",
+ "S_6023": "Botas martillo rojas",
+ "S_6025": "Botas roqueras rosas",
+ "C_7001": "Sudadera mostaza",
+ "S_7002": "Mocasines bicolor",
+ "H_7007": "Casco hockey",
+ "C_7010": "Annak puño azul",
+ "H_7012": "Casco caparazón",
+ "H_7013": "Casco cuernos",
+ "H_7014": "Careta béisbol local",
+ "C_7016": "Sudadera manatí",
+ "C_7017": "Suéter tiburones",
+ "C_7018": "Octosudadera azul y negra",
+ "C_8000": "Camisa cuadros ocres",
+ "C_8003": "Camisa blanca",
+ "H_8005": "Tapabocas negra y roja",
+ "C_8005": "Camisa tropical",
+ "H_8008": "Tapabocas Shachi",
+ "S_8010": "Habaneros Annak",
+ "H_8011": "Tapabocas Forima",
+ "C_8012": "Camisa logos",
+ "S_8013": "Botas ante desérticas",
+ "H_8014": "Tapabocas glóbulos",
+ "S_8014": "Mocasines tostados",
+ "H_8015": "Máscara antitinta",
+ "H_8016": "Protector de mandíbula",
+ "C_8017": "Camiseta roquera tropical",
+ "C_8018": "Camisa semipleno",
+ "C_8019": "Camisa entintada",
+ "C_8020": "Paracaidista arándano rojo",
+ "C_8024": "Camisa octropical",
+ "C_8025": "Camisa franela Annak",
+ "C_8030": "Guayabera hipocampos",
+ "C_8031": "Camisa de payaso",
+ "C_8033": "Camisa retazos safari",
+ "C_8034": "Camisa bordada pez corneta",
+ "C_8036": "Camisa salpicadura",
+ "C_8040": "Camisa retazos urbana",
+ "H_9003": "Cinta de tenis",
+ "H_9007": "Pañuelo Sofrito",
+ "H_9009": "Cinta tenis de mesa",
+ "C_9010": "Chaleco bolsillos caqui",
+ "C_9011": "Coraza cangrejo roja",
+ "C_9012": "Coraza cangrejo verde",
+ "C_9013": "Chaleco salpicadura",
+ "C_10006": "Sudadera gris",
+ "C_10012": "Sudadera de jerga roja",
+ "C_10014": "Sudadera de jerga celeste",
+ "H_21010": "Gorra besugo dorado",
+ "H_21011": "Visor opaco",
+ "H_21015": "Casco psicotrónico",
+ "H_25000": "Pasador de calamar",
+ "C_25000": "Uniforme escolar A",
+ "S_25000": "Zapatos escolares",
+ "H_25001": "Casco de samurái",
+ "C_25001": "Armadura samurái",
+ "S_25001": "Sandalias samurái",
+ "H_25002": "Máscara futurista",
+ "C_25002": "Tecnoarmadura",
+ "S_25002": "Tecnobotas",
+ "H_25003": "Aretes calamar",
+ "C_25003": "Cárdigan escolar A",
+ "S_25003": "Mocasines con flecos",
+ "H_25004": "Máscara ninja (II)",
+ "C_25004": "Túnica ninja",
+ "S_25004": "Botas ninja",
+ "H_25005": "Máscara futurista II",
+ "C_25005": "Tecnoarmadura II",
+ "S_25005": "Tecnobotas II",
+ "H_25006": "Corona perlífera (P)",
+ "C_25006": "Sudadera perlífera",
+ "S_25006": "Plataformas perlíferas",
+ "H_25007": "Auriculares marínicos",
+ "C_25007": "Top marínico",
+ "S_25007": "Mocasines marínicos",
+ "H_25008": "Sombrero hechizado",
+ "C_25008": "Túnica hechizada A",
+ "S_25008": "Botas hechizadas",
+ "H_25009": "Casco de acero",
+ "C_25009": "Armadura de acero",
+ "S_25009": "Grebas de acero",
+ "H_25010": "Cabeza de pececito",
+ "C_25010": "Guantes de pececito",
+ "S_25010": "Pies de pececito",
+ "C_25014": "Uniforme escolar B",
+ "S_25014": "Zapatos escolares básicos",
+ "C_25015": "Cárdigan escolar B",
+ "S_25015": "Mocasines con flecos básicos",
+ "H_25016": "Máscara ninja (I)",
+ "H_25017": "Corona perlífera (G)",
+ "C_25017": "Túnica hechizada B",
+ "C_26000": "Camiseta festiva",
+ "H_27000": "Auriculares de élite réplica",
+ "C_27000": "Sudadera de élite réplica",
+ "S_27000": "Deportivos de élite réplica",
+ "H_27004": "Casco armadura réplica",
+ "C_27004": "Chaqueta armadura réplica",
+ "S_27004": "Botas armadura réplica",
+ "H_27109": "Orejitas de oso",
+ "H_27306": "Neuroaudífonos élite réplica",
+ "C_27306": "Traje de élite réplica",
+ "S_27306": "Botas de élite réplica",
+ "H_28000": "Gorro de Adolfrito"
+}
diff --git a/public/locales/es-US/user.json b/public/locales/es-US/user.json
new file mode 100644
index 000000000..e52683d19
--- /dev/null
+++ b/public/locales/es-US/user.json
@@ -0,0 +1,10 @@
+{
+ "country": "País",
+ "bio": "Biografía",
+
+ "results.placing": "Lugar",
+ "results.team": "Equipo",
+ "results.tournament": "Torneo",
+ "results.date": "Fecha",
+ "results.mates": "Compañeros"
+}
diff --git a/public/locales/es-US/weapons.json b/public/locales/es-US/weapons.json
new file mode 100644
index 000000000..149a13705
--- /dev/null
+++ b/public/locales/es-US/weapons.json
@@ -0,0 +1,86 @@
+{
+ "MAIN_250": "Turbolanzamotas Pro",
+ "MAIN_230": "Hiperlanzamotas",
+ "MAIN_240": "Turbolanzamotas",
+ "MAIN_220": "Telelanzamotas",
+ "MAIN_210": "Lanzamotas",
+ "MAIN_200": "Lanzamotas Nova",
+ "MAIN_1100": "Pincel",
+ "MAIN_1110": "Pincel caligrafía",
+ "MAIN_2060": "Entintubo",
+ "MAIN_2050": "Bamzuka 14-I",
+ "MAIN_2040": "Telentintador 4K",
+ "MAIN_2030": "Entintador 4K",
+ "MAIN_2020": "Telecargatintas",
+ "MAIN_2010": "Cargatintas",
+ "MAIN_2000": "Delineador X",
+ "MAIN_5030": "Soplador dual",
+ "MAIN_5020": "Fundidora 525 dual",
+ "MAIN_5010": "Difusor dual",
+ "MAIN_5000": "Atomizador dual",
+ "MAIN_5040": "Tetra dual negro",
+ "MAIN_1000": "Rodillo de carbono",
+ "MAIN_1020": "Rodillo Pro",
+ "MAIN_1030": "Rodillo versátil",
+ "MAIN_1010": "Rodillo básico",
+ "MAIN_8010": "Azotintador brisa",
+ "MAIN_8000": "Azotintador Pro",
+ "MAIN_6020": "Paratintas discreto",
+ "MAIN_6000": "Paratintas",
+ "MAIN_6010": "Paratintas forestal",
+ "MAIN_30": "Aerógrafo GP",
+ "MAIN_70": "Rociador Pro",
+ "MAIN_10": "Rociador básico",
+ "MAIN_400": "Tintopresor",
+ "MAIN_50": "Salpicadora 2000",
+ "MAIN_80": "Salpicadora 3000",
+ "MAIN_90": "Megasoplador",
+ "MAIN_40": "Rociador",
+ "MAIN_45": "Rociador de élite réplica",
+ "MAIN_20": "Plumón",
+ "MAIN_60": "N-ZAP 85",
+ "MAIN_0": "Marcador grueso",
+ "MAIN_310": "Manguera pesada",
+ "MAIN_300": "Manguera ligera",
+ "MAIN_3030": "Derramatic baño",
+ "MAIN_3010": "Derramatic triple",
+ "MAIN_3020": "Derramatic centrífugo",
+ "MAIN_3000": "Derramatic",
+ "MAIN_3040": "Derramatic XP",
+ "MAIN_4030": "Garabateador PLM",
+ "MAIN_4020": "Garabateador HD",
+ "MAIN_4000": "Garabateador",
+ "MAIN_4040": "Nautilo 47",
+ "MAIN_4010": "Garabateador Pro",
+ "MAIN_7010": "Arcromatizador triple",
+ "MAIN_7020": "AR-CR0 450",
+ "SUB_8": "Baliza",
+ "SUB_6": "Bomba deslizante",
+ "SUB_5": "Bomba carbónica",
+ "SUB_2": "Globo entintado",
+ "SUB_7": "Robobomba",
+ "SUB_0": "Plasbomba",
+ "SUB_1": "Bomba pegajosa",
+ "SUB_13": "Torpedo",
+ "SUB_12": "Dardo resaltador",
+ "SUB_9": "Rastreador",
+ "SUB_11": "Nebulizador",
+ "SUB_4": "Barricada",
+ "SUB_3": "Aspersor",
+ "SUB_10": "Mina de tinta",
+ "SPECIAL_8": "Aspiratinta",
+ "SPECIAL_12": "Cangrejobot",
+ "SPECIAL_15": "Dispensabebidas",
+ "SPECIAL_2": "Megaburbuja",
+ "SPECIAL_5": "Atormentador",
+ "SPECIAL_10": "Propulsor",
+ "SPECIAL_9": "Berreón 5.1",
+ "SPECIAL_4": "Lanzamisiles",
+ "SPECIAL_6": "Bola genializante",
+ "SPECIAL_7": "Emiteondas",
+ "SPECIAL_13": "Flotiburón",
+ "SPECIAL_3": "Gancho tentacular",
+ "SPECIAL_14": "Tornado triple",
+ "SPECIAL_1": "Cañón triple",
+ "SPECIAL_11": "Ultraselladora"
+}
diff --git a/scripts/create-analyzer-json.ts b/scripts/create-analyzer-json.ts
index 363773216..fffe1031c 100644
--- a/scripts/create-analyzer-json.ts
+++ b/scripts/create-analyzer-json.ts
@@ -20,7 +20,11 @@ import invariant from "tiny-invariant";
import type { MainWeaponParams, SubWeaponParams } from "~/modules/analyzer";
import type { ParamsJson } from "~/modules/analyzer/types";
import { z } from "zod";
-import { LANG_JSONS_TO_CREATE, loadLangDicts } from "./utils";
+import {
+ LANG_JSONS_TO_CREATE,
+ loadLangDicts,
+ translationJsonFolderName,
+} from "./utils";
const CURRENT_SEASON = 1;
@@ -603,7 +607,7 @@ function writeTranslationsJsons(arr: TranslationArray) {
"..",
"public",
"locales",
- langCode.slice(2),
+ translationJsonFolderName(langCode),
`weapons.json`
),
JSON.stringify(
diff --git a/scripts/create-gear-json.ts b/scripts/create-gear-json.ts
index cb5da9c70..85a0bfeb8 100644
--- a/scripts/create-gear-json.ts
+++ b/scripts/create-gear-json.ts
@@ -8,7 +8,11 @@ import shoes from "./dicts/GearInfoShoes.json";
import fs from "node:fs";
import path from "node:path";
import invariant from "tiny-invariant";
-import { LANG_JSONS_TO_CREATE, loadLangDicts } from "./utils";
+import {
+ LANG_JSONS_TO_CREATE,
+ loadLangDicts,
+ translationJsonFolderName,
+} from "./utils";
const CURRENT_SEASON = 1;
const OUTPUT_DIR_PATH = path.join(__dirname, "output");
@@ -117,7 +121,7 @@ async function main() {
"..",
"public",
"locales",
- langCode.slice(2),
+ translationJsonFolderName(langCode),
`gear.json`
),
JSON.stringify(translationsMap, null, 2) + "\n"
diff --git a/scripts/create-misc-json.ts b/scripts/create-misc-json.ts
index a3db84b0f..717a43cc2 100644
--- a/scripts/create-misc-json.ts
+++ b/scripts/create-misc-json.ts
@@ -1,7 +1,11 @@
/* eslint-disable */
// @ts-nocheck
-import { LANG_JSONS_TO_CREATE, loadLangDicts } from "./utils";
+import {
+ LANG_JSONS_TO_CREATE,
+ loadLangDicts,
+ translationJsonFolderName,
+} from "./utils";
import fs from "fs";
import path from "path";
import invariant from "tiny-invariant";
@@ -61,7 +65,7 @@ async function main() {
"..",
"public",
"locales",
- langCode.slice(2),
+ translationJsonFolderName(langCode),
`game-misc.json`
),
JSON.stringify(translationsMap, null, 2) + "\n"
diff --git a/scripts/utils.ts b/scripts/utils.ts
index 926949243..caf3c2a9d 100644
--- a/scripts/utils.ts
+++ b/scripts/utils.ts
@@ -12,6 +12,7 @@ export const LANG_JSONS_TO_CREATE = [
"CNzh",
"EUde",
"EUes",
+ "USes",
"EUfr",
"EUit",
"EUnl",
@@ -36,3 +37,9 @@ export async function loadLangDicts() {
return result;
}
+
+export function translationJsonFolderName(langCode: string) {
+ if (langCode === "EUes") return "es-ES";
+ if (langCode === "USes") return "es-US";
+ return langCode.slice(2);
+}
diff --git a/translation-progress.md b/translation-progress.md
index b950cdf56..2c2e6288a 100644
--- a/translation-progress.md
+++ b/translation-progress.md
@@ -122,7 +122,174 @@
---
-## /es (🟡 In progress)
+## /es-ES (🟡 In progress)
+
+### 🟡 analyzer.json
+
+**92/112**
+
+
+Missing
+
+- objCalcAd
+- stat.specialLostSplattedByRP
+- stat.quickRespawnTimeSplattedByRP
+- stat.shootingRunSpeed
+- stat.shootingRunSpeedCharging
+- stat.shootingRunSpeedFullCharge
+- damage.toSplat_one
+- damage.NORMAL_MAX_FULL_CHARGE
+- damage.DIRECT_MIN
+- damage.DIRECT_MAX
+- torpedoExplanation
+- distanceInline
+- damageShort
+- hitsToDestroyLong
+- hitsToDestroyShort
+- labels.amountOf
+- labels.damageType
+- labels.weapon
+- dmgHtdExplanation
+- noDmgData
+
+
+
+### 🟢 badges.json
+
+**7/7**
+
+### 🟢 builds.json
+
+**11/11**
+
+### 🟡 calendar.json
+
+**44/46**
+
+
+Missing
+
+- createMapList
+- forms.mapPool
+
+
+
+### 🟡 common.json
+
+**48/82**
+
+
+Missing
+
+- pages.articles
+- pages.s2
+- pages.maps
+- pages.object-damage-calculator
+- header.language
+- header.loggedInAs
+- header.theme
+- auth.errors.aborted
+- auth.errors.failed
+- auth.errors.discordPermissions
+- auth.errors.unknown
+- actions.copyToClipboard
+- actions.close
+- actions.loading
+- actions.clear
+- actions.selectAll
+- actions.search
+- maps.createMapList
+- maps.halfSz
+- maps.mapPool
+- maps.tournamentMaplist
+- maps.template
+- maps.template.none
+- maps.template.event
+- maps.template.presets
+- maps.template.yourRecentEvents
+- maps.template.preset.ANARCHY
+- maps.template.preset.ALL
+- maps.template.preset.onlyMode
+- forms.errors.noSearchMatches
+- errors.genericReload
+- theme.light
+- theme.dark
+- theme.auto
+
+
+
+### 🟢 contributions.json
+
+**6/6**
+
+### 🟢 faq.json
+
+**6/6**
+
+### 🟡 front.json
+
+**10/13**
+
+
+Missing
+
+- maps.description
+- object-damage-calculator.description
+- articlesGoTo
+
+
+
+### 🟡 game-misc.json
+
+**12/22**
+
+
+Missing
+
+- MODE_SHORT_TW
+- MODE_SHORT_SZ
+- MODE_SHORT_TC
+- MODE_SHORT_RM
+- MODE_SHORT_CB
+- MODE_LONG_TW
+- MODE_LONG_SZ
+- MODE_LONG_TC
+- MODE_LONG_RM
+- MODE_LONG_CB
+
+
+
+### 🟡 user.json
+
+**7/25**
+
+
+Missing
+
+- customUrl
+- ign
+- ign.short
+- stickSens
+- motionSens
+- motion
+- stick
+- sens
+- results.title
+- results.participants
+- results.highlights
+- results.nonHighlights
+- results.highlights.choose
+- results.highlights.explanation
+- forms.errors.invalidCustomUrl.numbers
+- forms.errors.invalidCustomUrl.strangeCharacter
+- forms.errors.invalidCustomUrl.duplicate
+- forms.errors.invalidSens
+
+
+
+---
+
+## /es-US (🟡 In progress)
### 🟡 analyzer.json