weblate/docs/devel/reporting.rst
Michal Čihař bcaa8219d3 feat(reports): generate and store reports asynchronously
Collect expensive report data once so stored reports can be viewed and downloaded in every format across supported scopes.

Fixes #19712
2026-07-13 19:14:42 +02:00

147 lines
4.9 KiB
ReStructuredText
Vendored
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Translation progress reporting
==============================
Reporting features give insight into translation progress over a given period.
A summary of contributions to any given component over time is provided.
The reporting tool is found in the :guilabel:`Insights` menu of the dashboard,
workspace, project, category, or translation component:
.. image:: /screenshots/reporting.webp
Reports are generated in the background. Weblate shows the generation progress
and opens the stored report when it is ready. Previously generated reports remain
available on the same page according to :setting:`REPORT_EXPIRY`.
.. image:: /screenshots/report-view.webp
Several reporting tools are available on this page, all of which can produce output
in HTML, reStructuredText or JSON. The first two formats are suitable for
embedding statistics into existing documentation, while JSON is useful for further
processing of the data.
You can choose predefined periods or enter a custom date range. In that case,
the contributions are counted at midnight that means that it includes the
starting date and excludes the ending date. You can sort the contributors in
the output by their join date or the number of strings they have translated,
in either ascending or descending order.
.. _num-words:
Number of words
---------------
.. hint::
Number of words is a metric widely used in Indo-European languages, but
might not have a well-defined behavior for some Asian languages.
A word is any sequence of characters (letters, numerics, special characters) between whitespace (spaces, tabs, newlines).
In the example string below, the word count is 9.
.. code-block:: text
I've just realized that they have 5 %(color)s cats.
For plural strings, the number of words is counted as the sum of words for all
plural forms.
For Chinese, Japanese, or Korean languages, the number of words is the number
of CJK characters plus the number of words in non-CJK characters.
.. _credits:
Translator credits
------------------
Generates a document usable for crediting translators — sorted by language
and lists all contributors for a given language:
.. code-block:: rst
* Czech
* John Doe <john@example.com> (5)
* Jane Doe <jane@example.com> (1)
* Dutch
* Jane Doe <jane@example.com> (42)
.. hint::
The number in parenthesis indicates the number of contributions in given period.
.. _stats:
Contributor stats
-----------------
Generates the number of translated words and strings by translator name:
.. literalinclude:: reporting-example.rst
:language: rst
This can be useful if you pay your translators based on the amount of work done;
it gives you various stats of translators work.
By default, repeated changes by the same translator on the same string are
counted once for each stats variant in the selected report period. Choose
:guilabel:`All changes` in the counting mode if you need every edit or approval
to be counted separately.
All stats are available in four variants:
`Total`
Overall number of all edited strings.
`New`
Amount of newly translated strings which didn't have a translation before.
`Approved`
Amount of strings approved in the review workflow (see :ref:`reviews`).
`Edited`
Amount of edited strings which had a translation before.
The following metrics are available for each:
`Count`
Amount of strings.
`Edits`
Amount of edited characters in the string, measured in DamerauLevenshtein distance.
`Source words`
Amount of words in the source string.
`Source characters`
Amount of characters in the source string.
`Target words`
Amount of words in the translated string.
`Target characters`
Amount of characters in the translated string.
The translator's join date is also included in the report.
Use source-word metrics when comparing work across target languages, because the
source text is shared while translated word counts differ by language.
.. _cost-estimate:
Cost estimate
-------------
Estimates translation costs for the selected scope from source-word counts. It
classifies strings as repetitions, exact translation memory matches, fuzzy
translation memory matches, strings needing editing, or new strings, and then
applies the configured rate percentage for each category.
The estimate uses Weblate translation memory matches and does not contact
external machine translation services. The base rate is the price per source
word. Category rates are percentages of that base rate; for example, ``50``
charges half of the base rate and ``0`` excludes that category from the total.
Translator work analysis
------------------------
Estimates realistic daily translator throughput from change history. It reports
the median, average, 75th percentile, and 90th percentile for translated strings
and source words. Minimum and maximum daily changes and maximum source words can
be used to exclude incomplete work days, automated changes, and obvious outliers.