وحدة:wikimedia languages
يمكن إنشاء صفحة توثيق الوحدة في وحدة: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