fix the crash when providing invalid locale in env

This commit is contained in:
tzutalin 2018-12-28 10:07:59 -08:00
parent 40b30f1cee
commit d27e6a5dfa
2 changed files with 19 additions and 2 deletions

View File

@ -15,7 +15,6 @@ except ImportError:
sip.setapi('QVariant', 2) sip.setapi('QVariant', 2)
from PyQt4.QtCore import * from PyQt4.QtCore import *
DEFAULT_LOCALE = locale.getlocale()[0] if locale.getlocale() and len(locale.getlocale()) > 0 else os.getenv('LANG')
class StringBundle: class StringBundle:
@ -29,7 +28,14 @@ class StringBundle:
self.__loadBundle(path) self.__loadBundle(path)
@classmethod @classmethod
def getBundle(cls, localeStr=DEFAULT_LOCALE): def getBundle(cls, localeStr=None):
if localeStr is None:
try:
localeStr = locale.getlocale()[0] if locale.getlocale() and len(
locale.getlocale()) > 0 else os.getenv('LANG')
except:
print('Invalid locale')
locale = 'en'
return StringBundle(cls.__create_key, localeStr) return StringBundle(cls.__create_key, localeStr)
def getString(self, stringId): def getString(self, stringId):

View File

@ -13,5 +13,16 @@ class TestStringBundle(unittest.TestCase):
strBundle = StringBundle.getBundle('zh-TW') strBundle = StringBundle.getBundle('zh-TW')
self.assertEqual(strBundle.getString("openDir"), u'\u958B\u555F\u76EE\u9304', 'Fail to load the zh-TW bundle') self.assertEqual(strBundle.getString("openDir"), u'\u958B\u555F\u76EE\u9304', 'Fail to load the zh-TW bundle')
def test_setInvaleLocaleToEnv_printErrorMsg(self):
prev_lc = os.environ['LC_ALL']
prev_lang = os.environ['LANG']
os.environ['LC_ALL'] = 'UTF-8'
os.environ['LANG'] = 'UTF-8'
strBundle = StringBundle.getBundle()
self.assertEqual(strBundle.getString("openDir"), 'Open Dir', 'Fail to load the default bundle')
os.environ['LC_ALL'] = prev_lc
os.environ['LANG'] = prev_lang
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()