Skip to main content

iso639-lang

PyPI PyPI - Downloads

iso639-lang is a simple library to handle the ISO 639 series of international standards for language codes.

>>> from iso639 import Lang
>>> Lang("fr")
Lang(name='French', pt1='fr', pt2b='fre', pt2t='fra', pt3='fra', pt5='')

iso639-lang allows you to switch from one language code to another easily. There’s no need to manually download or parse data files, just use the Lang class!

ISO 639-1, ISO 639-2, ISO 639-3 and ISO 639-5 parts are all supported.

Installing iso639-lang and Supported Versions

iso639-lang is available on PyPI:

$ pip install iso639-lang

iso639-lang supports Python 3.6+.

Usage

Handling language codes with iso639-lang is very simple.

Begin by importing the Lang class:

>>> from iso639 import Lang

Lang is instantiable with any ISO 639 language code or name. For example, let’s try to get the ISO 639 codes for French:

>>> lg = Lang("French")
>>> lg.name
'French'
>>> lg.pt1
'fr'
>>> lg.pt2b
'fre'
>>> lg.pt2t
'fra'
>>> lg.pt3
'fra'
>>> lg.pt5
''

Lang instances are sortable by name and hashable.

>>> langs = [Lang("deu"), Lang("eng"), Lang("rus"), Lang("eng")]
>>> [lg.name for lg in sorted(langs)]
['English', 'English', 'German', 'Russian']
>>> [lg.pt3 for lg in set(langs)]
['eng', 'rus', 'deu']

Language Types

The type of a language is accessible thanks to the type method.

>>> lg = Lang("Latin")
>>> lg.type()
'Ancient'

Macrolanguages

You can easily determine whether a language is a macrolanguage or an individual language.

>>> lg = Lang("Arabic")
>>> lg.scope()
'Macrolanguage'

Use the macro method to get the macrolanguage of an individual language.

>>> lg = Lang("Wu Chinese")
>>> lg.macro()
Lang(name='Chinese', pt1='zh', pt2b='chi', pt2t='zho', pt3='zho', pt5='')

Conversely, you can also list all the individual languages that share a common macrolanguage.

>>> lg = Lang("Persian")
>>> lg.individuals()
[Lang(name='Iranian Persian', pt1='', pt2b='', pt2t='', pt3='pes', pt5=''), 
Lang(name='Dari', pt1='', pt2b='', pt2t='', pt3='prs', pt5='')]

Exceptions

When an invalid language value is passed to Lang, an InvalidLanguageValue exception is raised.

>>> from iso639.exceptions import InvalidLanguageValue
>>> try:
...     Lang("foobar")
... except InvalidLanguageValue as e:
...     e.msg
... 
"'foobar' not supported by ISO 639"

When an deprecated language value is passed to Lang, a DeprecatedLanguageValue exception is raised.

>>> from iso639.exceptions import DeprecatedLanguageValue
>>> try:
...     Lang("gsc")
... except DeprecatedLanguageValue as e:
...     lg = Lang(e.change_to)
...     f"{e.name} replaced by {lg.name}"
...
'Gascon replaced by Occitan (post 1500)'

Other functions

iter_langs() iterates through all possible Lang instances, ordered alphabetically by name.

>>> from iso639 import iter_langs
>>> [lg.name for lg in iter_langs()]
["'Are'are", "'Auhelawa", "A'ou", 'A-Pucikwar', 'Aari', ... , 'ǁGana', 'ǁXegwi', 'ǂHua', 'ǂUngkue', 'ǃXóõ']

Sources of data used by iso639-lang

As of August 17, 2021, iso639-lang is based on the latest official code tables provided by the ISO 639 registration authorities.

Standard Name Registration Authority
ISO 639-1 Part 1: Alpha-2 code Infoterm
ISO 639-2 Part 2: Alpha-3 code Library of Congress
ISO 639-3 Part 3: Alpha-3 code for comprehensive coverage of languages SIL International
ISO 639-4 Part 4: Implementation guidelines and general principles for language coding (not a list) ISO/TC 37/SC 2
ISO 639-5 Part 5: Alpha-3 code for language families and groups Library of Congress

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iso639-lang-2.0.0.tar.gz (274.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iso639_lang-2.0.0-py3-none-any.whl (279.9 kB view details)

Uploaded Python 3

File details

Details for the file iso639-lang-2.0.0.tar.gz.

File metadata

  • Download URL: iso639-lang-2.0.0.tar.gz
  • Upload date:
  • Size: 274.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.7.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for iso639-lang-2.0.0.tar.gz
Algorithm Hash digest
SHA256 079d11a5557ebd76aba5e2f7e69e266498f7f285ce9fff047ba84f7d2c7cd502
MD5 37fa553d514fb329dbd6fb2ba61e1ef9
BLAKE2b-256 fefe625fba46947038fd2817cb9b85117564e97e18f726728991b70d9b5f1747

See more details on using hashes here.

File details

Details for the file iso639_lang-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: iso639_lang-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 279.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.7.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for iso639_lang-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 01b84b75b22871c66d23f5291954a86086ecfbe8e79d0a574ffa02ccb0519e4d
MD5 5b036636937c90f7d24592c87453f9d0
BLAKE2b-256 268122d1fd78a65acccb702ccaf32d27c629d06e4c5cbecb7e15ac7e16b939d2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page