欢迎大家来到沙石镇时光中文维基!本站编辑权限开放,欢迎加入中文维基 QQ 群「沙海时光」:372816689
目前正在进行全站数据更新,期间可能会存在显示异常的问题。

全站通知:

模块:TextMgr

来自沙石镇时光维基
跳到导航 跳到搜索

此模块的文档可以在模块:TextMgr/doc创建

local Helper = require("Module:Helper")
local AssetItemChinese = Helper.LoadAsset("Module:AssetItemChinese")
local AssetItemEnglish = Helper.LoadAsset("Module:AssetItemEnglish")

local p = {}

-- Function to find ID by text value in chunked assets
function p.findIdByText(assetModule, targetText)
    -- We need to manually check each chunk
    local assetInfo = require(assetModule)
    
    for _, chunk in ipairs(assetInfo.chunks) do
        local chunkData = Helper.LoadAsset('Module:' .. chunk.name)
        
        -- Search through this chunk
        for id, text in pairs(chunkData) do
            if text == targetText then
                return id
            end
        end
    end
    
    return ''
end

-- Get Chinese text by ID
function p.getChineseText(id)
    if (AssetItemChinese[id]) then
        return AssetItemChinese[id]
    end
    return id
end

-- MediaWiki invoke version - Get Chinese text by ID
function p.getChineseTextInvoke(frame)
    local id = tonumber(frame.args[1]) or 1
    return p.getChineseText(id)
end

-- Get English text by ID
function p.getEnglishText(id)
    if (AssetItemEnglish[id]) then
        return AssetItemEnglish[id]
    end
    return id
end

-- MediaWiki invoke version - Get English text by ID
function p.getEnglishTextInvoke(frame)
    local id = tonumber(frame.args[1]) or 1
    return p.getEnglishText(id)
end

function p.findIdByChineseText(chineseText)
    return p.findIdByText('Module:AssetItemChinese', chineseText)
end

-- MediaWiki invoke version - Get ID by Chinese text
function p.findIdByChineseTextInvoke(frame)
    local chineseText = frame.args[1]
    return p.findIdByChineseText(chineseText)
end

function p.findIdByEnglishText(englishText)
    return p.findIdByText('Module:AssetItemEnglish', englishText)
end

-- MediaWiki invoke version - Get ID by English text
function p.findIdByEnglishTextInvoke(frame)
    local englishText = frame.args[1]
    return p.findIdByEnglishText(englishText)
end

-- Get English text by Chinese text
function p.translateChineseToEnglish(chineseText)
    local id = p.findIdByChineseText(chineseText)
    if id ~= '' then
        return p.getEnglishText(id)
    end
    return chineseText
end

-- MediaWiki invoke version - Get English text by Chinese text
function p.translateChineseToEnglishInvoke(frame)
    local chineseText = frame.args[1]
    return p.translateChineseToEnglish(chineseText)
end

-- Get Chinese text by English text
function p.translateEnglishToChinese(englishText)
    local id = p.findIdByEnglishText(englishText)
    if id ~= '' then
        return p.getChineseText(id)
    end
    return englishText
end

-- MediaWiki invoke version - Get Chinese text by English text
function p.translateEnglishToChineseInvoke(frame)
    local englishText = frame.args[1]
    return p.translateEnglishToChinese(englishText)
end

return p