On 3/7/2014 3:23 AM, Daniel P. Berrange wrote:
On Thu, Mar 06, 2014 at 03:46:24PM -0600, James Carey wrote:
Please consider a FFE for i18n Message improvements:
BP: https://blueprints.launchpad.net/nova/+spec/i18n-messages
The base enablement for lazy translation has already been sync'd from
oslo. This patch was to enable lazy translation support in Nova. It is
titled re-enable lazy translation because this was enabled during Havana
but was pulled due to issues that have since been resolved.
In order to enable lazy translation it is necessary to do the
following things:
(1) Fix a bug in oslo with respect to how keywords are extracted from
the format strings when saving replacement text for use when the message
translation is done. This is
https://bugs.launchpad.net/nova/+bug/1288049, which I'm actively working
on a fix for in oslo. Once that is complete it will need to be sync'd
into nova.
(2) Remove concatenation (+) of translatable messages. The current
class that is used to hold the translatable message (gettextutils.Message)
does not support concatenation. There were a few cases in Nova where this
was done and they are coverted to other means of combining the strings in:
https://review.openstack.org/#/c/78095 Remove use of concatenation on
messages
(3) Remove the use of str() on exceptions. The intent of this is to
return the message contained in the exception, but these messages may
contain unicode, so str cannot be used on them and gettextutils.Message
enforces this. Thus these need
to either be removed and allow python formatting to do the right thing, or
changed to unicode(). Since unicode() will change to str() in Py3, the
forward compatible six.text_type() is used instead. This is done in:
https://review.openstack.org/#/c/78096 Remove use of str() on exceptions
Since we're not supporting Py3 anytime soon, this patch does not seem
important enough to justify for FFE. Anytime we do Py3 portability fixes
I'd also expect there to be some hacking check testing that validate
we won't regress in that in the future too.
(4) The addition of the call that enables the use of lazy messages. This
is in:
https://review.openstack.org/#/c/73706 Re-enable lazy translation.
Lazy translation has been enabled in the other projects so it would be
beneficial to be consistent with the other projects with respect to
message translation. I have tested that the changes in (2) and (3) work
when lazy translation is not enabled. Thus if a problem is found, the two
line change in (4) could be removed to get to the previous behavior.
I've been talking to Matt Riedemann and Dan Berrange about this. Matt
has agreed to be a sponsor.
I'll be a sponsor once there is a clear solution proposed to the bug
in point 1.
Regards,
Daniel
As far as I understand this is not a py3 issue, six.text_type was being
used because the alternative was converting usage of str() to unicode()
and that doesn't work with py3, so six.text_type is used.
I agree that if all instances of str() in Nova need to be changed to
six.text_type for this to work we need a hacking check for it.
--
Thanks,
Matt Riedemann
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev