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

Локализация

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

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

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

i18n folder

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

en.json
{
"game": {
"title": "Cool Game"
},
"button": "Button"
}
ru.json
{
"game": {
"title": "Крутая игра"
},
"button": "Кнопка"
}

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

Чтобы получить значение определённого ключа, вы можете воспользоваться методом 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")

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

local i18n = require('ysdk.i18n')

local function on_localize()
i18n.gui("title_label", "game.title")
i18n.gui("button_label", "game.title")
end

function init(self)
i18n.on(on_localize)
end

function final(self)
i18n.off(on_localize)
end
i18n example

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

к сведению

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

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

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

function settings.change_language(code)
i18n.set_language(code)
end