Модул:languages/templates

Аз Wiktionary
Jump to navigation Jump to search

Documentation for this module may be created at Модул:languages/templates/doc

local export = {}

function export.exists(frame)
	local args = frame.args
	local lang = args[1] or error("Language code has not been specified. Please pass parameter 1 to the module invocation.")
	
	lang = require("Module:languages").getByCode(lang)
	
	if lang then
		return "1"
	else
		return ""
	end
end

-- Used by the following JS:
-- * [[WT:ACCEL]]
-- * [[WT:EDIT]]
-- * [[WT:NEC]]
function export.getByCode(frame)
	local args = frame.args
	local langcode = args[1] or error("Language code has not been specified. Please pass parameter 1 to the module invocation.")
	local itemname = args[2] or error("Type of information to look up has not been specified. Please pass parameter 2 to the module invocation.")
	
	local lang = require("Module:languages").getByCode(langcode)
	
	if not lang then
		error("The language code '" .. langcode .. "' is not valid.")
	end
	
	-- The item that the caller wanted to look up
	if itemname == "getOtherNames" then
		local index = args[3]; if index == "" then index = nil end
		index = tonumber(index or error("Please specify the numeric index of the desired name."))
		return lang:getOtherNames()[index] or ""
	elseif itemname == "getFamily" then
		return lang:getFamily():getCode()
	elseif itemname == "getWikimediaLanguages" then
		local index = args[3]; if index == "" then index = nil end
		index = tonumber(index or error("Please specify the numeric index of the desired language."))
		local langs = lang:getWikimediaLanguages()
		
		if langs[index] then
			return langs[index]:getCode()
		else
			return ""
		end
	elseif itemname == "getScripts" then
		local index = args[3]; if index == "" then index = nil end
		index = tonumber(index or error("Please specify the numeric index of the desired script."))
		local scripts = lang:getScripts()
		
		if scripts[index] then
			return scripts[index]:getCode()
		else
			return ""
		end
	elseif itemname == "getAncestors" then
		local index = args[3]; if index == "" then index = nil end
		index = tonumber(index or error("Please specify the numeric index of the desired ancestor."))
		local ancestors = lang:getAncestors()
		
		if ancestors[index] then
			return ancestors[index]:getCode()
		else
			return ""
		end
	elseif itemname == "transliterate" then
		local text = args[3]; if text == "" then text = nil end
		local sc = args[4]; if sc == "" then sc = nil end
		local module_override = args[5]; if module_override == "" then module_override = nil end
		sc = (sc and (require("Module:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)
		return lang:transliterate(text, sc, module_override) or ""
	elseif itemname == "makeEntryName" then
		local text = args[3]; if text == "" then text = nil end
		return lang:makeEntryName(text) or ""
	elseif lang[itemname] then
		local ret = lang[itemname](lang)
		
		if type(ret) == "string" then
			return ret
		else
			error("функсияи \"" .. itemname .. "\" мекард ки арзиши сатри барнагаштанд.")
		end
	else
		error("Дархост номи адад беэътибор \"" .. itemname .. "\".")
	end
end

function export.getByCanonicalName(frame)
	local args = frame.args
	local langname = args[1] or error("Номи забони намуд муайян карда нашудааст. Лутфан, параметри 1 ба нидои модул мегузарад.")
	
	local lang = require("Module:languages").getByCanonicalName(langname)
	
	if lang then
		return lang:getCode()
	else
		return ""
	end
end

return export