Changes

14,953 bytes added ,  22:20, 15 July 2021
Pywikibot 6.4.0
{{Lua|Module:Arguments|Module:No globals|Module:Language/data/ISO 639-1|Module:Language/data/ISO 639-2|Module:Language/data/ISO 639-3|Module:Language/data/ISO 639-5|Module:Language/data/ISO 639 deprecated|Module:Language/data/ISO 639-3 (dep)|Module:Language/data/ISO 639 override|Module:Language/data/ISO 639 name to code|noprotcat=yes}}
{{High-use}}

'''Module:ISO 639 name''' implements:
* {{tlx|ISO 639 name}}
* {{tlx|Lang2iso}}


== Data mapping ==
For code-to-name mapping, this module uses data from:
* [[Module:Language/data/ISO 639-1]] – from IANA [https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language-subtag-registry file]; this data used only for ISO 639-1 language codes / names listed there
* [[Module:Language/data/ISO 639-2]] – from [https://www.loc.gov/standards/iso639-2/php/English_list.php Codes for the Representation of Names of Languages]
* [[Module:Language/data/ISO 639-2B]] – from Codes for the Representation of Names of Languages
* [[Module:Language/data/ISO 639-3]] – from [http://www-01.sil.org/iso639-3/download.asp sil.org UTF-8 Complete Code Tables Set]
* [[Module:Language/data/ISO 639-5]] – from [https://www.loc.gov/standards/iso639-5/id.php Codes for the Representation of Names of Languages Part 5]
* [[Module:Language/data/ISO 639 deprecated]] – from [https://www.loc.gov/standards/iso639-2/php/code_changes.php ISO 639-2/RA Change Notice] and [https://www.loc.gov/standards/iso639-5/changes.php ISO 639-5 Change Notice] includes:
** [[Module:Language/data/ISO 639-3 (dep)]] – from [http://www-01.sil.org/iso639-3/download.asp sil.org UTF-8 Complete Code Tables Set] (Retirements)
* [[Module:Language/data/ISO 639 override]] – code to name mapping where the name is different from the name in the ISO 639 standard
For name-to-code mapping, this module uses data from:
* [[Module:Language/data/ISO 639 name to code]] – names and codes extracted from the code-to-name data set above

== Testcases ==
* [[Module:ISO 639 name/testcases]] ([[Module talk:ISO 639 name/testcases|run]])
* code_to_name()
** [[Module:ISO 639 name/testcases/ISO 639-1 name from code]] ([[Module talk:ISO 639 name/testcases/ISO 639-1 name from code|run]])
** [[Module:ISO 639 name/testcases/ISO 639-2 name from code]] ([[Module talk:ISO 639 name/testcases/ISO 639-2 name from code|run]])
** [[Module:ISO 639 name/testcases/ISO 639-3-1 name from code]] (A–H) ([[Module talk:ISO 639 name/testcases/ISO 639-3-1 name from code|run]])
** [[Module:ISO 639 name/testcases/ISO 639-3-2 name from code]] (I–N) ([[Module talk:ISO 639 name/testcases/ISO 639-3-2 name from code|run]])
** [[Module:ISO 639 name/testcases/ISO 639-3-3 name from code]] (O–Z) ([[Module talk:ISO 639 name/testcases/ISO 639-3-3 name from code|run]])
** [[Module:ISO 639 name/testcases/ISO 639-5 name from code]] ([[Module talk:ISO 639 name/testcases/ISO 639-5 name from code|run]])
** [[Module:ISO 639 name/testcases/ISO 639 deprecated name from code]] ([[Module talk:ISO 639 name/testcases/ISO 639 deprecated name from code|run]])
* name_to_code()
** [[Module:ISO 639 name/testcases/ISO 639-1 code from name]] ([[Module talk:ISO 639 name/testcases/ISO 639-1 code from name|run]])
** [[Module:ISO 639 name/testcases/ISO 639-2 code from name]] ([[Module talk:ISO 639 name/testcases/ISO 639-2 code from name|run]])
** [[Module:ISO 639 name/testcases/ISO 639-3-1 code from name]] (A–H) ([[Module talk:ISO 639 name/testcases/ISO 639-3-1 code from name|run]])
** [[Module:ISO 639 name/testcases/ISO 639-3-2 code from name]] (I–N) ([[Module talk:ISO 639 name/testcases/ISO 639-3-2 code from name|run]])
** [[Module:ISO 639 name/testcases/ISO 639-3-3 code from name]] (O–Z) ([[Module talk:ISO 639 name/testcases/ISO 639-3-3 code from name|run]])
** [[Module:ISO 639 name/testcases/ISO 639-5 code from name]] ([[Module talk:ISO 639 name/testcases/ISO 639-5 code from name|run]])
** [[Module:ISO 639 name/testcases/ISO 639 deprecated code from name]] ([[Module talk:ISO 639 name/testcases/ISO 639 deprecated code from name|run]])

== Tracking categories ==
* {{Category link with count|ISO 639 name template errors}}

==iso_639_code_exists==
Returns <code>true</code> when <code>&lt;{{var|code}}></code> is found in one of the ISO 639-1, -2, -3, -5, or override tables; returns nil else.

Useage:
:<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_exists|</nowiki>&lt;{{var|code}}>}}</code>

Examples:
:without required <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_exists}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_exists}}
:with valid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_exists|nav}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_exists|nav}}
:with invalid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_exists|xx}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_exists|xx}}

