Đ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.jsonru.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

Kho lưu trữ