Module:languages៖ ភាពខុសគ្នារវាងកំណែនានា

ខ្លឹមសារដែលបានលុបចោល ខ្លឹមសារដែលបានសរសេរបន្ថែម
No edit summary
No edit summary
ស្លាក: កែ​សម្រួល​តាម​ទូរស័ព្ទ កំណែប្រែពីអ៊ីនធើណិតចល័ត Advanced mobile edit
បន្ទាត់ទី៦៖
it is likely the editor simply forgot to enter a language code. ]=]
 
function export.err(langCode, param, text, template_tag, not_real_lang)
local ordinals = {
"first", "second", "third", "fourth", }"fifth", "sixth",
"seventh", "eighth", "ninth", "tenth", "eleventh", "twelfth",
"thirteenth", "fourteenth", "fifteenth", "sixteenth", "seventeenth",
"eighteenth", "nineteenth", "twentieth"
}
text = text or "language code"
if not template_tag then
template_tag = ""
else
if type(template_tag) ~= "string" then
template_tag = template_tag()
end
template_tag = " (Original template: " .. template_tag .. ")"
end
local paramType = type(param)
if paramType == "number" then
Line ១៨ ⟶ ៣៣:
error("The parameter name is "
.. (paramType == "table" and "a table" or tostring(param))
.. ", but it should be a number or a string." .. template_tag, 2)
end
-- Can use string.find because language codes only contain ASCII.
if not langCode or langCode == "" then
error("The " .. param .. " (" .. (text or "language code") .. ") is missing." .. template_tag, 2)
elseif not_real_lang or langCode:find("^%l%l%l?$")
or langCode:find("^%l%l%l%-%l%l%l$")
or langCode:find("^%l%l%l%-%l%l%l%-%l%l%l$") then
error("The language" code.. text .. " \"" .. langCode .. "\" is not valid." .. template_tag, 2)
else
error("Please enter a " .. (text or.. "language codein the ") .. param .. ". inThe thevalue \"" .. paramlangCode .. "\" is not valid." .. template_tag, 2)
end
end
 
local function do_entry_name_or_sort_key_replacements(text, replacements)
if replacements.from then
for i, from in ipairs(replacements.from) do
local to = replacements.to[i] or ""
text = mw.ustring.gsub(text, from, to)
end
end
if replacements.remove_diacritics then
text = mw.ustring.toNFD(text)
text = mw.ustring.gsub(text,
'[' .. replacements.remove_diacritics .. ']',
'')
text = mw.ustring.toNFC(text)
end
return text
end
 
Line ៤៥ ⟶ ៧៩:
 
 
function Language:getOtherNames(onlyOtherNames)
return require("Module:language-like").getOtherNames(self, onlyOtherNames)
return self._rawData.otherNames or {}
end
 
 
function Language:getAliases()
return self._rawData.aliases or {}
end
 
 
function Language:getVarieties(flatten)
return require("Module:language-like").getVarieties(self, flatten)
end
 
Line ១៩៧ ⟶ ២៤១:
return name .. " language"
end
end
 
 
function Language:makeCategoryLink()
return "[[:Category:" .. self:getCategoryName() .. "|" .. self:getCanonicalName() .. "]]"
end
 
Line ២០៦ ⟶ ២៥៥:
 
