Wikipedia:Lua/Modul/Multilingual/en
Vorlagenprogrammierung | Diskussionen | Lua | Test | Unterseiten | |||
Modul | Deutsch | English
|
Modul: | Dokumentation |
Multilingual
– Module with functions in context of languages, language codes, language names.
Functions for templates
[Am Gwëntext werkeln]For language code 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.
1
– language code- Result: empty, if invalid
- fallback
- Is another language suitable as replacement?
1
– language version specifier to be supported2
– language specifier of a possible replacement- Result: string with replacement code, or empty
- findCode
- Retrieve code of language name in local (current project) language.
- A code itself will be identified, too.
1
– language name in local (current project) language- Result: string with code, or empty
- fix
- Fix frequently mistaken language code.
1
– presumable language code- Result: string with correction, or empty
- 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=,
– otherwise1
is regarded as single itemseparator
– list separator, elsesplit
start
– prepend first list element, if any- Result: string with formatted language names, or empty
- getBase
- Retrieve base language from possibly combined ISO language code.
1
– language code- Result: code of base language, or empty if invalid query
- getName
- Which name is assigned to this language code?
1
– language code2
– language of the answer*
– in that language itself (default)!
– in project language- Any ISO code.
- Result: name of language, or empty if unknown
- int
- Translated system message
1
– message IDlang
– language code$1
,$2
, …$9
– parameters
- isLang
- Could this be an ISO language code?
1
– language code- nothing – if not
- isLangWiki
- Could this be a Wiki language version?
1
– language code- nothing – if not
- message
- Show text in best match of user language like system message
en
– English text versionde
– German text version…
– any further text version$1
– parameter value for replacement$2
– parameter value for replacement…
– …$9
– parameter value for replacement
- sitelink
- Make link at local or other site with optimal linktext translation using Wikidata
1
– item ID- Result: internal link (within WMF), or empty if no sitelinks at all
- tabData
- Try to retrieve translated keyword from commons:Data:****.tab tables and present in best current language
1
– page identification on Commons; no need to prefix withData:
or to append.tab
2
– keyword of text element in tablealt
– (optional) fallback text if failure cannot be remedied (no table, no entry)
- Tables for internationalisation are supposed to match following condition:
- field: string, with keyword for text element
- field: localized, with multilingual text fragments
- 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-US
oren-GB
and 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
bar
), at leasten
for English will be returned.
- wikibase
- Optimal translation of wikibase component
1
– entity ID2
– (optional)1
ordescriptions
; (default)0
orlabels
- failsafe
- Version management
Wikipedia:Lua/Modul-Failsafe/en
Examples (test page)
[Am Gwëntext werkeln]A test page illustrates practical use.
Functions for Lua modules (API)
[Am Gwëntext werkeln]All 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.fallback( able, another )
- Multilingual.findCode( ask )
- Multilingual.fix( 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 )
-
- ask – language code
- alien – language of the answer
nil false "*"
– native"!"
– current project- Any ISO code.
- Multilingual.i18n( available, alt, frame )
- Internationalised text (I18N) in best language.
- available – table with mapping: language code → message text
- alt – string, optional, with message text if table fails
- frame – if available
- Multilingual.int( access, alien, apply )
- Multilingual.isLang( ask )
- Multilingual.isLangWiki( ask )
- Multilingual.message( arglist, frame )
-
- arglist – table like template parameters
- frame – if available
- Multilingual.sitelink( all, frame )
-
- all – string or table or number, item ID or entity
- frame – if available
- Multilingual.tabData( access, at, alt, frame )
-
- access – string, with page identification on Commons
- at – string, with keyword
- alt – string, optional, with fallback text
- frame – if available
- Returns:
- string|nil|false, with selected message
- string, with language code, or "error"
- Multilingual.userLang( accept, frame )
-
- accept – string with space separated list of available ISO 639 codes
- frame – if available
- Multilingual.wikibase( all, about, attempt, frame )
-
- all – string or table or number, item ID or entity
- about – boolean, true "descriptions" or false "labels"
- attempt – string or not, code of preferred language
- frame – if available
- Multilingual.failsafe( atleast )
- Versioning interface
- atleast
optional
nil or minimum version orwikidata
or~
for synchronisation
- atleast
- returns: Version ID as string or
false
If succeeding, the Multilingual.get*() return a string, the Multilingual.is*() true
; on failure false
.
Project configuration
[Am Gwëntext werkeln]The local project may be configured optionally, see /config.
Global data
[Am Gwëntext werkeln]Following pages may be evaluated:
- commons:Data:ISO639.tab
- List of individual code tables on commons:Data:
- commons:Data:ISO639/correction.tab
- Has this code a well known misinterpretation?
- commons:Data:ISO639/fallback.tab
- Could this language be replaced by a widely understood one?
mw.language.getFallbacksFor()
will be evaluated first.
Installation on other WMF projects
[Am Gwëntext werkeln]Follow the steps:
- Copy main module
Module:Multilingual
into your project.- If possible keep the name
Multilingual
. - If another name is required due to conflict or naming convention or non-latin script then choose a different one.
- If possible keep the name
- Register this module at d:Q47541920.
- To adapt central translations, you may copy the following sub module, and keep the chosen root name:
/names
- Adaption to local language and project articles may be needed.
- By Wikidata one day more sitelinks and translated names might become available.
- You might want to create your own version (keeping root name) of:
- The following modules are required for some functionality:
- Ready.
- Consider translation of doc page.
Usage
[Am Gwëntext werkeln]General library; no limitations.
Dependencies
[Am Gwëntext werkeln]The following modules may be meaningful for full functionality: