Quality metric #36

Open
opened 2026-05-25 16:32:41 +02:00 by maciek · 0 comments
Contributor

As a language project coordinator I'd like to feed potodo with sphinx-lint output and Sphinx build warnings to get a metrics about quality of translated files.

Example:

sphinx-lint output:

faq/programming.po:921: missing space before default role: 'd 1``+=``'. (missing-space-before-default-role)
faq/programming.po:921: missing space before default role: ' 3]````a_list extend([1, 2, 3])i modyfikuje 4``a_list``'. (missing-space-before-default-role)
faq/programming.po:921: missing space before default role: 't 5``some_tuple += (1, 2, 3)``'. (missing-space-before-default-role)
faq/programming.po:921: missing space before default role: 'z 6``some_int += 1``'. (missing-space-before-default-role)
faq/programming.po:473: inline literal missing (escaped) space after literal: '``2``w' (missing-space-after-literal)
faq/programming.po:473: found an unbalanced inline literal markup. (unbalanced-inline-literals-delimiters)
deprecations/c-api-pending-removal-in-3.15.po:28: missing space before role ( Używać:c:func:`). (missing-space-before-role)
deprecations/c-api-pending-removal-in-3.15.po:28: role missing (escaped) space after role: ':c:func:`PyImport_ImportModule`Z' (missing-space-after-role)
deprecations/index.po:1505: role missing (escaped) space after role: ':c:type:`PyConfig`a' (missing-space-after-role)
deprecations/index.po:1228: role with no backticks: ' :ref:środowisko ' (role-without-backticks)
deprecations/index.po:1216: role missing closing backtick: ':ref:`środowiska wirtualne.\n' (missing-backtick-after-role)

Sphinx build warnings:

faq/programming.rst:245:<translated>:1: WARNING: Inline literal start-string without end-string. [docutils]
faq/programming.rst:22: WARNING: inconsistent term references in translated message. original: [':mod:`documented in the Library\nReference Manual <pdb>`'], translated: [':mod:`pdb`', ':mod:`udokumentowany <pdb>`', ':mod:`pdb`'] [i18n.inconsistent_references]
faq/programming.rst:43: WARNING: inconsistent references in translated message. original: [], translated: ['`Visual Studio Code<https://code.visualstudio.com/>`_'] [i18n.inconsistent_references]
faq/programming.rst:245:<translated>:1: WARNING: Inline literal start-string without end-string. [docutils]
faq/programming.rst:302: WARNING: inconsistent term references in translated message. original: [':mod:`sys`', ':mod:`os`', ':mod:`argparse`', ':mod:`re`'], translated: [] [i18n.inconsistent_references]
faq/programming.rst:456: WARNING: inconsistent term references in translated message. original: [':term:`mutable`'], translated: [':term:`mutowalny`'] [i18n.inconsistent_references]
faq/programming.rst:43: ERROR: Unknown target name: "visual studio code<https://code.visualstudio.com/>".

Did you want to embed a URI or alias?
The embedded reference must be preceded by whitespace. [docutils]
howto/a-conceptual-overview-of-asyncio.rst:7: WARNING: inconsistent term references in translated message. original: [':ref:`HOWTO <how-tos>`', ':mod:`asyncio`'], translated: [] [i18n.inconsistent_references]
bugs.rst:24: WARNING: inconsistent references in translated message. original: ['`translation’s repository <TRANSLATION_REPO_>`_'], translated: ['`tutaj <TRANSLATION_REPO_>`_'] [i18n.inconsistent_references]
bugs.rst:37: WARNING: inconsistent references in translated message. original: ['`Documentation bugs`_'], translated: ['`Błędy w dokumentacji`_'] [i18n.inconsistent_references]
bugs.rst:105: WARNING: inconsistent references in translated message. original: ["`Python Developer's Guide`_", '`core-mentorship mailing list`_'], translated: ["`Python Developer's Guide`_", '`lista mailingowa core-mentorship`_'] [i18n.inconsistent_references]

Sample invocation:

$ uvx potodo --quality warnings-lint-pl.txt warnings-pl.txt --exclude '**/*' '!tutorial/*' '!bugs.po' '!library/functions.po'
1 directory  quality: 97.63%
└── python-docs-pl/  quality: 97.63%
    ├── bugs.po                           quality: 93.0%   29/31
    ├── library/  96.39% done
    │   └── functions.po                  quality: 95.0% 510/533
    └── tutorial/  98.00% done
        ├── classes.po                    quality: 96.0% 148/154
        ├── datastructures.po             quality: 91.0% 127/139
        ├── stdlib.po                     quality: 98.0%   66/67
        └── stdlib2.po                    quality: 98.0%   64/65

Requirements:

  • potodo should deduplicate warnings list, to count per PO file item, as item passing/not-passing the checks

Nice to have:

  • potodo could parse warnings targeting .rst source files (provided with --pot flag; currently Sphinx targets .rst files in translation warnings, we can investigate changing it upstream -- to make Sphinx correctly issue warnings targeting PO or MO files)
As a language project coordinator I'd like to feed `potodo` with `sphinx-lint` output and Sphinx build warnings to get a metrics about quality of translated files. Example: `sphinx-lint` output: ``` faq/programming.po:921: missing space before default role: 'd 1``+=``'. (missing-space-before-default-role) faq/programming.po:921: missing space before default role: ' 3]````a_list extend([1, 2, 3])i modyfikuje 4``a_list``'. (missing-space-before-default-role) faq/programming.po:921: missing space before default role: 't 5``some_tuple += (1, 2, 3)``'. (missing-space-before-default-role) faq/programming.po:921: missing space before default role: 'z 6``some_int += 1``'. (missing-space-before-default-role) faq/programming.po:473: inline literal missing (escaped) space after literal: '``2``w' (missing-space-after-literal) faq/programming.po:473: found an unbalanced inline literal markup. (unbalanced-inline-literals-delimiters) deprecations/c-api-pending-removal-in-3.15.po:28: missing space before role ( Używać:c:func:`). (missing-space-before-role) deprecations/c-api-pending-removal-in-3.15.po:28: role missing (escaped) space after role: ':c:func:`PyImport_ImportModule`Z' (missing-space-after-role) deprecations/index.po:1505: role missing (escaped) space after role: ':c:type:`PyConfig`a' (missing-space-after-role) deprecations/index.po:1228: role with no backticks: ' :ref:środowisko ' (role-without-backticks) deprecations/index.po:1216: role missing closing backtick: ':ref:`środowiska wirtualne.\n' (missing-backtick-after-role) ``` Sphinx build warnings: ``` faq/programming.rst:245:<translated>:1: WARNING: Inline literal start-string without end-string. [docutils] faq/programming.rst:22: WARNING: inconsistent term references in translated message. original: [':mod:`documented in the Library\nReference Manual <pdb>`'], translated: [':mod:`pdb`', ':mod:`udokumentowany <pdb>`', ':mod:`pdb`'] [i18n.inconsistent_references] faq/programming.rst:43: WARNING: inconsistent references in translated message. original: [], translated: ['`Visual Studio Code<https://code.visualstudio.com/>`_'] [i18n.inconsistent_references] faq/programming.rst:245:<translated>:1: WARNING: Inline literal start-string without end-string. [docutils] faq/programming.rst:302: WARNING: inconsistent term references in translated message. original: [':mod:`sys`', ':mod:`os`', ':mod:`argparse`', ':mod:`re`'], translated: [] [i18n.inconsistent_references] faq/programming.rst:456: WARNING: inconsistent term references in translated message. original: [':term:`mutable`'], translated: [':term:`mutowalny`'] [i18n.inconsistent_references] faq/programming.rst:43: ERROR: Unknown target name: "visual studio code<https://code.visualstudio.com/>". Did you want to embed a URI or alias? The embedded reference must be preceded by whitespace. [docutils] howto/a-conceptual-overview-of-asyncio.rst:7: WARNING: inconsistent term references in translated message. original: [':ref:`HOWTO <how-tos>`', ':mod:`asyncio`'], translated: [] [i18n.inconsistent_references] bugs.rst:24: WARNING: inconsistent references in translated message. original: ['`translation’s repository <TRANSLATION_REPO_>`_'], translated: ['`tutaj <TRANSLATION_REPO_>`_'] [i18n.inconsistent_references] bugs.rst:37: WARNING: inconsistent references in translated message. original: ['`Documentation bugs`_'], translated: ['`Błędy w dokumentacji`_'] [i18n.inconsistent_references] bugs.rst:105: WARNING: inconsistent references in translated message. original: ["`Python Developer's Guide`_", '`core-mentorship mailing list`_'], translated: ["`Python Developer's Guide`_", '`lista mailingowa core-mentorship`_'] [i18n.inconsistent_references] ``` Sample invocation: ``` $ uvx potodo --quality warnings-lint-pl.txt warnings-pl.txt --exclude '**/*' '!tutorial/*' '!bugs.po' '!library/functions.po' 1 directory quality: 97.63% └── python-docs-pl/ quality: 97.63% ├── bugs.po quality: 93.0% 29/31 ├── library/ 96.39% done │ └── functions.po quality: 95.0% 510/533 └── tutorial/ 98.00% done ├── classes.po quality: 96.0% 148/154 ├── datastructures.po quality: 91.0% 127/139 ├── stdlib.po quality: 98.0% 66/67 └── stdlib2.po quality: 98.0% 64/65 ``` Requirements: * `potodo` should deduplicate warnings list, to count per PO file item, as item passing/not-passing the checks Nice to have: * `potodo` could parse warnings targeting `.rst` source files (provided with `--pot` flag; currently Sphinx targets `.rst` files in translation warnings, we can investigate changing it upstream -- to make Sphinx correctly issue warnings targeting PO or MO files)
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AFPy/potodo#36
No description provided.