İçeriğe geç

Diller

On bir dil eksiksiz gelir — sadece butonlar değil, her ekran — her dilin kendi iPhone’unun kullandığı kelimelerle. Bir dilde eksik olan her şey dize dize (string by string) İngilizceye döner; böylece yarım kalmış bir çeviri bozulmak yerine elindekini gösterir.

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

Bu şehrin varsayılanıdır. Her oyuncu bunu kendisi için Ayarlar → Genel → Dil bölümünden değiştirebilir ve seçimi diğer ayarlarıyla birlikte hatırlanır.

Her oyuncu seçtiği dili okur, telefonda da telefonun dışında da. Telefon Ayarlar’daki seçimi izler ve telefonun dışında gösterilen satırlar da öyle — “Burada sinyal yok.”, “İki elin de dolu.”, gelen yeni bir uygulama.

Config.Locale, hiç seçim yapmamış bir oyuncunun dili ve özel olarak kimseye söylenmeyen her şeyin dilidir.

Kendi kaynağınız için: LFor(source, text, ...) o oyuncunun dilinde, L(text, ...) ise şehrin dilinde cevap verir.

  • Tarihler ve saat. “Samstag, 19. September”, “9月19日土曜日”, dilin kullandığı yerde 24 saatlik saat. Para, şehrin saydığı gibi $ olarak kalır.
  • Arapça sağdan sola okunur. Tüm ekran, Arapça bir iPhone’daki gibi aynalanır: satırlar sağdan başlar, geri oku sağı gösterir. İki şey, bir iPhone’da olduğu gibi her dilde aynı kalır — tuş takımı ve hesap makinesi. Bir Arapça cümlenin içindeki tutarlar, tarihler ve sayılar sıralarını korur. Batı rakamları ve Gregoryen takvim, Los Santos’taki bir telefonun okuduğu gibi.
  • Sayılar. Lehçe, Rusça ve Arapça’nın bir ve çok’tan fazla çoğul biçimi vardır; bu yüzden sayıları “Notatki: 4” şeklinde okunur — her sayı için doğrudur.

Bir klasör, her dil için bir dosya. Her şey içindedir: ekrandaki 2.400 dize ve telefonun dışında gösterilen yirmi küsur dize — şehirden gelen bir bildirim, havada açılmamasının sebebi.

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

Bu bir Lua dosyasıdır, dolayısıyla sunucu ve istemci onu olduğu gibi bir script olarak yükler; ayrıştırma ve dönüştürme yoktur. Telefon aynı dosyayı okur ve ayrıştırır, şeklin katı olmasının sebebi budur: satır başına bir ["key"] = "value", ve bir yorum bir yorumdur. Bu şekle sadık kalın ve her iki yarı da kelimelerinizi görsün.

Bir dize kendi anahtarıdır:

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

Anahtar İngilizce metindir, böylece eksik bir çeviri boşluk ya da kod yerine İngilizceyi gösterir. Süslü parantezler telefonun doldurduğu değerlerdir — onları koruyun ve İngilizcenin koyduğu yere değil, cümlenin ihtiyaç duyduğu yere koyun. "" olarak bırakılan bir değer “İngilizceyi göster” demektir: asla çevrilmeyen isimler (Instapic, Bean Machine, Los Santos) böyle yazılır.

Telefon yalnızca bir oyuncunun seçtiği dili, seçtiği anda okur — tek dil gösteren bir telefon için her başlangıçta on bir sözlük yüklenmez.

Dilin dosyasını açın, satırı bulun, değeri değiştirin:

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

Kaynağı yeniden başlatın. Başka hiçbir şey ona başvurmaz.

  1. locales/en.lua dosyasını locales/<code>.lua olarak kopyalayın — örneğin nl.lua — ve Locales['en'] değerini Locales['nl'] yapın.
  2. Değerleri çevirin. Anahtarlar asla değişmez.
  3. Kod, on birden biri değilse, seçicinin sunduğu listeye html/core/onboarding.js içinde ekleyin: const languages=[['en','English','Hello'], … ,['nl','Nederlands','Hallo']]; — kod, kendi dilindeki adı ve ilk ekran için bir selamlama.
  4. Şehrin varsayılanı olacaksa Config.Locale = 'nl'.

Manifest locales/ içindeki her dosyayı zaten gönderir, yani kaydedilecek bir şey yok. Seçici henüz kelimesi olmayan bir dili gizlemek yerine Şimdilik İngilizce gösteriliyor diye işaretler.