Contrôles de qualité et corrections

Personnaliser les réparations automatiques

Vous pouvez aussi implémenter vos propres réparations automatiques en plus de celles standards et les inclure dans AUTOFIX_LIST.

Les réparations automatiques sont puissantes, mais peuvent aussi causer des dommages ; soyez prudent quand vous en écrivez.

Par exemple, la réparation automatique suivante remplacerait chaque occurence de la chaîne foo dans une traduction par bar :

from weblate.trans.autofixes.base import AutoFix


class ReplaceFooWithBar(AutoFix):
    """Replace foo with bar."""

    # Might be localized using gettext_lazy
    name = "Foobar"

    def fix_single_target(self, target, source, unit):
        if "foo" in target:
            return target.replace("foo", "bar"), True
        return target, False

Pour installer des contrôles personnalisés, fournissez un chemin d’accès complet à la classe Python dans le fichier AUTOFIX_LIST, voir Custom quality checks, add-ons, automatic suggestions and auto-fixes.

Personnaliser le comportement en utilisant des drapeaux

Vous pouvez affiner le comportement de Weblate en utilisant des drapeaux. Ils fournissent des commentaires visuels aux traducteurs et les aident à améliorer leur traduction. Ces drapeaux sont rassemblés à partir des sources suivantes :

Les drapeaux sont séparés par des virgules ; leurs paramètres sont séparés par un deux-points. Vous pouvez utiliser des guillemets pour inclure des espaces ou des caractères spéciaux dans la chaîne de caractères. Par exemple :

placeholders:"special:value":"other value", regex:.*

Les guillemets simples et doubles sont acceptés, les caractères spéciaux sont échappés en utilisant une barre oblique inverse :

placeholders:"quoted \"string\"":'single \'quoted\''
placeholders:r"^#*"

To verify that translators do not change the heading of a Markdown document. A failing check will be triggered if the string ### Index is translated as # Indice.

placeholders:r"\]\([^h].*?\)"