==iso_639_code_to_name==
Returns language name associated with <code>&lt;{{var|code}}></code>. May return an error message with or without a language name.

Optional parameters:
:{{para|hide-err|yes}}: suppresses error messages
:{{para|link|yes}}: creates link to en.wiki article about the language
::{{para|label|&lt;{{var|label text}}>}} – requires {{para|link|yes}}; label for the language-name link: <code><nowiki>[[</nowiki>&lt;{{var|language name}}> language|&lt;{{var|label text}}>]]</code>
:{{para|raw|yes}}: queries part tables only; returns language name as defined in the base data tables without the removal of disambiguation information
Examples:
:without required <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|cat=no}}
:with valid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name|nav}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|nav}}
:with invalid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name|xx}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|xx|cat=no}}
:with invalid <code>&lt;{{var|code}}></code> ([[IETF language tag]]):
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name|nv-Latn}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|nv-Latn|cat=no}}
:with invalid <code>&lt;{{var|code}}></code>, error message suppressed:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name|nv-Latn|hide-err=yes}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|nv-Latn|hide-err=yes}}
:linked:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name|nav|link=yes}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|nav|link=yes}}
:linked with alternate spelling:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name|nav|link=yes|label=Navaho}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|nav|link=yes|label=Navaho}}
:ISO 639-1 code <code>el</code> is normally overridden by a setting in [[Module:Language/data/ISO_639_override]]:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name|el}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|el}}
:ISO 639-1 code <code>el</code> with override suppressed:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name|el|raw=yes}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|el|raw=yes}}
:ISO 639-3 code <code>ina</code> name has disambiguation that is normally suppressed:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name|ina}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|ina}}
:ISO 639-3 code <code>ina</code> with disambiguation:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_to_name|ina|raw=yes}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_to_name|ina|raw=yes}}

==iso_639_code_1_to_name==
Same as <code>iso_639_code_to_name</code> except that <code>&lt;{{var|code}}></code> must be an ISO 639-1 code; search is constrained to [[Module:Language/data/ISO 639 override]] and [[Module:Language/data/ISO 639-1]].

Example:
:with valid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_1_to_name|nv}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_1_to_name|nv}}
:with invalid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_1_to_name|xx}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_1_to_name|xx|cat=no}}

==iso_639_code_2_to_name==
Same as <code>iso_639_code_to_name</code> except that <code>&lt;{{var|code}}></code> must be an ISO 639-2 code; search is constrained to [[Module:Language/data/ISO 639 override]] and [[Module:Language/data/ISO 639-2]].

Example:
:with valid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_2_to_name|apa}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_2_to_name|apa}}
:with invalid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_2_to_name|xxx}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_2_to_name|xxx|cat=no}}

==iso_639_code_2B_to_name==
Same as <code>iso_639_code_to_name</code> except that <code>&lt;{{var|code}}></code> must be an ISO 639-2B code; search is constrained to [[Module:Language/data/ISO 639 override]] and [[Module:Language/data/ISO 639-2B]].

