Przejdź do głównej zawartości

Języki

Jedenaście języków jest dostarczanych kompletnych — każdy ekran, a nie tylko przyciski — w słowach, których używa iPhone w danym języku. Wszystko, czego brakuje w danym języku, wraca do angielskiego tekst po tekście, więc niedokończone tłumaczenie pokazuje to, co ma, zamiast się psuć.

KodJęzykKodJęzyk
enEnglishptPortuguês (Brasil)
esEspañolplPolski
frFrançaisruРусский
deDeutschtrTürkçe
itItalianoarالعربية — od prawej do lewej
ja日本語
-- shared/config.lua
Config.Locale = 'en'

To domyślny język miasta. Każdy gracz może zmienić go dla siebie w Ustawienia → Ogólne → Język, a jego wybór jest zapamiętywany razem z resztą ustawień.

Każdy gracz czyta język, który wybrał, w telefonie i poza nim. Telefon podąża za wyborem w Ustawieniach, tak samo jak linijki pokazywane poza telefonem — “No signal here.”, “Both hands are busy.”, pojawienie się nowej aplikacji.

Config.Locale to język dla gracza, który nigdy go nie wybrał, i dla wszystkiego, co nie jest mówione nikomu konkretnemu.

Dla Twojego własnego zasobu: LFor(source, text, ...) odpowiada w języku danego gracza, a L(text, ...) w języku miasta.

  • Daty i zegar. “Samstag, 19. September”, “9月19日土曜日”, zegar 24-godzinny tam, gdzie język go używa. Pieniądze pozostają w $, tak jak liczy je miasto.
  • Arabski czyta się od prawej do lewej. Cały ekran jest odbity lustrzanie tak, jak na arabskim iPhonie: wiersze zaczynają się po prawej, strzałka wstecz wskazuje w prawo. Dwie rzeczy pozostają takie same we wszystkich językach, tak jak na iPhonie — klawiatura numeryczna i kalkulator. Kwoty, daty i liczby wewnątrz arabskiego zdania zachowują swoją kolejność. Cyfry zachodnie i kalendarz gregoriański, tak jak czyta telefon w Los Santos.
  • Liczby. Polski, rosyjski i arabski mają więcej form liczby mnogiej niż jedna i wiele, więc ich liczniki czytają się “Notatki: 4” — poprawnie dla dowolnej liczby.

Jeden folder, jeden plik na język. Wszystko jest w nim: 2400 tekstów na ekranie i dwa tuziny pokazywanych poza telefonem — powiadomienie od miasta, powód, dla którego nie otworzy się w powietrzu.

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

To plik Lua, więc serwer i klient ładują go jako skrypt, którym jest, bez parsowania i konwersji. Telefon czyta ten sam plik i go parsuje, dlatego jego kształt jest ścisły: jedno ["key"] = "value", na linijkę, a komentarz to komentarz. Trzymaj się tego kształtu, a obie połowy zobaczą Twoje słowa.

Tekst jest własnym kluczem:

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

Kluczem jest angielski tekst, więc brakujące tłumaczenie pokazuje angielski zamiast pustego pola lub kodu. Nawiasy klamrowe to wartości, które telefon uzupełnia — zachowaj je i umieść tam, gdzie potrzebuje ich zdanie, a nie tam, gdzie postawił je angielski. Wartość zostawiona jako "" oznacza “pokaż angielski”: tak zapisuje się nazwy, które nigdy się nie tłumaczą (Instapic, Bean Machine, Los Santos).

Telefon czyta tylko język, który gracz wybiera, i to w chwili wyboru — jedenaście słowników nie jest ładowanych przy każdym starcie dla telefonu, który pokazuje jeden.

Otwórz plik języka, znajdź linijkę, zmień wartość:

["Wallet"] = "Cartera", -- the right-hand side is what the player reads

Zrestartuj zasób. Nic innego się do tego nie odwołuje.

  1. Skopiuj locales/en.lua do locales/<code>.lua — na przykład nl.lua — i zmień Locales['en'] na Locales['nl'].
  2. Przetłumacz wartości. Klucze nigdy się nie zmieniają.
  3. Jeśli kod nie jest jednym z jedenastu, dodaj go do listy, którą oferuje wybierak, w html/core/onboarding.js: const languages=[['en','English','Hello'], … ,['nl','Nederlands','Hallo']]; — kod, nazwa w jego własnym języku i powitanie na pierwszy ekran.
  4. Config.Locale = 'nl', jeśli ma to być język domyślny miasta.

Manifest już dostarcza każdy plik z locales/, więc nie ma niczego do rejestrowania. Wybierak oznacza język, który nie ma jeszcze słów, jako Na razie wyświetlany po angielsku, zamiast go ukrywać.