<font size=2 face="sans-serif">    Please consider a FFE for
i18n Message improvements:  </font>
<br><font size=2 face="sans-serif">BP: </font><a href="https://blueprints.launchpad.net/nova/+spec/i18n-messages"><font size=2 face="sans-serif">https://blueprints.launchpad.net/nova/+spec/i18n-messages</font></a>
<br><font size=2 face="sans-serif"> </font>
<br><font size=2 face="sans-serif">    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.</font>
<br>
<br><font size=2 face="sans-serif">    In order to enable lazy
translation it is necessary to do the following things:</font>
<br>
<br><font size=2 face="sans-serif">  (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 </font><a href="https://bugs.launchpad.net/nova/+bug/1288049"><font size=2 face="sans-serif">https://bugs.launchpad.net/nova/+bug/1288049</font></a><font size=2 face="sans-serif">,
which I'm actively working on a fix for in oslo.  Once that is complete
it will need to be sync'd into nova.</font>
<br>
<br><font size=2 face="sans-serif">  (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:</font>
<br><a href=https://review.openstack.org/#/c/78095><font size=2 face="sans-serif">https://review.openstack.org/#/c/78095</font></a><font size=2 face="sans-serif">
Remove use of concatenation on messages</font>
<br>
<br><font size=2 face="sans-serif">  (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</font>
<br><font size=2 face="sans-serif">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:  </font>
<br><a href=https://review.openstack.org/#/c/78096><font size=2 face="sans-serif">https://review.openstack.org/#/c/78096</font></a><font size=2 face="sans-serif">
Remove use of str() on exceptions</font>
<br>
<br><font size=2 face="sans-serif">  (4) The addition of the call
that enables the use of lazy messages.  This is in:</font>
<br><a href=https://review.openstack.org/#/c/73706><font size=2 face="sans-serif">https://review.openstack.org/#/c/73706</font></a><font size=2 face="sans-serif">
Re-enable lazy translation.</font>
<br>
<br><font size=2 face="sans-serif">    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. </font>
<br>
<br><font size=2 face="sans-serif">    I've been talking to Matt
Riedemann and Dan Berrange about this.  Matt has agreed to be a sponsor.</font>
<br>
<br><font size=2 face="sans-serif">           --Jim
Carey </font>
<br>