Pour éviter que les liens internes soient traduits (c’est à dire pour que [test](../checks) ne devienne [test](../chequeos).

Les drapeaux définis à un niveau supérieur peuvent être annulés en utilisant la syntaxe discard:NAME. Par exemple si un composant est configuré à safe-html, vous pouvez ajouter discard:safe-html aux drapeaux de la chaîne pour l’ignorer avec cette chaîne particulière.

Voici une liste des drapeaux actuellement acceptés :

read-only

La chaîne est en lecture seule et ne devrait pas être modifiée dans Weblate, voir Chaînes en lecture seule.

terminology

Utilisé dans Glossaire. Copie la chaîne dans chacune des langues du glossaire afin qu’elle soit utilisée de manière cohérente dans toutes les traductions. Utile également s’il est combiné à read-only, par exemple dans les noms de produits.

priority:N

Priorité de la chaîne. Les chaînes de priorité plus élevée sont présentées en premier lieu pour la traduction. La priorité par défaut est de 100, plus une chaîne est prioritaire, plus elle est proposée tôt pour la traduction.

max-length:N

Limiter la longueur maximale d’une chaîne à N caractères, voir Taille maximum de la traduction.

xml-text

Traiter le texte comme document XML, affecte Syntaxe XML et Balisage XML.

font-family:NAME

Définir la famille de polices pour les contrôles de rendu, voir Gestion des polices.

font-weight:WEIGHT

Définir le poids des polices pour les contrôles de rendu, voir Gestion des polices.

font-size:SIZE

Définir la taille des polices pour les contrôles de rendu, voir Gestion des polices.

font-spacing:SPACING

Définir l’espacement des caractères pour les contrôles du rendu, voir Gestion des polices.

icu-flags:FLAGS

Définir les drapeaux pour personnaliser le comportement du contrôle de qualité ICU MessageFormat.

icu-tag-prefix:PREFIX

Définir un préfixe nécessaire pour les balises XML pour le contrôle qualité ICU MessageFormat.

placeholders:NAME:NAME2:...

Chaînes de caractères de remplacement attendues dans la traduction, voir Balises de remplacement.

replacements:FROM:TO:FROM2:TO2...

Remplacements à effectuer lors de la vérification des paramètres du texte résultant (par exemple dans Taille maximale de la traduction ou Taille maximum de la traduction). Le cas d’utilisation typique est l’expansion des caractères à placer pour s’assurer que le texte s’adapte même aux grandes valeurs, par exemple : replacements:%s : "John Doe".

variants:SOURCE

Marquez cette chaîne en tant que variante de la chaîne avec la source correspondante. Voir Variantes de chaînes.

regex:REGEX

Expression rationnelle correspondant à la traduction, voir Expression rationnelle.

discard:NAME

Supprime le drapeau défini à un niveau supérieur.

forbidden

Indique une traduction interdite dans un glossaire, voir Traductions interdites.

strict-same

Permet au Traduction inchangée d’éviter l’utilisation des exceptions des mots pré-enregistrés.

strict-format

Forcer les contrôles de format en utilisant format même pour les formes plurielles avec une seule valeur, voir Formatted strings.

case-insensitive

Ajuster le comportement des contrôles pour qu’ils ne prennent pas en compte la casse. Ne concerne actuellement que les contrôles qualité Balises de remplacement.

bbcode-text

Treat a text as an Bulletin Board Code (BBCode) document, affects Traduction inchangée. Enables the Balisage BBCode quality check.

check-glossary

Enables the Non conforme au glossaire quality check.

fluent-parts

Enables the Parties Fluent quality check.

fluent-references

Enables the Références Fluent quality check.

fluent-target-inner-html

Enables the HTML interne de la traduction Fluent quality check.

fluent-target-syntax

Enables the Syntaxe de traduction Fluent quality check.

angularjs-format

Enables the Chaîne d’interpolation AngularJS quality check.

automattic-components-format

Enables the Formatage des composants Automattic quality check.

c-format

Enables the Format C quality check.

c-sharp-format

Enables the Format C# quality check.

csharp-format

Enables the Format C# quality check.

es-format

Enables the Modèle de littéraux ECMAScript quality check.

i18next-interpolation

Enables the Interpolation i18next quality check.

icu-message-format

Enables the ICU MessageFormat and Syntaxe ICU MessageFormat quality checks.

java-printf-format

Enables the Format Java quality check.

java-format

Enables the MessageFormat Java quality check.

auto-java-messageformat

Treat a text as conditional Java MessageFormat, enabling MessageFormat Java only when the source contains Java MessageFormat placeholders. Enables the MessageFormat Java quality check.

javascript-format

Enables the Format JavaScript quality check.

laravel-format

Enables the Format Laravel quality check.

lua-format

Enables the Format Lua quality check.

object-pascal-format

Enables the Format Pascal objet quality check.

objc-format

Enables the Format Objective-C quality check.

percent-placeholders

Enables the Balises de remplacement par caractères pour cent quality check.

perl-brace-format

Enables the Format Perl avec accolades quality check.

perl-format

Enables the Format Perl quality check.

php-format

Enables the Format PHP quality check.

python-brace-format

Enables the Format d’accolade Python quality check.

python-format

Enables the Format Python quality check.

qt-format

Enables the Format Qt quality check.

qt-plural-format

Enables the Forme plurielle Qt quality check.

ruby-format

Enables the Format Ruby quality check.

scheme-format

Enables the Format Scheme quality check.

vue-format

Enables the Formatage Vue I18n quality check.

rst-text

Treat a text as an reStructuredText document, affects Traduction inchangée. Enables the reStructuredText incohérent and erreur de syntaxe reStructuredText quality checks.

md-text

Treat a text as a Markdown document, and provide Markdown syntax highlighting on the translation text area. Enables the Liens Markdown, Références Markdown and Syntaxe Markdown quality checks.

max-length

Enables the Taille maximum de la traduction quality check.

max-size

Enables the Taille maximale de la traduction quality check.

placeholders

Enables the Balises de remplacement quality check.

regex

Enables the Expression rationnelle quality check.

safe-html

Enables the HTML non sûr quality check.

auto-safe-html

Treat a text as conditional HTML, enabling HTML non sûr only for plain text or source strings that contain standard HTML markup or valid custom elements. This is useful for extended Markdown variants such as MDX, where angle-bracket syntax may not be HTML. Enables the HTML non sûr quality check.

url

The string should consist of only a URL. Enables the URL quality check.

fluent-source-inner-html

Enables the HTML interne de la source Fluent quality check.

fluent-source-syntax

Enables the Syntaxe Fluent source quality check.

ignore-all-checks

Ignorer toutes les vérifications de qualité.

ignore-bbcode

Ignorer le contrôle qualité Balisage BBCode.

ignore-xml-chars-around-tags

Skip the Caractères autour des balises XML quality check.

ignore-duplicate

Ignorer le contrôle de qualité Répétition de mots.

ignore-check-glossary

Ignorer le contrôle de qualité Non conforme au glossaire.

ignore-double-space

Ignorer le contrôle qualité Double espace.

ignore-fluent-parts

Ignorer le contrôle de qualité Parties Fluent.

ignore-fluent-references

Ignorer le contrôle de qualité Références Fluent.

ignore-fluent-target-inner-html

Ignorer le contrôle de qualité HTML interne de la traduction Fluent.

ignore-fluent-target-syntax

Skip the Syntaxe de traduction Fluent quality check.

ignore-angularjs-format

Skip the Chaîne d’interpolation AngularJS quality check.

ignore-automattic-components-format

Ignorer le contrôle de qualité Formatage des composants Automattic.

ignore-c-format

Skip the Format C quality check.

ignore-c-sharp-format

Ignorer le contrôle qualité Format C#.

ignore-es-format

Skip the Modèle de littéraux ECMAScript quality check.

ignore-i18next-interpolation

Skip the Interpolation i18next quality check.

ignore-icu-message-format

Ignorer le contrôle de qualité ICU MessageFormat.

ignore-java-printf-format

Ignorer le contrôle qualité Format Java.

ignore-java-format

Ignorer le contrôle de qualité MessageFormat Java.

ignore-javascript-format

Ignorer le contrôle qualité Format JavaScript.

ignore-laravel-format

Skip the Format Laravel quality check.

ignore-lua-format

Ignorer le contrôle de qualité Format Lua.

ignore-object-pascal-format

Skip the Format Pascal objet quality check.

ignore-objc-format

Skip the Format Objective-C quality check.

ignore-percent-placeholders

Skip the Balises de remplacement par caractères pour cent quality check.

ignore-perl-brace-format

Skip the Format Perl avec accolades quality check.

ignore-perl-format

Ignorer le contrôle de qualité Format Perl.

ignore-php-format

Skip the Format PHP quality check.

ignore-python-brace-format

Skip the Format d’accolade Python quality check.

ignore-python-format

Ignorer le contrôle qualité Format Python.

ignore-qt-format

Skip the Format Qt quality check.

ignore-qt-plural-format

Skip the Forme plurielle Qt quality check.

ignore-ruby-format

Skip the Format Ruby quality check.

ignore-scheme-format

Ignorer le contrôle de qualité Format Scheme.

ignore-vue-format

Skip the Formatage Vue I18n quality check.

ignore-translated

Skip the A déjà été traduit quality check.

ignore-inconsistent

Skip the Incohérence quality check.

ignore-rst-references

Skip the reStructuredText incohérent quality check.

ignore-kashida

Ignorer le contrôle qualité Présence d’un caractère kashida.

ignore-md-link

Skip the Liens Markdown quality check.

ignore-md-reflink

Ignorer le contrôle de qualité Références Markdown.

ignore-md-syntax

Skip the Syntaxe Markdown quality check.

ignore-max-length

Skip the Taille maximum de la traduction quality check.

ignore-max-size

Skip the Taille maximale de la traduction quality check.

ignore-escaped-newline

Skip the Pas de correspondance \n quality check.

ignore-end-colon

Skip the Incohérence de caractère deux-points quality check.

ignore-end-ellipsis

Ignorez le contrôle qualité Incohérence de points de suspension.

ignore-end-exclamation

Ignorer le contrôle de qualité Incohérence de point d’exclamation.

ignore-end-stop

Skip the Incohérence de point final quality check.

ignore-end-interrobang

Skip the Incohérence de point exclarrogatif quality check.

ignore-end-question

Skip the Incohérence de point d’interrogation quality check.

ignore-end-semicolon

Skip the Incohérence de point-virgule quality check.

ignore-newline-count

Ignorer le contrôle de qualité Incohérence dans les sauts de ligne.

ignore-plurals

Skip the Pluriels manquants quality check.

ignore-multiple-capital

Skip the Majuscules multiples quality check.

ignore-kabyle-characters

Ignorer le contrôle de qualité Caractères non standard en kabyle.

ignore-placeholders

Skip the Balises de remplacement quality check.

ignore-prohibited-initial-character

Ignorer le contrôle qualité Caractère interdit en première position.

ignore-punctuation-spacing

Ignorer le contrôle qualité Espacement de ponctuation.

ignore-regex

Ignorer le contrôle qualité Expression rationnelle.

ignore-rst-syntax

Skip the erreur de syntaxe reStructuredText quality check.

ignore-reused

Skip the Traduction réutilisée quality check.

ignore-same-plurals

Ignorer le contrôle de qualité Pluriel identique.

ignore-begin-newline

Skip the Nouvelle ligne au début quality check.

ignore-begin-space

Skip the Espaces au début quality check.

ignore-end-newline

Skip the Saut de ligne à la fin quality check.

ignore-end-space

Ignorer le contrôle qualité Espace à la fin.

ignore-same

Ignorer le contrôle de qualité Traduction inchangée.

ignore-safe-html

Ignorer le contrôle de qualité HTML non sûr.

ignore-url

Ignorer le contrôle de qualité URL.

ignore-xml-tags

Ignorer le contrôle de qualité Balisage XML.

ignore-xml-invalid

Skip the Syntaxe XML quality check.

ignore-zero-width-space

Ignorer le contrôle qualité Espace sans chasse.

ignore-ellipsis

Ignorer le contrôle qualité Points de suspension.

ignore-fluent-source-inner-html

Skip the HTML interne de la source Fluent quality check.

ignore-fluent-source-syntax

Ignorer le contrôle de qualité Syntaxe Fluent source.

ignore-icu-message-format

Ignorer le contrôle de qualité Syntaxe ICU MessageFormat.

ignore-long-untranslated

Ignorer le contrôle qualité Ancienne chaîne non traduite.

ignore-multiple-failures

Ignorer le contrôle qualité Plusieurs vérifications en échec.

ignore-unnamed-format

Ignorer le contrôle qualité Multiples variables non nommées.

ignore-optional-plural

Ignorer le contrôle qualité Non pluralisé.

Note

En général, la règle est nommée ignore-* pour tout contrôle, en utilisant son identifiant, de sorte que vous pouvez l’utiliser, même pour vos contrôles personnalisés.

Ces drapeaux sont compris à la fois dans les paramètres des Configuration des composants, par chaîne source et dans le fichier de traduction lui-même (par exemple dans GNU gettext).

Drapeaux basés sur les emplacements

Quelques drapeaux sont ajoutés par défaut aux chaînes de caractères en fonction de leur position. Cela signifie que certains contrôles seront automatiquement activés selon l’endroit où la chaîne est utilisée.

  • rst-text : ce drapeau est ajouté automatiquement aux chaînes des fichiers reStructuredText, si l’extension de l’emplacement est .rst.

  • md-text: This flag is automatically added to strings in Markdown and MDX files, if location extension is .md, .markdown, or .mdx.

Exécution des contrôles

The enforced checks cannot be dismissed and mark string as Needs editing (see États de traduction). This prevents translators from hiding such checks.

Indication

Turning on check enforcing doesn’t enable it automatically. Some checks have to be turned on by adding the corresponding flag to the string or component flags.

This is best used with checks that can cause serious issues when used like checks for Formatted strings. Using for style checks like Traduction inchangée is not recommended because dismissal is sometimes a reasonable approach in these.

The Filtre sur la qualité de traduction can then be used to exclude strings needing editing from being committed to the version control.

Gestion des polices

Indication

Les polices téléchargées dans Weblate sont utilisées uniquement pour la vérification Taille maximale de la traduction, elles n’ont pas d’effet sur l’interface utilisateur de Weblate.

La vérification Taille maximale de la traduction est utilisée pour calculer les dimensions du texte rendu, la police doit être chargée dans Weblate et sélectionnée à l’aide d’une marque de traduction (voir Personnaliser le comportement en utilisant des drapeaux).

Weblate font management tool in Fonts under the Operations menu of your translation project provides interface to upload and manage fonts. TrueType or OpenType fonts can be uploaded, set up font-groups and use those in the check.

Les groupes de polices vous permettent de définir différentes polices pour différentes langues, ce qui est généralement nécessaire pour les langues non latines :

../_images/font-group-edit.webp

Les groupes de polices sont identifiés par leur nom, qui ne peut pas contenir d’espace ni de caractères spéciaux, afin qu’il puisse être facilement utilisé dans la définition du contrôle :

../_images/font-group-list.webp

Font-family and style are automatically recognized after uploading them:

../_images/font-edit.webp

Vous pouvez charger plusieurs polices dans Weblate :

../_images/font-list.webp

Pour utiliser les polices afin de vérifier la longueur des chaînes, passez-lui les drapeaux appropriés (voir Personnaliser le comportement en utilisant des drapeaux). Vous aurez probablement besoin des drapeaux suivants :

max-size:500 / max-size:300:5

Définit la largeur maximale en pixels et, éventuellement, le nombre maximal de lignes (un retour automatique à la ligne est appliqué).

font-family:ubuntu

Définit le groupe de polices à utiliser en spécifiant son identifiant.

font-size:22

Définit la taille de la police en pixels.

Rédiger ses propres contrôles

Beaucoup de contrôles qualité sont intégrés (voir Contrôles qualité) bien qu’ils ne puissent pas tous couvrir ce que vous souhaiteriez vérifier. La liste des contrôles réalisés peut être ajustée en utilisant CHECK_LIST et vous pouvez aussi ajouter des contrôles personnalisés.

  1. Sous-classer weblate.checks.Check

  2. Définir certains attributs.

  3. Implémenter soit la méthode check (si vous souhaitez gérer les pluriels dans votre code) ou la méthode check_single (qui le fait à votre place).

Quelques exemples :

Pour installer les contrôles personnalisés veuillez fournir un chemin complet vers la classe Python dans CHECK_LIST, voir Custom quality checks, add-ons, automatic suggestions and auto-fixes.

Contrôle que le texte traduit ne contient pas « foo »

Ceci est un contrôle élémentaire qui vérifie très simplement si la chaîne « foo » ne figure pas dans le texte traduit.

"""Simple quality check example."""

from django.utils.translation import gettext_lazy

from weblate.checks.base import TargetCheck


class FooCheck(TargetCheck):
    # Used as identifier for check, should be unique
    # Has to be shorter than 50 characters
    check_id = "foo"

    # Short name used to display failing check
    # Might be localized using gettext_lazy
    name = "Foo check"

    # Description for failing check
    description = gettext_lazy("Your translation is foo")

    # Real check code
    def check_single(self, source, target, unit):
        return "foo" in target

Vérification que les pluriels sont différents dans le texte traduit en tchèque

Vérifie à l’aide des infos de la langue que les deux formes plurielles en Tchèque ne sont pas les mêmes.

"""Quality check example for Czech plurals."""

from django.utils.translation import gettext_lazy

from weblate.checks.base import TargetCheck


class PluralCzechCheck(TargetCheck):
    # Used as identifier for check, should be unique
    # Has to be shorter than 50 characters
    check_id = "foo"

    # Short name used to display failing check
    # Might be localized using gettext_lazy
    name = "Foo check"

    # Description for failing check
    description = gettext_lazy("Your translation is foo")

    # Real check code
    def check_target_unit(self, sources, targets, unit):
        if unit.translation.language.is_base({"cs"}):
            return targets[1] == targets[2]
        return False

    def check_single(self, source, target, unit) -> bool:
        """We don't check target strings here."""
        return False