Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Schampijer <simon@laptop.org>2013-03-05 13:17:36 (GMT)
committer Simon Schampijer <simon@laptop.org>2013-03-08 09:29:17 (GMT)
commitdcbdcd77fe803ca12d5b973ea3764d2042a9a991 (patch)
tree8edb9a4ab01738e8904d24d0252ff5ee47ce9b05
parent63b8e87b1a99a854e9adbb1579b1e05244d2dc46 (diff)
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 <simon@laptop.org> Reviewed-by: Daniel Drake <dsd@laptop.org>
-rw-r--r--bin/sugar-activity7
-rw-r--r--src/sugar3/activity/i18n.py9
2 files changed, 11 insertions, 5 deletions
diff --git a/bin/sugar-activity b/bin/sugar-activity
index abaa091..7cec4c4 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 8b8e663..fe0d968 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: