Entwickler

Übersetzen

Wie die Übersetzungen von Launcher, TRS Client, Website und dieser Doku aufgebaut sind und wie du eine Sprache verbesserst oder hinzufügst.

Der Launcher und der TRS Client sprechen acht Sprachen. Englisch ist die Quelle und der Rückfall: Fehlt ein Text, erscheint der englische.

SpracheLauncher und TRS ClientWebsite und Doku
Englischvollständig (Quelle)ja
Deutschvollständigja
Spanischvollständigja
Französisch, Polnisch, Portugiesisch (Brasilien), Türkisch, NiederländischBeta (maschinell übersetzt, nicht vollständig geprüft)nein

Am schnellsten hilfst du, wenn du eine Beta-Sprache durchgehst und korrigierst, was falsch klingt.

Launcher

Dateien: app/locales/<code>.json, zum Beispiel app/locales/fr.json. Die Struktur ist verschachtelt, die Quelle ist en.json:

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

Regeln:

  • Schlüssel bleiben genau wie in en.json. Füg keine Schlüssel hinzu, die es im Englischen nicht gibt.
  • Platzhalter wie {name} oder {n} bleiben unverändert – übersetz die Wörter drumherum.
  • Pluralformen werden mit | getrennt, in der Reihenfolge deiner Sprache: „eins | viele“, im Polnischen „eins | wenige | viele“.
  • Die Zeichen {, }, @ und | haben in vue-i18n eine Bedeutung. Um eines als Text zu zeigen, schreib es als {'@'}.
  • Fehlermeldungen des Launcher-Kerns stehen unter errors – jeder Schlüssel ist der Code, den der Kern schickt.

Prüf deine Arbeit mit den Frontend-Tests:

pnpm test

tests/i18n.test.ts prüft, dass jede Sprache die richtigen Platzhalter und Pluralformen hat, dass kein Schlüssel veraltet ist und dass sich die Dateien einlesen lassen. Er schlägt fehl, wenn Deutsch oder Spanisch ein Schlüssel fehlt, und gibt aus, wie vollständig jede Beta-Sprache ist.

TRS Client

Dateien: client-mod/common/src/main/resources/assets/trsclient/i18n/<code>.json. Sie sind flach, ein Schlüssel pro Zeile, und stecken in jeder Jar:

en.json
{
  "bugreport.title": "Report a bug",
  "bugreport.attach.modsCount": "{0} mods"
}
  • Platzhalter sind nummeriert: {0}, {1} …
  • Ein fehlender Schlüssel fällt auf Englisch zurück, dann auf den Schlüssel selbst.
  • Die Namen der Tastenbelegungen in Minecrafts eigenem Steuerungsmenü kommen aus eigenen Sprachdateien. Nachdem du einen Text key.trsclient.* geändert hast, erzeug sie neu:
node client-mod/scripts/gen-lang.mjs

Die Tests laufen mit dem Gradle-Build von client-mod/ (./gradlew :common:test oder ./gradlew build): I18nTest prüft Schlüssel und Platzhalter, TextFitTest prüft, dass Namen in der Standard-Fenstergröße in die Kacheln und Knöpfe des Menüs passen. Bei Beta-Sprachen werden zu lange Texte nur gemeldet.

Website

Die Website liegt auf dem Branch website und hat Englisch, Deutsch und Spanisch. Die Texte sind TypeScript-Dateien in api/:

  • app/utils/messages.ts – allgemeine Texte der Website
  • app/utils/*-i18n.ts – Texte einzelner Bereiche (Issues, Blog, Schaltungen, Team, Anmeldung, Admin)
  • shared/landing-en.ts, landing-de.ts, landing-es.ts – die Landingpages
  • app/content/launcher-privacy.<code>.md – die Datenschutzerklärung des Launchers

Doku

Diese Doku besteht aus Markdown-Dateien in docs-site/content/en/, de/ und es/ auf dem Branch website. Jede Seite hat in jeder Sprache denselben Dateinamen. Englisch ist die Quelle.

Stil

  • Kurz und klar. Sag, was der Spieler davon hat, nicht wie es innen funktioniert.
  • Deutsch nutzt „du“, Spanisch „tú“.
  • Produktnamen bleiben: TRS Launcher, TRS Client, TRS-Dienste.
  • Für Minecraft-Begriffe nimm die Wörter der offiziellen Minecraft-Übersetzung deiner Sprache.

Eine neue Sprache hinzufügen

Eine neue Sprache berührt mehrere Stellen, leg deshalb bitte zuerst ein Issue an. Neue Sprachen starten als Beta. Kurz gesagt:

  • Launcher: eine neue Datei in app/locales/, dazu die Einträge in app/utils/i18n.ts (supportedLocales, languageList mit einer Flagge in public/flags/, pluralForms und die zod-Sprache) und in der Liste Language in src-tauri/crates/core/src/settings.rs.
  • TRS Client: eine neue Datei im Ordner i18n, die Listen LANGUAGES und BETA in core/i18n/I18n.java und die Minecraft-Sprachcodes in client-mod/scripts/gen-lang.mjs.