Module:MyTranslationModule/sandbox
Appearance
![]() | This is the module sandbox page for Module:MyTranslationModule (diff). |
local p = {}
-- Define which language codes are RTL (for future expansion)
local rtl_langs = {
ar = true, he = true, fa = true, ur = true,
ps = true, prs = true, syr = true, ckb = true,
}
-- Optional: check RTL if you ever switch to Langx or add dir styling
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
-- Builds a table cell using {{Lang|code|text}}, safely
local function lang_cell(code, text)
text = text or ""
code = code or ""
if code ~= "" then
return "| {{Lang|" .. code .. "|" .. text .. "}}"
else
return "| " .. text
end
end
function p.render(frame)
local args = frame:getParent().args
-- Language display names and codes
local lang1 = args["lang1"] or args[1]
local lang2 = args["lang2"] or args[2]
local code1 = args["lang1code"]
local code2 = args["lang2code"]
-- Safety check
if not lang1 or not lang2 then
return "Error: You must specify two language names."
end
if not code1 or not code2 then
return "Error: You must specify lang1code and lang2code."
end
local output = {}
table.insert(output, '{| class="wikitable sortable"')
table.insert(output, string.format("! %s !! %s", lang1, lang2))
-- Handle named parameters: text1/trans1
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(code1, text))
table.insert(output, lang_cell(code2, trans))
i = i + 1
end
-- Fallback: positional parameters starting from 3
local index = 3
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(code1, text))
table.insert(output, lang_cell(code2, trans))
index = index + 2
end
table.insert(output, "|}")
return table.concat(output, "\n")
end
return p