From 5e639d4eb7c3ab25bd0ed770268b514d39fd08b2 Mon Sep 17 00:00:00 2001 From: Vit Mojzis Date: Sep 06 2017 10:46:40 +0000 Subject: framework: Fix semi-translated messages Gettext domains were hardcoded in some modules (pointing to translations for setroubleshoot plugins) which caused semi-translated messages. Remove hardcoded gettext domain and use value from config file instead. Note: gettext.install sets the "_" function into global builtins namespace, as opposed "manually" setting "_" with gettext.translation(...).gettext, which only affects given module. Therefore in some cases both methods were left in use. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1332126 --- diff --git a/framework/src/sealert b/framework/src/sealert index f926195..c612214 100755 --- a/framework/src/sealert +++ b/framework/src/sealert @@ -41,9 +41,12 @@ import slip.dbus.service from setroubleshoot.config import parse_config_setting, get_config domain = get_config('general', 'i18n_text_domain') +kwargs = {} +if sys.version_info < (3,): + kwargs['unicode'] = True gettext.install(domain = domain, - unicode = True, - localedir = get_config('general', 'i18n_locale_dir')) + localedir = get_config('general', 'i18n_locale_dir'), + **kwargs) syslog.openlog(sys.argv[0]) from setroubleshoot.errcode import * diff --git a/framework/src/setroubleshoot/Plugin.py b/framework/src/setroubleshoot/Plugin.py index 8cdc746..c67b6ad 100644 --- a/framework/src/setroubleshoot/Plugin.py +++ b/framework/src/setroubleshoot/Plugin.py @@ -20,8 +20,17 @@ # import gettext -translation=gettext.translation('setroubleshoot-plugins', fallback=True) -_=translation.ugettext +from setroubleshoot.config import parse_config_setting, get_config + +translation=gettext.translation(domain = get_config('general', 'i18n_text_domain'), + localedir = get_config('general', 'i18n_locale_dir'), + fallback = True) + +try: + _ = translation.ugettext # Unicode version of gettext for Py2 +except AttributeError: + _ = translation.gettext # Python3 (uses unicode by default) + from setroubleshoot.signature import * from setroubleshoot.util import * diff --git a/framework/src/setroubleshoot/browser.py b/framework/src/setroubleshoot/browser.py index 5c2edae..29ae39b 100644 --- a/framework/src/setroubleshoot/browser.py +++ b/framework/src/setroubleshoot/browser.py @@ -22,14 +22,26 @@ import gettext from math import pi from subprocess import * from gettext import ngettext as P_ +import sys, os from setroubleshoot.config import parse_config_setting, get_config domain = get_config('general', 'i18n_text_domain') +localedir = get_config('general', 'i18n_locale_dir') + +kwargs = {} +if sys.version_info < (3,): + kwargs['unicode'] = True gettext.install(domain = domain, - unicode = True, - localedir = get_config('general', 'i18n_locale_dir')) -translation=gettext.translation(domain, fallback=True) -_=translation.ugettext -import sys, os + localedir = localedir, + **kwargs) + +translation=gettext.translation(domain = domain, + localedir = localedir, + fallback = True) +try: + _ = translation.ugettext # This raises exception in Python3, succ. in Py2 +except AttributeError: + _ = translation.gettext # Python3 + from xml.dom import minidom from xmlrpclib import ProtocolError import gtk, glib diff --git a/framework/src/setroubleshoot/errcode.py b/framework/src/setroubleshoot/errcode.py index e45e834..bb2cd02 100644 --- a/framework/src/setroubleshoot/errcode.py +++ b/framework/src/setroubleshoot/errcode.py @@ -17,8 +17,16 @@ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # import gettext -translation=gettext.translation('setroubleshoot-plugins', fallback=True) -_=translation.ugettext +from setroubleshoot.config import parse_config_setting, get_config + +translation=gettext.translation(domain = get_config('general', 'i18n_text_domain'), + localedir = get_config('general', 'i18n_locale_dir'), + fallback = True) + +try: + _ = translation.ugettext # Unicode version of gettext for Py2 +except AttributeError: + _ = translation.gettext # Python3 (uses unicode by default) __all__ = [ 'ProgramError', diff --git a/framework/src/setroubleshoot/server.py b/framework/src/setroubleshoot/server.py index 71a9f2b..e320ae2 100755 --- a/framework/src/setroubleshoot/server.py +++ b/framework/src/setroubleshoot/server.py @@ -48,14 +48,17 @@ import systemd.journal from setroubleshoot.config import parse_config_setting, get_config domain = get_config('general', 'i18n_text_domain') +localedir = get_config('general', 'i18n_locale_dir') kwargs = {} if sys.version_info < (3,): kwargs['unicode'] = True gettext.install(domain = domain, - localedir = get_config('general', 'i18n_locale_dir'), + localedir = localedir, **kwargs) -translation=gettext.translation(domain, fallback=True) +translation=gettext.translation(domain = domain, + localedir = localedir, + fallback = True) try: _ = translation.ugettext # This raises exception in Python3, succ. in Py2 diff --git a/framework/src/setroubleshoot/signature.py b/framework/src/setroubleshoot/signature.py index 79d843a..3031163 100755 --- a/framework/src/setroubleshoot/signature.py +++ b/framework/src/setroubleshoot/signature.py @@ -22,8 +22,16 @@ import syslog from subprocess import * import setroubleshoot.default_encoding_utf8 import gettext -translation=gettext.translation('setroubleshoot-plugins', fallback=True) -_=translation.ugettext +from setroubleshoot.config import parse_config_setting, get_config + +translation=gettext.translation(domain = get_config('general', 'i18n_text_domain'), + localedir = get_config('general', 'i18n_locale_dir'), + fallback = True) + +try: + _ = translation.ugettext # Unicode version of gettext for Py2 +except AttributeError: + _ = translation.gettext # Python3 (uses unicode by default) __all__ = [ 'SignatureMatch', @@ -47,10 +55,8 @@ __all__ = [ ] if __name__ == "__main__": - import gettext - from setroubleshoot.config import parse_config_setting, get_config gettext.install(domain = get_config('general', 'i18n_text_domain'), - localedir = get_config('general', 'i18n_locale_dir')) + localedir = get_config('general', 'i18n_locale_dir')) from gettext import ngettext as P_ from setroubleshoot.config import get_config