Jump to content
Wikipedia The Free Encyclopedia

Module:Engvar

From Wikipedia, the free encyclopedia
This is the current revision of this page, as edited by Ahecht (talk | contribs) at 14:34, 20 August 2024 (Sync with sandbox, answer edit request). The present address (URL) is a permanent link to this version.Revision as of 14:34, 20 August 2024 by Ahecht (talk | contribs) (Sync with sandbox, answer edit request)
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Module documentation[view] [edit] [history] [purge]
Warning This Lua module is used on approximately 17,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them.
This module depends on the following other modules:

This module implements {{engvar }}. It allows templates to show national varieties of English , when |engvar= is passed by each article.

For example, one template can display "football" for |engvar=en-UK articles, and "soccer" for |engvar=en-US articles.

Parameter list

Template

{{#invoke:engvar|variants
| defaultWord =
| defaultLang =
| engvar = <!-- Pass-through the editor's choice, set to 'auto' to automatically detect -->
| en-XX = <!-- add country code for XX, and the nation language word -->
| en-YY = <!-- add more varieties as might be needed -->
| engvarCat = <!-- '=no' will suppress message category in article page -->
| fallback = <!-- set to 'true' to allow commonwealth languages to fallback to 'en-GB'. False by default unless engvar='auto'. -->
}}

Article

{{example
| engvar =
| engvarCat =
}}

Maintenance category

Articles with an invalid |engvar= will be placed in the hidden maintenance category Category:Articles using an unknown Template:Engvar option. Articles listed may need editing.

An article's requested |engvar= may be unspecified in the template. For example, if an article uses {{example|engvar=South African English}} but the template has no |en-ZA=, then the template will return |defaultWord=default color name. The category will not be used.

When this categorization is not desired for a whole template, set |engvarCat=no in the template
Otherwise pass-through this setting from the article: |engvarCat={{{engvarCat|yes}}}. This allows the editor to switch categorization off per article.

Articles are sorted by |engvarCatSort= or {{pagename}} by default. Note that other templates will fill this category. Set this parameter like |engvarCatSort=Personal prefs in a template to group its listings under "P".

List of English varieties

In the template, use the exact ISO-code as the parameter name like |en-GB=vapour. Write |en-US=soccer not |American English=soccer. Needed varieties have articles using the template and words differing from the default.

English variety ISO-code
American English en-US
Australian English en-AU
British English en-GB
Canadian English en-CA
Hiberno-English (Irish English) en-EI
Hong Kong English en-HK
Indian English en-IN
Jamaican English en-JM
Malawian English en-MW
New Zealand English en-NZ
Nigerian English en-NG
Pakistani English en-PK
Philippine English en-PH
Scottish English en-SCO
Singapore English en-SG
South African English en-ZA
Trinidadian English en-TT
British English Oxford spelling
British (Oxford) English
Oxford English Dictionary (OED)
en-OED
IUPAC spelling en-IUPAC

There is backwards compatibility for leeway in articles. |engvar=en-US, |engvar=United States, |engvar=US can all show the |en-US=football variety.

See also

