请输入您要查询的百科知识:

 

词条 Module:ISO 639/sandbox
释义

local getArgs = require ('Module:Arguments').getArgs;

local p = {}

--[[--------------------------< E R R O R _ M E S S A G E S >-------------------

TODO: change to default hiding of error messages? show with with personal css override:

.show_639_err_msgs {display: inline !important;}

]]

local error_messages = {

-- ['err_msg'] = '',

['err_msg'] = ' Error: $1',

['err_text'] = {

['required'] = ' ISO 639 code or name is required',

['no_code'] = ' no code in ISO 639-$1 for $2',

['not_found'] = ' $1 not found',

['ietf'] = ' $1 is an IETF tag',

}

}

--[[--------------------------< S U B S T I T U T E >---------------------------

Populates numbered arguments in a message string using an argument table.

]]

local function substitute (msg, args)

return args and mw.message.newRawMessage (msg, args):plain() or msg;

end

--[[--------------------------< E R R O R _ M S G >-----------------------------

create an error message

]]

local function error_msg (msg, arg)

return substitute (error_messages.err_msg, substitute (error_messages.err_text[msg], arg))

end

--[[--------------------------< N A M E >---------------------------------------

template entry point; returns first language name that matches code from template frame or an error message

]]

function p.name (frame)

local args = getArgs(frame);

if not args[1] or args[1] == '{{{1}}}' then

return error_msg ('required');

end

local code = args[1]; -- used in error messaging

local lc_code; -- holds lowercase version of code for indexing into the data tables

local ietf;

code, ietf = code:gsub('(.-)%-.*', '%1'); -- strip ietf subtags; count is non-zero when subtags are stripped

lc_code = code:lower();

if 0 ~= ietf then

ietf = error_msg ('ietf', args[1]);

else

ietf = ;

end

local name_data = mw.loadData ('Module:Language/data/ISO 639 name to code');

local part1_data = mw.loadData ('Module:Language/data/ISO 639-1');

local part2_data = mw.loadData ('Module:Language/data/ISO 639-2');

local part3_data = mw.loadData ('Module:Language/data/ISO 639-3');

local part5_data = mw.loadData ('Module:Language/data/ISO 639-5');

if part1_data[lc_code] then -- If input is part1

return table.concat ({part1_data[lc_code][1],ietf});

elseif part2_data[lc_code] then -- If input is part2

return table.concat ({part2_data[lc_code][1],ietf});

elseif part3_data[lc_code] then -- If input is part3

return table.concat ({part3_data[lc_code][1],ietf});

elseif part5_data[lc_code] then -- If input is part5

return table.concat ({part5_data[lc_code][1],ietf});

elseif name_data[lc_code] then -- If input is name

lc_code = name_data[lc_code]

if part3_data[lc_code[3]][1] then

return table.concat ({part3_data[lc_code[3]][1],ietf});

else

return table.concat ({part5_data[lc_code[4]][1],ietf});

end

end

return error_msg ('not_found', code);

end

-------------------------">--------------------------< R E T U R N C O D E >-------------------------

local function return_code (frame,code_type)

local data = mw.loadData ('Module:Language/data/ISO 639 name to code');

local args = frame["args"]

if not args[1] then

return error_msg ('required'); -- if no input return error

end

args[1] = args[1]:lower()

if not data[args[1]] then -- if input is not in data table

args[1] = p.name(frame) -- set to name using p.name

args[1] = args[1]:lower()

end

if data[args[1]][code_type] ~= "" then

if code_type == 5 then code_type = 4 end

return data[args[1]][code_type]; -- return code

else

return error_msg ('no_code', {code_type,args[1]}); -- or return error

end

end

-----------------------------------">--------------------------< C O D E 1 >-----------------------------------

function p.part1 (frame)

return return_code(frame,1)

end

-----------------------------------">--------------------------< C O D E 2 >-----------------------------------

function p.part2 (frame)

return return_code(frame,2)

end

-----------------------------------">--------------------------< C O D E 3 >-----------------------------------

function p.part3 (frame)

return return_code(frame,3)

end

-----------------------------------">--------------------------< C O D E 5 >-----------------------------------

function p.part5 (frame)

return return_code(frame,5)

end

-----------------------------">--------------------------< E X P O R T E D >-----------------------------

return p;

2 : ISO 639 name template errors|ISO 639 name template errors

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/30 16:31:55