Đa ngôn ngữ hóa
Tạo bản dịch
Trước tiên, hãy tạo thư mục i18n
, nơi lưu trữ các tệp định dạng JSON chứa nội dung bản dịch của bạn.
Ví dụ, chúng ta sẽ tạo các tệp en.json
và ru.json
, tương ứng với tiếng Anh và tiếng Nga.
Giờ hãy thêm nội dung vào các tệp này:
{
"game": {
"title": "Cool Game"
},
"button": "Button"
}
{
"game": {
"title": "Крутая игра"
},
"button": "Кнопка"
}
Lấy bản dịch
Để lấy giá trị của một khóa cụ thể, bạn có thể sử dụng phương thức i18n.localize(key)
.
print( i18n.key("game.title") ) -- "Cool Game"
Ngoài ra còn có phương thức hỗ trợ i18n.gui(node_id, key)
, dùng để thay thế nội dung của một nút đã chọn trong giao diện người dùng.
Với i18n.gui()
, chúng ta có thể rút ngắn:
gui.set_text(gui.get_node("Title Label"), i18n.key("game.title"))
Trước:
i18n.gui("title_label", "game.title")
Ví dụ về việc bản địa hóa trò chơi
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
Thay đổi ngôn ngữ bản dịch
Ghi chú
Module i18n sẽ tự động khởi tạo ngôn ngữ phù hợp với ngôn ngữ của người dùng lấy từ biến môi trường.
Bạn chỉ nên sử dụng phương pháp này nếu muốn thay đổi ngôn ngữ thủ công theo mong muốn của người dùng.
Để thay đổi ngôn ngữ bản dịch, bạn có thể dùng phương thức i18n.set_language(code: string)
.
function settings.change_language(code)
i18n.set_language(code)
end