Локализация

Создание переводов

Чтобы создать перевод, создайте папку i18n. В ней будут храниться переводы в файлах формата JSON.

Ниже приведены примеры переводов в файлах en.json и ru.json, которые соответствуют английскому и русскому языкам.

Cкриншот файловой структуры: видна часть списка папок «fronts», «i18n», «input» и «ysdk». В папке «i18n» лежат файлы «en.json» и «ru.json».

Теперь, стоит наполнить наши файлы каким-нибудь содержанием:

1{
2  "game": {
3    "title": "Cool Game"
4  },
5  "button": "Button"
6}
1{
2  "game": {
3    "title": "Крутая игра"
4  },
5  "button": "Кнопка"
6}

Получение переводов

Чтобы получить значение определенного ключа, вы можете воспользоваться методом i18n.localize(key).

print( i18n.key("game.title") ) -- "Cool Game"

Также существует вспомогательный метод i18n.gui(node_id, key), который заменяет содержимое выбранного узла в пользовательском интерфейсе.

С помощью i18n.gui() мы можем сократить:

gui.set_text(gui.get_node("Title Label"), i18n.key("game.title"))

До:

i18n.gui("title_label", "game.title")

Пример локализации игры

 1local i18n = require('ysdk.i18n')
 2
 3local function on_localize()
 4    i18n.gui("title_label", "game.title")
 5    i18n.gui("button_label", "game.title")
 6end
 7
 8function init(self)
 9    i18n.on(on_localize)
10end
11
12function final(self)
13    i18n.off(on_localize)
14end

В центре черного экрана надпись «Cool», чуть ниже белая кнопка с надписью «Button».

Смена языка переводов

Примечание

Модуль i18n самостоятельно инициализирует язык, соответствующий языку пользователя из переменных окружения.

Рекомендуется использовать данный метод только если хотите вручную изменить язык по желанию от пользователя.

Чтобы сменить язык перевода, вы можете воспользоваться методом i18n.set_language(code: string).

1function settings.change_language(code)
2    i18n.set_language(code)
3end

Примечание

Если при работе с плагином вы столкнулись с проблемой или у вас появился вопрос, обратитесь в сообщество в Телеграме.

Репозиторий
Предыдущая
Следующая