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>borzoic", + "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>Sendou 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