From 83e09a2e89e44909fce82f875472c822b277e7f9 Mon Sep 17 00:00:00 2001
From: Aleksey Lim <alsroot@activitycentral.org>
Date: Mon, 11 Jul 2011 11:49:32 +0000
Subject: [PATCH] Kepp sugar locale in ~/.dmrc instead of ~/.i18n #2603
---
bin/sugar.in | 8 +++++-
extensions/cpsection/language/model.py | 44 ++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 1 deletions(-)
mode change 100644 => 100755 bin/sugar.in
diff --git a/bin/sugar.in b/bin/sugar.in
old mode 100644
new mode 100755
index 9be4f9c..808a3f9
a
|
b
|
if test "$SUGAR_EMULATOR" = "yes" -a "$(type gnome-keyring-daemon)"; then |
72 | 72 | fi |
73 | 73 | |
74 | 74 | # Source language settings and debug definitions |
75 | | if [ -f ~/.i18n ]; then |
| 75 | if [ -f ~/.dmrc ]; then |
| 76 | dmrc_lang=$(grep -i '^Language *=' ~/.dmrc | awk -F= '{print $2}' | sed 's/[[:space:]]//g') |
| 77 | if [ "${dmrc_lang}" ]; then |
| 78 | LANG="${dmrc_lang}" |
| 79 | LANGUAGE="${LANG}:$(grep -i '^ExtraLanguages *=' ~/.dmrc | awk -F= '{print $2}' | sed 's/[[:space:]]//g; s/;/:/g')" |
| 80 | fi |
| 81 | elif [ -f ~/.i18n ]; then |
76 | 82 | . ~/.i18n |
77 | 83 | fi |
78 | 84 | if [ -f ~/.sugar/debug ]; then |
diff --git a/extensions/cpsection/language/model.py b/extensions/cpsection/language/model.py
index 17de6bb..06e945f 100644
a
|
b
|
import os |
24 | 24 | import locale |
25 | 25 | from gettext import gettext as _ |
26 | 26 | import subprocess |
| 27 | from ConfigParser import ConfigParser |
27 | 28 | |
28 | 29 | |
29 | 30 | _default_lang = '%s.%s' % locale.getdefaultlocale() |
… |
… |
def _initialize(): |
68 | 69 | |
69 | 70 | |
70 | 71 | def _write_i18n(lang_env, language_env): |
| 72 | dmrc_path = os.path.join(os.environ.get('HOME'), '.dmrc') |
| 73 | if os.path.exists(dmrc_path): |
| 74 | dmrc = ConfigParser() |
| 75 | dmrc.optionxform = lambda x: str(x).capitalize() |
| 76 | dmrc.read(dmrc_path) |
| 77 | |
| 78 | if not dmrc.has_section('Desktop'): |
| 79 | dmrc.add_section('Desktop') |
| 80 | dmrc.set('Desktop', 'Language', lang_env) |
| 81 | if not dmrc.has_section('Sugar'): |
| 82 | dmrc.add_section('Sugar') |
| 83 | langs = language_env.split(':') |
| 84 | if len(langs) > 1: |
| 85 | dmrc.set('Sugar', 'ExtraLanguages', ';'.join(langs[1:])) |
| 86 | else: |
| 87 | dmrc.set('Sugar', 'ExtraLanguages', '') |
| 88 | |
| 89 | dmrc_file = file(dmrc_path, 'w') |
| 90 | dmrc.write(dmrc_file) |
| 91 | dmrc_file.close() |
| 92 | |
| 93 | return |
| 94 | |
71 | 95 | path = os.path.join(os.environ.get('HOME'), '.i18n') |
72 | 96 | if not os.access(path, os.W_OK): |
73 | 97 | print _standard_msg |
… |
… |
def _write_i18n(lang_env, language_env): |
83 | 107 | |
84 | 108 | |
85 | 109 | def get_languages(): |
| 110 | dmrc_path = os.path.join(os.environ.get('HOME'), '.dmrc') |
| 111 | if os.path.exists(dmrc_path): |
| 112 | dmrc = ConfigParser() |
| 113 | dmrc.read(dmrc_path) |
| 114 | |
| 115 | langlist = [] |
| 116 | if dmrc.has_option('Desktop', 'Language'): |
| 117 | lang = dmrc.get('Desktop', 'Language') |
| 118 | if lang.capitalize() == 'C': |
| 119 | lang = _default_lang |
| 120 | langlist.append(lang) |
| 121 | |
| 122 | if dmrc.has_option('Sugar', 'ExtraLanguages'): |
| 123 | for lang in dmrc.get('Sugar', 'ExtraLanguages').split(';'): |
| 124 | lang = lang.strip() |
| 125 | if lang: |
| 126 | langlist.append(lang) |
| 127 | |
| 128 | return langlist or [os.environ.get('LANG') or _default_lang] |
| 129 | |
86 | 130 | path = os.path.join(os.environ.get('HOME', ''), '.i18n') |
87 | 131 | if not os.access(path, os.R_OK): |
88 | 132 | print _standard_msg |