模块:Namespace pagename

-- Simplified Namespace pagename
-- Returns the localized name of a MediaWiki namespace
-- Usage: {{#invoke:Namespace pagename|main|lang|namespace}}
local p = {}

local namespaces = {
    [0] = '条目',
    [1] = '讨论',
    [2] = '用户',
    [3] = '用户讨论',
    [4] = '中医百科',
    [5] = '中医百科讨论',
    [6] = '文件',
    [7] = '文件讨论',
    [8] = 'MediaWiki',
    [9] = 'MediaWiki讨论',
    [10] = '模板',
    [11] = '模板讨论',
    [12] = '帮助',
    [13] = '帮助讨论',
    [14] = '分类',
    [15] = '分类讨论',
    [106] = '表单',
    [107] = '表单讨论',
    [274] = 'Widget',
    [275] = 'Widget讨论',
    [828] = '模块',
    [829] = '模块讨论',
}

function p.main(frame)
    local args = frame.args
    local lang = (args[1] or ''):lower()
    local ns_id = tonumber(args[2]) or mw.title.getCurrentTitle().namespace

    -- Simplified Chinese
    if lang == '' or lang == 'zh-hans' or lang == 'zh-cn' or lang == 'zh-sg' or lang == 'zh-my' or lang == 'zh' then
        return namespaces[ns_id] or ('命名空间:' .. ns_id)
    end

    -- Traditional Chinese
    if lang == 'zh-hant' or lang == 'zh-tw' or lang == 'zh-hk' or lang == 'zh-mo' then
        local trad = {
            [0] = '條目', [1] = '討論', [2] = '用戶', [3] = '用戶討論',
            [4] = '中醫百科', [5] = '中醫百科討論',
            [6] = '檔案', [7] = '檔案討論',
            [10] = '模板', [11] = '模板討論',
            [14] = '分類', [15] = '分類討論',
            [828] = '模組', [829] = '模組討論',
        }
        return trad[ns_id] or namespaces[ns_id] or ('命名空間:' .. ns_id)
    end

    -- English fallback
    local eng = {
        [0] = 'Article', [1] = 'Talk', [2] = 'User', [3] = 'User talk',
        [4] = 'Project', [5] = 'Project talk', [6] = 'File', [7] = 'File talk',
        [8] = 'MediaWiki', [9] = 'MediaWiki talk', [10] = 'Template', [11] = 'Template talk',
        [12] = 'Help', [13] = 'Help talk', [14] = 'Category', [15] = 'Category talk',
        [106] = 'Form', [107] = 'Form talk',
        [274] = 'Widget', [275] = 'Widget talk',
        [828] = 'Module', [829] = 'Module talk',
    }
    return eng[ns_id] or ('Namespace:' .. ns_id)
end

return p