
There are some wrong words, it should be updated. Change-Id: I2d9ff4766d7c2dc508e3cb179446b44ccb042fcc
55 lines
1.8 KiB
ReStructuredText
55 lines
1.8 KiB
ReStructuredText
Internationalization
|
|
====================
|
|
|
|
For internationalization guidelines, see the
|
|
`oslo.i18n documentation <http://docs.openstack.org/developer/oslo.i18n/guidelines.html>`_.
|
|
The information below can be used to get started.
|
|
|
|
Cinder uses `gettext <http://docs.python.org/library/gettext.html>`_ so that
|
|
user-facing strings such as log messages appear in the appropriate
|
|
language in different locales.
|
|
|
|
To use gettext, make sure that the strings passed to the logger are wrapped
|
|
in a ``_Lx()`` function call. For example::
|
|
|
|
LOG.info(_LI("block_device_mapping %s"), block_device_mapping)
|
|
|
|
There are a few different _() translation markers, depending on the logging
|
|
level of the text:
|
|
|
|
- _LI() - Used for INFO level log messages
|
|
- _LW() - Used for WARNING level log messages
|
|
- _LE() - Used for ERROR level log messages (this includes LOG.exception)
|
|
- _() - Used for any exception messages, including strings used for both
|
|
logging and exceptions.
|
|
|
|
Do not use ``locals()`` for formatting messages because:
|
|
|
|
1. It is not as clear as using explicit dicts.
|
|
2. It could produce hidden errors during refactoring.
|
|
3. Changing the name of a variable causes a change in the message.
|
|
4. It creates a lot of otherwise unused variables.
|
|
|
|
If you do not follow the project conventions, your code may cause pep8 hacking
|
|
check failures.
|
|
|
|
For translation to work properly, the top level scripts for Cinder need
|
|
to first do the following before any Cinder modules are imported::
|
|
|
|
from cinder import i18n
|
|
i18n.enable_lazy()
|
|
|
|
Note: this should _only_ be called from top level scripts - no library code
|
|
or common modules should call this method.
|
|
|
|
Any files that use the _() for translation then must have the following
|
|
lines::
|
|
|
|
from cinder.i18n import _
|
|
|
|
If the above code is missing, it may result in an error that looks
|
|
like::
|
|
|
|
NameError: name '_' is not defined
|
|
|