Ir al contenido

Idiomas

Once idiomas vienen completos (todas las pantallas, no solo los botones) con las palabras que usa el propio iPhone de cada idioma. Lo que falte en un idioma vuelve al inglés string a string, así que una traducción a medias muestra lo que tiene en lugar de romperse.

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

Ese es el idioma por defecto de la ciudad. Cada jugador puede cambiarlo para sí mismo en Ajustes → General → Idioma, y su elección se recuerda junto con el resto de sus ajustes.

Cada jugador lee el idioma que ha elegido, dentro y fuera del teléfono. El teléfono sigue la elección de Ajustes, y también lo hacen las líneas que se muestran fuera del teléfono: “Aquí no hay señal.”, “Tienes las dos manos ocupadas.”, la llegada de una nueva solicitud.

Config.Locale es el idioma para un jugador que nunca ha elegido uno, y para todo lo que no se le dice a nadie en particular.

Para tu propio recurso: LFor(source, text, ...) responde en el idioma de ese jugador, y L(text, ...) en el de la ciudad.

Qué sigue al idioma además de las palabras

Sección titulada «Qué sigue al idioma además de las palabras»
  • Las fechas y el reloj. “Samstag, 19. September”, “9月19日土曜日”, el reloj de 24 horas donde el idioma lo usa. El dinero se queda en $, que es como lo cuenta la ciudad.
  • El árabe se lee de derecha a izquierda. Toda la pantalla se refleja como en un iPhone en árabe: las filas empiezan por la derecha, la flecha de atrás apunta a la derecha. Dos cosas se quedan como están en todos los idiomas, igual que en un iPhone: el teclado de marcación y la calculadora. Las cantidades, fechas y números dentro de una frase en árabe mantienen su orden. Dígitos occidentales y calendario gregoriano, como lee un teléfono en Los Santos.
  • Los recuentos. El polaco, el ruso y el árabe tienen más formas de plural que uno y muchos, así que sus recuentos se leen “Notatki: 4”, que es correcto para cualquier número.

Una carpeta, un archivo por idioma. Ahí está todo: los 2.400 strings de la pantalla y las dos docenas que se muestran fuera del teléfono, como una notificación de la ciudad o el motivo por el que no se abre en mitad de un salto.

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

Es un archivo Lua, así que el servidor y el cliente lo cargan como el script que es, sin parseo ni conversión. El teléfono lee el mismo archivo y lo parsea, y por eso el formato es estricto: un ["key"] = "value", por línea, y un comentario es un comentario. Respeta ese formato y las dos mitades verán tus palabras.

Un string es su propia clave:

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

La clave es el texto en inglés, así que una traducción que falta muestra el inglés en lugar de un hueco o un código. Las llaves son valores que rellena el teléfono: consérvalas, y ponlas donde las necesite la frase en lugar de donde las puso el inglés. Un valor que se deja como "" significa “muestra el inglés”: así se escriben los nombres que nunca se traducen (Instapic, Bean Machine, Los Santos).

El teléfono solo lee el idioma que elige un jugador, cuando lo elige: no se cargan once diccionarios en cada arranque para un teléfono que muestra uno.

Abre el archivo del idioma, busca la línea y cambia el valor:

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

Reinicia el recurso. No hay nada más que haga referencia a ello.

  1. Copia locales/en.lua a locales/<code>.lua (por ejemplo, nl.lua) y cambia Locales['en'] por Locales['nl'].
  2. Traduce los valores. Las claves no cambian nunca.
  3. Si el código no es uno de los once, añádelo a la lista que ofrece el selector, en html/core/onboarding.js: const languages=[['en','English','Hello'], … ,['nl','Nederlands','Hallo']];: el código, el nombre en su propio idioma y un saludo para la primera pantalla.
  4. Config.Locale = 'nl', si debe ser el idioma por defecto de la ciudad.

El manifest ya incluye todos los archivos de locales/, así que no hay nada que registrar. El selector marca un idioma que todavía no tiene palabras como Se muestra en inglés por ahora en lugar de ocultarlo.