Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2011-02-22 00:15:20 (GMT)
committer Simon Schampijer <simon@schampijer.de>2011-02-22 00:15:20 (GMT)
commitb9974db19f8fbf1692896812231fcc46ee7bf7a9 (patch)
tree4d04543ea18ad52f840beeb5f36ddb1479c0cd66
parentfd15e619f3c95bf0b1ded1dde899a56e87a92576 (diff)
Restore setting a language with the command line OLPC #10681
Move the code that handles the list given by the view to a separate function to make it clearer. Signed-off-by: Simon Schampijer <simon@laptop.org> Acked-by: Sascha Silbe <silbe@activitycentral.com>
-rw-r--r--extensions/cpsection/language/model.py44
-rw-r--r--extensions/cpsection/language/view.py2
2 files changed, 24 insertions, 22 deletions
diff --git a/extensions/cpsection/language/model.py b/extensions/cpsection/language/model.py
index 48bb496..240e562 100644
--- a/extensions/cpsection/language/model.py
+++ b/extensions/cpsection/language/model.py
@@ -67,9 +67,7 @@ def _initialize():
lang[1].replace(' ', '_'))
-def _write_i18n(langs):
- colon = ':'
- langstr = colon.join(langs)
+def _write_i18n(lang_env, language_env):
path = os.path.join(os.environ.get('HOME'), '.i18n')
if not os.access(path, os.W_OK):
print _standard_msg
@@ -79,8 +77,8 @@ def _write_i18n(langs):
fd.close()
else:
fd = open(path, 'w')
- fd.write('LANG="%s"\n' % langs[0].strip("\n"))
- fd.write('LANGUAGE="%s"\n' % langstr)
+ fd.write('LANG="%s"\n' % lang_env)
+ fd.write('LANGUAGE="%s"\n' % language_env)
fd.close()
@@ -135,23 +133,27 @@ def set_languages(languages):
"""Set the system language.
languages :
"""
- if isinstance(languages, str):
- # This came from the commandline
- #TODO: Support multiple languages from the command line
- if languages.endswith('utf8'):
- _write_i18n(languages)
- return 1
- else:
- langs = read_all_languages()
- for lang, territory, locale in langs:
- code = lang.replace(' ', '_') + '/' \
- + territory.replace(' ', '_')
- if code == languages:
- _write_i18n(locale)
- return 1
- print (_("Sorry I do not speak \'%s\'.") % languages)
+
+ if languages.endswith('utf8'):
+ set_languages_list([languages])
+ return 1
else:
- _write_i18n(languages)
+ langs = read_all_languages()
+ for lang, territory, locale in langs:
+ code = lang.replace(' ', '_') + '/' \
+ + territory.replace(' ', '_')
+ if code == languages:
+ set_languages_list([locale])
+ return 1
+ print (_("Sorry I do not speak \'%s\'.") % languages)
+
+
+def set_languages_list(languages):
+ """Set the system language using a list of preferred languages"""
+ colon = ':'
+ language_env = colon.join(languages)
+ lang_env = languages[0].strip('\n')
+ _write_i18n(lang_env, language_env)
# inilialize the docstrings for the language
diff --git a/extensions/cpsection/language/view.py b/extensions/cpsection/language/view.py
index c58b334..1553959 100644
--- a/extensions/cpsection/language/view.py
+++ b/extensions/cpsection/language/view.py
@@ -273,7 +273,7 @@ class Language(SectionView):
def __lang_timeout_cb(self, codes):
self._lang_sid = 0
- self._model.set_languages(codes)
+ self._model.set_languages_list(codes)
self.restart_alerts.append('lang')
self.needs_restart = True
self._lang_alert.props.msg = self.restart_msg