Files
BSO-Launcher/ui/i18n.js
T
MrMahoandClaude Opus 5.5 6ec2714a15 Launcher 0.3.3: Freunde-Eingabe bleibt, Lobby eines Freundes beitreten
Das Feld Benutzername wird beim Aktualisieren nicht mehr neu angelegt (Text, Fokus und Cursor bleiben),
neu gezeichnet wird nur bei Aenderungen. Beitreten-Knopf bei Freunden mit Lobby und Liste der Freundes-Lobbys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:29:22 +01:00

104 lines
7.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use strict";
// Sprachen der Oberflaeche. Deutsch ist der Text im Code selbst, hier steht nur Englisch dazu.
// t("Text mit {0}", wert) - fehlt eine Uebersetzung, bleibt der deutsche Text stehen.
const EN = {
// Fenster, Anmeldung
"Minimieren": "Minimize", "Maximieren": "Maximize", "Schliessen": "Close",
"Anmelden": "Sign in", "Konto erstellen": "Create account", "Benutzername": "Username", "E-Mail (optional)": "Email (optional)",
"Passwort": "Password", "Passwort wiederholen": "Repeat password", "Abmelden": "Sign out",
"Dein Benutzername ist auch dein Name im Spiel. Passwoerter liegen nur verschluesselt auf dem BSO-Server.":
"Your username is also your name in the game. Passwords are only stored encrypted on the BSO server.",
"Die Passwoerter sind nicht gleich": "The passwords don't match",
"Willkommen bei BSO, {0}!": "Welcome to BSO, {0}!",
"Server: {0}": "Server: {0}",
// Navigation
"Spielen": "Play", "Freunde": "Friends", "Neuigkeiten": "News", "Einstellungen": "Settings", "Laden …": "Loading …",
// Spielen
"SPIELEN": "PLAY", "LAEUFT": "RUNNING", "Bus-Simulator 2012 startet …": "Bus-Simulator 2012 is starting …",
"BSO {0} installiert · zusammen spielen unter Freunde & Lobby": "BSO {0} installed · play together under Friends & lobby", "BSO wird beim ersten Start installiert": "BSO will be installed on first start",
"Multiplayer fuer Bus-Simulator 2012": "Multiplayer for Bus-Simulator 2012",
"Vor dem Start fehlt noch etwas - siehe unten": "Something is still missing - see below",
"Jetzt aktualisieren": "Update now", "Launcher startet neu …": "Launcher is restarting …", "Launcher {0}": "Launcher {0}", " ist da.": " is available.",
"BSO-Server nicht erreichbar - Updates werden spaeter geprueft.": "BSO server not reachable - updates will be checked later.",
"Anderen Ordner waehlen": "Choose another folder", "Ordner waehlen": "Choose folder", "Gefunden": "Found", "Nicht gefunden": "Not found",
"Ueber Steam installiert? Sonst den Ordner von Hand waehlen.": "Installed via Steam? Otherwise choose the folder manually.",
"Version {0}": "Version {0}", "Nicht installiert": "Not installed", "Neu: {0}": "New: {0}", "Aktuell": "Up to date",
"Keine Version auf dem Server": "No version on the server", "Mod herunterladen": "Download mod", "Mod aktualisieren": "Update mod",
"Neu herunterladen": "Download again", "BSO {0} installiert": "BSO {0} installed",
"Installiert": "Installed", "Die Mod laeuft mit .NET 10 (x64).": "The mod runs on .NET 10 (x64).", "Herunterladen": "Download", "Fehlt": "Missing",
"BSO braucht die .NET 10 Runtime (x64) - \".NET Runtime\" fuer Windows x64 installieren.": "BSO needs the .NET 10 Runtime (x64) - install \".NET Runtime\" for Windows x64.",
"Gespeichert": "Saved",
// Freunde & Lobby
"Freunde & Lobby": "Friends & lobby", "{0} lädt dich in die Lobby ein": "{0} invites you to their lobby", " lädt dich in die Lobby ein": " invites you to their lobby",
"{0} möchte dein Freund sein": "{0} wants to be your friend", "Beitreten": "Join", "Ablehnen": "Decline", "Lobby": "Lobby",
"Erstelle eine Lobby und lade Freunde ein. Der Server läuft auf dem BSO-Relay – niemand muss etwas hosten oder Ports freigeben.":
"Create a lobby and invite friends. The server runs on the BSO relay – nobody has to host anything or forward ports.",
"Lobby erstellen": "Create lobby", "Bus-Simulator 2012 startet und verbindet mit der Lobby …": "Bus-Simulator 2012 is starting and connecting to the lobby …",
"Server läuft – alle können SPIELEN drücken": "Server is running – everyone can press PLAY",
"Drück SPIELEN – der Server startet dann für die ganze Lobby": "Press PLAY – the server then starts for the whole lobby",
"Warte, bis {0} SPIELEN drückt – dann startet der Server": "Waiting for {0} to press PLAY – then the server starts", "Server stoppen": "Stop server",
"Lobbys deiner Freunde": "Your friends' lobbies", "{0} Spieler": "{0} players", "Die Lobby ist voll": "The lobby is full",
"Deine Lobby wird dabei aufgelöst. Trotzdem {0} beitreten?": "Your lobby will be closed. Join {0} anyway?",
"Ersteller": "Owner", "Entfernen": "Remove", "Deine Lobby": "Your lobby", "Lobby von {0}": "{0}'s lobby", "Mitglieder ({0})": "Members ({0})",
"{0} Einladung(en) offen": "{0} invitation(s) pending", "Lobby auflösen": "Close lobby", "Lobby verlassen": "Leave lobby",
"Hinzufügen": "Add", "Anfrage an {0} geschickt": "Request sent to {0}", "Anfragen": "Requests", "Annehmen": "Accept",
"Freunde ({0} online)": "Friends ({0} online)", "Noch keine Freunde – füge jemanden über seinen BSO-Benutzernamen hinzu.": "No friends yet – add someone by their BSO username.",
"Freund entfernen": "Remove friend", "{0} als Freund entfernen?": "Remove {0} as a friend?", "eingeladen": "invited", "Einladen": "Invite",
"in der Lobby": "in the lobby", "Gesendet": "Sent", "wartet …": "pending …", "Zurückziehen": "Withdraw",
// Neuigkeiten
"Launcher {0} ist da – unter Einstellungen installieren": "Launcher {0} is available – install it in the settings",
"Launcher wird auf {0} aktualisiert …": "Updating the launcher to {0} …", "Launcher {0} ist da": "Launcher {0} is available",
"Der Launcher startet danach von selbst neu.": "The launcher restarts by itself.", "Neustart …": "Restarting …",
"Launcher-Update fehlgeschlagen: {0}": "Launcher update failed: {0}", "Nach Updates suchen": "Check for updates",
"Installieren und neu starten": "Install and restart", "Der Launcher ist aktuell": "The launcher is up to date",
"Keine Launcher-Version auf dem Server": "No launcher version on the server",
"Launcher automatisch aktualisieren": "Update the launcher automatically",
"Beim Start wird eine neue Launcher-Version gleich installiert (er startet von selbst neu)":
"When the launcher starts, a new launcher version is installed right away (it restarts by itself)",
"Neue BSO-Versionen beim Start des Launchers und vor jedem Spielstart installieren":
"Installs new BSO versions when the launcher starts and before every game start",
"Keine Beschreibung": "No description", "Noch keine Versionen veroeffentlicht.": "No versions published yet.",
// Einstellungen
"Spielordner waehlen": "Choose game folder", "Spielordner gespeichert": "Game folder saved", "Protokoll-Ordner oeffnen": "Open log folder",
"BSO deinstallieren": "Uninstall BSO", "BSO automatisch aktualisieren": "Update BSO automatically",
"Vor jedem Start die neueste Mod-Version installieren": "Install the newest mod version before every start",
"Launcher offen lassen": "Keep launcher open", "Sonst schliesst er sich nach dem Spielstart": "Otherwise it closes after the game starts",
"Spiel": "Game", "Version {0} · Server {1}": "Version {0} · Server {1}", "Sprache": "Language"
};
let lang = "de";
function t(de, ...args) {
let s = lang === "en" && EN[de] != null ? EN[de] : de;
args.forEach((a, i) => { s = s.split("{" + i + "}").join(String(a)); });
return s;
}
/** Feste Texte in index.html: data-t (Text), data-t-title (Tooltip), data-t-placeholder - Original bleibt in data-de. */
function translateStatic() {
document.querySelectorAll("[data-t]").forEach((el) => {
if (el.dataset.de == null) el.dataset.de = el.textContent;
el.textContent = t(el.dataset.de);
});
document.querySelectorAll("[data-t-title]").forEach((el) => {
el.title = t(el.dataset.tTitle);
el.setAttribute("aria-label", el.title);
});
document.documentElement.lang = lang;
}
/** Umschalter DE | EN (in jedes Element mit data-lang-switch). */
function renderLangSwitch(onChange) {
document.querySelectorAll("[data-lang-switch]").forEach((box) => {
box.replaceChildren(...["de", "en"].map((l) => {
const b = document.createElement("button");
b.type = "button";
b.textContent = l.toUpperCase();
b.className = l === lang ? "on" : "";
b.addEventListener("click", () => onChange(l));
return b;
}));
});
}