Module:Multilingual/doc
This is the documentation page for Module:Multilingual
Multilingual – Module with functions in context of languages, language codes, language names.
Functions for templates
All functions expect one unnamed parameter 1 with the key information, and sometimes more optionals. Whitespace ahead and after any content is ignored. Upcasing of language code segments like in en-US does not matter; results are downcased.
The return value is an empty string (“nothing”), if the parameter value does not fulfil the expectations. If there is a result or the query condition is true, at least one visible character will be returned. The result does not begin or end with a space.
- fair
- Format language code according to RFC 5646 and check validity
- Result: empty, if invalid
 
- findCode
- Retrieve code of language name in local (current project) language.
- A code itself will be identified, too.
- format
- Format one or more languages.
- 1– language list or single item
- slang– language of the answer, if not native- *– native (default)
- !– current project
- any valid code
 
- shift– capitalization- c– capitalize all
- d– downcase everything
- f– capitalize first item only
- m– downcase every first word in item only
 
- link=1– link items
- scream– category title in case of error
- split– split pattern, if list expected; e.g.- split=,– otherwise- 1is regarded as single item
- separator– list separator, else- split
- start– prepend first list element, if any
 
- getBase
- Retrieve base language from possibly combined ISO language code.
- getName
- Which name is assigned to this language code?
- 2– language of the answer- *– in that language itself (default)
- !– in project language
- Any ISO code.
 
 
- isLang
- Could this be an ISO language code?
- nothing – if not
 
- isLangWiki
- Could this be a Wiki language version?
- nothing – if not
 
- kannDeutsch
- Might someone with this language code understand German?
- nothing – if not
 
- userLang
- Try to support user language by application.
- 1– space separated list of available ISO 639 codes
- Result:
- If the current user language is not a list element, the first element is used.
- If the current user language is a variant like en-USoren-GBand that is not mentioned explicitly in list, base language (hereen) will be tried.
- If nothing matches and no list is provided, the project language (here en), at leastenfor English will be returned.
 
 
- failsafe
- Version ID: 2020-12-10
- optional parameter 1– required version- result: empty, if requirement not met
 
Examples (test page)
A test page illustrates practical use.
Functions for Lua modules (API)
All functions described above can be used by other modules: <syntaxhighlight lang="lua"> local lucky, Multilingual = pcall( require, "Module:Multilingual" ) if type( Multilingual ) == "table" then
Multilingual = Multilingual.Multilingual()
else
   -- failure; Multilingual is the error message
   return "" .. Multilingual .. ""
end </syntaxhighlight> Subsequently there are available:
- Multilingual.fair( ask )
- 
- ask – string, or table according to getLang()
 
- Multilingual.findCode( ask )
- Multilingual.format( apply, alien, alter, active, alert, frame, assembly, adjacent )
- 
- apply – string with language list or single item
- alien – language of the answer
- nil false "*"– native
- "!"– current project
- any valid code
 
- alter – capitalization
- "c"– capitalize
- "d"– downcase everything
- "f"– capitalize first item only, downcase anything else
 
- active – link items, if true
- alert – string with category title in case of error
- frame – if available
- assembly – string with split pattern, if list expected
- adjacent – string with list separator, else assembly
- ahead – string for optional prepending first element, if any
 
- Multilingual.getBase( ask )
- Multilingual.getLang( ask )
- Split language code into components
- Returns: table
- .base– Basic language (2–3 lowercase letters)
- .region– Country (2 uppercase letters)
- .script– Scripting (4 letters, capitalized)
- .year– year (4 digits)
- .extension– Extension (1 lowercase letter)
- .other– More
- .legal– true if valid
- .n– Number of components
 
- Multilingual.getName( ask, alien )
- 
- alien – language of the answer
- nil false "*"– native
- "!"– current project
- Any ISO code.
 
 
- alien – language of the answer
- Multilingual.isLang( ask )
- Multilingual.isLangWiki( ask )
- Multilingual.kannDeutsch( ask )
- Multilingual.userLang( accept, frame )
- 
- accept – string with space separated list of available ISO 639 codes
- frame – if available
 
- Multilingual.failsafe( atleast )
- 
- atleast
 optional
 nil or required version
- Returns: string or false
 
- atleast
If succeeding, the Multilingual.get*() return a string, the Multilingual.is*() true; on failure false.
Usage
General library; no limitations.
