Module:MyTranslationModule and Module:MyTranslationModule/sandbox: Difference between pages

(Difference between pages)
Jump to navigation Jump to search
Page 1
Page 2
imported>Anohthterwikipedian
fixed double redirect as per Special:Diff/1299423968
 
imported>Gommeh
No edit summary
 
Line 1: Line 1:
return require [[Module:TableTranslation]]
local p = {}
 
-- Optional: RTL language codes for future Langx handling
local rtl_langs = {
    ar = true, he = true, fa = true, ur = true,
    ps = true, prs = true, syr = true, ckb = true,
}
 
local function is_rtl(code)
    if not code then return false end
    code = mw.ustring.lower(mw.text.trim(code))
    return rtl_langs[code] or false
end
 
-- Helper: Build a rendered Lang template cell using frame:preprocess()
local function lang_cell(frame, code, text)
    code = code or ""
    text = text or ""
    if code ~= "" then
        return "| " .. frame:preprocess("{{Lang|" .. code .. "|" .. text .. "|italic=unset}}")
    else
        return "| " .. text
    end
end
 
function p.render(frame)
    local args = frame:getParent().args
 
    local code1 = args["lang1code"]
    local code2 = args["lang2code"]
 
    if not code1 or not code2 then
        return "Error: Please provide both lang1code and lang2code."
    end
 
    -- Fetch display names using {{ISO 639 name|code}}
    local lang1 = frame:expandTemplate{ title = "ISO 639 name", args = { code1 } }
    local lang2 = frame:expandTemplate{ title = "ISO 639 name", args = { code2 } }
 
    local output = {}
    table.insert(output, '{| class="wikitable sortable"')
    table.insert(output, string.format("! %s !! %s", lang1, lang2))
 
    -- Named parameter loop: text1/trans1, text2/trans2, etc.
    local i = 1
    while true do
        local text = args["text" .. i]
        local trans = args["trans" .. i]
        if not text and not trans then break end
        table.insert(output, "|-")
        table.insert(output, lang_cell(frame, code1, text))
        table.insert(output, lang_cell(frame, code2, trans))
        i = i + 1
    end
 
    -- Positional fallback: |text|trans|text|trans|...
    local index = 1
    while true do
        local text = args[index]
        local trans = args[index + 1]
        if not text and not trans then break end
        table.insert(output, "|-")
        table.insert(output, lang_cell(frame, code1, text))
        table.insert(output, lang_cell(frame, code2, trans))
        index = index + 2
    end
 
    table.insert(output, "|}")
    return table.concat(output, "\n")
end
 
return p