src/pyams_utils/i18n.py
branchdev-tf
changeset 408 cf2304af0fab
parent 367 2c95d34496f5
--- 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: