本地化

创建翻译

要创建翻译,请创建一个 i18n 文件夹。其中将存储 JSON 格式的翻译文件。

例如,我们可以创建 en.json 和 ru.json 文件,分别对应英文和俄语。

文件结构截图:可见部分文件夹列表「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.key(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", "button")
 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

存储库
上一篇
下一篇