Jump to content
ⵓⵎⵓⵖ ⴰⴷⵙⵍⴰⵏ
ⵓⵎⵓⵖ ⴰⴷⵙⵍⴰⵏ
move to sidebar
ⵙⵙⵏⵜⵍ
ⴰⵙⵙⴰⵔⴰ
ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ
ⴰⵡⵡⵓⵔ ⵏ ⵜⴳⵔⴰⵡⵜ
ⵉⵙⵏⴼⵍⵏ ⵉⵎⴳⴳⵓⵔⴰ
ⵜⴰⵙⵏⴰ ⵜⴰⴷⵀⵎⴰⵙⵜ
ⵜⵉⵡⵉⵙⵉ
ⵜⴰⵙⵏⵉⵡⵉⵏ ⵥⵍⵉⵏⵉⵏ
ⵙⵉⴳⴳⵍ
ⵔⵣⵓ
ⵜⵉⴼⵔⴰⵙ
ⴼⴽ ⵉⴷⵔⵉⵎⵏ
ⵙⵏⵓⵍⴼⵓ ⴰⵎⵉⴹⴰⵏ
ⴽⵛⵎ
ⵉⵎⴰⵙⵙⵏ ⵓⴷⵎⴰⵡⴰⵏⵏ
ⴼⴽ ⵉⴷⵔⵉⵎⵏ
ⵙⵏⵓⵍⴼⵓ ⴰⵎⵉⴹⴰⵏ
ⴽⵛⵎ
ⴰⵙⵏⴼⵍ ⵏ
Module
:
Language
ⵔⵏⵓ ⵜⵓⵜⵍⴰⵢⵉⵏ
Module
ⴰⵎⵙⴳⴷⴰⵍ
English
ⵖⵔ
ⵙⵏⴼⵍ ⴰⵙⴰⴳⵎ
ⵥⵕ ⴰⵎⵣⵔⵓⵢ
ⵉⵎⴰⵙⵙⵏ
ⵉⵎⴰⵙⵙⵏ
move to sidebar
ⵙⵙⵏⵜⵍ
ⵜⵉⴳⴰⵡⵉⵏ
ⵖⵔ
ⵙⵏⴼⵍ ⴰⵙⴰⴳⵎ
ⵥⵕ ⴰⵎⵣⵔⵓⵢ
ⴰⵎⴰⵜⴰⵢ
ⵎⴰⵢⴷ ⵉⵇⵇⵏⵏ ⵙ ⴷⴰ
ⵉⵙⵏⴼⵍⵏ ⵇⵇⵏⵏⵉⵏ
ⵙⴽⵜⵔ ⴰⴼⴰⵢⵍⵓ
ⵓⵎⵍⴰⵏ ⵖⴼ ⵜⴰⵙⵏⴰ
ⵟⵟⴼ URL ⵓⴳⵣⵉⵍ
Switch to legacy parser
ⴳ ⵉⵙⵏⴼⴰⵔⵏ ⵢⴰⴹⵏ
ⵜⵉⴼⵔⴰⵙ
move to sidebar
ⵙⵙⵏⵜⵍ
Warning:
You are not logged in. Once you make an edit, a temporary account will be created for you.
Learn more
.
Log in
or
create an account
to continue receiving notifications after this account expires, and to access other features.
ⵜⵉⵎⵏⵥⵉⵜ ⵎⴳⵍ-ⴳⴰⵔⴰⵙⵎⵔⴰⵔⴰ. ⴰⴷ
ⵓⵔ
ⵜⵣⵎⵎⴻⵎⴷ ⴰⵎⵢⴰ ⴳ ⵖⵉ!
require('Module:No globals') local m_data = mw.loadData("Module:Language/data") local langData = m_data.languages or m_data local p = {} local function checkForString(variable) return variable ~= "" and variable ~= nil end local function makeLinkedName(languageCode) local data = langData[languageCode] local article = data["article"] local name = data["Wikipedia_name"] or data["name"] return "[[" .. article .. "|" .. name .. "]]: " end local function makeEntryName(word, languageCode) local data = langData[languageCode] local ugsub = mw.ustring.gsub word = tostring(word) if word == nil then error("The function makeEntryName requires a string argument") elseif word == "" then return "" else -- Remove bold and italics, so that words that contain bolding or emphasis can be linked without piping. word = word:gsub("\'\'\'", "") word = word:gsub("\'\'", "") if data == nil then return word else local replacements = data and data["replacements"] if replacements == nil then return word else for regex, replacement in pairs(replacements) do word = ugsub(word, regex, replacement) end return word end end end end local function fixScriptCode(firstLetter, threeLetters) return string.upper(firstLetter) .. string.lower(threeLetters) end local function getCodes(codes, text) local languageCode, scriptCode, invalidCode local errorText if codes == nil or codes == "" then errorText = 'no language or script code provided' -- Private-use subtag: x followed by one or more sequences of 1-8 lowercase -- letters separated by hyphens. This only allows for one sequence, as it is -- needed for proto-languages such as ine-x-proto (Proto-Indo-European). elseif codes:find("^%s*%a%a%a?%-x%-%a%a?%a?%a?%a?%a?%a?%a?$") then languageCode, scriptCode = codes:match("^%s*(%a%a%a%-x%-%a%a?%a?%a?%a?%a?%a?%a?)%-?(.*)$") if not languageCode then errorText = '<code>'..codes..'</code> is not a valid language or script code.' elseif scriptCode ~= "" and not scriptCode:find("%a%a%a%a") then errorText = '<code>'..scriptCode..'</code> is not a valid script code.' else scriptCode = scriptCode:gsub( "(%a)(%a%a%a)", fixScriptCode, 1 ) end elseif codes:find("^%s*%a%a%a?%s*$") or codes:find("^%s*%a%a%a?%-%a%a%a%a%s*$") then -- A three- or two-letter lowercase sequence at beginning of first parameter languageCode = codes:find("^%s*%a%a%a?") and ( codes:match("^%s*(%l%l%l?)") or codes:match("^%s*(%a%a%a?)") :gsub("(%a%a%a?)", string.lower, 1) ) -- One uppercase and three lowercase letters at the end of the first parameter scriptCode = codes:find("%a%a%a%a%s*$") and ( codes:match("(%u%l%l%l)%s*$") or gsub( codes:match("(%a%a%a%a)%s*$"), "(%a)(%a%a%a)", fixScriptCode, 1 ) ) elseif codes:find("^%s*%a%a%a%-%a%a%a$") then languageCode = codes:match("^%s*%l%l%l%-%l%l%l$") and codes:match("^%s*%l%l%l%-%l%l%l$") or codes:match("^%s*%a%a%a%-%a%a%a$"):gsub("(%a%a%a?)", string.lower, 1) elseif codes:find("^%s*%a%a%a?") then languageCode, invalidCode = codes:match("^%s*(%a%a%a?)%-?(.*)") languageCode = string.lower(languageCode) errorText = '<code>'..invalidCode..'</code> is not a valid script code.' elseif codes:find("%-?%a%a%a%a%s*$") then invalidCode, scriptCode = codes:match("(.*)%-?(%a%a%a%a)%s*$") scriptCode = gsub( scriptCode, "(%a)(%a%a%a)", fixScriptCode ) errorText = '<code>'..invalidCode..'</code> is not a valid language code.' else errorText = '<code>'..codes..'</code> is not a valid language or script code.' end if not scriptCode or scriptCode == "" then scriptCode = require("Module:Language/scripts").isLatn(text) and "Latn" or "unknown" end if errorText then errorText = ' <span style="font-size: smaller">[' .. errorText .. ']</span>' else errorText = "" end languageCode = m_data.redirects[languageCode] or languageCode return languageCode, scriptCode, errorText end local function tag(text, languageCode, script, italics) local data = langData[languageCode] languageCode = data and data.Wikipedia_code or languageCode local italicize = script == "Latn" and italics if not text then text = "[text?]" end local textDirectionMarkers = { "", "", "" } if data and data["direction"] == "rtl" then textDirectionMarkers = { ' dir="rtl"', '‏', '‎' } end local out = { textDirectionMarkers[2] } if italicize then table.insert(out, "<i lang=\"" .. languageCode .. "\" xml:lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</i>") else table.insert(out, "<span lang=\"" .. languageCode .. "\" xml:lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</span>") end table.insert(out, textDirectionMarkers[3]) return table.concat(out) end function p.lang(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] local text = args[2] or error("Provide text in the second parameter") local languageCode, scriptCode, errorText = getCodes(codes, text) local italics = args.italics or args.i italics = not (italics == "n" or italics == "-") return tag(text, languageCode, scriptCode, italics) .. errorText end local function linkToWiktionary(entry, linkText, languageCode) local data = langData[languageCode] local name if languageCode then if data and data.name then name = data.name elseif mw.language.fetchLanguageName(languageCode, 'en') ~= "" then -- On other languages' wikis, use mw.getContentLanguage():getCode(), or replace with that wiki's language code. name = mw.language.fetchLanguageName(languageCode, 'en') else error("No name for the language " .. ("%q"):format(languageCode or nil) .. " could be found") end if entry:sub(1, 1) == "*" then if name ~= "" then entry = "Reconstruction:" .. name .. "/" .. entry:sub(2) else error("Language name is empty") end end if entry and linkText then return "[[wikt:" .. entry .. "#" .. name .. "|" .. linkText .. "]]" else error("linkToWiktionary needs a Wiktionary entry or link text, or both") end else return "[[wikt:" .. entry .. "|" .. linkText .. "]]" end end function p.wiktlang(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] or nil local word1 = args[2] or nil local word2 = args[3] or nil local languageCode, scriptCode, errorText = getCodes(codes, word1) local italics = args.italics or args.i italics = not (italics == "n" or italics == "-") local entry, linkText if checkForString(word2) and checkForString(word1) then entry = makeEntryName(word1, languageCode) linkText = word2 elseif checkForString(word1) then entry = makeEntryName(word1, languageCode) linkText = word1 end local out if languageCode and entry and linkText then out = tag(linkToWiktionary(entry, linkText, languageCode), languageCode, scriptCode, italics) elseif entry and linkText then out = linkToWiktionary(entry, linkText) else out = '<span style="font-size: smaller;">[text?]</span>' end if out and errorText then return out .. errorText else return errorText or error("The function wiktlang generated nothing") end end function p.wikt(frame) local parent = frame:getParent() local args = parent.args[1] and parent.args or frame.args local codes = args[1] or nil local word1 = args[2] or nil local word2 = args[3] or nil if not word1 then error("Provide a word in parameter 2.") end local languageCode, scriptCode, errorText = getCodes(codes, word1) local entry, linkText if checkForString(word2) and checkForString(word1) then entry = makeEntryName(word1, languageCode) linkText = word2 elseif checkForString(word1) then entry = makeEntryName(word1, languageCode) linkText = word1 end local out if languageCode and entry and linkText then out = linkToWiktionary(entry, linkText, languageCode) elseif entry and linkText then out = linkToWiktionary(entry, linkText) else out = '<span style="font-size: smaller;">[text?]</span>' end if out and errorText then return out and out .. errorText else return errorText or error("The function wikt generated nothing") end end return p
ⴰⵙⴳⵣⵍ:
ⵙ ⵓⵃⵟⵟⵓ ⵏ ⵉⵙⵏⴼⴰⵍ, ⵜⵎⵙⴰⵙⴰⴷ ⵖⴼ
ⵜⴼⴰⴷⵉⵡⵉⵏ ⵏ ⵓⵙⵙⵎⵔ
, ⴷ ⵜⵎⵙⴰⵙⴰⴷ ⵙ ⵓⴳⵉⵔⴰⵏ ⴰⴷ ⵜⵕⵥⵎⴷ ⵉ ⵡⴰⵔⵔⴰⴳⵏ ⵏⵏⵎ ⴷⴷⴰⵡ
ⵜⵓⵔⴰⴳⵜ ⵏ CC BY-SA 4.0
ⴷ
GFDL
. ⵜⵎⵙⴰⵙⴰⴷ ⵎⴰⵙ ⴷ ⴽⵔⴰ ⵏ ⵓⵙⵖⵏ ⵏⵖ URL ⵉⴳⴰ ⴰⴱⴷⴰⵔ ⵢⵓⴷⴰⵏ ⴷⴷⴰⵡ ⵜⵓⵔⴰⴳⵜ ⵏ ⴽⵔⵉⵢⴰⵜⵉⴼ ⴽⴰⵎⵏⵣ.
This site is protected by hCaptcha and its
Privacy Policy
and
Terms of Service
apply.
JavaScript is required to continue. Turn on JavaScript in your browser settings and refresh the page.
ⴼⵙⵔ ⵉⵙⵏⴼⴰⵍ
ⵙⵎⴰⵍ ⵉⵙⵏⴼⴰⵍ
ⵙⵙⵔ
ⵜⵉⵡⵉⵙⵉ ⵏ ⵓⵙⵏⴼⵍ
(ⴰⴷ ⵉⵏⵏⵓⵔⵥⵎ ⴳ ⵓⵙⴽⵙⵍ ⴰⵎⴰⵢⵏⵓ)
Preview page with this template
ⵜⴰⵙⵏⴰ ⵜⵍⵍⴰ ⴳ ⵜⴰⵙⵏⴰ ⴰⴷ:
Module:Language/doc
(
ⵙⵏⴼⵍ
)
ⵙⵉⴳⴳⵍ
ⵔⵣⵓ
ⴰⵙⵏⴼⵍ ⵏ
Module
:
Language
ⵔⵏⵓ ⵜⵓⵜⵍⴰⵢⵉⵏ
ⵔⵏⵓ ⴰⵙⵏⵜⵍ