Module:Multilingual/doc

  – Module with functions in context of languages, language codes, language names.

Functions for templates
All functions expect one unnamed parameter  with the key information, and sometimes more optionals. Whitespace ahead and after any content is ignored. Upcasing of language code segments like in  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.
 * – language list or single item
 * – language of the answer, if not native
 * – native (default)
 * – current project
 * any valid code
 * – capitalization
 * – capitalize all
 * – downcase everything
 * – capitalize first item only
 * – downcase every first word in item only
 * – link items
 * – category title in case of error
 * – split pattern, if list expected; e.g.  – otherwise   is regarded as single item
 * – list separator, else
 * – 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?
 * – 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.
 * – 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  or   and that is not mentioned explicitly in list, base language (here  ) will be tried.
 * If nothing matches and no list is provided, the project language (here ), at least   for English will be returned.


 * failsafe
 * Version ID:
 * optional parameter  – 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: 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
 * – native
 * – current project
 * any valid code
 * alter – capitalization
 * – capitalize
 * – downcase everything
 * – capitalize first item only, downcase anything else
 * active – link items, if
 * 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
 * – Basic language (2–3 lowercase letters)
 * – Country (2 uppercase letters)
 * – Scripting (4 letters, capitalized)
 * – year (4 digits)
 * – Extension (1 lowercase letter)
 * – More
 * – true if valid
 * – Number of components


 * Multilingual.getName( ask, alien )
 * alien – language of the answer
 * – native
 * – current project
 * Any ISO code.


 * 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

optional nil or required version
 * Multilingual.failsafe( atleast )
 * atleast
 * Returns: string or false

If succeeding, the Multilingual.get* return a string, the Multilingual.is* ; on failure.

Usage
General library; no limitations.

Dependencies

 * WLink
 * /config – optional project specific adaption