summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorTomas R <tomas.roun8@gmail.com>2023-07-23 09:10:38 (GMT)
committerGitHub <noreply@github.com>2023-07-23 09:10:38 (GMT)
commitdcd7acb04a719d8d30c8d03b80d3d48b6c035e14 (patch)
treeead9e8034aa62447f99e30e5158f72a36f9b64e1 /Doc
parent680f3e1591e406deb04ba44adbef9a5a02395f80 (diff)
downloadcpython-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.rst53
-rw-r--r--Doc/library/gettext.rst1
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
--------------------------------------------