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
:
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
from django.utils.translation import gettext_lazy
from weblate.trans.autofixes.base import AutoFix
class ReplaceFooWithBar(AutoFix):
"""Replace foo with bar."""
name = gettext_lazy("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 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 :
Chaîne source, voir Additional info on source strings.
Drapeaux par chaîne extraits du format de fichier, voir Localization file formats.
Drapeaux de traduction (actuellement seul le drapeau
read-only
pour une chaîne source en deux langues).Étiquettes spécifiques au format de fichier.
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).
Voici une liste des drapeaux actuellement acceptés :
rst-text
Treat a text as an reStructuredText document, affects Traduction inchangée. Turns on erreur de syntaxe reStructuredText and Références reStructuredText incohérentes.
bbcode-text
Treat a text as an Bulletin Board Code (BBCode) document, affects Traduction inchangée.
dos-eol
Utilise les marqueurs de fin de ligne DOS au lieu de ceux d’Unix (
\r\n
au lieu de\n
).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
Used in Glossaire. Copies the string into all glossary languages so it can be used consistently in all translations. Also useful in combination with
read-only
, for example in product names.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.
forbidden
Indique une traduction interdite dans un glossaire, voir Forbidden translations.
strict-same
Make the Traduction inchangée avoid using the built-in words exceptions.
strict-format
Forcer les contrôles de format en utilisant format même pour les formes plurielles avec une seule valeur, voir Formatted strings.
check-glossary
Activer le contrôle de qualité Non conforme au glossaire.
angularjs-format
Activer le contrôle qualité Chaîne d’interpolation AngularJS.
c-format
Activer le contrôle qualité Format C.
c-sharp-format
Activer le contrôle qualité Format C#.
es-format
Activer le contrôle qualité Modèle de littéraux ECMAScript.
i18next-interpolation
Activer le contrôle qualité Interpolation i18next.
icu-message-format
Activer le contrôle qualité ICU MessageFormat.
java-printf-format
Activer le contrôle qualité Format Java.
java-format
Activer le contrôle qualité MessageFormat Java.
javascript-format
Activer le contrôle qualité Format JavaScript.
lua-format
Activer le contrôle qualité Format Lua.
object-pascal-format
Activer le contrôle qualité Format Pascal objet.
percent-placeholders
Activer le contrôle qualité Balises de remplacement par caractères pour cent.
perl-brace-format
Activer le contrôle qualité Format Perl avec accolades.
perl-format
Activer le contrôle qualité Format Perl.
php-format
Activer le contrôle qualité Format PHP.
python-brace-format
Activer le contrôle qualité Format d’accolade Python.
python-format
Activer le contrôle qualité Format Python.
qt-format
Activer le contrôle qualité Format Qt.
qt-plural-format
Activer le contrôle qualité Forme plurielle Qt.
ruby-format
Activer le contrôle qualité Format Ruby.
scheme-format
Activer le contrôle qualité Format Scheme.
vue-format
Activer le contrôle qualité Formatage Vue I18n.
md-text
Traiter le texte comme un document Markdown et afficher la mise en valeur de la syntaxe Markdown dans la zone textuelle de traduction. Activer les contrôles qualité Liens Markdown, Références Markdown et Syntaxe Markdown.
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.
safe-html
Activer le contrôle qualité HTML non sûr.
url
La chaîne doit être composée d’une URL seule. Activer le contrôle qualité URL.
ignore-all-checks
Ignorer toutes les vérifications de qualité.
ignore-bbcode
Ignorer le contrôle qualité Balisage BBCode.
ignore-duplicate
Skip the Répétition de mots quality check.
ignore-check-glossary
Skip the Non conforme au glossaire quality check.
ignore-double-space
Ignorer le contrôle qualité Double espace.
ignore-angularjs-format
Skip the Chaîne d’interpolation AngularJS quality check.
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
Skip the ICU MessageFormat quality check.
ignore-java-printf-format
Ignorer le contrôle qualité Format Java.
ignore-java-format
Skip the MessageFormat Java quality check.
ignore-javascript-format
Ignorer le contrôle qualité Format JavaScript.
ignore-lua-format
Skip the Format Lua quality check.
ignore-object-pascal-format
Skip the Format Pascal objet 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
Skip the Format Perl quality check.
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
Skip the Format Scheme quality check.
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-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
Skip the Références Markdown quality check.
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
Skip the Incohérence de point d’exclamation quality check.
ignore-end-stop
Skip the Incohérence de point final quality check.
ignore-end-interrobang
Skip the Mismatched interrobang mark 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-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
Skip the Pluriel identique quality check.
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
Skip the Traduction inchangée quality check.
ignore-safe-html
Skip the HTML non sûr quality check.
ignore-url
Skip the URL quality check.
ignore-xml-tags
Skip the Balisage XML quality check.
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-icu-message-format-syntax
Ignorer le contrôle 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).
Exécution des contrôles¶
You can configure a list of checks which can not be ignored by setting Vérifications forcées in Configuration des composants. Each listed check can not be dismissed in the user interface and any string failing this check is marked as Needs editing (see États de traduction).
Note
Turning on check enforcing doesn’t enable it automatically. The check can be turned on by adding the corresponding flag to string or component flags.
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).
L’outil de gestion des polices Weblate dans Police de caractères du menu Gérer de votre projet de traduction fournit une interface pour télécharger et gérer les polices. Vous pouvez téléverser des polices TrueType et OpenType, configurer des groupes de polices et les utiliser fans la vérification.
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 :

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 :

La famille de caractères et le style sont automatiquement reconnus après leur téléchargement :

Vous pouvez charger plusieurs polices dans Weblate :

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.
Sous-classer weblate.checks.Check
Définir certains attributs.
Implement either the
check
(if you want to deal with plurals in your code) or thecheck_single
method (which does it for you).
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 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.
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""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
name = gettext_lazy("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.
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""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
name = gettext_lazy("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