မေႃႇၵျူး:languages: လွင်ႈပႅၵ်ႇပိူင်ႈ ၼႂ်းၵႄႈ လွင်ႈၶူၼ်ႉၶႆႈ

Content deleted Content added
mNo edit summary
mNo edit summary
ထႅဝ် 1:
local export = {}
 
local find = mw.ustring.find
 
--[=[ This function checks for things that could plausibly be a language code:
Line 23 ⟶ 21:
end
--[[|Wp/shn/ Can't use "%l"string.find because thatlanguage wouldcodes includeonly allcontain UnicodeASCII.
lowercase letters; language codes only use ASCII. | Can't use "%l" because that would include all Unicode
lowercase letters; language codes only use ASCII. ]]
local lower = "[a-z]"
if not langCode or langCode == "" then
error("The " .. param .. " (" .. (text or "language code") .. ") is missing.", 2)
elseif langCode:find(langCode, "^" .. lower .. lower .. lower .. "%l%l%l?$")
or langCode:find("^%l%l%l%-%l%l%l$")
or find(langCode, "^" .. lower .. lower .. lower
or langCode:find("^%l%l%l%-%l%l%l%-%l%l%l$") then
.. "%-" .. lower .. lower .. lower .. "$")
or find(langCode, "^" .. lower .. lower .. lower
.. "%-" .. lower .. lower .. lower
.. "%-" .. lower .. lower .. lower .. "$") then
error("The language code \"" .. langCode .. "\" is not valid.", 2)
else
Line 50 ⟶ 41:
 
function Language:getCanonicalName()
return self._rawData[1] or self._rawData.canonicalName
end
 
Line 77 ⟶ 68:
return self._wikimediaLanguageObjects
end
 
 
function Language:getWikipediaArticle()
returnif self._rawData.wikipedia_article or mw.ustring.gsub(self:getCategoryName(), "Creole language", "Creole")then
return self._rawData.wikipedia_article
elseif self._wikipedia_article then
return self._wikipedia_article
elseif self:getWikidataItem() and mw.wikibase then
self._wikipedia_article = mw.wikibase.sitelink(self:getWikidataItem(), 'enwiki')
end
if not self._wikipedia_article then
self._wikipedia_article = mw.ustring.gsub(self:getCategoryName(), "Creole language", "Creole")
end
return self._wikipedia_article
end
 
 
 
function Language:makeWikipediaLink()
Line 89 ⟶ 87:
end
 
function Language:getWikidataItem()
return self._rawData[2] or self._rawData.wikidata_item
end
 
function Language:getScripts()
Line 108 ⟶ 109:
 
function Language:getFamily()
if self._rawData.family and not self._familyObject then
return self._familyObject = require("Module:families").getByCode(self._rawData.family)
end
local family = self._rawData[3] or self._rawData.family
if family then
self._familyObject = require("Module:families").getByCode(family)
end
Line 183 ⟶ 189:
 
function Language:getCategoryName()
local name = self._rawData.canonicalName:getCanonicalName()
-- If the name already has "language" in it, don't add it.
Line 189 ⟶ 195:
return name
else
return name .. " ၽႃႇသႃႇၶေႃႈၵႂၢမ်း"
end
end
Line 255 ⟶ 261:
local hyphens_regex = "^[-־ـ*]+(.)"
name = mw.ustring.gsub(name, hyphens_regex, "%1")
-- Remove parentheses, as long as they are either preceded or followed by something
name = mw.ustring.gsub(name, "(.)[()]+", "%1")
name = mw.ustring.gsub(name, "[()]+(.)", "%1")
-- If there are language-specific rules to generate the key, use those
Line 269 ⟶ 271:
name = require("Module:" .. self._rawData.sort_key).makeSortKey(name, self:getCode(), sc and sc:getCode())
end
-- Remove parentheses, as long as they are either preceded or followed by something
name = mw.ustring.gsub(name, "(.)[()]+", "%1")
name = mw.ustring.gsub(name, "[()]+(.)", "%1")
if has_dotted_undotted_i[self:getCode()] then
Line 326 ⟶ 332:
code = self._code,
entryNamePatterns = entryNamePatterns,
family = self._rawData[3] or self._rawData.family,
otherNames = self:getOtherNames(),
scripts = self._rawData.scripts,
type = self:getType(),
wikimediaLanguages = self._rawData.wikimedia_codes,
wikidataItem = self:getWikidataItem(),
}
Line 347 ⟶ 354:
 
function export.getDataModuleName(code)
if code:find("^[a-z][a-z]%l%l$") then
return "languages/data2"
elseif code:find("^[a-z][a-z][a-z]%l%l%l$") then
local prefix = code:sub(1, 1)
return "languages/data3/" .. prefix
elseif code:find("^[a-z%l-]+$") then
return "languages/datax"
else
ဢဝ်ၶိုၼ်းမႃးတီႈ "https://shn.wiktionary.org/wiki/မေႃႇၵျူး:languages"