manila/doc/source/devref/il8n.rst
Andreas Jaeger 240034b441 Update translation information
* We're not translating LOG.debug, so change example.
* Do not use locals() for translations.

This synces the text as appropriate with the nova and cinder versions of
this file.

Change-Id: Ibcf16f1a93acaac0d06ccbd627233bfc62bc62ba
2014-09-25 10:07:58 +02:00

31 lines
1.2 KiB
ReStructuredText

Internationalization
====================
manila 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 ``_()`` function call. For example::
LOG.info(_("block_device_mapping %s"), block_device_mapping)
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 the
LocalizationTestCase.test_multiple_positional_format_placeholders test to fail
in manila/tests/test_localization.py.
The ``_()`` function is brought into the global scope by doing::
from manila.openstack.common import gettextutils
gettextutils.install("manila")
These lines are needed in any toplevel script before any manila modules are
imported. If this code is missing, it may result in an error that looks like::
NameError: name '_' is not defined