Template:Fallback: Difference between revisions
Content deleted Content added
m |
Leonidlednev (talk | contribs) m rvv Tag: Undo |
||
(71 intermediate revisions by 11 users not shown) | |||
Line 1: | Line 1: | ||
{{#ifexist: Template:{{{1|}}}/{{#if: {{{2|}}} |{{{2}}}|{{int:Lang}}}} |{{#if: {{{2|}}} |{{{2}}}|{{int:Lang}}}}|{{CONTENTLANGUAGE}}}}<noinclude> |
|||
local p = {} |
|||
local langlist = { |
|||
['af'] = {'nl'}, |
|||
['als'] = {'de'}, |
|||
['arz'] = {'ar'}, |
|||
['bar'] = {'de'}, |
|||
['be-x-old'] = {'be-tarask'}, |
|||
['br'] = {'fr'}, |
|||
['ckb'] = {'fa'}, |
|||
['co'] = {'fr'}, |
|||
['crh-cyrl'] = {'crh'}, |
|||
['crh-latn'] = {'crh'}, |
|||
['de-ch'] = {'de'}, |
|||
['de-formal'] = {'de'}, |
|||
['de-formal'] = {'de'}, |
|||
['en-gb'] = {'en'}, |
|||
['frp'] = {'fr'}, |
|||
['frr'] = {'de'}, |
|||
['fy'] = {'nl'}, |
|||
['glk'] = {'fa'}, |
|||
['hif-deva'] = {'hif'}, |
|||
['hif-latn'] = {'hif'}, |
|||
['ht'] = {'fr'}, |
|||
['ike-cans'] = {'ik'}, |
|||
['kk-arab'] = {'kk'}, |
|||
['kk-cn'] = {'kk'}, |
|||
['kk-cyrl'] = {'kk'}, |
|||
['kk-kz'] = {'kk'}, |
|||
['kk-latn'] = {'kk'}, |
|||
['kk-tr'] = {'kk'}, |
|||
['ksh'] = {'de'}, |
|||
['ku-arab'] = {'ku'}, |
|||
['ku-latn'] = {'ku'}, |
|||
['li'] = {'nl'}, |
|||
['mg'] = {'fr'}, |
|||
['mzn'] = {'fa'}, |
|||
['nds'] = {'nds-nl', 'de'}, |
|||
['nds-nl'] = {'nds', 'nl'}, |
|||
['nl-informal']= {'nl'}, |
|||
['pdt'] = {'nds', 'de'}, |
|||
['pt-br'] = {'pt'}, |
|||
['ruq-grek'] = {'ruq'}, |
|||
['rug-latn'] = {'ruq'}, |
|||
['ruq-cyrl'] = {'ruq'}, |
|||
['sr-ec'] = {'sr'}, |
|||
['sr-el'] = {'sr'}, |
|||
['szl'] = {'pl'}, |
|||
['tg-cyrl'] = {'tg'}, |
|||
['tg-latn'] = {'tg'}, |
|||
['tt-cyrl'] = {'tt'}, |
|||
['tt-latn'] = {'tt'}, |
|||
['ty'] = {'fr'}, |
|||
['vec'] = {'it'}, |
|||
['vls'] = {'nl'}, |
|||
['wa'] = {'fr'}, |
|||
['zea'] = {'nl'}, |
|||
['zh'] = {'zh-hans'}, |
|||
['zh-cn'] = {'zh-hans'}, |
|||
['zh-hans'] = {'zh-cn', 'zh'}, |
|||
['zh-hant'] = {'zh'}, |
|||
['zh-hk'] = {'zh-hant'}, |
|||
['zh-mo'] = {'zh-hant'}, |
|||
['zh-my'] = {'zh-hans'}, |
|||
['zh-sg'] = {'zh-hans'}, |
|||
['zh-tw'] = {'zh-hant'} |
|||
} |
|||
{{documentation}} |
|||
function p.fblist(lang) -- list the full fallback chain from a language to en |
|||
</noinclude> |
|||
local fbstr = p.fallbackloop(' ' .. lang) |
|||
fbstr = fbstr .. ' ' .. 'default' |
|||
fbstr = fbstr .. ' ' .. 'en' |
|||
return mw.text.split(fbstr, " ") |
|||
end |
|||
function p.fallbackloop(init) --list of fallback languages in string format (more convenient than tables) |
|||
local new = init |
|||
for i, j in pairs(mw.text.split(init, " ")) do |
|||
if langlist[j] then |
|||
for k, l in pairs(langlist[j]) do |
|||
if not string.find(new, ' ' .. l, 1, true) then |
|||
new = new .. ' ' .. l |
|||
end |
|||
end |
|||
end |
|||
end |
|||
if new ~= init then |
|||
return p.fallbackloop(new) |
|||
end |
|||
return new |
|||
end |
|||
function p.langSwitch(frame) |
|||
args = mw.getCurrentFrame():getParent().args |
|||
-- Return error if there is not default and no english version |
|||
if not args.en and not args.default and args.nocat ~= '1' then |
|||
return frame:expandTemplate{ title = "red", args = {'LangSwitch error: no default'}} .. '[[Category:LangSwitch template without default version]]' |
|||
end |
|||
-- get language (either stated one or user's default language) |
|||
local lang = args.lang |
|||
if not lang then |
|||
lang = frame:preprocess( "{{int:lang}}" ) |
|||
end |
|||
-- get list of arguments that need to be parsed: the args[lang] or if absent, args in the fallback chain |
|||
local toprocess = '' |
|||
if args[lang] and args[lang] ~= '' then |
|||
toprocess = {lang} |
|||
else |
|||
toprocess = p.fblist(lang) |
|||
end |
|||
-- parse arguments: if special value "~", return "", elseif not empty return it |
|||
for k, l in pairs(toprocess) do |
|||
if args[l] == '~' then |
|||
return '' |
|||
elseif args[1] and args[1] ~= '' then |
|||
return args[l] |
|||
end |
|||
end |
|||
end |
|||
return p |
Latest revision as of 23:55, 18 June 2023
en
This template was imported from commons:Template:Fallback without the here unusable documentation.
Use localised subpage for the user language with fallback to {{CONTENTLANGUAGE}}
Parameter | Description | Type | Status | |
---|---|---|---|---|
page | 1 | Template name | Page name | required |
lang | 2 | override user language on localised page
| String | optional |