Module:Multilingual/doc: Difference between revisions
More actions
de>PerfektesChaos t |
m 22 revisions imported |
||
| (17 intermediate revisions by 6 users not shown) | |||
| Line 1: | Line 1: | ||
'''<code>Multilingual</code>''' – Module with functions in context of languages, language codes, language names. | |||
== | == Functions for templates == | ||
All functions expect one unnamed parameter <code>1</code> with the key information, and sometimes more optionals. Whitespace ahead and after any content is ignored. Upcasing of language code segments like in <code>en-US</code> does not matter; results are downcased. | All functions expect one unnamed parameter <code>1</code> with the key information, and sometimes more optionals. Whitespace ahead and after any content is ignored. Upcasing of language code segments like in <code>en-US</code> 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. | 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. | ||
; findCode | ; 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. | : Retrieve code of language name in local (current project) language. | ||
: A code itself will be identified, too. | : A code itself will be identified, too. | ||
; format | ; format | ||
: Format one or more languages. | : Format one or more languages. | ||
:* <code>1</code> – language list or single item | :* <code>1</code> – language list or single item | ||
| Line 27: | Line 29: | ||
:* <code>separator</code> – list separator, else <code>split</code> | :* <code>separator</code> – list separator, else <code>split</code> | ||
:* <code>start</code> – prepend first list element, if any | :* <code>start</code> – prepend first list element, if any | ||
; getBase | ; getBase | ||
: Retrieve base language from possibly combined ISO language code. | : Retrieve base language from possibly combined ISO language code. | ||
; getName | ; getName | ||
: Which name is assigned to this language code? | : Which name is assigned to this language code? | ||
:* <code>2</code> – language of the answer | :* <code>2</code> – language of the answer | ||
| Line 35: | Line 37: | ||
:** <code>!</code> – in project language | :** <code>!</code> – in project language | ||
:** Any ISO code. | :** Any ISO code. | ||
; isLang | ; isLang | ||
: Could this be an ISO language code? | : Could this be an ISO language code? | ||
:* ''nothing'' – if not | :* ''nothing'' – if not | ||
; isLangWiki | ; isLangWiki | ||
: Could this be a Wiki language version? | : Could this be a Wiki language version? | ||
:* ''nothing'' – if not | :* ''nothing'' – if not | ||
; kannDeutsch | ; kannDeutsch | ||
: Might someone with this language code understand German? | : Might someone with this language code understand German? | ||
:* ''nothing'' – if not | :* ''nothing'' – if not | ||
; userLang | ; userLang | ||
: Try to support user language by application. | : Try to support user language by application. | ||
:* <code>1</code> – space separated list of available ISO 639 codes | :* <code>1</code> – space separated list of available ISO 639 codes | ||
| Line 51: | Line 53: | ||
:** If the current user language is a variant like <code>en-US</code> or <code>en-GB</code> and that is not mentioned explicitly in list, base language (here <code>en</code>) will be tried. | :** If the current user language is a variant like <code>en-US</code> or <code>en-GB</code> and that is not mentioned explicitly in list, base language (here <code>en</code>) will be tried. | ||
:** If nothing matches and no list is provided, the project language (here <code>{{CONTENTLANGUAGE}}</code>), at least <code>en</code> for English will be returned. | :** If nothing matches and no list is provided, the project language (here <code>{{CONTENTLANGUAGE}}</code>), at least <code>en</code> for English will be returned. | ||
; failsafe | |||
: Version ID: <code>{{#invoke:Multilingual|failsafe}}</code> | |||
: optional parameter <code>1</code> – required version | |||
:: result: empty, if requirement not met | |||
=== Examples (test page) === | === Examples (test page) === | ||
A [[Wikipedia:Lua/Modul/Multilingual/Test|test page]] illustrates practical use. | A [[Wikipedia:Lua/Modul/Multilingual/Test|test page]] illustrates practical use. | ||
== Functions for Lua modules (API) == | |||
== | |||
All functions described above can be used by other modules: | All functions described above can be used by other modules: | ||
| Line 68: | Line 73: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Subsequently there are available: | Subsequently there are available: | ||
; Multilingual. | ; Multilingual.fair( ask ) | ||
; Multilingual. | :* ''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 | :* ''apply'' – string with language list or single item | ||
:* ''alien'' – language of the answer | :* ''alien'' – language of the answer | ||
| Line 85: | Line 92: | ||
:* ''adjacent'' – string with list separator, else ''assembly'' | :* ''adjacent'' – string with list separator, else ''assembly'' | ||
:* ''ahead'' – string for optional prepending first element, if any | :* ''ahead'' – string for optional prepending first element, if any | ||
; Multilingual. | ; Multilingual.getBase( ask ) | ||
; Multilingual. | ; Multilingual.getLang( ask ) | ||
: Split language code into components | |||
: Returns: ''table'' | |||
:: <code>.base</code> – Basic language (2–3 lowercase letters) | |||
:: <code>.region</code> – Country (2 uppercase letters) | |||
:: <code>.script</code> – Scripting (4 letters, capitalized) | |||
:: <code>.year</code> – year (4 digits) | |||
:: <code>.extension</code> – Extension (1 lowercase letter) | |||
:: <code>.other</code> – More | |||
:: <code>.legal</code> – ''true'' if valid | |||
:: <code>.n</code> – Number of components | |||
; Multilingual.getName( ask, alien ) | |||
:* ''alien'' – language of the answer | :* ''alien'' – language of the answer | ||
:** <code>nil false "*"</code> – native | :** <code>nil false "*"</code> – native | ||
:** <code>"!"</code> – current project | :** <code>"!"</code> – current project | ||
:** Any ISO code. | :** Any ISO code. | ||
; Multilingual. | ; Multilingual.isLang( ask ) | ||
; Multilingual. | ; Multilingual.isLangWiki( ask ) | ||
; Multilingual. | ; Multilingual.kannDeutsch( ask ) | ||
; Multilingual. | ; Multilingual.userLang( accept, frame ) | ||
:* ''accept'' – string with space separated list of available ISO 639 codes | :* ''accept'' – string with space separated list of available ISO 639 codes | ||
:* ''frame'' – if available | :* ''frame'' – if available | ||
; Multilingual.failsafe( atleast ) | |||
:* atleast<br />''optional''<br />''nil'' or required version | |||
:* Returns: ''string'' or ''false'' | |||
If succeeding, the ''Multilingual.get*()'' return a string, the ''Multilingual.is*()'' <code>true</code>; on failure <code>false</code>. | If succeeding, the ''Multilingual.get*()'' return a string, the ''Multilingual.is*()'' <code>true</code>; on failure <code>false</code>. | ||
| Line 103: | Line 124: | ||
== Dependencies == | == Dependencies == | ||
* [[Module:WLink|WLink]] | |||
* [[ | * [[Module:Multilingual/config|/config]] – optional project specific adaption | ||
* [[ | |||
Latest revision as of 16:37, 12 August 2026
Multilingual – Module with functions in context of languages, language codes, language names.
Functions for templates
editAll 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 itemslang– language of the answer, if not native*– native (default)!– current project- any valid code
shift– capitalizationc– capitalize alld– downcase everythingf– capitalize first item onlym– downcase every first word in item only
link=1– link itemsscream– category title in case of errorsplit– split pattern, if list expected; e.g.split=,– otherwise1is regarded as single itemseparator– list separator, elsesplitstart– 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)
editA test page illustrates practical use.
Functions for Lua modules (API)
editAll functions described above can be used by other modules:
local lucky, Multilingual = pcall( require, "Module:Multilingual" )
if type( Multilingual ) == "table" then
Multilingual = Multilingual.Multilingual()
else
-- failure; Multilingual is the error message
return "<span class='error'>" .. Multilingual .. "</span>"
end
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
editGeneral library; no limitations.