--- a/src/pyams_utils/i18n.py Wed Nov 20 19:26:23 2019 +0100
+++ b/src/pyams_utils/i18n.py Fri Nov 22 18:51:37 2019 +0100
@@ -10,25 +10,43 @@
# FOR A PARTICULAR PURPOSE.
#
-"""I18n module used to get browser language from request"""
+"""PyAMS_utils.i18n module
-__docformat__ = 'restructuredtext'
+This module is used to get browser language from request
+"""
import locale
+__docformat__ = 'restructuredtext'
+
+
def normalize_lang(lang):
- """Normalize input languages string"""
- lang = lang.strip().lower()
- lang = lang.replace('_', '-')
- lang = lang.replace(' ', '')
- return lang
+ """Normalize input languages string
+
+ >>> from pyams_utils.i18n import normalize_lang
+ >>> lang = 'fr,en-US ; q=0.9, en-GB ; q=0.8, en ; q=0.7'
+ >>> normalize_lang(lang)
+ 'fr,en-us;q=0.9,en-gb;q=0.8,en;q=0.7'
+ """
+ return lang.strip() \
+ .lower() \
+ .replace('_', '-') \
+ .replace(' ', '')
def get_browser_language(request):
"""Custom locale negotiator
Copied from zope.publisher code
+
+ >>> from pyramid.testing import DummyRequest
+ >>> from pyams_utils.i18n import get_browser_language
+
+ >>> request = DummyRequest()
+ >>> request.headers['Accept-Language'] = 'fr, en-US ; q=0.9, en-GB ; q=0.8, en ; q=0.7'
+ >>> get_browser_language(request)
+ 'fr'
"""
accept_langs = request.headers.get('Accept-Language', '').split(',')
@@ -75,7 +93,10 @@
def set_locales(config):
- """Define locale environment variables"""
+ """Define locale environment variables
+
+ :param config: Pyramid's settings object
+ """
for attr in ('LC_CTYPE', 'LC_COLLATE', 'LC_TIME', 'LC_MONETARY', 'LC_NUMERIC', 'LC_ALL'):
value = config.get('pyams.locale.{0}'.format(attr.lower()))
if value: