summaryrefslogtreecommitdiff
path: root/docutils/languages
diff options
context:
space:
mode:
authormilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2010-09-17 21:38:29 +0000
committermilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2010-09-17 21:38:29 +0000
commitc346595d2e87faf2db2ebc096b1eec0bc260de8a (patch)
treeccd1be8b591a95857ad614bdf1230b9b48e1740e /docutils/languages
parenta8a145d40efbb9f0280dcd99d408c281d7c38149 (diff)
downloaddocutils-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__.py19
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