最新消息

欢迎来到 AIMWARE中文网

立即加入我们以访问我们的所有功能。 注册并登录后,您将能够创建主题、发布对现有主题的回复、为您的其他成员提供声誉、获得您自己的私人信使等等。 快捷而且完全免费,你还在等什么?

最新帖子

AIMWARE多语言支持

中文网汉化组 AIMWARE多语言支持 2024.05.12

没有下载权限
关于:
脚本作者:
原帖链接:点击右侧更多信息
作者主页:点击右侧获取帮助
搬运汉化:An
详细注释:ChatGPT Plus

脚本说明:
此脚本用于修改界面语言,目前已支持CS2,L4D2,CSS,DODS
文件格式为.zip压缩包,内含一个Lua文件和语言文件夹,请一起放到AW根目录
鉴于CS2用户占据了大多数,所以本下载链接只包含了CS2的中文语言包
其他游戏请前往我的Github下载,点我传送

功能位置:
Settings-> Advanced->UI

截图预览:

AW-CS2界面汉化.png


源代码(如不能正常下载,可复制保存):
AW多语言支持:
--[[
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
      _     ___  __  __ __        __ _     ____   _____                         --
     / \   |_ _||  \/  |\ \      / // \   |  _ \ | ____|    ___  _ __           --
    / _ \   | | | |\/| | \ \ /\ / // _ \  | |_) ||  _|     / __|| '_ \          --
   / ___ \  | | | |  | |  \ V  V // ___ \ |  _ < | |___  _| (__ | | | |         --
  /_/   \_\|___||_|  |_|   \_/\_//_/   \_\|_| \_\|_____|(_)\___||_| |_|         --
                                                                                --
   ____                                      _   ____              _            --
  |  _ \  ___ __      __ ___  _ __  ___   __| | | __ )  _   _     / \    _ __   --
  | |_) |/ _ \\ \ /\ / // _ \| '__|/ _ \ / _` | |  _ \ | | | |   / _ \  | '_ \  --
  |  __/| (_) |\ V  V /|  __/| |  |  __/| (_| | | |_) || |_| |  / ___ \ | | | | --
  |_|    \___/  \_/\_/  \___||_|   \___| \__,_| |____/  \__, | /_/   \_\|_| |_| --
                                                        |___/                   --
----------------------------------------------------------------------------------
------------------------本脚本为AIMWARE.cn论坛免费汉化搬运--------------------------
----------------------------------------------------------------------------------
--]]

--[[
--AW多语言支持 原帖链接https://aimware.net/forum/thread/176632
--原作者:柒主页链接https://aimware.net/forum/user/366789
--搬运汉化:An
--详细注释:ChatGPT Plus
--]]


xpcall(function()
    -- 定义一个数据库表来存储语言数据和引用元素
    local db = {
        language = {}, -- 存储语言数据
        reference = {{}, {}, {}, {}, {}, {}, {}} -- 存储引用元素
    }

    -- 设置默认语言文件
    local default_language = "language/english.lua"

    -- 加载默认语言文件并将其插入语言数据库中
    table.insert(db.language, {
        name = "English",
        data = loadstring(file.Read(default_language))()
    })

    -- 遍历语言文件夹中的文件
    file.Enumerate(function(filename)
        -- 排除非语言文件和默认文件以及初始化文件
        if not filename:match("^language/.*%.lua$") or filename == default_language or filename == "language/init.lua" then
            return
        end

        -- 读取语言文件并插入语言数据库中
        table.insert(db.language, {
            name = filename:match("([^\\/]-%.lua)$"):sub(1, -5),
            data = loadstring(file.Read(filename))()
        })
    end)

    -- 获取菜单引用
    local menu_ref = gui.Reference("menu")

    -- 创建语言选择下拉框
    local language_ref = gui.Combobox(gui.Reference("settings", "advanced", "ui"), "language", "Language", (function()
        local t = {}
        for _, v in ipairs(db.language) do table.insert(t, v.name) end
        return unpack(t)
    end)())

    -- 设置语言选择下拉框描述
    language_ref:SetDescription("The language of the menu.")

    -- 递归获取菜单引用的子元素
    local function get_children(ref, level)
        if ref:GetName() ~= "" then table.insert(db.reference[level], {ref}) end
        for value in ref:Children() do get_children(value, level + 1) end
    end

    get_children(menu_ref, 0)

    -- 翻译函数,根据语言数据更新界面元素
    local function translate(language)
        for k1, v1 in pairs(language) do
            for k2, v2 in pairs(db.reference[k1]) do
                if v1[k2] then
                    v2[1]:SetName(v1[k2][1])
                    if v1[k2][2] and type(v1[k2][2]) == "string" then
                        v2[1]:SetDescription(v1[k2][2])
                    elseif v1[k2][2] and type(v1[k2][2]) == "table" then
                        local temp = {}
                        for i = 1, #v1[k2][2] - 1 do temp[i] = v1[k2][2][i] end
                        v2[1]:SetOptions(unpack(temp))
                        local description = v1[k2][2][#v1[k2][2]]
                        v2[1]:SetDescription(description ~= "" and description or nil)
                    end
                end
            end
        end
    end

    -- 设置语言函数,根据选择的语言更新界面元素
    local function set_translate(idx)
        local data = db.language[idx].data
        if not data then return end

        for k1, v1 in pairs(data) do
            for k2, _ in pairs(db.reference[k1]) do
                if not v1[k2] then error("Please check for updates") end
            end
        end
        translate(data)
    end

    set_translate(1)

    -- 注册回调函数,监听语言选择变化
    do
        local old_index
        callbacks.Register("Draw", function()
            local index = language_ref:GetValue()
            if not index or index == old_index then return end
            old_index = index
            set_translate(index + 1)
        end)
    end

    -- 重写gui.Reference函数,根据选择的语言更新界面元素
    do
        local gui_reference = gui.Reference
        gui.Reference = function(...)
            local index = language_ref:GetValue()
            if index == 0 then return gui_reference(...) end
            set_translate(1)
            return gui_reference(...), set_translate(index + 1)
        end

        -- 注册回调函数,监听脚本卸载事件
        callbacks.Register("Unload", function()
            set_translate(1)
            gui.Reference = gui_reference
        end)
    end
end, function(message)
    -- 输出错误信息并卸载脚本
    print(message)
    UnloadScript(GetScriptName())
end)
作者
An
下载
181
查看
3,462
首次发布
最后更新
评分
4.75 星 4 星

来自An的更多资源

最新评论

我一加载lua就闪退
界面汉化.lua:108: Please check for updates
界面汉化.lua:108: Please check for updates
界面汉化.lua:108: Please check for updates
界面汉化.lua:108: Please check for updates
An
An
请检查语言文件存放位置。目前一切正常
味大,无需多盐
优秀好人
顶部 底部