From dcbdcd77fe803ca12d5b973ea3764d2042a9a991 Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Tue, 5 Mar 2013 14:17:36 +0100 Subject: [PATCH] i18n get_locale_path: handle the case when the default locale is not set, SL #4450 If the default locale is not set (see SL #4450 for a use case), get_locale_path does now return None so that the sugar-activity script can handle that case cleanly. Signed-off-by: Simon Schampijer Reviewed-by: Daniel Drake --- bin/sugar-activity | 7 ++++--- src/sugar3/activity/i18n.py | 9 +++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/bin/sugar-activity b/bin/sugar-activity index abaa091b..7cec4c41 100644 --- a/bin/sugar-activity +++ b/bin/sugar-activity @@ -107,9 +107,10 @@ def main(): # must be done early, some activities set translations globally, SL #3654 locale_path = i18n.get_locale_path(bundle.get_bundle_id()) - gettext.bindtextdomain(bundle.get_bundle_id(), locale_path) - gettext.bindtextdomain('sugar-toolkit', sugar3.locale_path) - gettext.textdomain(bundle.get_bundle_id()) + if locale_path: + gettext.bindtextdomain(bundle.get_bundle_id(), locale_path) + gettext.bindtextdomain('sugar-toolkit', sugar3.locale_path) + gettext.textdomain(bundle.get_bundle_id()) splitted_module = args[0].rsplit('.', 1) module_name = splitted_module[0] diff --git a/src/sugar3/activity/i18n.py b/src/sugar3/activity/i18n.py index 8b8e6631..fe0d9684 100644 --- a/src/sugar3/activity/i18n.py +++ b/src/sugar3/activity/i18n.py @@ -119,7 +119,8 @@ def get_locale_path(bundle_id): @type bundle_id: string @param bundle_id: The bundle id of the activity in question @rtype: string - @return: the preferred locale path + @return: the preferred locale path or None in the + case of an error """ # Note: We pre-assign weights to the directories so that if no translations @@ -135,10 +136,14 @@ def get_locale_path(bundle_id): candidate_dirs[os.path.join(sys.prefix, 'share', 'locale')] = 0 + default_locale = locale.getdefaultlocale()[0] + if not default_locale: + return None + for candidate_dir in candidate_dirs.keys(): if os.path.exists(candidate_dir): full_path = os.path.join(candidate_dir, \ - locale.getdefaultlocale()[0], 'LC_MESSAGES', \ + default_locale, 'LC_MESSAGES', \ bundle_id + '.mo') if os.path.exists(full_path): try: