mirror of
https://github.com/WeblateOrg/weblate.git
synced 2026-07-26 14:23:58 +08:00
This should avoid confusion by the previous keeping by adding a clear way to remove obsolete strings. Fixes #20049
182 lines
5.9 KiB
ReStructuredText
Vendored
182 lines
5.9 KiB
ReStructuredText
Vendored
.. _gettext:
|
|
|
|
GNU gettext PO (Portable Object)
|
|
--------------------------------
|
|
|
|
.. index::
|
|
pair: gettext; file format
|
|
pair: PO; file format
|
|
|
|
Most widely used format for translating libre software.
|
|
|
|
Contextual info stored in the file is supported by adjusting its
|
|
headers or linking to corresponding source files.
|
|
|
|
.. seealso::
|
|
|
|
* :doc:`../devel/gettext`
|
|
* :doc:`../devel/sphinx`
|
|
* `Gettext on Wikipedia <https://en.wikipedia.org/wiki/Gettext>`_
|
|
* :doc:`tt:formats/po`
|
|
* :ref:`addon-weblate.gettext.authors`
|
|
* :ref:`addon-weblate.gettext.configure`
|
|
* :ref:`addon-weblate.gettext.customize`
|
|
* :ref:`addon-weblate.gettext.linguas`
|
|
* :ref:`addon-weblate.gettext.mo`
|
|
* :ref:`addon-weblate.gettext.msgmerge`
|
|
|
|
Showing source string change
|
|
++++++++++++++++++++++++++++
|
|
|
|
Weblate can extract previous source strings from the PO files if present and
|
|
show the string difference for strings needing editing based on that. To
|
|
include these, :program:`msgmerge` has to be executed with ``--previous`` and
|
|
the resulting PO file then contains lines such as:
|
|
|
|
.. code-block:: po
|
|
|
|
#, fuzzy
|
|
#| msgid "previous-untranslated-string"
|
|
msgid "untranslated-string"
|
|
msgstr "translated-string"
|
|
|
|
This is controlled by the ``po_keep_previous`` :ref:`file_format_params`
|
|
parameter. It does not affect obsolete entries marked with ``#~``.
|
|
|
|
Obsolete strings
|
|
++++++++++++++++
|
|
|
|
:program:`msgmerge` keeps strings removed from the POT file as obsolete ``#~``
|
|
entries by default. Enable the ``po_remove_obsolete`` :ref:`file_format_params`
|
|
parameter to remove obsolete entries when Weblate saves PO files.
|
|
|
|
PO file header
|
|
++++++++++++++
|
|
|
|
The header of the PO file is automatically maintained by Weblate.
|
|
It can be configured to include the ``Language-Team``, ``Last-Translator``,
|
|
``X-Generator`` and ``Report-Msgid-Bugs-To`` headers using the :ref:`file_format_params`.
|
|
|
|
The header comments also can be updated to contain author names using :ref:`addon-weblate.gettext.authors`.
|
|
|
|
Line wrapping
|
|
+++++++++++++
|
|
|
|
The line wrapping mostly matches GNU gettext behavior. Both the wrapping
|
|
algorithm in the GNU gettext and the Unicode data the wrapping is based on
|
|
evolve which might cause differences in some corner cases.
|
|
|
|
The wrapping width can be configured using the ``po_line_wrap`` parameter, see :ref:`file_format_params`.
|
|
|
|
Generating matching MO files
|
|
++++++++++++++++++++++++++++
|
|
|
|
In case MO files are kept in the repository together with PO files,
|
|
:ref:`addon-weblate.gettext.mo` can be used to keep them up-to-date with PO
|
|
files.
|
|
|
|
Updating PO files from the POT file
|
|
+++++++++++++++++++++++++++++++++++
|
|
|
|
:ref:`addon-weblate.gettext.msgmerge` can be used to update PO files from the
|
|
POT file, see :ref:`updating-target-files`.
|
|
|
|
.. _mono_gettext:
|
|
|
|
Monolingual gettext
|
|
+++++++++++++++++++
|
|
|
|
Some projects decide to use gettext as monolingual formats—they code just the IDs
|
|
in their source code and the string then needs to be translated to all languages,
|
|
including English. This is supported, though you have to choose
|
|
this file format explicitly when importing components into Weblate.
|
|
|
|
Example files
|
|
+++++++++++++
|
|
|
|
The bilingual gettext PO file typically looks like this:
|
|
|
|
.. code-block:: po
|
|
|
|
#: weblate/media/js/bootstrap-datepicker.js:1421
|
|
msgid "Monday"
|
|
msgstr "Pondělí"
|
|
|
|
#: weblate/media/js/bootstrap-datepicker.js:1421
|
|
msgid "Tuesday"
|
|
msgstr "Úterý"
|
|
|
|
#: weblate/accounts/avatar.py:163
|
|
msgctxt "No known user"
|
|
msgid "None"
|
|
msgstr "Žádný"
|
|
|
|
The monolingual gettext PO file typically looks like this:
|
|
|
|
.. code-block:: po
|
|
|
|
#: weblate/media/js/bootstrap-datepicker.js:1421
|
|
msgid "day-monday"
|
|
msgstr "Pondělí"
|
|
|
|
#: weblate/media/js/bootstrap-datepicker.js:1421
|
|
msgid "day-tuesday"
|
|
msgstr "Úterý"
|
|
|
|
#: weblate/accounts/avatar.py:163
|
|
msgid "none-user"
|
|
msgstr "Žádný"
|
|
|
|
While the base language file will be:
|
|
|
|
.. code-block:: po
|
|
|
|
#: weblate/media/js/bootstrap-datepicker.js:1421
|
|
msgid "day-monday"
|
|
msgstr "Monday"
|
|
|
|
#: weblate/media/js/bootstrap-datepicker.js:1421
|
|
msgid "day-tuesday"
|
|
msgstr "Tuesday"
|
|
|
|
#: weblate/accounts/avatar.py:163
|
|
msgid "none-user"
|
|
msgstr "None"
|
|
|
|
|
|
.. include:: /snippets/format-features/po-mono-features.rst
|
|
|
|
.. include:: /snippets/format-features/po-features.rst
|
|
|
|
Weblate configuration
|
|
+++++++++++++++++++++
|
|
|
|
+-------------------------------------------------------------------+
|
|
| Typical Weblate :ref:`component` for bilingual gettext |
|
|
+================================+==================================+
|
|
| File mask | ``po/*.po`` |
|
|
+--------------------------------+----------------------------------+
|
|
| Monolingual base language file | `Empty` |
|
|
+--------------------------------+----------------------------------+
|
|
| Template for new translations | ``po/messages.pot`` |
|
|
+--------------------------------+----------------------------------+
|
|
| File format | `Gettext PO file` |
|
|
+--------------------------------+----------------------------------+
|
|
|
|
+-------------------------------------------------------------------+
|
|
| Typical Weblate :ref:`component` for monolingual gettext |
|
|
+================================+==================================+
|
|
| File mask | ``po/*.po`` |
|
|
+--------------------------------+----------------------------------+
|
|
| Monolingual base language file | ``po/en.po`` |
|
|
+--------------------------------+----------------------------------+
|
|
| Template for new translations | ``po/messages.pot`` |
|
|
+--------------------------------+----------------------------------+
|
|
| File format | `Gettext PO file (monolingual)` |
|
|
+--------------------------------+----------------------------------+
|
|
|
|
|
|
File format parameters
|
|
++++++++++++++++++++++
|
|
|
|
:ref:`file_format_params` with the pattern `po_*` can be used to configure the behavior of the gettext format.
|