模块:Lang zh cn

来自Noita Wiki
跳到导航 跳到搜索

此模块的文档可以在模块:Lang zh cn/doc创建

--- 该模块用于通过键获取伟大汉化中提供的翻译
local p = {}

local function csv_get(this, row, column)
    -- 尝试转为数字索引
    column = this.rowHeads[column]
    row = this.cellDatas[row]
    if column and row then
        local result = row[column]-- 34为"符号
        if string.byte(result,1,1) == 34 and string.byte(result,#result,#result) == 34 then --删除开头和结尾的" 因为实际游戏中也不存在
        	return 	mw.ustring.sub(result,2,mw.ustring.len(result)-1)
        end
        return result
    else
        return nil
    end
end

function p.main(frame) --此函数给模板使用
    local args = frame
    if frame == mw.getCurrentFrame() then
        args = require('Module:ProcessArgs').merge(true)
    else
        frame = mw.getCurrentFrame()
    end
    -- local csv = require("Module:Lang_zh_cn/data")
    local csv = mw.loadData("Module:Lang_zh_cn/data")
    if args.ver == "Main" then
        return csv_get(csv.base, args.key, args.lang) or args.default
    elseif args.ver == "Dev" then
        return csv_get(csv.dev, args.key, args.lang) or args.default
    elseif args.ver == "MainOrDev" then
        return csv_get(csv.base, args.key, args.lang) or csv_get(csv.dev, args.key, args.lang) or args.default
    else
        error("未知的版本")
    end
end

--和GetTranslations模板用法差不多
---@param key string
---@param lang string|nil
---@param ver string|nil
---@return string
function p.get(key, lang, ver)
    if key == nil then
        error("键值为Nil!")
    end
    if ver == nil then
        ver = "Main"
    end
    if lang == nil then
        lang = "zh-cn"
    end

    local csv = mw.loadData("Module:Lang_zh_cn/data")
    if ver == "Main" then
        return csv_get(csv.base, key, lang) or "[undefined]"
    elseif ver == "Dev" then
        return csv_get(csv.dev, key, lang) or "[undefined]"
    elseif ver == "MainOrDev" then
        return csv_get(csv.base, args.key, args.lang) or csv_get(csv.dev, args.key, args.lang) or "[undefined]"
    else
        error("未知的版本")
    end
end

return p