Jump to content

Module:Mw lang

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Trappist the monk (talk | contribs) at 15:09, 9 March 2020. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

require('Module:No globals');


--[[--------------------------< E R R _ M S G _ M A K E >------------------------------------------------------
]]

local function err_msg_make (msg)
	return '<span class="error" style="font-size:100%">error: language ' .. msg .. 'not recognized</span>'
end


--[[--------------------------< C O D E _ T O _ N A M E >------------------------------------------------------

module entry point

return language-name if language-code is a mediawiki recognized code; error message string else

]]

local function code_to_name (frame)
	local name = mw.language.fetchLanguageName (frame.args[1]:lower(), mw.getContentLanguage():getCode());
	return '' ~= name and name or err_msg_make ('code: ' .. frame.args[1]);
end


--[[--------------------------< N A M E _ T O _ C O D E >------------------------------------------------------

module entry point

return language-code if language-name is a mediawiki recognized name; error message string else

]]

local function name_to_code (frame)
	local name = frame.args[1]:lower();
	local source_list = mw.language.fetchLanguageNames(mw.getContentLanguage():getCode(), 'all');
	local name_list = {}
	
	for k, v in pairs (source_list) do
		name_list[v:lower()] = k;
	end

	return name_list[name] or err_msg_make ('name: ' .. frame.args[1])
end


--[[--------------------------< I S _ L A N G _ C O D E >------------------------------------------------------

module entry point

return true if code is a mediawiki recognized code; empty string else

]]

local function is_lang_code (frame)
	local code = mw.language.fetchLanguageName (frame.args[1]:lower(), mw.getContentLanguage():getCode());
	return '' ~= code and true or '';
end


--[[--------------------------< E X P O R T E D   F U N C T I O N S >------------------------------------------
]]

return {
	code_to_name = code_to_name,
	is_lang_code = is_lang_code,
	name_to_code = name_to_code,
	}