അജ്ഞാത ഉപയോക്താവ്
"ഘടകം:Autotranslate" എന്ന താളിന്റെ പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസം
rewrite proposed by User:Tacsipacsi using more efficient test for existence of language subtemplate
(വിക്കിമീഡിയ കോമ്മൺസിൽ നിന്നും ഇറക്കുമതി ചെയ്തു) |
(rewrite proposed by User:Tacsipacsi using more efficient test for existence of language subtemplate) |
||
വരി 1: | വരി 1: | ||
--[[ | |||
__ __ _ _ _ _ _ _ _ | __ __ _ _ _ _ _ _ _ | ||
| \/ | ___ __| |_ _| | ___ _ / \ _ _| |_ ___ | |_ _ __ __ _ _ __ ___| | __ _| |_ ___ | | \/ | ___ __| |_ _| | ___ _ / \ _ _| |_ ___ | |_ _ __ __ _ _ __ ___| | __ _| |_ ___ | ||
വരി 49: | വരി 49: | ||
-- get language fallback list | -- get language fallback list | ||
if not args.lang or not mw.language.isSupportedLanguage(args.lang) then | if not args.lang or not mw.language.isSupportedLanguage(args.lang) then | ||
args.lang = frame:callParserFunction( "int", "lang" ) | args.lang = frame:callParserFunction( "int", "lang" ) -- get user's chosen language | ||
end | end | ||
local langList = mw.language.getFallbacksFor(args.lang) | local langList = mw.language.getFallbacksFor(args.lang) | ||
table.insert(langList,1,args.lang) | table.insert(langList,1,args.lang) -- user's language will be the first one to check | ||
-- find base page | -- find base page | ||
local base = args.base | local base = args.base | ||
args.base = nil | args.base = nil -- blank it so it is not passed to language sub-templates | ||
assert(base and #base>0, 'Base page not provided for autotranslate' ) | assert(base and #base>0, 'Base page not provided for autotranslate' ) | ||
-- Local function for expanding a template that can be pcall()ed: call the template | |||
-- with the same template arguments as the ones passed to {{autotranslate}} template. | |||
local function expandTemplate(title) | |||
return frame:expandTemplate{ title = title, args = args } | |||
end | end | ||
-- find base template language subpage | -- find base template language subpage | ||
local | local success, res | ||
for _, language in ipairs(langList) do | for _, language in ipairs(langList) do | ||
success, res = pcall(expandTemplate, base .. '/' .. language) | |||
if success then | |||
break | break | ||
end | end | ||
end | end | ||
local err_msg = 'No fallback page found for autotranslate (base=[[:%s]], lang=%s)' | |||
if (not success) then | |||
-- | assert(args.default, string.format(err_msg, base, args.lang)) | ||
return | success, res = pcall(expandTemplate, args.default) | ||
assert(success, string.format(err_msg, base, args.default)) | |||
end | |||
-- If this if the base page being translateda | |||
if (mw.title.getCurrentTitle().fullText==base) then | |||
-- English language is the last fallback language for most languages, if | |||
-- nothing else there should be at least an english subpage | |||
local en_exist = mw.title.new(base .. '/en').exists | |||
assert(en_exist, string.format(err_msg, base, 'en')) | |||
if (mw.site.siteName=='Wikimedia Commons') then | |||
res = res .. '\n[[Category:Autotranslated templates|' .. base .. ']]' | |||
end | |||
end | |||
return res | |||
end | end | ||
return p | return p |