Salta ai contenuti

Lingue

Undici lingue sono fornite complete — ogni singola schermata, non solo i pulsanti — usando le stesse parole che usa un vero iPhone in ciascuna lingua. Qualsiasi traduzione mancante in una lingua ripiega sull’inglese stringa per stringa, così una traduzione lasciata a metà mostra quello che c’è invece di rompersi.

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

Questa è la lingua predefinita della città. Ogni giocatore può cambiarla per sé in Impostazioni → Generali → Lingua, e la sua scelta viene ricordata insieme al resto delle sue impostazioni.

Ogni giocatore legge la lingua che ha scelto, sia dentro che fuori dal telefono. Il telefono segue la scelta fatta nelle Impostazioni, e lo stesso fanno le frasi mostrate fuori dal telefono — “Nessun segnale qui.”, “Entrambe le mani sono occupate.”, l’arrivo di una nuova candidatura.

Config.Locale è la lingua usata per un giocatore che non ne ha mai scelta una, e per qualsiasi messaggio non rivolto a qualcuno in particolare.

Per la tua risorsa: LFor(source, text, ...) risponde nella lingua di quel giocatore, mentre L(text, ...) risponde in quella della città.

  • Date e orologio. “Samstag, 19. September”, “9月19日土曜日”, l’orologio a 24 ore dove la lingua lo prevede. Il denaro resta in $, nel modo in cui lo conta la città.
  • L’arabo si legge da destra a sinistra. L’intero schermo viene specchiato esattamente come su un iPhone in arabo: le righe iniziano a destra, la freccia indietro punta a destra. Due cose restano invariate in ogni lingua, proprio come su iPhone: il tastierino numerico e la calcolatrice. Gli importi, le date e i numeri all’interno di una frase in arabo mantengono il proprio ordine. Cifre occidentali e calendario gregoriano, come si legge su un telefono a Los Santos.
  • Conteggi e plurali. Il polacco, il russo e l’arabo hanno più forme plurali rispetto al semplice singolare/plurale, perciò i loro conteggi vengono mostrati come “Notatki: 4”, che risulta corretto per qualsiasi numero.

Una cartella, un file per lingua. C’è tutto lì dentro: le 2.400 stringhe dello schermo e la ventina di frasi mostrate fuori dal telefono — una notifica della città, il motivo per cui non si apre mentre sei in volo.

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

È un file Lua, quindi il server e il client lo caricano direttamente come script, senza analisi aggiuntive e senza conversioni. Il telefono legge lo stesso file e lo analizza, motivo per cui la struttura è rigorosa: un solo ["key"] = "value", per riga, e un commento è un commento. Rispetta questa forma e entrambe le parti vedranno le tue parole.

Ogni stringa fa da chiave a se stessa:

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

La chiave è il testo inglese, quindi una traduzione mancante mostra l’inglese anziché uno spazio vuoto o un codice. Le parentesi graffe racchiudono i valori inseriti dinamicamente dal telefono: mantienile e posizionale dove lo richiede la frase nella tua lingua, non necessariamente dove le metteva l’inglese. Un valore lasciato vuoto "" significa “mostra l’inglese”: è così che vengono scritti i nomi che non vanno mai tradotti (Instapic, Bean Machine, Los Santos).

Il telefono legge solo la lingua scelta dal giocatore, nel momento in cui la sceglie: non vengono caricati undici dizionari a ogni avvio per un telefono che ne mostra uno solo.

Apri il file della lingua, trova la riga e modifica il valore:

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

Riavvia la risorsa. Nient’altro fa riferimento a quella riga.

  1. Copia locales/en.lua in locales/<code>.lua — ad esempio nl.lua — e cambia Locales['en'] in Locales['nl'].
  2. Traduci i valori. Le chiavi non cambiano mai.
  3. Se il codice non è tra gli undici già presenti, aggiungilo all’elenco proposto dal selettore in html/core/onboarding.js: const languages=[['en','English','Hello'], … ,['nl','Nederlands','Hallo']]; — il codice, il nome nella lingua stessa e un saluto per la prima schermata.
  4. Imposta Config.Locale = 'nl', se vuoi che sia la lingua predefinita della città.

Il manifest include già tutti i file presenti in locales/, quindi non c’è nulla da registrare lì. Il selettore contrassegna una lingua che non ha ancora traduzioni come Mostrato in inglese per ora invece di nasconderla.