[GRASS-SVN] r53041 - in grass/branches/releasebranch_6_4/gui/wxpython: core gui_core

svn_grass at osgeo.org svn_grass at osgeo.org
Sat Sep 1 01:13:25 PDT 2012


Author: marisn
Date: 2012-09-01 01:13:25 -0700 (Sat, 01 Sep 2012)
New Revision: 53041

Modified:
   grass/branches/releasebranch_6_4/gui/wxpython/core/settings.py
   grass/branches/releasebranch_6_4/gui/wxpython/gui_core/preferences.py
Log:
Better language switching in wxgui. Backport of r52589 r52582 r52548 and r52517. Requested by #1699

Modified: grass/branches/releasebranch_6_4/gui/wxpython/core/settings.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/core/settings.py	2012-09-01 08:06:41 UTC (rev 53040)
+++ grass/branches/releasebranch_6_4/gui/wxpython/core/settings.py	2012-09-01 08:13:25 UTC (rev 53041)
@@ -54,25 +54,20 @@
     def _generateLocale(self):
         """!Generate locales
         """
-        # collect available locales
-        self.locs = list(set(locale.locale_alias.values()))
-        self.locs.append('en_GB.UTF-8')
-        self.locs.sort()
+        import os
         
         try:
-            loc = list(locale.getdefaultlocale())
-        except ValueError, e:
-            sys.stderr.write(_('ERROR: %s\n') % str(e))
-            return 'C'
+            self.locs = os.listdir(os.path.join(os.environ['GISBASE'], 'locale'))
+            self.locs.append('en') # GRASS doesn't ship EN po files
+            self.locs.sort()
+            # Add a default choice to not override system locale
+            self.locs.insert(0, 'system')
+        except:
+            # No NLS
+            self.locs = ['system']
         
-        if loc[1] == 'UTF8':
-            loc[1] = 'UTF-8'
-        code_loc = "%s.%s" % (loc[0], loc[1])
-        if code_loc in self.locs:
-            return code_loc
-        
-        return 'C'
-        
+        return 'system'
+    
     def _defaultSettings(self):
         """!Define default settings
         """

Modified: grass/branches/releasebranch_6_4/gui/wxpython/gui_core/preferences.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/gui_core/preferences.py	2012-09-01 08:06:41 UTC (rev 53040)
+++ grass/branches/releasebranch_6_4/gui/wxpython/gui_core/preferences.py	2012-09-01 08:13:25 UTC (rev 53041)
@@ -162,11 +162,21 @@
         Posts event EVT_SETTINGS_CHANGED.
         """
         if self._updateSettings():
+            lang = self.settings.Get(group = 'language', key = 'locale', subkey = 'lc_all')
+            if lang == 'system':
+                # Most fool proof way to use system locale is to not provide any locale info at all
+                self.settings.Set(group = 'language', key = 'locale', subkey = 'lc_all', value = None)
+                lang = None
+            if lang == 'en':
+                # GRASS doesn't ship EN translation, default texts have to be used instead
+                self.settings.Set(group = 'language', key = 'locale', subkey = 'lc_all', value = 'C')
+                lang = 'C'
             self.settings.SaveToFile()
             self.parent.goutput.WriteLog(_('Settings saved to file \'%s\'.') % self.settings.filePath)
-            lang = UserSettings.Get(group = 'language', key = 'locale', subkey = 'lc_all')
             if lang:
                 RunCommand('g.gisenv', set = 'LANG=%s' % lang)
+            else:
+                RunCommand('g.gisenv', set = 'LANG=')
             event = wxSettingsChanged()
             wx.PostEvent(self, event)
             self.Close()
@@ -448,6 +458,8 @@
                                 choices = locales, name = "GetStringSelection")
         if loc in locales:
             elementList.SetStringSelection(loc)
+        if loc == 'C':
+            elementList.SetStringSelection('en')
         self.winId['language:locale:lc_all'] = elementList.GetId()
 
         gridSizer.Add(item = elementList,



More information about the grass-commit mailing list