mirror of
https://gh.wpcy.net/https://github.com/WeblateOrg/weblate.git
synced 2026-04-28 01:01:13 +08:00
1600 lines
98 KiB
ReStructuredText
1600 lines
98 KiB
ReStructuredText
|
||
.. AUTOGENERATED START: addons-header
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
Built-in add-ons
|
||
++++++++++++++++
|
||
|
||
.. AUTOGENERATED END: addons-header
|
||
|
||
.. AUTOGENERATED START: weblate.autotranslate.autotranslate
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.autotranslate.autotranslate:
|
||
|
||
Automatic translation
|
||
---------------------
|
||
|
||
:Add-on ID: ``weblate.autotranslate.autotranslate``
|
||
:Configuration: +-----------------+----------------------------------+------------------------------------------------------------------------------------------------------+
|
||
| ``mode`` | Automatic translation mode | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``suggest`` |
|
||
| | | - Add as suggestion |
|
||
| | | * - ``translate`` |
|
||
| | | - Add as translation |
|
||
| | | * - ``fuzzy`` |
|
||
| | | - Add as "Needing edit" |
|
||
+-----------------+----------------------------------+------------------------------------------------------------------------------------------------------+
|
||
| ``q`` | Query | Please note that translating all strings will discard all existing translations. |
|
||
+-----------------+----------------------------------+------------------------------------------------------------------------------------------------------+
|
||
| ``auto_source`` | Source of automated translations | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``others`` |
|
||
| | | - Other translation components |
|
||
| | | * - ``mt`` |
|
||
| | | - Machine translation |
|
||
+-----------------+----------------------------------+------------------------------------------------------------------------------------------------------+
|
||
| ``component`` | Component | Enter slug of a component to use as source, keep blank to use all components in the current project. |
|
||
+-----------------+----------------------------------+------------------------------------------------------------------------------------------------------+
|
||
| ``engines`` | Machine translation engines | :ref:`addon-choice-engines` |
|
||
+-----------------+----------------------------------+------------------------------------------------------------------------------------------------------+
|
||
| ``threshold`` | Score threshold | |
|
||
+-----------------+----------------------------------+------------------------------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-component-update`, :ref:`addon-event-daily`, :ref:`addon-event-event-change`
|
||
|
||
Automatically translates strings using machine translation or other components.
|
||
|
||
.. AUTOGENERATED END: weblate.autotranslate.autotranslate
|
||
|
||
.. seealso::
|
||
|
||
* :ref:`auto-translation`
|
||
* :ref:`translation-consistency`
|
||
* :ref:`mt-translation-services-priority`
|
||
* :ref:`search-strings`
|
||
|
||
|
||
.. AUTOGENERATED START: weblate.cdn.cdnjs
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.cdn.cdnjs:
|
||
|
||
JavaScript localization CDN
|
||
---------------------------
|
||
|
||
.. versionadded:: 4.2
|
||
|
||
:Add-on ID: ``weblate.cdn.cdnjs``
|
||
:Configuration: +------------------+---------------------------------+-------------------------------------------------------------------------------------------+
|
||
| ``threshold`` | Translation threshold | The percentage of translated strings that must be present for translation to be included. |
|
||
+------------------+---------------------------------+-------------------------------------------------------------------------------------------+
|
||
| ``css_selector`` | CSS selector | CSS selector to detect localizable elements. |
|
||
+------------------+---------------------------------+-------------------------------------------------------------------------------------------+
|
||
| ``cookie_name`` | Language cookie name | Name of cookie which stores language preference. |
|
||
+------------------+---------------------------------+-------------------------------------------------------------------------------------------+
|
||
| ``files`` | Extract strings from HTML files | List of filenames in current repository or remote URLs to parse for translatable strings. |
|
||
+------------------+---------------------------------+-------------------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-daily`, :ref:`addon-event-repository-post-commit`, :ref:`addon-event-repository-post-update`
|
||
|
||
Publishes translations into content delivery network for use in JavaScript or
|
||
HTML localization.
|
||
|
||
.. AUTOGENERATED END: weblate.cdn.cdnjs
|
||
|
||
Can be used to localize static HTML pages, or
|
||
to load localization in the JavaScript code.
|
||
|
||
Generates a unique URL for your component you can include in
|
||
HTML pages to localize them. See :ref:`weblate-cdn` for more details.
|
||
|
||
.. note::
|
||
|
||
This add-on requires additional configuration on the Weblate server.
|
||
:setting:`LOCALIZE_CDN_PATH` configures where generated files will be
|
||
written (on a filesystem), and :setting:`LOCALIZE_CDN_URL` defines where
|
||
they will be served (URL). Serving of the files is not done by Weblate and
|
||
has to be set up externally (typically using a CDN service).
|
||
|
||
This add-on is configured on :guilabel:`Hosted Weblate` and serves the files
|
||
via ``https://weblate-cdn.com/``.
|
||
|
||
.. seealso::
|
||
|
||
* :ref:`cdn-addon-config`
|
||
* :ref:`weblate-cdn`
|
||
* :ref:`cdn-addon-extract`
|
||
* :ref:`cdn-addon-html`
|
||
|
||
.. AUTOGENERATED START: weblate.cleanup.blank
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.cleanup.blank:
|
||
|
||
Remove blank strings
|
||
--------------------
|
||
|
||
.. versionadded:: 4.4
|
||
|
||
:Add-on ID: ``weblate.cleanup.blank``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-repository-post-commit`, :ref:`addon-event-repository-post-update`
|
||
|
||
Removes strings without a translation from translation files.
|
||
|
||
.. AUTOGENERATED END: weblate.cleanup.blank
|
||
|
||
Use this to not have any empty strings in translation files (for
|
||
example if your localization library displays them as missing instead
|
||
of falling back to the source string).
|
||
|
||
.. seealso::
|
||
|
||
:ref:`faq-cleanup`
|
||
|
||
.. AUTOGENERATED START: weblate.cleanup.generic
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.cleanup.generic:
|
||
|
||
Cleanup translation files
|
||
-------------------------
|
||
|
||
:Add-on ID: ``weblate.cleanup.generic``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-repository-post-update`, :ref:`addon-event-repository-pre-commit`
|
||
|
||
Update all translation files to match the monolingual base file. For most file
|
||
formats, this means removing stale translation keys no longer present in the
|
||
base file.
|
||
|
||
.. AUTOGENERATED END: weblate.cleanup.generic
|
||
|
||
For formats containing additional content besides translation strings (such as
|
||
:ref:`html`, :ref:`winrc`, or :ref:`odf`) this also brings the translation file
|
||
in sync with the base file.
|
||
|
||
.. seealso::
|
||
|
||
:ref:`faq-cleanup`
|
||
|
||
.. AUTOGENERATED START: weblate.consistency.languages
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.consistency.languages:
|
||
|
||
Add missing languages
|
||
---------------------
|
||
|
||
:Add-on ID: ``weblate.consistency.languages``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-daily`, :ref:`addon-event-repository-post-add`
|
||
|
||
Ensures a consistent set of languages is used for all components within a
|
||
project.
|
||
|
||
.. AUTOGENERATED END: weblate.consistency.languages
|
||
|
||
.. note::
|
||
|
||
The components shared from other projects are not considered in this.
|
||
|
||
Missing languages are checked once every 24 hours, and when new languages
|
||
are added in Weblate.
|
||
|
||
Unlike most others, this add-on affects the whole project.
|
||
|
||
.. hint::
|
||
|
||
Auto-translate the newly added strings with
|
||
:ref:`addon-weblate.autotranslate.autotranslate`.
|
||
|
||
.. AUTOGENERATED START: weblate.discovery.discovery
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.discovery.discovery:
|
||
|
||
Component discovery
|
||
-------------------
|
||
|
||
:Add-on ID: ``weblate.discovery.discovery``
|
||
:Configuration: +---------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``match`` | Regular expression to match translation files against | The regular expression must define named groups for component and language. |
|
||
+---------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``file_format`` | File format | :ref:`addon-choice-file_format` |
|
||
+---------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``name_template`` | Customize the component name | Use Django template syntax. This template must include {{ component }}. |
|
||
+---------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``base_file_template`` | Define the monolingual base filename | Leave empty for bilingual translation files. When set, this template must include {{ component }}. |
|
||
+---------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``new_base_template`` | Define the base file for new translations | Filename of file used for creating new translations. For gettext choose .pot file. This template must include {{ component }}. |
|
||
+---------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``intermediate_template`` | Intermediate language file | Filename of intermediate translation file. In most cases this is a translation file provided by developers and is used when creating actual source strings. This template must include {{ component }}. |
|
||
+---------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``language_regex`` | Language filter | Regular expression to filter translation files against when scanning for file mask. |
|
||
+---------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``copy_addons`` | Clone add-ons from the main component to the newly created ones | |
|
||
+---------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``remove`` | Remove components for inexistent files | |
|
||
+---------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-repository-post-update`
|
||
|
||
Automatically adds or removes project components based on file changes in the
|
||
version control system.
|
||
|
||
.. AUTOGENERATED END: weblate.discovery.discovery
|
||
|
||
The matching is done using regular expressions
|
||
enabling complex configuration, but some knowledge is required to do so.
|
||
The regular expression to match translation files has to contain two named
|
||
groups to match component and language. All named groups in the regular
|
||
expression can be used as variables in the template fields.
|
||
|
||
Discovery requirements
|
||
~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
To discover a component successfully, the configuration has to do all of the following:
|
||
|
||
* The regular expression must define ``component`` and ``language`` named groups.
|
||
* Template fields used to name or locate per-component files must include
|
||
``{{ component }}``, so the rendered value actually changes for each discovered
|
||
component.
|
||
* For monolingual formats, the component must contain a file matching
|
||
``base_file_template`` and at least one translation file matching ``match``.
|
||
|
||
Worked example: ``news_<lang>.md``
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
This is a common filename-based language variant layout:
|
||
|
||
* :file:`docs/news_en.md`
|
||
* :file:`docs/news_cs.md`
|
||
* :file:`docs/guide_en.md`
|
||
|
||
Use the :guilabel:`Filename-based language variants` preset for a starting point,
|
||
then choose the matching file format and review the populated values.
|
||
|
||
Regular expression:
|
||
``(?:(?P<path>.*/))?(?P<component>.+?)_(?P<language>[A-Za-z]{2,3}(?:[_-][A-Za-z0-9]+)*)\.(?P<extension>[^/.]+)``
|
||
Component name:
|
||
``{{ component }}``
|
||
Discovered file masks:
|
||
- :file:`docs/news_*.md`
|
||
- :file:`docs/guide_*.md`
|
||
|
||
In this example, ``{{ component }}`` resolves to the basename before the language
|
||
suffix, so :file:`docs/news_en.md`, :file:`docs/news_pt_BR.md`, and
|
||
:file:`docs/news_pt-BR.md` all become the ``news`` component.
|
||
|
||
You can use Django template markup in all filename fields, for example:
|
||
|
||
``{{ component }}``
|
||
Component name parsed from the ``component`` match group
|
||
``{{ component|title }}``
|
||
Component filename with upper case first letter
|
||
``{{ path }}: {{ component }}``
|
||
Custom match group from the regular expression
|
||
|
||
Once you hit :guilabel:`Save`, a preview of matching components will be presented,
|
||
from where you can check whether the configuration actually matches your needs:
|
||
|
||
.. image:: /screenshots/addon-discovery.webp
|
||
|
||
Component discovery examples
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
The worked example above covers the most common filename-based variant layout.
|
||
The following examples show other repository structures you can match.
|
||
|
||
One folder per language
|
||
#######################
|
||
|
||
One folder per language containing translation files for components.
|
||
|
||
Regular expression:
|
||
``(?P<language>[^/.]*)/(?P<component>[^/]*)\.po``
|
||
Matching files:
|
||
- :file:`cs/application.po`
|
||
- :file:`cs/website.po`
|
||
- :file:`de/application.po`
|
||
- :file:`de/website.po`
|
||
|
||
Gettext locales layout
|
||
######################
|
||
|
||
Usual structure for storing gettext PO files.
|
||
|
||
Regular expression:
|
||
``locale/(?P<language>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po``
|
||
Matching files:
|
||
- :file:`locale/cs/LC_MESSAGES/application.po`
|
||
- :file:`locale/cs/LC_MESSAGES/website.po`
|
||
- :file:`locale/de/LC_MESSAGES/application.po`
|
||
- :file:`locale/de/LC_MESSAGES/website.po`
|
||
|
||
Complex filenames
|
||
#################
|
||
|
||
Using both component and language name within filename.
|
||
|
||
Regular expression:
|
||
``src/locale/(?P<component>[^/]*)\.(?P<language>[^/.]*)\.po``
|
||
Matching files:
|
||
- :file:`src/locale/application.cs.po`
|
||
- :file:`src/locale/website.cs.po`
|
||
- :file:`src/locale/application.de.po`
|
||
- :file:`src/locale/website.de.po`
|
||
|
||
Repeated language code
|
||
######################
|
||
|
||
Using language in both path and filename.
|
||
|
||
Regular expression:
|
||
``locale/(?P<language>[^/.]*)/(?P<component>[^/]*)/(?P=language)\.po``
|
||
Matching files:
|
||
- :file:`locale/cs/application/cs.po`
|
||
- :file:`locale/cs/website/cs.po`
|
||
- :file:`locale/de/application/de.po`
|
||
- :file:`locale/de/website/de.po`
|
||
|
||
|
||
Split Android strings
|
||
#####################
|
||
|
||
Android resource strings, split into several files.
|
||
|
||
Regular expression:
|
||
``res/values-(?P<language>[^/.]*)/strings-(?P<component>[^/]*)\.xml``
|
||
Matching files:
|
||
- :file:`res/values-cs/strings-about.xml`
|
||
- :file:`res/values-cs/strings-help.xml`
|
||
- :file:`res/values-de/strings-about.xml`
|
||
- :file:`res/values-de/strings-help.xml`
|
||
|
||
Matching multiple paths
|
||
#######################
|
||
|
||
Multi-module Maven project with Java properties translations.
|
||
|
||
Regular expression:
|
||
``(?P<originalHierarchy>.+/)(?P<component>[^/]*)/src/main/resources/ApplicationResources_(?P<language>[^/.]*)\.properties``
|
||
Component name:
|
||
``{{ originalHierarchy }}: {{ component }}``
|
||
Matching files:
|
||
- :file:`parent/module1/submodule/src/main/resources/ApplicationResources_fr.properties`
|
||
- :file:`parent/module1/submodule/src/main/resources/ApplicationResource_es.properties`
|
||
- :file:`parent/module2/src/main/resources/ApplicationResource_de.properties`
|
||
- :file:`parent/module2/src/main/resources/ApplicationResource_ro.properties`
|
||
|
||
|
||
.. hint::
|
||
|
||
Component discovery add-on uses :ref:`internal-urls`. It’s a convenient way to share
|
||
VCS setup between multiple components. Linked components use the local repository of
|
||
the main component set up by filling ``weblate://project/main-component``
|
||
into the :ref:`component-repo` field (in :guilabel:`Operations` ↓ :guilabel:`Settings` ↓
|
||
:guilabel:`Version control system`) of each respective component.
|
||
This saves time with configuration and system resources too.
|
||
|
||
.. hint::
|
||
|
||
Ensure the new component contains the full set of translatable languages with
|
||
:ref:`addon-weblate.consistency.languages`.
|
||
|
||
.. seealso::
|
||
|
||
* :ref:`markup`
|
||
* :wladmin:`import_project`
|
||
|
||
|
||
.. AUTOGENERATED START: weblate.fedora_messaging.publish
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _fedora-messaging:
|
||
.. _addon-weblate.fedora_messaging.publish:
|
||
|
||
Fedora Messaging
|
||
----------------
|
||
|
||
.. versionadded:: 5.15
|
||
|
||
:Add-on ID: ``weblate.fedora_messaging.publish``
|
||
:Configuration: +-----------------+-----------------------------+-------------------------------------------------------------------------------------------------+
|
||
| ``events`` | Change events | :ref:`addon-choice-events` |
|
||
+-----------------+-----------------------------+-------------------------------------------------------------------------------------------------+
|
||
| ``amqp_host`` | AMQP broker host | The AMQP broker to connect to. |
|
||
+-----------------+-----------------------------+-------------------------------------------------------------------------------------------------+
|
||
| ``amqp_ssl`` | Use SSL for AMQP connection | |
|
||
+-----------------+-----------------------------+-------------------------------------------------------------------------------------------------+
|
||
| ``ca_cert`` | CA certificates | Bundle of PEM encoded CA certificates used to validate the certificate presented by the server. |
|
||
+-----------------+-----------------------------+-------------------------------------------------------------------------------------------------+
|
||
| ``client_key`` | Client SSL key | PEM encoded client private SSL key. |
|
||
+-----------------+-----------------------------+-------------------------------------------------------------------------------------------------+
|
||
| ``client_cert`` | Client SSL certificates | PEM encoded client SSL certificate. |
|
||
+-----------------+-----------------------------+-------------------------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-event-change`
|
||
|
||
Sends notifications to a Fedora Messaging compatible AMQP exchange.
|
||
|
||
.. AUTOGENERATED END: weblate.fedora_messaging.publish
|
||
|
||
Fedora Messaging is AMQP-based publisher for all changes happening in Weblate.
|
||
You can hook additional services on changes happening in Weblate using this.
|
||
|
||
Message topic
|
||
~~~~~~~~~~~~~
|
||
|
||
All messages have topic
|
||
``weblate.<action>.<project>.<component>.<translation>``. The action is
|
||
lowercase textual representation of action with underscores instead of space,
|
||
for example ``resource_update``, all other parts are optional and represent
|
||
slug of the object or a language code.
|
||
|
||
Message body
|
||
~~~~~~~~~~~~
|
||
|
||
The body consists of following fields (given that they are available for the event):
|
||
|
||
``change_id``
|
||
Numerical ID of change
|
||
``action``
|
||
Verbose name of the change.
|
||
``timestamp``
|
||
ISO formatted timestamp
|
||
``target``
|
||
New value of the change (eg. new translation of the string)
|
||
``old``
|
||
Old value of the change (eg. previous translation of the string)
|
||
``source``
|
||
Source string.
|
||
``url``
|
||
Absolute URL to view the related object.
|
||
``author``
|
||
Author username (this can be different from user for example when accepting suggestions)
|
||
``user``
|
||
Acting username
|
||
``project``
|
||
Project slug
|
||
``component``
|
||
Component slug
|
||
``translation``
|
||
Translation language code
|
||
|
||
Message headers
|
||
~~~~~~~~~~~~~~~
|
||
|
||
There are additional headers which you might utilize for routing as well:
|
||
|
||
``action``
|
||
Verbose name of the change.
|
||
``project``
|
||
Project slug
|
||
``component``
|
||
Component slug
|
||
|
||
Example messages
|
||
~~~~~~~~~~~~~~~~
|
||
|
||
Repository merge event:
|
||
|
||
.. code-block:: json
|
||
|
||
{
|
||
"id": 1,
|
||
"action": "Merged repository",
|
||
"timestamp": "2017-06-15T11:30:47.325000+00:00",
|
||
"url": "http://example.com/projects/test/test/",
|
||
"component": "test"
|
||
}
|
||
|
||
New source string event:
|
||
|
||
.. code-block:: json
|
||
|
||
{
|
||
"id": 2,
|
||
"action": "New source string",
|
||
"timestamp": "2017-06-15T11:30:47.372000+00:00",
|
||
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
|
||
"component": "test",
|
||
"translation": "cs",
|
||
"source": ["Hello, world!\n"]
|
||
}
|
||
|
||
Resource update event:
|
||
|
||
.. code-block:: json
|
||
|
||
{
|
||
"id": 6,
|
||
"action": "Resource update",
|
||
"timestamp": "2017-06-15T11:30:47.410000+00:00",
|
||
"url": "http://example.com/projects/test/test/cs/",
|
||
"project": "test",
|
||
"component": "test",
|
||
"translation": "cs"
|
||
}
|
||
{
|
||
"id": 7,
|
||
"action": "Resource update",
|
||
"timestamp": "2017-06-15T11:30:47.510000+00:00",
|
||
"url": "http://example.com/projects/test/test/de/",
|
||
"project": "test",
|
||
"component": "test",
|
||
"translation": "de"
|
||
}
|
||
{
|
||
"id": 8,
|
||
"action": "Resource update",
|
||
"timestamp": "2017-06-15T11:30:47.595000+00:00",
|
||
"url": "http://example.com/projects/test/test/it/",
|
||
"project": "test",
|
||
"component": "test",
|
||
"translation": "it"
|
||
}
|
||
|
||
Project removal event:
|
||
|
||
.. code-block:: json
|
||
|
||
{
|
||
"id": 9,
|
||
"action": "Removed project",
|
||
"timestamp": "2019-10-17T15:57:08.559420+00:00",
|
||
"target": "test",
|
||
"user": "testuser"
|
||
}
|
||
|
||
New contributor event:
|
||
|
||
.. code-block:: json
|
||
|
||
{
|
||
"id": 11,
|
||
"action": "New contributor",
|
||
"timestamp": "2019-10-17T15:57:08.759960+00:00",
|
||
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
|
||
"author": "testuser",
|
||
"user": "testuser",
|
||
"project": "test",
|
||
"component": "test",
|
||
"translation": "cs",
|
||
"source": ["Hello, world!\n"]
|
||
}
|
||
|
||
New translation event:
|
||
|
||
.. code-block:: json
|
||
|
||
{
|
||
"id": 12,
|
||
"action": "New translation",
|
||
"timestamp": "2019-10-17T15:57:08.772591+00:00",
|
||
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
|
||
"target": ["Ahoj svete!\n"],
|
||
"author": "testuser",
|
||
"user": "testuser",
|
||
"project": "test",
|
||
"component": "test",
|
||
"translation": "cs",
|
||
"source": ["Hello, world!\n"]
|
||
}
|
||
|
||
.. seealso::
|
||
|
||
* `Configuring Fedora Messaging`_
|
||
* :ref:`schema-messaging`
|
||
|
||
.. _Configuring Fedora Messaging: https://fedora-messaging.readthedocs.io/en/stable/user-guide/configuration.html
|
||
|
||
.. AUTOGENERATED START: weblate.flags.bulk
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.flags.bulk:
|
||
|
||
Bulk edit
|
||
---------
|
||
|
||
:Add-on ID: ``weblate.flags.bulk``
|
||
:Configuration: +-------------------+-----------------------------+----------------------------------------+
|
||
| ``q`` | Query | |
|
||
+-------------------+-----------------------------+----------------------------------------+
|
||
| ``state`` | State to set | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``-1`` |
|
||
| | | - Do not change |
|
||
| | | * - ``10`` |
|
||
| | | - Needs editing |
|
||
| | | * - ``11`` |
|
||
| | | - Needs editing (Needs rewriting) |
|
||
| | | * - ``12`` |
|
||
| | | - Needs editing (Needs checking) |
|
||
| | | * - ``20`` |
|
||
| | | - Translated |
|
||
| | | * - ``30`` |
|
||
| | | - Approved |
|
||
+-------------------+-----------------------------+----------------------------------------+
|
||
| ``add_flags`` | Translation flags to add | |
|
||
+-------------------+-----------------------------+----------------------------------------+
|
||
| ``remove_flags`` | Translation flags to remove | |
|
||
+-------------------+-----------------------------+----------------------------------------+
|
||
| ``add_labels`` | Labels to add | |
|
||
+-------------------+-----------------------------+----------------------------------------+
|
||
| ``remove_labels`` | Labels to remove | |
|
||
+-------------------+-----------------------------+----------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-component-update`
|
||
|
||
Bulk edit flags, labels, or states of strings.
|
||
|
||
.. AUTOGENERATED END: weblate.flags.bulk
|
||
|
||
**Examples:**
|
||
|
||
.. list-table:: Label new strings automatically
|
||
:stub-columns: 1
|
||
|
||
* - Search query
|
||
- ``NOT has:label``
|
||
* - Labels to add
|
||
- *recent*
|
||
|
||
.. list-table:: Marking all :ref:`appstore` changelog strings read-only
|
||
:stub-columns: 1
|
||
|
||
* - Search query
|
||
- ``language:en AND key:changelogs/``
|
||
* - Translation flags to add
|
||
- ``read-only``
|
||
|
||
|
||
.. list-table:: Marking certain strings read-only
|
||
:stub-columns: 1
|
||
|
||
* - Search query
|
||
- ``source:r"^\`\`[.a-zA-Z0-9_-]*\`\`$" AND language:en``
|
||
* - Translation flags to add
|
||
- ``read-only``
|
||
|
||
.. seealso::
|
||
|
||
* :ref:`bulk-edit`
|
||
* :ref:`custom-checks`
|
||
* :ref:`labels`
|
||
|
||
.. AUTOGENERATED START: weblate.flags.same_edit
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.flags.same_edit:
|
||
|
||
Flag unchanged translations as "Needs rewriting"
|
||
------------------------------------------------
|
||
|
||
:Add-on ID: ``weblate.flags.same_edit``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-unit-pre-create`
|
||
|
||
Whenever a new translatable string is imported from the VCS and it matches a
|
||
source string, it is flagged as needing rewriting in Weblate. Especially useful
|
||
for file formats that include source strings for untranslated strings.
|
||
|
||
.. AUTOGENERATED END: weblate.flags.same_edit
|
||
|
||
.. hint::
|
||
|
||
You might also want to tighthen the :ref:`check-same` check by adding
|
||
``strict-same`` flag to :ref:`component-check_flags`.
|
||
|
||
.. seealso::
|
||
|
||
:ref:`states`
|
||
|
||
.. AUTOGENERATED START: weblate.flags.source_edit
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.flags.source_edit:
|
||
|
||
Flag new source strings as "Needs checking"
|
||
-------------------------------------------
|
||
|
||
:Add-on ID: ``weblate.flags.source_edit``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-unit-pre-create`
|
||
|
||
Whenever a new source string is imported from the VCS, it is flagged as needing
|
||
checking in Weblate. This way you can easily filter and edit source strings
|
||
written by the developers.
|
||
|
||
.. AUTOGENERATED END: weblate.flags.source_edit
|
||
|
||
.. seealso::
|
||
|
||
:ref:`states`
|
||
|
||
.. AUTOGENERATED START: weblate.flags.target_edit
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.flags.target_edit:
|
||
|
||
Flag new translations as "Needs rewriting"
|
||
------------------------------------------
|
||
|
||
:Add-on ID: ``weblate.flags.target_edit``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-unit-pre-create`
|
||
|
||
Whenever a new translatable string is imported from the VCS, it is flagged as
|
||
needing rewriting in Weblate. This way you can easily filter and edit
|
||
translations created by the developers.
|
||
|
||
.. AUTOGENERATED END: weblate.flags.target_edit
|
||
|
||
.. seealso::
|
||
|
||
:ref:`states`
|
||
|
||
.. AUTOGENERATED START: weblate.flags.target_repo_update
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.flags.target_repo_update:
|
||
|
||
Flag updated translations from repository as "Needs rewriting"
|
||
--------------------------------------------------------------
|
||
|
||
:Add-on ID: ``weblate.flags.target_repo_update``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-unit-post-sync`
|
||
|
||
Whenever a string translation is changed from the VCS, it is flagged as needing
|
||
rewriting in Weblate. Especially useful if translation files are often updated
|
||
manually or by an external service.
|
||
|
||
.. AUTOGENERATED END: weblate.flags.target_repo_update
|
||
|
||
.. seealso::
|
||
|
||
:ref:`states`
|
||
|
||
.. AUTOGENERATED START: weblate.generate.fill_read_only
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.generate.fill_read_only:
|
||
|
||
Fill read-only strings with source
|
||
----------------------------------
|
||
|
||
.. versionadded:: 4.18
|
||
|
||
:Add-on ID: ``weblate.generate.fill_read_only``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-component-update`, :ref:`addon-event-daily`
|
||
|
||
Fills in translation of read-only strings with source string.
|
||
|
||
.. AUTOGENERATED END: weblate.generate.fill_read_only
|
||
|
||
.. AUTOGENERATED START: weblate.generate.generate
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.generate.generate:
|
||
|
||
Statistics generator
|
||
--------------------
|
||
|
||
:Add-on ID: ``weblate.generate.generate``
|
||
:Configuration: +--------------+---------------------------+--+
|
||
| ``filename`` | Name of generated file | |
|
||
+--------------+---------------------------+--+
|
||
| ``template`` | Content of generated file | |
|
||
+--------------+---------------------------+--+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-repository-pre-commit`
|
||
|
||
Generates a file containing detailed info about the translation status.
|
||
|
||
.. AUTOGENERATED END: weblate.generate.generate
|
||
|
||
You can use a Django template in both filename and content, see :ref:`markup`
|
||
for a detailed markup description.
|
||
|
||
For example generating a summary file for each translation:
|
||
|
||
Name of generated file
|
||
``locale/{{ language_code }}.json``
|
||
Content
|
||
.. code-block:: json
|
||
|
||
{
|
||
"language": "{{ language_code }}",
|
||
"strings": "{{ stats.all }}",
|
||
"translated": "{{ stats.translated }}",
|
||
"last_changed": "{{ stats.last_changed }}",
|
||
"last_author": "{{ stats.last_author }}",
|
||
}
|
||
|
||
|
||
.. seealso::
|
||
|
||
:ref:`markup`
|
||
|
||
.. AUTOGENERATED START: weblate.generate.prefill
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.generate.prefill:
|
||
|
||
Prefill translation with source
|
||
-------------------------------
|
||
|
||
.. versionadded:: 4.11
|
||
|
||
:Add-on ID: ``weblate.generate.prefill``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-component-update`, :ref:`addon-event-daily`
|
||
|
||
Fills in translation strings with source string.
|
||
|
||
.. AUTOGENERATED END: weblate.generate.prefill
|
||
|
||
All untranslated strings in the component will be filled with the source
|
||
string, and marked as needing edit. Use this when you can not have empty
|
||
strings in the translation files.
|
||
.. AUTOGENERATED START: weblate.generate.pseudolocale
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.generate.pseudolocale:
|
||
|
||
Pseudolocale generation
|
||
-----------------------
|
||
|
||
.. versionadded:: 4.5
|
||
|
||
:Add-on ID: ``weblate.generate.pseudolocale``
|
||
:Configuration: +----------------------+---------------------------+------------------------------------------------------------------------------------------+
|
||
| ``source`` | Source strings | |
|
||
+----------------------+---------------------------+------------------------------------------------------------------------------------------+
|
||
| ``target`` | Target translation | All strings in this translation will be overwritten |
|
||
+----------------------+---------------------------+------------------------------------------------------------------------------------------+
|
||
| ``prefix`` | Prepended static text | |
|
||
+----------------------+---------------------------+------------------------------------------------------------------------------------------+
|
||
| ``var_prefix`` | Prepended variable text | |
|
||
+----------------------+---------------------------+------------------------------------------------------------------------------------------+
|
||
| ``suffix`` | Appended static text | |
|
||
+----------------------+---------------------------+------------------------------------------------------------------------------------------+
|
||
| ``var_suffix`` | Appended variable text | |
|
||
+----------------------+---------------------------+------------------------------------------------------------------------------------------+
|
||
| ``var_multiplier`` | Variable text multiplier | How many times to repeat the variable text depending on the length of the source string. |
|
||
+----------------------+---------------------------+------------------------------------------------------------------------------------------+
|
||
| ``include_readonly`` | Include read-only strings | |
|
||
+----------------------+---------------------------+------------------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-component-update`, :ref:`addon-event-daily`
|
||
|
||
Generates a translation by adding prefix and suffix to source strings
|
||
automatically.
|
||
|
||
.. AUTOGENERATED END: weblate.generate.pseudolocale
|
||
|
||
Pseudolocales are useful to find strings that are not prepared for
|
||
localization. This is done by altering all translatable source strings
|
||
to make it easy to spot unaltered strings when running the application
|
||
in the pseudolocale language.
|
||
|
||
Finding strings whose localized counterparts might not fit the layout
|
||
is also possible.
|
||
|
||
Using the variable parts makes it possible to look for strings which might not
|
||
fit into the user interface after the localization - it extends the text based
|
||
on the source string length. The variable texts are repeated by length of the
|
||
text multiplied by the multiplier. For example ``Hello world`` with variable
|
||
text ``_`` and variable multiplier of 1 becomes ``Hello world___________`` -
|
||
the text is repeated once for each character in the source string.
|
||
|
||
The strings will be generated using following pattern:
|
||
|
||
:guilabel:`Prepended static text`
|
||
:guilabel:`Prepended variable text`
|
||
:guilabel:`Source string`
|
||
:guilabel:`Appended variable text`
|
||
:guilabel:`Appended static text`
|
||
|
||
.. hint::
|
||
|
||
You can use real languages for testing, but there are dedicated
|
||
pseudolocales available in Weblate - `en_XA` and `ar_XB`.
|
||
|
||
.. hint::
|
||
|
||
You can use this add-on to start translation to a new locale of an
|
||
existing language or similar language.
|
||
Once you add the translation to the component, follow to the add-on.
|
||
*Example:* If you have `fr` and want to start `fr_CA` translation, simply set
|
||
`fr` as the source, `fr_CA` as the target, and leave the prefix and suffix blank.
|
||
|
||
Uninstall the add-on once you have the new translation filled to prevent Weblate
|
||
from changing the translations made after the copying.
|
||
|
||
|
||
.. AUTOGENERATED START: weblate.gettext.authors
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.gettext.authors:
|
||
|
||
Contributors in comment
|
||
-----------------------
|
||
|
||
:Add-on ID: ``weblate.gettext.authors``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-repository-pre-commit`
|
||
|
||
Updates the comment part of the PO file header to include contributor names and
|
||
years of contributions.
|
||
|
||
.. AUTOGENERATED END: weblate.gettext.authors
|
||
|
||
The PO file header will look like this:
|
||
|
||
.. code-block:: po
|
||
|
||
# Michal Čihař <michal@weblate.org>, 2012, 2018, 2019, 2020.
|
||
# Pavel Borecki <pavel@example.com>, 2018, 2019.
|
||
# Filip Hron <filip@example.com>, 2018, 2019.
|
||
# anonymous <noreply@weblate.org>, 2019.
|
||
|
||
.. AUTOGENERATED START: weblate.gettext.configure
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.gettext.configure:
|
||
|
||
Update ALL_LINGUAS variable in the "configure" file
|
||
---------------------------------------------------
|
||
|
||
:Add-on ID: ``weblate.gettext.configure``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-daily`, :ref:`addon-event-repository-post-add`, :ref:`addon-event-repository-post-remove`
|
||
|
||
Updates the ALL_LINGUAS variable in "configure", "configure.in" or
|
||
"configure.ac" files, when a translation is added or removed.
|
||
|
||
.. AUTOGENERATED END: weblate.gettext.configure
|
||
|
||
Updates the ALL_LINGUAS variable in :file:`configure`, :file:`configure.in` or any
|
||
:file:`configure.ac` files, when a translation is added or removed.
|
||
|
||
.. _addon-weblate.gettext.customize:
|
||
|
||
Customize gettext output
|
||
------------------------
|
||
|
||
.. versionremoved:: 5.13 Replaced by :ref:`file_format_params`.
|
||
|
||
.. AUTOGENERATED START: weblate.gettext.django
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.gettext.django:
|
||
|
||
Update POT file (Django)
|
||
------------------------
|
||
|
||
.. versionadded:: 5.17
|
||
|
||
:Add-on ID: ``weblate.gettext.django``
|
||
:Configuration: +----------------------+----------------------+----------------------------------------------------------------------------------+
|
||
| ``interval`` | Update frequency | How often the add-on should update the POT file when the component is refreshed. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``daily`` |
|
||
| | | - Daily |
|
||
| | | * - ``weekly`` |
|
||
| | | - Weekly |
|
||
| | | * - ``monthly`` |
|
||
| | | - Monthly |
|
||
+----------------------+----------------------+----------------------------------------------------------------------------------+
|
||
| ``normalize_header`` | Normalize POT header | Updates gettext headers and replaces placeholder POT comments. |
|
||
+----------------------+----------------------+----------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-manual-trigger`, :ref:`addon-event-repository-post-update`
|
||
|
||
Updates the gettext template using Django's built-in makemessages command.
|
||
|
||
.. AUTOGENERATED END: weblate.gettext.django
|
||
.. AUTOGENERATED START: weblate.gettext.linguas
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.gettext.linguas:
|
||
|
||
Update LINGUAS file
|
||
-------------------
|
||
|
||
:Add-on ID: ``weblate.gettext.linguas``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-daily`, :ref:`addon-event-repository-post-add`, :ref:`addon-event-repository-post-remove`
|
||
|
||
Updates the LINGUAS file when a translation is added or removed.
|
||
|
||
.. AUTOGENERATED END: weblate.gettext.linguas
|
||
.. AUTOGENERATED START: weblate.gettext.meson
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.gettext.meson:
|
||
|
||
Update POT file (Meson)
|
||
-----------------------
|
||
|
||
.. versionadded:: 5.17
|
||
|
||
:Add-on ID: ``weblate.gettext.meson``
|
||
:Configuration: +----------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``interval`` | Update frequency | How often the add-on should update the POT file when the component is refreshed. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``daily`` |
|
||
| | | - Daily |
|
||
| | | * - ``weekly`` |
|
||
| | | - Weekly |
|
||
| | | * - ``monthly`` |
|
||
| | | - Monthly |
|
||
+----------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``normalize_header`` | Normalize POT header | Updates gettext headers and replaces placeholder POT comments. |
|
||
+----------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``comment_mode`` | Code comments | Choose whether xgettext should extract no comments, all comments, or only comments marked with a specific tag. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``off`` |
|
||
| | | - Do not extract comments |
|
||
| | | * - ``all`` |
|
||
| | | - Extract all comments |
|
||
| | | * - ``tagged`` |
|
||
| | | - Extract comments with tag |
|
||
+----------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``comment_tag`` | Comment tag | Tag passed to xgettext for comment extraction when using tagged comment mode. |
|
||
+----------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``checks`` | xgettext checks | Additional xgettext validation checks to enable for extracted messages. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``ellipsis-unicode`` |
|
||
| | | - ellipsis-unicode |
|
||
| | | * - ``space-ellipsis`` |
|
||
| | | - space-ellipsis |
|
||
| | | * - ``quote-unicode`` |
|
||
| | | - quote-unicode |
|
||
| | | * - ``bullet-unicode`` |
|
||
| | | - bullet-unicode |
|
||
+----------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``keyword`` | Additional keyword | Optional extra keyword passed to xgettext using --keyword. |
|
||
+----------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``preset`` | Meson preset | Built-in xgettext argument preset matching Meson gettext integration. The GLib preset adds the keyword and format-flag options used by Meson's gettext helper. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``glib`` |
|
||
| | | - GLib |
|
||
+----------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-manual-trigger`, :ref:`addon-event-repository-post-update`
|
||
|
||
Updates the gettext template using Meson gettext conventions.
|
||
|
||
.. AUTOGENERATED END: weblate.gettext.meson
|
||
.. AUTOGENERATED START: weblate.gettext.mo
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.gettext.mo:
|
||
|
||
Generate MO files
|
||
-----------------
|
||
|
||
:Add-on ID: ``weblate.gettext.mo``
|
||
:Configuration: +-----------+---------------------------------+----------------------------------------------------------------------------------+
|
||
| ``path`` | Path of generated MO file | If not specified, the location of the PO file will be used. |
|
||
+-----------+---------------------------------+----------------------------------------------------------------------------------+
|
||
| ``fuzzy`` | Include strings needing editing | Strings needing editing (fuzzy) are typically not ready for use as translations. |
|
||
+-----------+---------------------------------+----------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-repository-pre-commit`
|
||
|
||
Automatically generates a MO file for every changed PO file.
|
||
|
||
.. AUTOGENERATED END: weblate.gettext.mo
|
||
|
||
The location of the generated MO file can be customized and the field for it uses :ref:`markup`.
|
||
|
||
.. note::
|
||
|
||
If a translation is removed, its PO file will be deleted from the
|
||
repository, but the MO file generated by this add-on will not. The MO file
|
||
must be removed from the upstream manually.
|
||
|
||
|
||
.. AUTOGENERATED START: weblate.gettext.msgmerge
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.gettext.msgmerge:
|
||
|
||
Update PO files to match POT (msgmerge)
|
||
---------------------------------------
|
||
|
||
.. versionchanged:: 5.13
|
||
|
||
:guilabel:`Settings` configuration has been moved to :ref:`file_format_params`.
|
||
|
||
:Add-on ID: ``weblate.gettext.msgmerge``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-repository-post-update`
|
||
|
||
Updates all PO files (as configured by "File mask") to match the POT file (as
|
||
configured by "Template for new translations") using msgmerge.
|
||
|
||
.. AUTOGENERATED END: weblate.gettext.msgmerge
|
||
|
||
This add-on is essential when working with gettext PO files where the POT
|
||
(template) file is updated with new strings or changes to existing strings.
|
||
When the POT file is updated in the repository, this add-on automatically
|
||
merges those changes into all language PO files, ensuring that:
|
||
|
||
* New translatable strings appear in all languages
|
||
* Removed strings are marked as obsolete
|
||
* Modified strings are marked as needing review (fuzzy)
|
||
|
||
Most msgmerge command-line options can be set up through file format parameters
|
||
configuration.
|
||
|
||
.. seealso::
|
||
|
||
* :ref:`component-filemask`
|
||
* :ref:`component-new_base`
|
||
* :program:`msgmerge`
|
||
* :ref:`faq-cleanup`
|
||
* :ref:`updating-target-files`
|
||
|
||
.. AUTOGENERATED START: weblate.gettext.sphinx
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.gettext.sphinx:
|
||
|
||
Update POT file (Sphinx)
|
||
------------------------
|
||
|
||
.. versionadded:: 5.17
|
||
|
||
:Add-on ID: ``weblate.gettext.sphinx``
|
||
:Configuration: +----------------------+----------------------+-------------------------------------------------------------------------------------+
|
||
| ``interval`` | Update frequency | How often the add-on should update the POT file when the component is refreshed. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``daily`` |
|
||
| | | - Daily |
|
||
| | | * - ``weekly`` |
|
||
| | | - Weekly |
|
||
| | | * - ``monthly`` |
|
||
| | | - Monthly |
|
||
+----------------------+----------------------+-------------------------------------------------------------------------------------+
|
||
| ``normalize_header`` | Normalize POT header | Updates gettext headers and replaces placeholder POT comments. |
|
||
+----------------------+----------------------+-------------------------------------------------------------------------------------+
|
||
| ``filter_mode`` | Filtering | Optionally remove strings that are not useful to translate after Sphinx extraction. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``none`` |
|
||
| | | - None |
|
||
| | | * - ``weblate_docs`` |
|
||
| | | - Weblate documentation |
|
||
+----------------------+----------------------+-------------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-manual-trigger`, :ref:`addon-event-repository-post-update`
|
||
|
||
Updates the gettext template using Sphinx's gettext builder without loading
|
||
project configuration.
|
||
|
||
.. AUTOGENERATED END: weblate.gettext.sphinx
|
||
.. AUTOGENERATED START: weblate.gettext.xgettext
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.gettext.xgettext:
|
||
|
||
Update POT file (xgettext)
|
||
--------------------------
|
||
|
||
.. versionadded:: 5.17
|
||
|
||
:Add-on ID: ``weblate.gettext.xgettext``
|
||
:Configuration: +----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``interval`` | Update frequency | How often the add-on should update the POT file when the component is refreshed. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``daily`` |
|
||
| | | - Daily |
|
||
| | | * - ``weekly`` |
|
||
| | | - Weekly |
|
||
| | | * - ``monthly`` |
|
||
| | | - Monthly |
|
||
+----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``normalize_header`` | Normalize POT header | Updates gettext headers and replaces placeholder POT comments. |
|
||
+----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``comment_mode`` | Code comments | Choose whether xgettext should extract no comments, all comments, or only comments marked with a specific tag. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``off`` |
|
||
| | | - Do not extract comments |
|
||
| | | * - ``all`` |
|
||
| | | - Extract all comments |
|
||
| | | * - ``tagged`` |
|
||
| | | - Extract comments with tag |
|
||
+----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``comment_tag`` | Comment tag | Tag passed to xgettext for comment extraction when using tagged comment mode. |
|
||
+----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``checks`` | xgettext checks | Additional xgettext validation checks to enable for extracted messages. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``ellipsis-unicode`` |
|
||
| | | - ellipsis-unicode |
|
||
| | | * - ``space-ellipsis`` |
|
||
| | | - space-ellipsis |
|
||
| | | * - ``quote-unicode`` |
|
||
| | | - quote-unicode |
|
||
| | | * - ``bullet-unicode`` |
|
||
| | | - bullet-unicode |
|
||
+----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``keyword`` | Additional keyword | Optional extra keyword passed to xgettext using --keyword. |
|
||
+----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``input_mode`` | Input source | Choose whether xgettext should read source files from glob patterns or from a POTFILES/POTFILES.in manifest. |
|
||
| | | |
|
||
| | | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``patterns`` |
|
||
| | | - Source file patterns |
|
||
| | | * - ``potfiles`` |
|
||
| | | - POTFILES manifest |
|
||
+----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``language`` | xgettext language | Programming language passed to xgettext, for example Python or C. |
|
||
+----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``source_patterns`` | Source file patterns | Newline-separated repository-relative glob patterns for files to extract with xgettext. |
|
||
+----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``potfiles_path`` | POTFILES path | Repository-relative path to POTFILES or POTFILES.in. Entries are resolved relative to the repository root. If present next to the manifest, POTFILES.skip excludes listed files from extraction. |
|
||
+----------------------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-manual-trigger`, :ref:`addon-event-repository-post-update`
|
||
|
||
Updates the gettext template using xgettext on selected source files.
|
||
|
||
.. AUTOGENERATED END: weblate.gettext.xgettext
|
||
|
||
.. AUTOGENERATED START: weblate.git.squash
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.git.squash:
|
||
|
||
Squash Git commits
|
||
------------------
|
||
|
||
:Add-on ID: ``weblate.git.squash``
|
||
:Configuration: +---------------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``squash`` | Commit squashing | .. list-table:: Available choices: |
|
||
| | | :width: 100% |
|
||
| | | |
|
||
| | | * - ``all`` |
|
||
| | | - All commits into one |
|
||
| | | * - ``language`` |
|
||
| | | - Per language |
|
||
| | | * - ``file`` |
|
||
| | | - Per file |
|
||
| | | * - ``author`` |
|
||
| | | - Per author |
|
||
+---------------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``append_trailers`` | Append trailers to squashed commit message | Trailer lines are lines that look similar to RFC 822 e-mail headers, at the end of the otherwise free-form part of a commit message, such as 'Co-authored-by: …'. |
|
||
+---------------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| ``commit_message`` | Commit message | This commit message will be used instead of the combined commit messages from the squashed commits. |
|
||
+---------------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-repository-post-commit`
|
||
|
||
Squash Git commits prior to pushing changes.
|
||
|
||
.. AUTOGENERATED END: weblate.git.squash
|
||
|
||
.. hint::
|
||
|
||
To avoid unnecessary conflicts, it is recommended to configure automatic
|
||
receiving of upstream changes by webhooks or API, see :ref:`update-vcs`.
|
||
|
||
Git commits can be squashed prior to pushing changes
|
||
in one of the following modes:
|
||
|
||
* All commits into one
|
||
* Per language
|
||
* Per file
|
||
* Per author
|
||
|
||
Original commit messages are kept, but authorship is lost unless :guilabel:`Per author` is selected, or
|
||
the commit message is customized to include it.
|
||
|
||
The original commit messages can optionally be overridden with a custom commit message.
|
||
|
||
Trailers (commit lines like ``Co-authored-by: …``) can optionally be removed
|
||
from the original commit messages and appended to the end of the squashed
|
||
commit message. This also generates proper ``Co-authored-by:`` credit for every
|
||
translator.
|
||
|
||
.. _addon-weblate.json.customize:
|
||
|
||
Customize JSON output
|
||
---------------------
|
||
|
||
.. versionchanged:: 5.12
|
||
|
||
:guilabel:`Avoid spaces after separators` option added.
|
||
|
||
.. versionremoved:: 5.13 Replaced by :ref:`file_format_params`.
|
||
|
||
.. AUTOGENERATED START: weblate.hosted.reset
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.hosted.reset:
|
||
|
||
Reset repository to upstream
|
||
----------------------------
|
||
|
||
.. versionadded:: 5.17
|
||
|
||
:Add-on ID: ``weblate.hosted.reset``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-daily`
|
||
|
||
Discards all changes in the Weblate repository each night.
|
||
|
||
.. AUTOGENERATED END: weblate.hosted.reset
|
||
.. AUTOGENERATED START: weblate.properties.sort
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.properties.sort:
|
||
|
||
Format the Java properties file
|
||
-------------------------------
|
||
|
||
:Add-on ID: ``weblate.properties.sort``
|
||
:Configuration: +--------------------+-----------------------------------+--+
|
||
| ``case_sensitive`` | Enable case-sensitive key sorting | |
|
||
+--------------------+-----------------------------------+--+
|
||
|
||
:Triggers: :ref:`addon-event-repository-pre-commit`
|
||
|
||
Formats and sorts the Java properties file.
|
||
|
||
.. AUTOGENERATED END: weblate.properties.sort
|
||
|
||
* Consolidates newlines to Unix ones.
|
||
* Uppercase formatting of Unicode escape sequences (in case they are present).
|
||
* Strips blank lines and comments.
|
||
* Sorts the strings by the keys.
|
||
* Drops duplicate strings.
|
||
|
||
.. AUTOGENERATED START: weblate.removal.comments
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.removal.comments:
|
||
|
||
Stale comment removal
|
||
---------------------
|
||
|
||
:Add-on ID: ``weblate.removal.comments``
|
||
:Configuration: +---------+--------------+--+
|
||
| ``age`` | Days to keep | |
|
||
+---------+--------------+--+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-daily`
|
||
|
||
Set a timeframe for removal of comments.
|
||
|
||
.. AUTOGENERATED END: weblate.removal.comments
|
||
|
||
This can be useful to remove old
|
||
comments which might have become outdated. Use with care as comments
|
||
getting old does not mean they have lost their importance.
|
||
|
||
.. AUTOGENERATED START: weblate.removal.suggestions
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.removal.suggestions:
|
||
|
||
Stale suggestion removal
|
||
------------------------
|
||
|
||
:Add-on ID: ``weblate.removal.suggestions``
|
||
:Configuration: +-----------+------------------+-------------------------------------------------------------------------+
|
||
| ``age`` | Days to keep | |
|
||
+-----------+------------------+-------------------------------------------------------------------------+
|
||
| ``votes`` | Voting threshold | Threshold for removal. This field has no effect with voting turned off. |
|
||
+-----------+------------------+-------------------------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-daily`
|
||
|
||
Set a timeframe for removal of suggestions.
|
||
|
||
.. AUTOGENERATED END: weblate.removal.suggestions
|
||
|
||
Can be very useful in connection with suggestion voting
|
||
(see :ref:`peer-review`) to remove suggestions which
|
||
don't receive enough positive votes in a given timeframe.
|
||
|
||
.. AUTOGENERATED START: weblate.resx.update
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.resx.update:
|
||
|
||
Update RESX files
|
||
-----------------
|
||
|
||
:Add-on ID: ``weblate.resx.update``
|
||
:Configuration: `This add-on has no configuration.`
|
||
:Triggers: :ref:`addon-event-add-on-installation`, :ref:`addon-event-repository-post-update`
|
||
|
||
Update all translation files to match the monolingual upstream base file.
|
||
Unused strings are removed, and new ones added as copies of the source string.
|
||
|
||
.. AUTOGENERATED END: weblate.resx.update
|
||
|
||
.. hint::
|
||
|
||
Use :ref:`addon-weblate.cleanup.generic` if you only want to remove stale
|
||
translation keys.
|
||
|
||
.. seealso::
|
||
|
||
:ref:`faq-cleanup`
|
||
|
||
.. AUTOGENERATED START: weblate.webhook.slack
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.webhook.slack:
|
||
|
||
Slack Webhooks
|
||
--------------
|
||
|
||
.. versionadded:: 5.12
|
||
|
||
:Add-on ID: ``weblate.webhook.slack``
|
||
:Configuration: +-----------------+---------------+----------------------------+
|
||
| ``webhook_url`` | Webhook URL | |
|
||
+-----------------+---------------+----------------------------+
|
||
| ``events`` | Change events | :ref:`addon-choice-events` |
|
||
+-----------------+---------------+----------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-event-change`
|
||
|
||
Sends notification to a Slack channel based on selected events.
|
||
|
||
.. AUTOGENERATED END: weblate.webhook.slack
|
||
|
||
.. warning::
|
||
|
||
The notification content might show HTML tags. This is a known issue that will be soon addressed; see https://github.com/WeblateOrg/weblate/issues/15056.
|
||
|
||
.. hint::
|
||
|
||
To obtain a webhook URL, follow the steps outlined in the `Slack Incoming Webhooks documentation <https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks>`_
|
||
|
||
.. AUTOGENERATED START: weblate.webhook.webhook
|
||
.. This section is automatically generated by `./manage.py list_addons`. Do not edit manually.
|
||
|
||
.. _addon-weblate.webhook.webhook:
|
||
|
||
Webhook
|
||
-------
|
||
|
||
.. versionadded:: 5.11
|
||
|
||
.. versionchanged:: 5.15
|
||
|
||
Compliance of the secret length with the specification is now validated.
|
||
|
||
:Add-on ID: ``weblate.webhook.webhook``
|
||
:Configuration: +-----------------+----------------+----------------------------------------------------------+
|
||
| ``webhook_url`` | Webhook URL | |
|
||
+-----------------+----------------+----------------------------------------------------------+
|
||
| ``secret`` | Webhook secret | The Standard Webhooks secret is a base64 encoded string. |
|
||
+-----------------+----------------+----------------------------------------------------------+
|
||
| ``events`` | Change events | :ref:`addon-choice-events` |
|
||
+-----------------+----------------+----------------------------------------------------------+
|
||
|
||
:Triggers: :ref:`addon-event-event-change`
|
||
|
||
Sends notifications to external services based on selected events, following
|
||
the Standard Webhooks specification.
|
||
|
||
.. AUTOGENERATED END: weblate.webhook.webhook
|
||
|
||
The request payload complies with the :ref:`schema-messaging` schema.
|
||
The OpenAPI description can also be found at ``/api/docs/``.
|
||
Sample request body:
|
||
|
||
.. code-block:: json
|
||
|
||
{
|
||
"change_id": 99,
|
||
"action": "Translation changed",
|
||
"timestamp": "2019-08-24T14:15:22Z",
|
||
"target": "Nazdar svete!",
|
||
"old": "Nazdar!",
|
||
"source": "Hello, world",
|
||
"url": "/translate/project-slug/component-slug/cs/?checksum=46add148a53cab6f",
|
||
"author": "author-username",
|
||
"user": "user-username",
|
||
"project": "project-slug",
|
||
"component": "component-slug",
|
||
"translation": "cs"
|
||
}
|
||
|
||
Sample request body with categories:
|
||
|
||
.. code-block:: json
|
||
|
||
{
|
||
"change_id": 8910,
|
||
"action": "Component renamed",
|
||
"timestamp": "2025-06-11T07:15:09Z",
|
||
"target": ["new-name"],
|
||
"old": ["component-slug"],
|
||
"url": "/projects/project-slug/parent-category/child-category/sub-category/component-slug/",
|
||
"user": "testuser",
|
||
"project": "project-slug",
|
||
"component": "component-slug",
|
||
"category": [
|
||
"sub-category",
|
||
"child-category",
|
||
"parent-category"
|
||
]
|
||
}
|
||
|
||
Sample request headers:
|
||
|
||
.. code-block:: json
|
||
|
||
{
|
||
"webhook-id": "7f1c5477f6275a69af7b83236c20cb1a",
|
||
"webhook-timestamp": "1748505623.044281",
|
||
"webhook-signature": "v1,Ceo5qEr07ixe2NLpvHk3FH9bwy/WavXrAFQ/9tdO6mc="
|
||
}
|
||
|
||
The ``webhook-signature`` is a space separated list of HMAC signatures generated using the ``secret`` string,
|
||
the request payload, the ``webhook-timestamp``, and the ``webhook-id``. This ensures the authenticity
|
||
and integrity of the webhook request.
|
||
|
||
The provided ``secret`` is a base64 encoded string between 24 bytes (192 bits)
|
||
and 64 bytes (512 bits). It can be prefixed with ``whsec_`` for easy
|
||
identification.
|
||
|
||
To verify a request, you can use the ``Webhook.verify`` method from the ``standardwebhooks`` library
|
||
or an implementation of the "Standard Webhooks Specification".
|
||
|
||
|
||
.. seealso::
|
||
|
||
* `Standard Webhooks Specification <https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md>`_
|
||
* :ref:`schema-messaging`
|
||
* `Python library for Standard Webhooks <https://pypi.org/project/standardwebhooks/>`_
|