diff options
| author | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2010-09-17 21:38:29 +0000 |
|---|---|---|
| committer | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2010-09-17 21:38:29 +0000 |
| commit | c346595d2e87faf2db2ebc096b1eec0bc260de8a (patch) | |
| tree | ccd1be8b591a95857ad614bdf1230b9b48e1740e /docutils/languages | |
| parent | a8a145d40efbb9f0280dcd99d408c281d7c38149 (diff) | |
| download | docutils-c346595d2e87faf2db2ebc096b1eec0bc260de8a.tar.gz | |
Handle language codes according to BCP 47
(Best Current Praxis: Tags for Identifying Languages).
Normalize language tags: downcase, - to _, optional subtags.
E.g. Given "de-AT-1901", look for language modules
"de_at_1901", "de_at", "de_1901", and "de"
TODO: warn (instead of fail), if no module found.
git-svn-id: https://svn.code.sf.net/p/docutils/code/trunk/docutils@6423 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/languages')
| -rw-r--r-- | docutils/languages/__init__.py | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/docutils/languages/__init__.py b/docutils/languages/__init__.py index 7d6521fc1..c61871b90 100644 --- a/docutils/languages/__init__.py +++ b/docutils/languages/__init__.py @@ -11,11 +11,20 @@ This package contains modules for language-dependent features of Docutils. __docformat__ = 'reStructuredText' +from docutils.utils import normalize_language_tag + _languages = {} def get_language(language_code): - if language_code in _languages: - return _languages[language_code] - module = __import__(language_code, globals(), locals()) - _languages[language_code] = module - return module + for tag in normalize_language_tag(language_code): + if tag in _languages: + return _languages[tag] + try: + module = __import__(tag, globals(), locals()) + except ImportError: + continue + _languages[tag] = module + return module + # TODO: use Docutils reporter, warn instead of fail + # warn ('language "%s" not supported' % tag) + raise |
