Difference between revisions of "Module:Languages"

From Minetest Wiki
Jump to navigation Jump to search
m
m (Added support for subpage translation)
Line 21: Line 21:
 
function p._languages(frame, args)
 
function p._languages(frame, args)
 
     local titleObj = mw.title.getCurrentTitle()
 
     local titleObj = mw.title.getCurrentTitle()
 +
    local fullTitle = titleObj.text
 
     local title = args[1] or titleObj.nsText .. ":" .. titleObj.baseText
 
     local title = args[1] or titleObj.nsText .. ":" .. titleObj.baseText
     local currLang = titleObj.subpageText
+
     local titleLang = titleObj.subpageText
     if currLang == titleObj.text then
+
     if titleLang == fullTitle then
         currLang = "en"
+
        titleLang = "en"
 +
    end
 +
    local header = headers[titleLang]
 +
    if not header then
 +
         title = fullTitle
 +
        titleLang = "en"
 
     end
 
     end
    local header = headers[currLang] or "Language:"
 
 
     local text = "[[:" .. title .. "|English]]"
 
     local text = "[[:" .. title .. "|English]]"
 
     local translated = false
 
     local translated = false
 
     for lang, _ in pairs(headers) do
 
     for lang, _ in pairs(headers) do
         local langText = getLangText(frame, title, lang)
+
         if lang ~= "en" then
        if langText ~= "" then
+
            local langText = getLangText(frame, title, lang)
            text = text ..langText
+
            if langText ~= "" then
            translated = true
+
                text = text ..langText
 +
                translated = true
 +
            end
 
         end
 
         end
 
     end
 
     end

Revision as of 19:13, 12 April 2017

local p = {}

local HtmlBuilder = require("Module:HtmlBuilder") local getArgs = require("Module:Arguments").getArgs local headers = mw.loadData('Module:Languages/headers')

function p.languages(frame)

   local args = getArgs(frame, {inherited = true})
   return p._languages(frame, args)

end

local function getLangText(frame, title, lang)

   title = title .. "/" .. lang
   local parsedLang = mw.language.fetchLanguageName(lang)
   local bdi = HtmlBuilder.create("bdi")
       :attr("lang", lang)
       :wikitext("", parsedLang, "")
   return frame:preprocess("")

end

function p._languages(frame, args)

   local titleObj = mw.title.getCurrentTitle()
   local fullTitle = titleObj.text
   local title = args[1] or titleObj.nsText .. ":" .. titleObj.baseText
   local titleLang = titleObj.subpageText
   if titleLang == fullTitle then
       titleLang = "en"
   end
   local header = headers[titleLang]
   if not header then
       title = fullTitle
       titleLang = "en"
   end
   local text = "English"
   local translated = false
   for lang, _ in pairs(headers) do
       if lang ~= "en" then
           local langText = getLangText(frame, title, lang)
           if langText ~= "" then
               text = text ..langText
               translated = true
           end
       end
   end
   local nmbox = frame:expandTemplate{
       title = "nmbox",
       args = {
           image = "Languages",
           header = header,
           text = text
       }
   }
   local categories = ""
   if not translated then
       categories = categories .. ""
   end
   return nmbox .. categories

end

return p