Перейти к содержимому

Localization

Localization возвращает перевод для текущего языка игры. API доступен только в клиентской Lua-части; в Reflex server.lua глобальный объект равен nil.

GetTranslation() только возвращает строку и ничего не выводит автоматически. Передайте результат в UI, ImGui, NotificationController или другой API отображения.

Система локализации сначала ищет ключ среди строк модуля и игровых терминов для выбранного языка. Если перевод модуля пуст, используется английская колонка; если ключ нигде не найден, API возвращает сам ключ. Результат — обычная строка, которую затем обрабатывает вызвавший её UI или другой API.

Файл лежит в корне модуля и использует точку с запятой как разделитель:

Keys;English (United States);Russian
PanelTitle;Status panel;Панель состояния
FallbackOnly;English fallback;

Первая колонка содержит ключи, остальные — названия языков и переводы. Кириллица в UTF-8 загружается корректно.

Localization:GetTranslation(term: string): string

Возвращает строку текущего языка:

local title = Localization:GetTranslation("PanelTitle")

Для примера выше результатом будет Status panel на английском и Панель состояния на русском.

Если ячейка текущего языка пуста, возвращается значение из English (United States):

local text = Localization:GetTranslation("FallbackOnly")
-- На русском: "English fallback"

Поэтому английскую колонку следует заполнять для каждого ключа.

Если ключ не найден, метод возвращает сам аргумент:

local text = Localization:GetTranslation("UnknownTerm")
-- "UnknownTerm"

Это позволяет безопасно показывать читаемый ключ, но опечатка не создаёт Lua-ошибку.

Метод ищет не только строки модуля, но и глобальные термины игры. На русском языке подтверждены, например:

Ключ Результат
Play Играть
Settings Настройки
Back Назад
Cancel Отмена
Buy Купить
Close Закрыть
local cancelText = Localization:GetTranslation("Cancel")

Получайте пользовательские строки при построении или обновлении интерфейса:

local Text = {
Title = Localization:GetTranslation("PanelTitle"),
Cancel = Localization:GetTranslation("Cancel")
}

Если язык может изменяться без перезапуска модуля, получите переводы повторно при обновлении интерфейса, а не храните их навсегда.

  • запятая вместо ; в localization.csv;
  • отсутствующая колонка English (United States) для fallback;
  • ожидание nil для неизвестного ключа — фактически возвращается сам ключ;
  • вызов Localization из server.lua.