The above documentation is transcluded from Module:Engvar/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (create) pages.
Subpages of this module.

 -- This module implements Template:Engvar.
 -- Template:Engvar is to be build into the template (like an infobox), with default & variant spellings defined.
 -- That template should also allow parameter '|engvar=' for the editor (article page).
 -- The module/template Engvar then returns the spelling variant as is set in that article (for example '|engvar=en-GB').
 -- The defaultWord is returned, unless the engvar input hits on a defined (en-XX) variant word.
 localp={}
 localgetArgs=require('Module:Arguments').getArgs
 localyesno=require('Module:Yesno')
 localgsub=string.gsub
 locallower=string.lower
 localupper=string.upper

 functionp.variants(frame)
 localargs=getArgs(frame)
 returnp._variants(args)
 end

 localfunctionfallback(args,useLang)
 localcwealthLangs={['en-OED']=1,['en-IUPAC']=1,
 ['en-AU']=1,['en-CA']=1,['en-EI']=1,['en-HK']=1,
 ['en-IN']=1,['en-JM']=1,['en-NZ']=1,['en-PK']=1,
 ['en-SCO']=1,['en-SG']=1,['en-ZA']=1}
 if(useLang=='en-IUPAC'oruseLang=='en-OED')and(args['en-OED']orargs['en-CA'])then
 returnargs['en-OED']orargs['en-CA']
 elseifuseLang=='en-CA'and(args['en-OED']orargs['en-US'])then
 returnargs['en-OED']orargs['en-US']
 elseifcwealthLangs[useLang]andargs['en-GB']then
 returnargs['en-GB']
 end

 returnargs.defaultWordor''
 end

 functionp._variants(args)
 localreturnWord=nil
 localauto=false

 localdefaultWord=args.defaultWordor''
 localengvar=args.engvar

 if(lower(engvaror'')=='auto')then
 engvar=require('Module:Engvar/detect').detect()
 auto=true
 end

 ifengvar==nilthen
 -- Nothing to look for; use defaultWord right away
 returnWord=defaultWord
 elseifargs.defaultLang==gsub(lower(engvar),'^en%-(%w%w)$',formatISO)then
 -- By the defaultLang, the defaultWord is asked
 returnWord=defaultWord
 else
 returnWord=args[gsub(lower(engvar),'^en%-(%w%w)$',formatISO)]
 end

 ifreturnWord==nilthen
 -- No hit so far. Search by words in the engvar entered, checking the list
 localuseLang=engvarLang(engvar)
 ifuseLang==nilthen
 returnWord=defaultWord..addMaintCat(args)
 elseifargs[useLang]then
 returnWord=args[useLang]
 elseifyesno(args.fallbackorauto,auto)then--default to fallback if auto, otherwise default to no fallback
 returnWord=fallback(args,useLang)
 else
 returnWord=defaultWord
 end
 end

 returnreturnWord
 end

 -- Returns arguments and intermediate result. Plus the template result, in front.
 functionp.explain(frame)
 localargs=getArgs(frame)
 localret={}
 localengvar=args.engvaror''
 table.insert(ret,'\n\n: Settings:')
 table.insert(ret,'defaultWord='..(args.defaultWordor'')..'; ')
 table.insert(ret,'defaultLang='..(args.defaultLangor'')..'; ')
 table.insert(ret,'engvarCat='..(args.engvarCator'[default:yes]')..'; ')
 table.insert(ret,'engvarCatSort='..(args.engvarCatSortor''))
 table.insert(ret,'fallback='..(args.fallbackor''))
 table.insert(ret,'\n\n: engvar='..engvar..' [input] ')
 if(lower(engvar)=='auto')then
 engvar=require('Module:Engvar/detect').detect()or''
 table.insert(ret,'engvar='..engvar..' [detected] ')
 end
 localuseLang=engvarLang(engvar)
 table.insert(ret,' => Engvar code [used]: >'..(useLangor'')..'<.')

 fork,vinpairs(args)do
 ifk=='en-UK'then
 table.insert(ret,k..' ? better: use "en-GB"; ')
 elseifk=='en-SA'then
 table.insert(ret,k..' ? misleading; use "en-ZA"; ')
 end

 ifk=='defaultWord'then
 elseifk=='defaultLang'then
 elseifk=='engvar'then
 elseifk=='engvarcat'then
 elseifk==gsub(lower(k),'^en%-(%w%w)$',formatISO)then
 table.insert(ret,k..'='..v..'; ')
 else
 table.insert(ret,k..' [not standard:]='..v..'; ')
 end

 end
 returnengvar..' => '..p._variants(args)..table.concat(ret,' ')
 end

 -- Turn a match into pattern 'en-XX'
 functionformatISO(country)
 return('en-'..upper(country)or'')
 end

 functionengvarLang(searchEngvar)
 -- Search verbose language identifiers to ISO-format 'en-XX'
 -- Assumed: not a blank string '' to search
 localmatch=string.match
 locallangs={
 us='US',usa='US',
 au='AU',aus='AU',
 gb='GB',gbr='GB',uk='GB',
 ca='CA',can='CA',
 ei='EI',irl='EI',
 hk='HK',hkg='HK',
 ['in']='IN',ind='IN',--'in' is a reserved keyword and needs to be in quotes
 jm='JM',jam='JM',
 mw='MW',mwi='MW',
 nz='NZ',nzl='NZ',
 ng='NG',nga='NG',
 pk='PK',pak='PK',
 ph='PH',phl='PH',
 sco='SCO',
 sg='SG',sgp='SG',
 za='ZA',zaf='ZA',
 tt='TT',tto='TT',
 oed='OED'};
 searchEngvar=gsub(searchEngvar,'^%s*en%-(.*)','%1')-- rm any opening 'en-'.
 searchEngvar=gsub(lower(searchEngvar),'[%s%(%)%-]','')-- To lc, remove all: (, ) , ws, hyphen.
 --normalize language codes so we don't trigger the maintenence category on valid codes
 localuseLang=langs[searchEngvar]
 ifuseLangthen
 return'en-'..useLang
 --Special codes
 elseifmatch(searchEngvar,'oxford')then
 useLang='OED'-- 'oxford' to catch before anyting 'british'
 elseifmatch(searchEngvar,'iupac')then
 useLang='IUPAC'-- chemistry
 -- Very often used
 elseifmatch(searchEngvar,'british')then
 useLang='GB'
 elseifmatch(searchEngvar,'unitedstates')
 ormatch(searchEngvar,'american')then
 useLang='US'
 elseifmatch(searchEngvar,'australia')then
 useLang='AU'
 -- Often used
 elseifmatch(searchEngvar,'india')then
 useLang='IN'
 elseifmatch(searchEngvar,'newzealand')then
 useLang='NZ'
 elseifmatch(searchEngvar,'southafrica')then-- not: SA
 useLang='ZA'
 elseifmatch(searchEngvar,'canad')then--'canada' or 'canadian'
 useLang='CA'
 elseifmatch(searchEngvar,'hiberno')
 ormatch(searchEngvar,'ireland')
 ormatch(searchEngvar,'irish')then
 useLang='EI'
 elseifmatch(searchEngvar,'hongkong')then
 useLang='HK'
 -- Less often used
 elseifmatch(searchEngvar,'jamaica')then
 useLang='JM'
 elseifmatch(searchEngvar,'malawi')then
 useLang='MW'
 elseifmatch(searchEngvar,'nigeria')then
 useLang='NG'
 elseifmatch(searchEngvar,'pakistan')then
 useLang='PK'
 elseifmatch(searchEngvar,'philippine')then
 useLang='PH'
 elseifmatch(searchEngvar,'scotland')
 ormatch(searchEngvar,'scottish')then
 useLang='SCO'-- Has no alpha-2 code; not 'scotch'
 elseifmatch(searchEngvar,'singapore')then
 useLang='SG'
 elseifmatch(searchEngvar,'trinidad')
 ormatch(searchEngvar,'tobago')then
 useLang='TT'
 end

 returnuseLangand'en-'..useLang
 end

 functionaddMaintCat(args)
 localcatMaintenance
 ifargs.engvarCat~='no'then
 localtitle=mw.title.getCurrentTitle()
 iftitle:inNamespaces(0)then-- 0=main, 10=templ, 828=module
 ifargs.engvarCatSortthen
 catMaintenance='|'..args.engvarCatSort..', '..title.text
 end
 catMaintenance='[[Category:Articles using an unknown Template:Engvar option'..(catMaintenanceor'')..']]'
 end
 end
 returncatMaintenanceor''
 end

 returnp

AltStyle によって変換されたページ (->オリジナル) /