Desarrolladores

Traducir

Cómo están organizadas las traducciones del launcher, del TRS Client, de la web y de esta documentación, y cómo mejorar o añadir un idioma.

El launcher y el TRS Client hablan ocho idiomas. El inglés es la fuente y la reserva: si falta un texto, se muestra el inglés.

IdiomaLauncher y TRS ClientWeb y documentación
Ingléscompleto (fuente)sí
Alemáncompletosí
Españolcompletosí
Francés, polaco, portugués (Brasil), turco, neerlandésbeta (traducción automática, no revisada del todo)no

La forma más rápida de ayudar: revisa un idioma beta y corrige lo que suene mal.

Launcher

Archivos: app/locales/<code>.json, por ejemplo app/locales/fr.json. La estructura es anidada y la fuente es en.json:

app/locales/en.json
{
  "logViewer": {
    "title": "Game log",
    "newLines": "{n} new line | {n} new lines",
    "empty": {
      "openLatest": "Open {name}"
    }
  }
}

Reglas:

  • Las claves se quedan exactamente como en en.json. No añadas claves que no existan en inglés.
  • Los marcadores como {name} o {n} no se cambian: traduce las palabras de alrededor.
  • Las formas de plural se separan con | en el orden de tu idioma: «uno | otros», en polaco «uno | pocos | muchos».
  • Los caracteres {, }, @ y | tienen significado en vue-i18n. Para mostrar uno como texto, escríbelo como {'@'}.
  • Los mensajes de error del núcleo del launcher están en errors: cada clave es el código que envía el núcleo.

Comprueba tu trabajo con las pruebas del frontend:

pnpm test

tests/i18n.test.ts comprueba que cada idioma tenga los marcadores y las formas de plural correctas, que ninguna clave esté obsoleta y que los archivos se puedan leer. Falla si al alemán o al español les falta una clave, e indica cuánto está completo cada idioma beta.

TRS Client

Archivos: client-mod/common/src/main/resources/assets/trsclient/i18n/<code>.json. Son planos, una clave por línea, y van dentro de cada jar:

en.json
{
  "bugreport.title": "Report a bug",
  "bugreport.attach.modsCount": "{0} mods"
}
  • Los marcadores van numerados: {0}, {1} …
  • Si falta una clave, se usa la inglesa y, si tampoco existe, la propia clave.
  • Los nombres de las asignaciones de teclas en el menú de controles de Minecraft vienen de archivos de idioma aparte. Después de cambiar un texto key.trsclient.*, vuelve a generarlos:
node client-mod/scripts/gen-lang.mjs

Las pruebas se ejecutan con el build de Gradle de client-mod/ (./gradlew :common:test o ./gradlew build): I18nTest comprueba claves y marcadores, y TextFitTest comprueba que los nombres quepan en los mosaicos y botones del menú con el tamaño de ventana por defecto. En los idiomas beta, los textos demasiado largos solo se avisan.

Web

La web está en la rama website y tiene inglés, alemán y español. Los textos son archivos TypeScript en api/:

  • app/utils/messages.ts: textos generales de la web
  • app/utils/*-i18n.ts: textos de áreas concretas (incidencias, blog, circuitos, equipo, inicio de sesión, administración)
  • shared/landing-en.ts, landing-de.ts, landing-es.ts: las páginas de inicio temáticas
  • app/content/launcher-privacy.<code>.md: la política de privacidad del launcher

Documentación

Esta documentación son archivos Markdown en docs-site/content/en/, de/ y es/ en la rama website. Cada página tiene el mismo nombre de archivo en todos los idiomas. El inglés es la fuente.

Estilo

  • Corto y claro. Di qué gana el jugador, no cómo funciona por dentro.
  • El alemán usa «du» y el español «tú».
  • Los nombres de producto se mantienen: TRS Launcher, TRS Client, servicios de TRS.
  • Para los términos de Minecraft, usa las palabras de la traducción oficial de Minecraft en tu idioma.

Añadir un idioma nuevo

Un idioma nuevo afecta a varios sitios, así que abre primero una incidencia. Los idiomas nuevos empiezan como beta. En resumen:

  • Launcher: un archivo nuevo en app/locales/, más las entradas en app/utils/i18n.ts (supportedLocales, languageList con una bandera en public/flags/, pluralForms y el idioma de zod) y en la lista Language de src-tauri/crates/core/src/settings.rs.
  • TRS Client: un archivo nuevo en la carpeta i18n, las listas LANGUAGES y BETA en core/i18n/I18n.java y los códigos de idioma de Minecraft en client-mod/scripts/gen-lang.mjs.