nova/doc/source/reference/i18n.rst
Stephen Finucane dd1a416bc9 doc: Start using openstackdoctheme's extlink extension
This ensures we have version-specific references to other projects [1].
Note that this doesn't mean the URLs are actually valid - we need to do
more work (linkcheck?) here, but it's an improvement nonetheless.

[1] https://docs.openstack.org/openstackdocstheme/latest/#external-link-helper

Change-Id: Ifb99e727110c4904a85bc4a13366c2cae300b8df
2018-05-03 14:34:47 +01:00

39 lines
1.6 KiB
ReStructuredText

Internationalization
====================
Nova uses the :oslo.i18n-doc:`oslo.i18n library <>` to support
internationalization. The oslo.i18n library is built on top of `gettext
<http://docs.python.org/library/gettext.html>`_ and provides functions that are
used to enable user-facing strings such as log messages to appear in the
appropriate language in different locales.
Nova exposes the oslo.i18n library support via the ``nova/i18n.py`` integration
module. This module provides the functions needed to wrap translatable strings.
It provides the ``_()`` wrapper for general user-facing messages (such
as ones that end up in command line responses, or responses over the
network).
One upon a time there was an effort to translate log messages in
OpenStack projects. But starting with the Ocata release these are no
longer being supported. Log messages **should not** be translated. Any
use of ``_LI()``, ``_LW()``, ``_LE()``, ``_LC()`` are vestigial and
will be removed over time. No new uses of these should be added.
You should use the basic wrapper ``_()`` for strings which are not log
messages that are expected to get to an end user::
raise nova.SomeException(_('Invalid service catalogue'))
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 hacking
checks to fail.
The ``_()`` function can be imported with ::
from nova.i18n import _