diff options
author | Tomas R <tomas.roun8@gmail.com> | 2023-07-23 09:10:38 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-23 09:10:38 (GMT) |
commit | dcd7acb04a719d8d30c8d03b80d3d48b6c035e14 (patch) | |
tree | ead9e8034aa62447f99e30e5158f72a36f9b64e1 /Doc | |
parent | 680f3e1591e406deb04ba44adbef9a5a02395f80 (diff) | |
download | cpython-dcd7acb04a719d8d30c8d03b80d3d48b6c035e14.zip cpython-dcd7acb04a719d8d30c8d03b80d3d48b6c035e14.tar.gz cpython-dcd7acb04a719d8d30c8d03b80d3d48b6c035e14.tar.bz2 |
gh-54738: Add argparse i18n howto (#104562)
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/howto/argparse.rst | 53 | ||||
-rw-r--r-- | Doc/library/gettext.rst | 1 |
2 files changed, 54 insertions, 0 deletions
diff --git a/Doc/howto/argparse.rst b/Doc/howto/argparse.rst index 52e98fa..ae5bab9 100644 --- a/Doc/howto/argparse.rst +++ b/Doc/howto/argparse.rst @@ -788,6 +788,59 @@ but not both at the same time: -q, --quiet +How to translate the argparse output +==================================== + +The output of the :mod:`argparse` module such as its help text and error +messages are all made translatable using the :mod:`gettext` module. This +allows applications to easily localize messages produced by +:mod:`argparse`. See also :ref:`i18n-howto`. + +For instance, in this :mod:`argparse` output: + +.. code-block:: shell-session + + $ python prog.py --help + usage: prog.py [-h] [-v | -q] x y + + calculate X to the power of Y + + positional arguments: + x the base + y the exponent + + options: + -h, --help show this help message and exit + -v, --verbose + -q, --quiet + +The strings ``usage:``, ``positional arguments:``, ``options:`` and +``show this help message and exit`` are all translatable. + +In order to translate these strings, they must first be extracted +into a ``.po`` file. For example, using `Babel <https://babel.pocoo.org/>`__, +run this command: + +.. code-block:: shell-session + + $ pybabel extract -o messages.po /usr/lib/python3.12/argparse.py + +This command will extract all translatable strings from the :mod:`argparse` +module and output them into a file named ``messages.po``. This command assumes +that your Python installation is in ``/usr/lib``. + +You can find out the location of the :mod:`argparse` module on your system +using this script:: + + import argparse + print(argparse.__file__) + +Once the messages in the ``.po`` file are translated and the translations are +installed using :mod:`gettext`, :mod:`argparse` will be able to display the +translated messages. + +To translate your own strings in the :mod:`argparse` output, use :mod:`gettext`. + Conclusion ========== diff --git a/Doc/library/gettext.rst b/Doc/library/gettext.rst index 747f870..88a65b9 100644 --- a/Doc/library/gettext.rst +++ b/Doc/library/gettext.rst @@ -411,6 +411,7 @@ One difference between this module and Henstridge's: his catalog objects supported access through a mapping API, but this appears to be unused and so is not currently supported. +.. _i18n-howto: Internationalizing your programs and modules -------------------------------------------- |