Template:Fallback: Difference between revisions
Content deleted Content added
test |
:-] |
||
Line 1: | Line 1: | ||
local p = {} |
local p = {} |
||
local langlist = { |
local langlist = { |
||
af = {'nl'}, |
['af'] = {'nl'}, |
||
als = {'de'}, |
['als'] = {'de'}, |
||
arz = {'ar'}, |
['arz'] = {'ar'}, |
||
bar = {'de'}, |
['bar'] = {'de'}, |
||
['be-x-old'] = {'be-tarask'}, |
|||
br = {'fr'}, |
['br'] = {'fr'}, |
||
ckb = {'fa'}, |
['ckb'] = {'fa'}, |
||
co = {'fr'}, |
['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 |
['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 |
['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'} |
|||
zhtw = {'zhhant'} |
|||
} |
} |
||
Line 121: | Line 120: | ||
else |
else |
||
lang = frame:preprocess( "{{int:lang}}" ) |
lang = frame:preprocess( "{{int:lang}}" ) |
||
end |
|||
-- remove dashes from language names |
|||
for i in pairs(args) do |
|||
args[mw.ustring.gsub( i, "-", "")] = args[i] |
|||
end |
end |
||
-- gets the most appropriate language |
-- gets the most appropriate language |
Revision as of 11:02, 21 November 2013
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 |
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'}
}
function p.getfallback(args, lang)
if not lang then lang = args.lang end
if args[lang] and args[lang] ~= '' then
return args[lang]
end
if langlist[lang] then -- if there is a fallbacklist, check if there is a message for its languages
text = p.fallbackloop(args, langlist[lang], '')
end
if text then
return text
end
if args.default then
return args.default
end
if args.en then
return args.en
end
end
function p.fallbackloop(args, totest, tested)
-- iterates through the langlist fallback table
-- totest = tables of languages whose fallbacks need to be examined
-- tested = string with language that have been examined
for i, j in pairs(totest) do
if args[j] and args[j] ~= '' then
return args[j]
end
if langlist[j] then
for k, l in pairs(langlist[j]) do
table.insert(totest, l)
end
end
tested = tested .. ' ' .. j
end
for i, j in pairs(totest) do
if not string.find(tested, ' ' .. j) then
p.getfallback(args, lang, totest, tested)
end
end
return nil
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)
if args.lang then
lang = args.lang
else
lang = frame:preprocess( "{{int:lang}}" )
end
-- gets the most appropriate language
text = p.getfallback(args)
if text == '~' then return '' end -- ~ indicates that no message should be shown in this language
return text
end
return p