]> Frank Brehm's Git Trees - pixelpark/puppetmaster-webhooks.git/commitdiff
Some changhes because of i18n
authorFrank Brehm <frank.brehm@pixelpark.com>
Tue, 12 Feb 2019 17:12:06 +0000 (18:12 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Tue, 12 Feb 2019 17:12:06 +0000 (18:12 +0100)
lib/webhooks/base_app.py
lib/webhooks/xlate.py
requirements.txt
update-env.sh

index bd3cf5df7e1f26178211345bb931a59964d634b9..71e5c61138f623d3b042ecb5bc3f18e5388c1173 100644 (file)
@@ -33,6 +33,8 @@ import six
 import yaml
 import pytz
 
+from webob.acceptparse import create_accept_language_header
+
 # Own modules
 from fb_tools.common import pp, to_bytes, to_bool
 from fb_tools.colored import ColoredFormatter
@@ -49,7 +51,7 @@ from .module_list import ModuleInfoDict
 from .xlate import __module_dir__ as __xlate_module_dir__
 from .xlate import __base_dir__ as __xlate_base_dir__
 from .xlate import __mo_file__ as __xlate_mo_file__
-from .xlate import XLATOR, LOCALE_DIR, DOMAIN
+from .xlate import XLATOR, LOCALE_DIR, DOMAIN, SUPPORTED_LANGS
 
 __version__ = __pkg_version__
 
@@ -148,10 +150,13 @@ class BaseHookApp(BaseApplication):
 
     re_selbstlaut = re.compile(r'^[ieaouy]', re.IGNORECASE)
 
+    default_charset = 'utf-8'
+    default_language = 'en_US'
+
     open_args = {}
     if six.PY3:
         open_args = {
-            'encoding': 'utf-8',
+            'encoding': default_charset,
             'errors': 'surrogateescape',
         }
 
@@ -246,6 +251,8 @@ class BaseHookApp(BaseApplication):
 
         self.search_curl_bin()
 
+        self.init_locales()
+
         self.handler = BaseHandler(
             appname=self.appname, verbose=self.verbose, base_dir=self.base_dir,
             quiet=self.quiet, simulate=self.simulate)
@@ -255,6 +262,20 @@ class BaseHookApp(BaseApplication):
 
         return
 
+    # -------------------------------------------------------------------------
+    def init_locales(self):
+
+        accept_langs = os.getenv('HTTP_ACCEPT_LANGUAGE', None)
+        accept = create_accept_language_header(accept_langs)
+        lang = self.default_language + '.' + self.default_charset
+
+        if accept:
+            match = accept.best_match(SUPPORTED_LANGS)
+            if match:
+                lang = match + '.' + self.default_charset
+        LOG.debug("Setting 'LC_ALL' to {!r}.".format(lang))
+        os.putenv('LC_ALL', lang)
+
     # -------------------------------------------------------------------------
     def init_arg_parser(self):
         """
@@ -536,6 +557,8 @@ class BaseHookApp(BaseApplication):
         res['mail_subject'] = self.mail_subject
         res['mail_headline'] = self.mail_headline
         res['sort_by_name'] = self.sort_by_name
+        res['default_charset'] = self.default_charset
+        res['default_language'] = self.default_language
 
         if 'xlate' not in res:
             res['xlate'] = {}
@@ -544,6 +567,7 @@ class BaseHookApp(BaseApplication):
             '__base_dir__': __xlate_base_dir__,
             'LOCALE_DIR': LOCALE_DIR,
             'DOMAIN': DOMAIN,
+            'SUPPORTED_LANGS': SUPPORTED_LANGS,
             '__mo_file__': __xlate_mo_file__,
         }
 
index d0473c6d5f3a15433ee552bd18a8cba9a83e7338..babbda21b6acb171001f041cab0ea9a894ad6f99 100644 (file)
@@ -23,7 +23,7 @@ DOMAIN = 'puppetmaster_webhooks'
 
 LOG = logging.getLogger(__name__)
 
-__version__ = '1.0.1'
+__version__ = '1.0.2'
 
 __me__ = Path(__file__).resolve()
 __module_dir__ = __me__.parent
@@ -45,6 +45,11 @@ if __mo_file__:
 else:
     XLATOR = gettext.NullTranslations()
 
+SUPPORTED_LANGS = (
+    'de_DE',
+    'en_US'
+)
+
 _ = XLATOR.gettext
 
 # =============================================================================
index a0cfdadf8c1b578b1ed7aec08450d3655cece358..a0e3e1eae80f64769ab2a378fdffe29d1d0570ee 100644 (file)
@@ -11,3 +11,4 @@ docker-py
 pathlib
 git+https://git.pixelpark.com/frabrehm/python_fb_tools.git@master
 Babel
+webob
index 5de1efe76def7936a8f90309e6940b73211b2b25..3acf7b1679f53560acdeac5c8a3f57ed82fe7cc8 100755 (executable)
@@ -52,6 +52,12 @@ echo
 pip install --upgrade --upgrade-strategy eager pip
 echo
 
+echo "---------------------------------------------------"
+echo "Upgrading setuptools + wheel + six ..."
+echo
+pip install --upgrade --upgrade-strategy eager setuptools wheel six
+echo
+
 echo "---------------------------------------------------"
 echo "Installing and/or upgrading necessary modules ..."
 echo