Skip to content

Parser and validator for BCP 47 (language codes)

Notifications You must be signed in to change notification settings

phlax/python-bcp47

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status codecov

python-bcp47

A validating parser for bcp47 language codes

Data taken from IANA http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry

bcp47 spec https://tools.ietf.org/html/bcp47

useful reading: https://www.w3.org/International/articles/language-tags/index.en

extension and private-use tag types are not currently supported

Python example

You can read the languages, extlangs, scripts, variants, regions, grandfathereds, and redundants language tag parts from dicts on the bcp47 object.

They return OrderedDicts containing the IANA database information

>>> from bcp47 import bcp47

>>> list(bcp47["languages"].items())[:2]
[('aa', {'Subtag': 'aa', 'Description': ['Afar'], 'Added': '2005-10-16'}), ('ab', {'Subtag': 'ab', 'Description': ['Abkhazian'], 'Added': '2005-10-16', 'Suppress-Script': 'Cyrl'})]

>>>  list(bcp47["regions"].items())[:2]
[('AA', {'Subtag': 'AA', 'Description': ['Private use'], 'Added': '2005-10-16'}), ('AC', {'Subtag': 'AC', 'Description': ['Ascension Island'], 'Added': '2009-07-29'})]
`

You can create a language code tag as follows

>>> tag = bcp47(language="en", region="GB")
>>> tag
<bcp47.code.BCP47Code 'en-GB' />

>>> tag.language
'en'
>>> tag.region
'GB'
>>> str(tag)
'en-GB'

You can also pass a string or list of args to create a tag

>>> bcp47("en-GB")
<bcp47.code.BCP47Code 'en-GB' />

>>> bcp47("en", "GB")
<bcp47.code.BCP47Code 'en-GB' />

Creating a tag with invalid or unrecognized parameters raises an BCP47Exception

>>> tag = bcp47(language="NOTALANGUAGE", region="GB")
Traceback (most recent call last):
...
BCP47Exception: Language 'NOTALANGUAGE' not recognized

>>> tag = bcp47("en-NOTAREGION")
Traceback (most recent call last):
...
BCP47Exception: Unrecognized tag part 'NOTAREGION'

About

Parser and validator for BCP 47 (language codes)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages