fix the crash when providing invalid locale in env
This commit is contained in:
parent
40b30f1cee
commit
d27e6a5dfa
@ -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):
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user