Difference between revisions of "Module:Engvar"
blackwiki>DePiep |
blackwiki>DePiep |
||
| Line 17: | Line 17: | ||
local defaultWord = args.defaultWord or '' | local defaultWord = args.defaultWord or '' | ||
if args.engvar == nil then | if args.engvar == nil then | ||
| − | --Nothing to look for; use defaultWord right away | + | -- Nothing to look for; use defaultWord right away |
returnWord = defaultWord | returnWord = defaultWord | ||
elseif args.defaultLang == gsub(lower(args.engvar), '^en%-(%w%w)$', formatISO) then | elseif args.defaultLang == gsub(lower(args.engvar), '^en%-(%w%w)$', formatISO) then | ||
| − | --By the defaultLang, the defaultWord is asked | + | -- By the defaultLang, the defaultWord is asked |
returnWord = defaultWord | returnWord = defaultWord | ||
else | else | ||
| Line 27: | Line 27: | ||
if returnWord == nil then | if returnWord == nil then | ||
| − | --No hit so far. Search by words in the engvar entered, checking the list | + | -- No hit so far. Search by words in the engvar entered, checking the list |
local useLang = engvarLang(args.engvar) | local useLang = engvarLang(args.engvar) | ||
if useLang == nil then | if useLang == nil then | ||
| Line 34: | Line 34: | ||
else | else | ||
local title = mw.title.getCurrentTitle() | local title = mw.title.getCurrentTitle() | ||
| − | if title:inNamespaces(0, 10, 828) then --main, templ, module | + | if title:inNamespaces(0, 10, 828) then -- main, templ, module |
catMaintenance = '_[[:Category:Articles using an unknown Template:Engvar option]]' | catMaintenance = '_[[:Category:Articles using an unknown Template:Engvar option]]' | ||
end | end | ||
| Line 47: | Line 47: | ||
end | end | ||
| − | -- Returns arguments and intermediate result. Plus the template result. | + | -- Returns arguments and intermediate result. Plus the template result, in front. |
function p.explain(frame) | function p.explain(frame) | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
| Line 70: | Line 70: | ||
end | end | ||
| + | -- Turn a match into pattern 'en-XX' | ||
function formatISO(country) | function formatISO(country) | ||
| − | return ('en-' . | + | return ('en-' .. upper(country) or '') |
end | end | ||
function engvarLang(searchEngvar) | function engvarLang(searchEngvar) | ||
-- Search verbose language identifiers to ISO-format 'en-XX' | -- Search verbose language identifiers to ISO-format 'en-XX' | ||
| + | -- Assumed: not a blank string '' to seacrch | ||
local match = string.match | local match = string.match | ||
| − | searchEngvar = gsub( | + | searchEngvar = gsub(lower(searchEngvar), '[%s%(%)%-]', '') -- To lc, remove all: (, ) , ws, hyphen. |
local useLang | local useLang | ||
| − | -- | + | --Special codes |
if match(searchEngvar, 'oxford') | if match(searchEngvar, 'oxford') | ||
or searchEngvar == 'enoed' | or searchEngvar == 'enoed' | ||
| Line 87: | Line 89: | ||
elseif match(searchEngvar, 'iupac') then | elseif match(searchEngvar, 'iupac') then | ||
useLang = 'en-IUPAC' -- chemistry | useLang = 'en-IUPAC' -- chemistry | ||
| − | -- | + | -- Very often used |
elseif match(searchEngvar, 'british') | elseif match(searchEngvar, 'british') | ||
or searchEngvar == 'uk' | or searchEngvar == 'uk' | ||
| Line 98: | Line 100: | ||
elseif match(searchEngvar, 'australia') then | elseif match(searchEngvar, 'australia') then | ||
useLang = 'en-AU' | useLang = 'en-AU' | ||
| − | -- | + | -- Often used |
elseif match(searchEngvar, 'india') then | elseif match(searchEngvar, 'india') then | ||
useLang = 'en-IN' | useLang = 'en-IN' | ||
| Line 112: | Line 114: | ||
or match(searchEngvar, 'irish') then | or match(searchEngvar, 'irish') then | ||
useLang = 'en-EI' | useLang = 'en-EI' | ||
| − | elseif searchEngvar | + | elseif match(searchEngvar, 'hongkong') then |
useLang = 'en-HK' | useLang = 'en-HK' | ||
--less often used | --less often used | ||
Revision as of 11:10, 16 November 2014
This module is allows an article to show a national variant of English (WP:ENGVAR) in templates, depending on the individual article preference. Basically, the article page infobox can have |engvar=en-GB set to show en-GB spellng.
For example, a single template can show "football" text in en-UK articles, and "soccer" in en-US articles.
Usage
See {{Engvar}}.
{{#invoke:Engvar|variants
| defaultWord =
| engvar = {{{engvar|}}}<!-- Pass through article setting -->
| defaultLang =
| en-XX = <!-- Add country code for XX, and its word -->
| en-YY = <!-- Add more variants as might be needed -->
| engvarCat = {{{engvarCat|}}}
| engvarCatSort =
}}
|engvar=
This input (user input) is checked against a list of possible words ("en-US, American English, United States"). Internal identifier is the code like "en-US".
|engvarCatSort=
Sort text for maintenance category. Advise to set to project name like "rainbow" not "infobox rainbow" (all templates will fill this category!). Default is pagename.
- Maintenance category
Parameter list
In the
| defaultWord =
| defaultLang =
| engvar = {{{engvar|}}}<!-- Pass through the editor's choice -->
| en-XX = <!-- add country code for XX, and the nation language word -->
| en-YY = <!-- add more variants as might be needed -->
| engvarCat = {{{engvarCat|}}} <!-- yes/no; '=no' will suppress message category in article page) -->
In the parameter list, for the editor to see & use:
| engvar = | engvarCat =
List of variant languages
In the template code only use the listed ISO-code as parameter name: |en-UK=vapour. The article editor has freedom to use the other options: |engvar=British.
| Language | 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 |
- HELP:ENGVAR
- Category:Articles using an unknown Template:Engvar option
- ISO 3166-1 alpha-2 2-letter country code
-- This module implements template:Engvar.
-- The defaultWord is returned, unless the engvar input hits on an existing variant (en-XX) word.
local p = {}
local getArgs = require('Module:Arguments').getArgs
local gsub = string.gsub
local lower = string.lower
local upper = string.upper
function p.variants(frame)
local args = getArgs(frame)
return p._variants(args)
end
function p._variants(args)
local returnWord = nil
local defaultWord = args.defaultWord or ''
if args.engvar == nil then
-- Nothing to look for; use defaultWord right away
returnWord = defaultWord
elseif args.defaultLang == gsub(lower(args.engvar), '^en%-(%w%w)$', formatISO) then
-- By the defaultLang, the defaultWord is asked
returnWord = defaultWord
else
returnWord = args[gsub(lower(args.engvar), '^en%-(%w%w)$', formatISO)]
end
if returnWord == nil then
-- No hit so far. Search by words in the engvar entered, checking the list
local useLang = engvarLang(args.engvar)
if useLang == nil then
local catMaintenance
if args.engvarCat == 'no' then
else
local title = mw.title.getCurrentTitle()
if title:inNamespaces(0, 10, 828) then -- main, templ, module
catMaintenance = '_[[:Category:Articles using an unknown Template:Engvar option]]'
end
end
returnWord = defaultWord .. (catMaintenance or '')
else
returnWord = args[useLang] or defaultWord
end
end
return returnWord
end
-- Returns arguments and intermediate result. Plus the template result, in front.
function p.explain(frame)
local args = getArgs(frame)
local ret = {'\n\n* Module:Engvar: '}
table.insert(ret, 2, 'defaultWord=' .. (args.defaultWord or '') .. '; ')
table.insert(ret, 3, 'defaultLang=' .. (args.defaultLang or '') .. '; ')
table.insert(ret, 4, 'engvar=' .. (args.engvar or '') .. '; ')
for k, v in pairs(args) do
if k == 'defaultWord' then
elseif k == 'defaultLang' then
elseif k == 'engvar' then
elseif k == gsub(lower(k), '^en%-(%w%w)$', formatISO) then
table.insert(ret, k .. '=' .. v .. '; ')
else
table.insert(ret, k .. ' (check, lowercase?)=' .. v .. ' ; ')
end
end
local useLang = engvarLang(args.engvar or '')
table.insert(ret, 5, 'Engvar code: >' .. (useLang or '') .. '<.\n\n:')
return p._variants(args) .. table.concat(ret)
end
-- Turn a match into pattern 'en-XX'
function formatISO(country)
return ('en-' .. upper(country) or '')
end
function engvarLang(searchEngvar)
-- Search verbose language identifiers to ISO-format 'en-XX'
-- Assumed: not a blank string '' to seacrch
local match = string.match
searchEngvar = gsub(lower(searchEngvar), '[%s%(%)%-]', '') -- To lc, remove all: (, ) , ws, hyphen.
local useLang
--Special codes
if match(searchEngvar, 'oxford')
or searchEngvar == 'enoed'
or searchEngvar == oed then
useLang = 'en-OED' -- 'oxford' to catch before anyting 'british'
elseif match(searchEngvar, 'iupac') then
useLang = 'en-IUPAC' -- chemistry
-- Very often used
elseif match(searchEngvar, 'british')
or searchEngvar == 'uk'
or searchEngvar=='engb' then
useLang = 'en-UK'
elseif searchEngvar == 'us'
or match(searchEngvar, 'unitedstates')
or searchEngvar=='american' then
useLang = 'en-US'
elseif match(searchEngvar, 'australia') then
useLang = 'en-AU'
-- Often used
elseif match(searchEngvar, 'india') then
useLang = 'en-IN'
elseif searchEngvar == 'newzealand' then
useLang = 'en-NZ'
elseif match(searchEngvar, 'southafrica')
or searchEngvar == 'ensa' then
useLang = 'en-ZA'
elseif searchEngvar == 'canada' then
useLang = 'en-CA'
elseif match(searchEngvar, 'hiberno')
or match(searchEngvar, 'ireland')
or match(searchEngvar, 'irish') then
useLang = 'en-EI'
elseif match(searchEngvar, 'hongkong') then
useLang = 'en-HK'
--less often used
elseif match(searchEngvar, 'jamaica') then
useLang = 'en-JM'
elseif match(searchEngvar, 'malawi') then
useLang = 'en-MW'
elseif match(searchEngvar, 'nigeria') then
useLang = 'en-NG'
elseif match(searchEngvar, 'pakistan') then
useLang = 'en-PK'
elseif match(searchEngvar, 'philippine') then
useLang = 'en-PH'
elseif match(searchEngvar, 'scotland')
or match(searchEngvar, 'scots')
or match(searchEngvar, 'scottish') then
useLang = 'en-SCOTLAND' -- has no alpha-2 code
elseif match(searchEngvar, 'singapore') then
useLang = 'en-SG'
elseif match(searchEngvar, 'trinidad')
or match(searchEngvar, 'tobago') then
useLang = 'en-TT'
else
useLang = nil
end
return useLang
end
return p