Example:
:with valid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_2B_to_name|ice}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_2B_to_name|ice}}
:with invalid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_2B_to_name|xxx}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_2B_to_name|xxx|cat=no}}

==iso_639_code_3_to_name==
Same as <code>iso_639_code_to_name</code> except that <code>&lt;{{var|code}}></code> must be an ISO 639-3 code; search is constrained to [[Module:Language/data/ISO 639 override]] and [[Module:Language/data/ISO 639-3]].

Example:
:with valid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_3_to_name|nav}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_3_to_name|nav}}
:with invalid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_3_to_name|xxx}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_3_to_name|xxx|cat=no}}

==iso_639_code_5_to_name==
Same as <code>iso_639_code_to_name</code> except that <code>&lt;{{var|code}}></code> must be an ISO 639-5 code; search is constrained to [[Module:Language/data/ISO 639 override]] and [[Module:Language/data/ISO 639-5]].

Example:
:with valid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_5_to_name|apa}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_5_to_name|apa}}
:with invalid <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_code_5_to_name|xxx}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_code_5_to_name|xxx|cat=no}}

==iso_639_name_exists==
Returns <code>true</code> when <code>&lt;{{var|language name}}></code> is found in one of the ISO 639-1, -2, -3, -5, or override tables; returns nil else.

Useage:
:<code><nowiki>{{#invoke:ISO 639 name|iso_639_name_exists|</nowiki>&lt;{{var|language name}}>}}</code>

Examples:
:without required <code>&lt;{{var|language name}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_name_exists}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_name_exists}}
:with valid <code>&lt;{{var|language name}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_name_exists|french}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_name_exists|french}}
:with invalid <code>&lt;{{var|language name}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_name_exists|fr}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_name_exists|fr}}

==iso_639_name_to_code==
Returns ISO 639 language code associated with <code>&lt;{{var|language name}}></code>. May return an error message with or without a language name.

This function may not be particularly useful because, except for case, <code>&lt;{{var|language name}}></code> must exactly match the name in the data tables.

Optional parameters:
:<code>&lt;{{var|part}}></code> (second positional parameter) – limits return to codes from the specified <code>&lt;{{var|part}}></code> (<code>1</code>, <code>2</code>, <code>3</code>, <code>5</code>), override table first then the appropriate data table; when not supplied, this function searches in order part 1 to part 5. The search stops when a match is found.
:{{para|hide-err|yes}}: suppresses error messages

Examples:
:without <code>&lt;{{var|part}}></code>, with ISO 639-5 name:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_name_to_code|North Germanic languages}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_name_to_code|North Germanic languages}}
:with <code>&lt;{{var|part}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639_name_to_code|Navajo|2}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639_name_to_code|Navajo|2}}

==iso_639==
When given an ISO 639 language code, return the associated language name; when given a language name, returns the associated ISO 639 language code. May return an error message with or without a language code/name.

This function may not be particularly useful because, except for case, a provided <code>&lt;{{var|language name}}></code> must exactly match the name in the data tables.

Optional parameters:
:<code>&lt;{{var|part}}></code> (second positional parameter) – limits return to codes/names from the specified <code>&lt;{{var|part}}></code> (<code>1</code>, <code>2</code>, <code>3</code>, <code>5</code>), override table first then the appropriate data table; when not supplied, this function searches in order part 1 to part 5. The search stops when a match is found.
:{{para|hide-err|yes}}: suppresses error messages

Examples:
:without <code>&lt;{{var|part}}></code>, with ISO 639-5 code:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639|gmq}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639|gmq}}
:without <code>&lt;{{var|part}}></code>, with ISO 639-5 name:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639|North Germanic languages}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639|North Germanic languages}}
:with <code>&lt;{{var|part}}></code> and <code>&lt;{{var|code}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639|nav|2}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639|nav|2}}
:with <code>&lt;{{var|part}}></code> and <code>&lt;{{var|name}}></code>:
::<code><nowiki>{{#invoke:ISO 639 name|iso_639|Navaho|2}}</nowiki></code> → {{#invoke:ISO 639 name|iso_639|Navaho|2}}

<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language-related modules]]
}}</includeonly>