Module:MyTranslationModule and Module:MyTranslationModule/sandbox: Difference between pages
(Difference between pages)
imported>Anohthterwikipedian fixed double redirect as per Special:Diff/1299423968 |
imported>Gommeh No edit summary |
||
| Line 1: | Line 1: | ||
return | 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 | |||