Module:Wikimedia languages

local export = {}

local WikimediaLanguage = {}

function WikimediaLanguage:getCode return self._code end

function WikimediaLanguage:getCanonicalName return self._rawData.canonicalName end

--function WikimediaLanguage:getAllNames --	return self._rawData.names --end

function WikimediaLanguage:getType return "Wikimedia" end

function WikimediaLanguage:getWiktionaryLanguage if not self._wiktionaryLanguageObject then self._wiktionaryLanguageObject = require("Module:languages").getByCode(self._rawData.wiktionary_code) end return self._wiktionaryLanguageObject end

-- Do NOT use this method! -- All uses should be pre-approved on the talk page! function WikimediaLanguage:getRawData return self._rawData end

WikimediaLanguage.__index = WikimediaLanguage

function export.getByCode(code) -- Only accept codes the software recognises if not mw.language.isKnownLanguageTag(code) then return nil end local rawData = mw.loadData("Module:wikimedia languages/data")[code] -- If there is no specific Wikimedia code, then "borrow" the information -- from the general Wiktionary language code if not rawData then local lang = require("Module:languages").getByCode(code) if not lang then return nil end rawData = {canonicalName = lang:getCanonicalName, wiktionary_code = code} elseif not rawData.canonicalName then rawData = {canonicalName = require("Module:languages").getByCode(rawData.wiktionary_code):getCanonicalName, wiktionary_code = rawData.wiktionary_code} end return setmetatable({ _rawData = rawData, _code = code }, WikimediaLanguage) end

function export.getByCodeWithFallback(code) local object = export.getByCode(code) if object then return object end local lang = require("Module:languages").getByCode(code) if not lang then return nil end return lang:getWikimediaLanguages[1] end

return export