Sync gettextutils from oslo
Add type check for Message params when setting locale to avoid AttributeError. Fixes bug: #1229364 Change-Id: I6fe55ebc4eea5fef1d335ad83a84c4879f7f06f9
This commit is contained in:
parent
81f69ca2b2
commit
a5815ce9db
@ -60,6 +60,8 @@ def _(msg):
|
|||||||
if USE_LAZY:
|
if USE_LAZY:
|
||||||
return Message(msg, 'neutron')
|
return Message(msg, 'neutron')
|
||||||
else:
|
else:
|
||||||
|
if six.PY3:
|
||||||
|
return _t.gettext(msg)
|
||||||
return _t.ugettext(msg)
|
return _t.ugettext(msg)
|
||||||
|
|
||||||
|
|
||||||
@ -105,13 +107,17 @@ def install(domain, lazy=False):
|
|||||||
"""
|
"""
|
||||||
return Message(msg, domain)
|
return Message(msg, domain)
|
||||||
|
|
||||||
import __builtin__
|
from six import moves
|
||||||
__builtin__.__dict__['_'] = _lazy_gettext
|
moves.builtins.__dict__['_'] = _lazy_gettext
|
||||||
else:
|
else:
|
||||||
localedir = '%s_LOCALEDIR' % domain.upper()
|
localedir = '%s_LOCALEDIR' % domain.upper()
|
||||||
gettext.install(domain,
|
if six.PY3:
|
||||||
localedir=os.environ.get(localedir),
|
gettext.install(domain,
|
||||||
unicode=True)
|
localedir=os.environ.get(localedir))
|
||||||
|
else:
|
||||||
|
gettext.install(domain,
|
||||||
|
localedir=os.environ.get(localedir),
|
||||||
|
unicode=True)
|
||||||
|
|
||||||
|
|
||||||
class Message(_userString.UserString, object):
|
class Message(_userString.UserString, object):
|
||||||
@ -142,8 +148,13 @@ class Message(_userString.UserString, object):
|
|||||||
localedir=localedir,
|
localedir=localedir,
|
||||||
fallback=True)
|
fallback=True)
|
||||||
|
|
||||||
|
if six.PY3:
|
||||||
|
ugettext = lang.gettext
|
||||||
|
else:
|
||||||
|
ugettext = lang.ugettext
|
||||||
|
|
||||||
full_msg = (self._left_extra_msg +
|
full_msg = (self._left_extra_msg +
|
||||||
lang.ugettext(self._msg) +
|
ugettext(self._msg) +
|
||||||
self._right_extra_msg)
|
self._right_extra_msg)
|
||||||
|
|
||||||
if self.params is not None:
|
if self.params is not None:
|
||||||
@ -173,9 +184,10 @@ class Message(_userString.UserString, object):
|
|||||||
if isinstance(param, Message):
|
if isinstance(param, Message):
|
||||||
param.locale = value
|
param.locale = value
|
||||||
return
|
return
|
||||||
for param in self.params.values():
|
if isinstance(self.params, dict):
|
||||||
if isinstance(param, Message):
|
for param in self.params.values():
|
||||||
param.locale = value
|
if isinstance(param, Message):
|
||||||
|
param.locale = value
|
||||||
|
|
||||||
def _save_dictionary_parameter(self, dict_param):
|
def _save_dictionary_parameter(self, dict_param):
|
||||||
full_msg = self.data
|
full_msg = self.data
|
||||||
@ -195,7 +207,7 @@ class Message(_userString.UserString, object):
|
|||||||
params[key] = copy.deepcopy(dict_param[key])
|
params[key] = copy.deepcopy(dict_param[key])
|
||||||
except TypeError:
|
except TypeError:
|
||||||
# cast uncopyable thing to unicode string
|
# cast uncopyable thing to unicode string
|
||||||
params[key] = unicode(dict_param[key])
|
params[key] = six.text_type(dict_param[key])
|
||||||
|
|
||||||
return params
|
return params
|
||||||
|
|
||||||
@ -214,7 +226,7 @@ class Message(_userString.UserString, object):
|
|||||||
try:
|
try:
|
||||||
self.params = copy.deepcopy(other)
|
self.params = copy.deepcopy(other)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
self.params = unicode(other)
|
self.params = six.text_type(other)
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -223,6 +235,8 @@ class Message(_userString.UserString, object):
|
|||||||
return self.data
|
return self.data
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
if six.PY3:
|
||||||
|
return self.__unicode__()
|
||||||
return self.data.encode('utf-8')
|
return self.data.encode('utf-8')
|
||||||
|
|
||||||
def __getstate__(self):
|
def __getstate__(self):
|
||||||
@ -319,7 +333,7 @@ def get_localized_message(message, user_locale):
|
|||||||
if isinstance(message, Message):
|
if isinstance(message, Message):
|
||||||
if user_locale:
|
if user_locale:
|
||||||
message.locale = user_locale
|
message.locale = user_locale
|
||||||
return unicode(message)
|
return six.text_type(message)
|
||||||
else:
|
else:
|
||||||
return message
|
return message
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user