Zum Inhalt springen

Sprachen

Elf Sprachen werden vollständig mitgeliefert — jeder Bildschirm, nicht nur die Buttons — in den Formulierungen, die das iPhone in der jeweiligen Sprache verwendet. Alles, was in einer Sprache fehlt, fällt String für String auf Englisch zurück, sodass eine unvollständige Übersetzung das anzeigt, was vorhanden ist, anstatt abzustürzen.

CodeSpracheCodeSprache
enEnglishptPortuguês (Brasil)
esEspañolplPolski
frFrançaisruРусский
deDeutschtrTürkçe
itItalianoarالعربية — von rechts nach links
ja日本語
-- shared/config.lua
Config.Locale = 'en'

Das ist der Standardwert der Stadt. Jeder Spieler kann die Sprache für sich selbst unter Einstellungen → Allgemein → Sprache anpassen, und die Auswahl wird zusammen mit seinen übrigen Einstellungen gespeichert.

Jeder Spieler liest die von ihm gewählte Sprache, auf dem Telefon und außerhalb. Das Telefon folgt der Auswahl in den Einstellungen, ebenso wie die außerhalb des Telefons angezeigten Meldungen — “Hier kein Empfang.”, “Beide Hände sind voll.”, das Eintreffen einer neuen Bewerbung.

Config.Locale ist die Sprache für Spieler, die nie eine eigene gewählt haben, sowie für Meldungen, die an niemanden im Speziellen gerichtet sind.

Für eigene Ressourcen: LFor(source, text, ...) antwortet in der Sprache dieses Spielers, und L(text, ...) in der Sprache der Stadt.

  • Datumsformate und Uhrzeit. “Samstag, 19. September”, “9月19日土曜日”, die 24-Stunden-Uhr, wo die Sprache sie vorsieht. Geld bleibt in $, wie es die Stadt zählt.
  • Arabisch liest von rechts nach links. Der gesamte Bildschirm wird wie bei einem arabischen iPhone gespiegelt: Zeilen beginnen rechts, der Zurück-Pfeil zeigt nach rechts. Zwei Elemente bleiben in allen Sprachen wie gewohnt unverändert — Ziffernblock und Taschenrechner. Geldbeträge, Datumsangaben und Nummern in einem arabischen Satz behalten ihre Ziffernreihenfolge. Westliche Ziffern und der gregorianische Kalender, wie es einem Telefon in Los Santos entspricht.
  • Zählwörter und Mehrzahl. Polnisch, Russisch und Arabisch besitzen komplexere Pluralformen als Einzahl und Mehrzahl; deren Zähler lauten daher neutral “Notatki: 4” — passend für jede Zahl.

Ein Ordner, eine Datei pro Sprache. Darin liegt alles gebündelt: die 2.400 Strings auf dem Bildschirm und die zwei Dutzend Meldungen außerhalb des Telefons — Stadtbenachrichtigungen oder der Grund, warum sich das Telefon im freien Fall nicht öffnen lässt.

locales/en.lua
locales/es.lua
locales/fr.lua
…

Es ist eine Lua-Datei; Server und Client laden sie direkt als natives Skript ohne Parsing oder Konvertierung. Das Telefon liest dieselbe Datei ein und parst sie, weshalb das Format strikt vorgegeben ist: ein ["key"] = "value", pro Zeile, und ein Kommentar ist ein Kommentar. Halte dich an diese Form, damit beide Welten deine Texte verarbeiten können.

Ein String ist sein eigener Schlüssel:

Locales['es'] = {
["Verified account"] = "Cuenta verificada",
["The last {n} hours."] = "Las últimas {n} horas.",
}

Da der Schlüssel der englische Text ist, zeigt eine fehlende Übersetzung den englischen Text statt einer Lücke oder eines Fehlercodes. Geschweifte Klammern sind Platzhalter, die das Telefon dynamisch befüllt — behalte sie bei und platziere sie dort, wo der Satzbau deiner Sprache sie erfordert. Ein leerer Wert "" bedeutet “zeige das englische Original”: So werden Eigennamen gehandhabt, die nie übersetzt werden (Instapic, Bean Machine, Los Santos).

Das Telefon liest nur die Sprache ein, die ein Spieler wählt, und zwar erst beim Auswählen — es werden beim Start nicht elf Wörterbücher geladen, wenn nur eines angezeigt wird.

Öffne die Sprachdatei, suche die Zeile und ändere den Wert:

["Wallet"] = "Brieftasche", -- die rechte Seite ist das, was der Spieler liest

Starte die Ressource neu. Nichts anderes referenziert diesen Begriff.

  1. Kopiere locales/en.lua nach locales/<code>.lua — beispielsweise nl.lua — und ändere Locales['en'] zu Locales['nl'].
  2. Übersetze die Werte. Die Schlüssel bleiben stets unverändert.
  3. Falls der Sprachcode nicht zu den elf Standard-Sprachen gehört, füge ihn der Liste in html/core/onboarding.js hinzu: const languages=[['en','English','Hello'], … ,['nl','Nederlands','Hallo']]; — Sprachcode, Name in der Landessprache und Begrüßung für den Einrichtungsbildschirm.
  4. Config.Locale = 'nl', falls dies der Standard der Stadt werden soll.

Das Manifest bindet bereits alle Dateien in locales/ automatisch ein; es muss nichts registriert werden. Der Sprachwähler kennzeichnet eine Sprache ohne fertige Übersetzungen als Shown in English for now, anstatt sie zu verstecken.