Языки
Одиннадцать языков поставляются полностью — каждый экран, а не только кнопки, — теми словами, которыми пользуется собственный iPhone на этом языке. Всё, чего не хватает в языке, подставляется из английского строка за строкой, так что недоделанный перевод показывает то, что у него есть, а не ломается.
| Код | Язык | Код | Язык |
|---|---|---|---|
en | English | pt | Português (Brasil) |
es | Español | pl | Polski |
fr | Français | ru | Русский |
de | Deutsch | tr | Türkçe |
it | Italiano | ar | العربية — справа налево |
ja | 日本語 |
Выбор языка
Заголовок раздела «Выбор языка»-- shared/config.luaConfig.Locale = 'en'Это язык города по умолчанию. Каждый игрок может изменить его для себя в Настройки → Основные → Язык, и его выбор запоминается вместе с остальными настройками.
Кто какой язык читает
Заголовок раздела «Кто какой язык читает»Каждый игрок читает на языке, который выбрал, — и на телефоне, и вне его. Телефон следует выбору в Настройках, и то же делают строки, показываемые вне телефона, — «Здесь нет сигнала.», «Обе руки заняты.», появление нового приложения.
Config.Locale — это язык для игрока, который никогда ничего не выбирал, и для всего, что не адресовано никому конкретно.
Для вашего собственного ресурса: LFor(source, text, ...) отвечает на языке этого игрока, а L(text, ...) — на языке города.
Что ещё следует за языком, помимо слов
Заголовок раздела «Что ещё следует за языком, помимо слов»- Даты и часы. «Samstag, 19. September», «9月19日土曜日», 24-часовой формат там, где язык его использует. Деньги остаются в
$, как их считает город. - Арабский читается справа налево. Весь экран зеркально отражается так же, как на арабском iPhone: строки начинаются справа, стрелка «назад» указывает вправо. Две вещи остаются как есть на любом языке, как и на iPhone, — клавиатура набора номера и калькулятор. Суммы, даты и числа внутри арабского предложения сохраняют свой порядок. Западные цифры и григорианский календарь — так, как читает телефон в Лос-Сантосе.
- Количества. В польском, русском и арабском форм множественного числа больше, чем «один» и «много», поэтому их подсчёты читаются как «Notatki: 4» — верно для любого числа.
Где находятся слова
Заголовок раздела «Где находятся слова»Одна папка, один файл на язык. В нём всё: 2400 строк на экране и два десятка, показываемых вне телефона, — уведомление от города, причина, по которой он не открывается в воздухе.
locales/en.lualocales/es.lualocales/fr.lua…Это файл Lua, поэтому сервер и клиент загружают его как скрипт, которым он и является, без разбора и преобразования. Телефон читает тот же файл и разбирает его, поэтому формат строгий: один ["key"] = "value", на строку, а комментарий — это комментарий. Придерживайтесь этого формата — и обе половины увидят ваши слова.
Строка — это её же собственный ключ:
Locales['es'] = { ["Verified account"] = "Cuenta verificada", ["The last {n} hours."] = "Las últimas {n} horas.",}Ключ — это английский текст, поэтому отсутствующий перевод показывает английский, а не пустоту или код. Фигурные скобки — это значения, которые подставляет телефон: сохраняйте их и ставьте туда, где они нужны предложению, а не туда, где их поставил английский. Значение "" означает «показать английский»: именно так записываются названия, которые никогда не переводятся (Instapic, Bean Machine, Los Santos).
Телефон читает только тот язык, который выбирает игрок, и только в момент выбора — одиннадцать словарей не загружаются при каждом запуске ради телефона, который показывает один.
Как изменить слово
Заголовок раздела «Как изменить слово»Откройте файл языка, найдите строку, измените значение:
["Wallet"] = "Cartera", -- the right-hand side is what the player readsПерезапустите ресурс. Больше ничего на него не ссылается.
Как добавить язык
Заголовок раздела «Как добавить язык»- Скопируйте
locales/en.luaвlocales/<code>.lua— например,nl.lua, — и заменитеLocales['en']наLocales['nl']. - Переведите значения. Ключи никогда не меняются.
- Если кода нет среди одиннадцати, добавьте его в список, который предлагает выбор языка, в
html/core/onboarding.js:const languages=[['en','English','Hello'], … ,['nl','Nederlands','Hallo']];— код, название на собственном языке и приветствие для первого экрана. Config.Locale = 'nl', если он должен стать языком города по умолчанию.
Манифест уже поставляет все файлы из locales/, так что регистрировать ничего не нужно. Выбор отмечает язык, для которого ещё нет слов, как Пока показывается на английском, а не скрывает его.