Übersetzen
Der Launcher und der TRS Client sprechen acht Sprachen. Englisch ist die Quelle und der Rückfall: Fehlt ein Text, erscheint der englische.
| Sprache | Launcher und TRS Client | Website und Doku |
|---|---|---|
| Englisch | vollständig (Quelle) | ja |
| Deutsch | vollständig | ja |
| Spanisch | vollständig | ja |
| Französisch, Polnisch, Portugiesisch (Brasilien), Türkisch, Niederländisch | Beta (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:
{
"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:
{
"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 Websiteapp/utils/*-i18n.ts– Texte einzelner Bereiche (Issues, Blog, Schaltungen, Team, Anmeldung, Admin)shared/landing-en.ts,landing-de.ts,landing-es.ts– die Landingpagesapp/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 inapp/utils/i18n.ts(supportedLocales,languageListmit einer Flagge inpublic/flags/,pluralFormsund die zod-Sprache) und in der ListeLanguageinsrc-tauri/crates/core/src/settings.rs. - TRS Client: eine neue Datei im Ordner
i18n, die ListenLANGUAGESundBETAincore/i18n/I18n.javaund die Minecraft-Sprachcodes inclient-mod/scripts/gen-lang.mjs.