关于:
脚本作者:柒
原帖链接:点击右侧更多信息
作者主页:点击右侧获取帮助
搬运汉化:An
详细注释:ChatGPT Plus
脚本说明:
此脚本用于修改界面语言,目前已支持CS2,L4D2,CSS,DODS
文件格式为.zip压缩包,内含一个Lua文件和语言文件夹,请一起放到AW根目录
鉴于CS2用户占据了大多数,所以本下载链接只包含了CS2的中文语言包
其他游戏请前往我的Github下载,点我传送
功能位置:
Settings-> Advanced->UI
截图预览:
源代码(如不能正常下载,可复制保存):
脚本作者:柒
原帖链接:点击右侧更多信息
作者主页:点击右侧获取帮助
搬运汉化:An
详细注释:ChatGPT Plus
脚本说明:
此脚本用于修改界面语言,目前已支持CS2,L4D2,CSS,DODS
文件格式为.zip压缩包,内含一个Lua文件和语言文件夹,请一起放到AW根目录
鉴于CS2用户占据了大多数,所以本下载链接只包含了CS2的中文语言包
其他游戏请前往我的Github下载,点我传送
功能位置:
Settings-> Advanced->UI
截图预览:
源代码(如不能正常下载,可复制保存):
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)