Module:Translated

From Pandorabox
Jump to navigation Jump to search

--[[ This module is created as a proposal to partially replace the existing Template:Translated

Note on zh-*:
Certain language conversion tools for conversion between zh-hant and zh-hans appear to be quite reliable. However:
* I am not sure whether the use of such tools makes sense for this particular wiki.
* I am not sure which particular tool should be used. Currently I only know OpenCC (used for the l10n branch of advtrains) and the conversion tool used for zh.wikipedia.org
  * OpenCC does not provide a Lua API, and I don't think Scribunto allows loading C/C++ wrapper libraries. Therefore, it would involve a re-implementation.
  * I do not know whether the tool used on zh.wikipedia.org can be used on this wiki (note that zh.wikipedia.org is dedicated for a single language) or has a Lua API.
Further discussions can take place on the talk page.
- ywang
]]

-- List of languages to check localized pages for
local langlist = {
  de = "🇩🇪",
  ru = "🇷🇺",
  fr = "🇫🇷",
  es = "🇪🇸",
  -- I did not add the flags for zh-hans and zh-hant mainly for political reasons
  ["zh-hans"] = "",
  ["zh-hant"] = "",
}

local function main(frame)
  -- It is common for modules to have wrapper functions. In this case it can be (for example) {{#invoke:Translated|main|{{{pagename|{{NAMESPACE}}:{{BASEPAGENAME}}}}}}}, which should work in most cases.
  local pagename = frame.args.pagename or error("No page name supplied")
  local basestr = string.format([=[
{| class="wikitable"
|-
| '''Other languagues''' || 
[[%s|🇬🇧 English]]]=], pagename)
  local stringlist = {basestr}
  for lang, icon in pairs(langlist) do
    local title = mw.title.new(pagename .. "/" .. lang)
    if title.exists then -- WARNING: EXPENSIVE OPERATION
      stringlist[#stringlist+1] = string.format(" - [[%s/%s|%s %s]]", pagename, lang, icon, mw.language.fetchLanguageName(lang))
    end
  end
  stringlist[#stringlist+1] = "\n|}"
  return table.concat(stringlist)
end

return {main = main}