Neueste Mod/Launcher-Version und Neuigkeiten kommen von git.mbm.wtf (bso-release.json mit Signatur), die Website ist nur noch Reserve (mit -dev zuerst). SPIELEN auf der Startseite startet ohne Server. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
93 lines
6.7 KiB
JavaScript
93 lines
6.7 KiB
JavaScript
"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",
|
||
"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
|
||
"Update verfügbar": "Update available", "Beim Start gefunden – jetzt aktualisieren?": "Found at startup – update now?",
|
||
"installiert: {0}": "installed: {0}", "Später": "Later", "BSO-Mod": "BSO mod",
|
||
"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;
|
||
}));
|
||
});
|
||
}
|