[openstack-dev] [Nova] FFE Request: Oslo: i18n Message improvements
mriedem at linux.vnet.ibm.com
Fri Mar 7 15:33:43 UTC 2014
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
>> (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.
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.
More information about the OpenStack-dev