From 79f109dbf44174428df09c65ea57323fdef46acc Mon Sep 17 00:00:00 2001 From: "Jay S. Bryant" Date: Mon, 2 Jun 2014 16:46:44 -0500 Subject: [PATCH] Add spec for i18n-enablement This commit adds the spec proposing the i18n-enablement blueprint for the Juno development cycle. blueprint: i18n-enablement Change-Id: I0c8b707d43f4b01a8230dcfa91430f675b85fbf1 --- specs/juno/i18n-enablement.rst | 147 +++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 specs/juno/i18n-enablement.rst diff --git a/specs/juno/i18n-enablement.rst b/specs/juno/i18n-enablement.rst new file mode 100644 index 00000000..99f3ec1c --- /dev/null +++ b/specs/juno/i18n-enablement.rst @@ -0,0 +1,147 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. + + http://creativecommons.org/licenses/by/3.0/legalcode + +========================================== +i18n Enablement for Cinder +========================================== + +Include the URL of your launchpad blueprint: + +https://blueprints.launchpad.net/cinder/+spec/i18n-enablement + +This BluePrint/Spec proposes completing the enablement of i18n +(internationalization) support for Cinder. + +Internationalization implementation has been an on-going effort in OpenStack +during recent releases. During the Icehouse release, much of the support +for internationalization was already merged into Cinder. Specifically +the update of Oslo's gettextutils (commit +1553a1e78ec262b044ce99b418103c91b7b580f6) completed much of +the process. Removal of the use of str() in exceptions and messages +was the other major piece of work that was implemented: (commit +cbe1d5f5e22e5f792128643e4cdd6afb2ff2b5bf). + +To finalize this work in Juno we need to enable "lazy" translation. +Enablement of lazy translation will allow end users to not only have +logs produced in multiple languages, but adds the ability for REST +API messages to also be returned in the language chosen by the user. +This functionality is important to support the use of OpenStack by the +international community. + + +Problem description +=================== + +Currently, Cinder does not have the all the code in place to support +lazy translation. The code associated with this blueprint will add +the appropriate code and enable translation of REST API responses. + +Proposed change +=============== + +The code for this change will add 'gettextutils.enable_lazy() to each of +the binaries in bin. + +It will also remove the use of gettextutils.install() in each of the +binary files. Instead it will add the explicit import of _() in all +files that are not already importing the _() function. The need for +the change to explicitly import _() is documented +in bug https://bugs.launchpad.net/cinder/+bug/1306275 . + +Alternatives +------------ + +None. + +Data model impact +----------------- + +None. + +REST API impact +--------------- + +There is no additional changes to the REST API other than the fact +that the change enables the customer to specify the language they +wish REST API responses to be returned in using the Accept-Language +option. + +Security impact +--------------- + +None. + +Notifications impact +-------------------- + +None. + +Other end user impact +--------------------- + +None. + +Performance Impact +------------------ + +None. + +Other deployer impact +--------------------- + +Once merged this feature is immediately available to users. + + +Developer impact +---------------- + +The developer impacts have already been in place for some time. Developers +have been using _() around messages that need translation. + + +Implementation +============== + +Assignee(s) +----------- + +Primary assignee: + (Jungleboyj) + +Other contributors: + + +Work Items +---------- + +I am planning to implement this as two patches. The first will be the +patch to ensure that _() is being explicitly imported. The dependent +patch will then set enable_lazy(). + + +Dependencies +============ + +None. + + +Testing +======= + +There will be a tempest test added for Cinder that will ensure that +lazy translation is working properly. + + +Documentation Impact +==================== + +None. + + +References +========== + +None.