function Language:makeEntryName(text)
text = mw.ustring.gsubmatch(text, "^[¿¡]",?(.-[^%s%p].-)%s*[؟?!;՛՜ "՞ ՟?!︖︕।॥။၊་།]?$") or text
text = mw.ustring.gsub(text, "(.)[؟?!;՛՜ ՞ ՟?!︖︕।॥။၊་།]$", "%1")
if self:getCode() == "ar" then
Line ២២២ ⟶ ២៧០:
if type(self._rawData.entry_name) == "table" then
fortext i= do_entry_name_or_sort_key_replacements(text, from in ipairs(self._rawData.entry_name.from) do
local to = self._rawData.entry_name.to[i] or ""
text = mw.ustring.gsub(text, from, to)
end
end
--[=[ For instance, ᾰ (alpha-breve) + combining smooth breathing is converted
to alpha + combining smooth breathing by the entry_name replacements.
It must be re-combined to alpha-smooth breathing (ἀ) so that
allowSelfLink in [[Module:links]] will work properly. ]=]
if self:getCode() == "grc" then
text = mw.ustring.toNFC(text)
end
Line ២៥៣ ⟶ ២៩០:
function Language:makeSortKey(name, sc)
if has_dotted_undotted_i[self:getCode()] then
name = mw.ustring.name:gsub(name, "I", "ı")
end
Line ២៦៤ ⟶ ៣០១:
-- If there are language-specific rules to generate the key, use those
if type(self._rawData.sort_key) == "table" then
forname i= do_entry_name_or_sort_key_replacements(name, from in ipairs(self._rawData.sort_key.from) do
local to = self._rawData.sort_key.to[i] or ""
name = mw.ustring.gsub(name, from, to)
end
elseif type(self._rawData.sort_key) == "string" then
name = require("Module:" .. self._rawData.sort_key).makeSortKey(name, self:getCode(), sc and sc:getCode())
Line ២៧៧ ⟶ ៣១១:
if has_dotted_undotted_i[self:getCode()] then
name = mw.ustring.name:gsub(name, "i", "İ")
end
Line ៣១៦ ⟶ ៣៥០:
function Language:toJSON()
local entryNamePatterns = nil
local entryNameRemoveDiacritics = nil
if self._rawData.entry_name then
entryNameRemoveDiacritics = self._rawData.entry_name.remove_diacritics
entryNamePatterns = {}
if self._rawData.entry_name.from then
entryNamePatterns = {}
for i, from in ipairs(self._rawData.entry_name.from) do
localfor toi, =from in ipairs(self._rawData.entry_name.to[i] orfrom) ""do
local to = self._rawData.entry_name.to[i] or ""
table.insert(entryNamePatterns, { from = from, to = to })
table.insert(entryNamePatterns, { from = from, to = to })
end
end
end
Line ៣៣២ ⟶ ៣៦៩:
code = self._code,
entryNamePatterns = entryNamePatterns,
entryNameRemoveDiacritics = entryNameRemoveDiacritics,
family = self._rawData[3] or self._rawData.family,
otherNames = self:getOtherNames(true),
aliases = self:getAliases(),
varieties = self:getVarieties(),
scripts = self._rawData.scripts,
type = self:getType(),
Line ៣៨៥ ⟶ ៤២៥:
 
 
function export.getByCode(code, paramForError, allowEtymLang, allowFamily)
if type(code) ~= "string" then
error("The function getByCode expects a string as its first argument, but received " .. (code == nil and "nil" or "a " .. type(code)) .. ".")
end
returnlocal retval = export.makeObject(code, getRawLanguageData(code))
if not retval and allowEtymLang then
retval = require("Module:etymology languages").getByCode(code)
end
if not retval and allowFamily then
retval = require("Module:families").getByCode(code)
end
if not retval and paramForError then
local codetext = nil
if allowEtymLang and allowFamily then
codetext = "language, etymology language or family code"
elseif allowEtymLang then
codetext = "language or etymology language code"
elseif allowFamily then
codetext = "language or family code"
else
codetext = "language code"
end
if paramForError == true then
error("The " .. codetext .. " \"" .. code .. "\" is not valid.")
else
export.err(code, paramForError, codetext)
end
end
return retval
end
 
 
function export.getByName(name, errorIfInvalid)
local byName = mw.loadData("Module:languages/by name")
local code = byName.all and byName.all[name] or byName[name]
if not code then
if errorIfInvalid then
return nil
error("The language name \"" .. name .. "\" is not valid.")
else
return nil
end
end
Line ៤០៥ ⟶ ៤៧៣:
end
 
function export.getByCanonicalName(name, errorIfInvalid, allowEtymLang, allowFamily)
 
function export.getByCanonicalName(name)
local byName = mw.loadData("Module:languages/canonical names")
local code = byName and byName[name]
 
local retval = code and export.makeObject(code, getRawLanguageData(code)) or nil
if not code then
if not retval and allowEtymLang then
return nil
retval = require("Module:etymology languages").getByCanonicalName(code)
end
if not retval and allowFamily then
retval = require("Module:families").getByCanonicalName(code)
return export.makeObject(code, getRawLanguageData(code))
end
if not retval and errorIfInvalid then
local text
if allowEtymLang and allowFamily then
text = "language, etymology language or family name"
elseif allowEtymLang then
text = "language or etymology language name"
elseif allowFamily then
text = "language or family name"
else
text = "language name"
end
error("The " .. text .. " \"" .. name .. "\" is not valid.")
end
return retval
end
 
 
function export.iterateAll()
Line ៤២៧ ⟶ ៥០៩:
return export.makeObject(code, data)
end
end
 
--[[ If language is an etymology language, iterates through parent languages
until it finds a non-etymology language. ]]
function export.getNonEtymological(lang)
while lang:getType() == "etymology language" do
local parentCode = lang:getParentCode()
lang = export.getByCode(parentCode)
or require("Module:etymology languages").getByCode(parentCode)
or require("Module:families").getByCode(parentCode)
end
return lang
end