Module:Lang: Difference between revisions
Jump to navigation
Jump to search
More general check for subpage lang code |
added nil check for lang code |
||
Line 45: | Line 45: | ||
local lang_code = title.fullText:match(".*/(.*)$") | local lang_code = title.fullText:match(".*/(.*)$") | ||
-- if the last part the url is two letters, then | -- if the last part the url is not two letters, then its not a lang code, | ||
if (string.len(lang_code) | -- so default to english | ||
return | if (lang_code == nil or string.len(lang_code) ~= 2) then | ||
return 'en' | |||
end | end | ||
return lang_code | |||
return | |||
end | end | ||
return p | return p |
Revision as of 17:38, 15 September 2024
Documentation for this module may be created at Module:Lang/doc
local p = {}
function get_lang_file(lang_code)
local file_name = string.format("Data:Lang_%s.json", lang_code)
local success, data = pcall(mw.loadJsonData, file_name)
if success then
return data
else
return nil
end
end
-- Get a localized string by the raw key
p.get_string = function(frame)
local key = frame.args[1]
local lang_code_override = frame.args[2]
local lang_code = lang_code_override
if (lang_code_override == '') then
lang_code = get_lang_code()
end
local data = get_lang_file(lang_code)
if (data == nil) then
return string.format("Language file for code '%s' not found", lang_code)
end
local label = data[key]
if (label == nil) then
return string.format("Key '%s' not found", key)
end
return label
end
-- Search for a localized string using its English label
p.search_string = function(frame)
local key = frame.args[1]
local lang_code = frame.args[2]
local data = get_lang_file(lang_code)
end
function get_lang_code()
local title = mw.title.getCurrentTitle()
local lang_code = title.fullText:match(".*/(.*)$")
-- if the last part the url is not two letters, then its not a lang code,
-- so default to english
if (lang_code == nil or string.len(lang_code) ~= 2) then
return 'en'
end
return lang_code
end
return p