Pārlūkot izejas kodu

Add system locale option to language switching; Fail back to system locale in case of error

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@52548 15284696-431f-4ddb-bdfa-cd5b030d7da7
Maris Nartiss 13 gadi atpakaļ
vecāks
revīzija
1d1a5fbdd4

+ 4 - 0
gui/wxpython/core/settings.py

@@ -58,6 +58,10 @@ class Settings:
         
         self.locs = os.listdir(os.path.join(os.environ['GISBASE'], 'locale'))
         self.locs.sort()
+        # Add a default choice to not override system locale
+        self.locs.insert(0, 'system')
+        
+        return 'system'
         
     def _defaultSettings(self):
         """!Define default settings

+ 6 - 0
gui/wxpython/gui_core/preferences.py

@@ -138,6 +138,8 @@ class PreferencesBaseDialog(wx.Dialog):
                 value = win.SetSelection(value)
             elif win.GetName() == 'GetStringSelection':
                 value = win.SetStringSelection(value)
+            elif win.GetName() == 'GetLabel':
+                value = win.SetLabel(value)
             else:
                 value = win.SetValue(value)
         
@@ -163,11 +165,15 @@ class PreferencesBaseDialog(wx.Dialog):
         Posts event EVT_SETTINGS_CHANGED.
         """
         if self._updateSettings():
+            if self.settings.Get(group = 'language', key = 'locale', subkey = 'lc_all') == 'system':
+                self.settings.Set(group = 'language', key = 'locale', subkey = 'lc_all', value = None)
             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()

+ 7 - 3
lib/init/grass.py

@@ -663,10 +663,14 @@ def set_env_from_gisrc():
                 locale.setlocale(locale.LC_MESSAGES, language)
             except:
                 # If we got so far, provided locale is not supported on this system
-                # C is safe failback.
-                print "Failed to set LC_MESSAGES to %s. Giving up." % language
-                language = 'C'
+                print "Failed to set LC_MESSAGES to %s as defined by g.gisenv LANG parameter" % language
+                default_locale = locale.getdefaultlocale()
+                if default_locale[0]:
+                    language = default_locale[0]
+                else:
+                    language = 'C'
         os.environ['LANGUAGE'] = language
+        os.environ['LANG'] = language
         os.environ['LC_MESSAGES'] = language
         # Calling gettext.install twice seems to allow to see also localized startup messages
         # Black magic ;)