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 as _
from weblate.trans.autofixes.base import AutoFix
class ReplaceFooWithBar(AutoFix):
"""Replace foo with bar."""
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 and auto-fixes.
Customizing behavior using flags#
You can fine-tune the Weblate behavior by using flags. This can be done on the source string level (see Additional info on source strings), or in the Configuration des composants (Drapeaux de traduction). Some file formats also allow to specify flags directly in the format (see Formats de fichiers pris en charge).
Les drapeaux sont séparés par des virgules, les paramètres sont séparés par 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:.*
Both single and double quotes are accepted, special characters are being escaped using backslash:
placeholders:"quoted \"string\"":'single \'quoted\''
Voici une liste des drapeaux actuellement acceptés :
rst-textTraiter le texte comme document reStructuredText, affecte Traduction inchangée.
dos-eolUtilise les marqueurs de fin de ligne DOS au lieu de ceux d’Unix (
\r\nau lieu de\n).read-onlyLa chaîne est en lecture seule et ne devrait pas être modifiée dans Weblate, voir Chaînes en lecture seule.
priority:NPriorité 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:NLimiter la longueur maximale d’une chaîne à N caractères, voir Taille maximum de la traduction.
xml-textTraiter le texte comme document XML, affecte Syntaxe XML et Balisage XML.
font-family:NAMEDéfinir la famille de polices pour les contrôles de rendu, voir Gestion des polices.
font-weight:WEIGHTDéfinir le poids des polices pour les contrôles de rendu, voir Gestion des polices.
font-size:SIZEDéfinir la taille des polices pour les contrôles de rendu, voir Gestion des polices.
font-spacing:SPACINGDéfinir l’espacement des caractères pour les contrôles du rendu, voir Gestion des polices.
icu-flags:FLAGSDefine flags for customizing the behavior of the ICU MessageFormat quality check.
icu-tag-prefix:PREFIXSet a required prefix for XML tags for the ICU MessageFormat quality check.
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:SOURCEMarquez cette chaîne en tant que variante de la chaîne avec la source correspondante. Voir String variants.
regex:REGEXExpression rationnelle correspondant à la traduction, voir Expression rationnelle.
forbiddenIndique une traduction interdite dans un glossaire, voir Forbidden translations.
strict-sameFaire en sorte que les « Traductions inchangées » évitent d’utiliser la liste noire de mots intégrés, voir Traduction inchangée.
check-glossaryEnable the Non conforme au glossaire quality check.
angularjs-formatEnable the Chaîne d’interpolation AngularJS quality check.
c-formatEnable the Format C quality check.
c-sharp-formatEnable the Format C# quality check.
es-formatEnable the Modèle de littéraux ECMAScript quality check.
i18next-interpolationEnable the Interpolation i18next quality check.
icu-message-formatEnable the ICU MessageFormat quality check.
java-printf-formatEnable the Format Java quality check.
java-formatEnable the MessageFormat Java quality check.
javascript-formatEnable the Format JavaScript quality check.
lua-formatEnable the Format Lua quality check.
object-pascal-formatEnable the Format Pascal objet quality check.
percent-placeholdersEnable the Balises de remplacement par caractères pour cent quality check.
perl-formatEnable the Format Perl quality check.
php-formatEnable the Format PHP quality check.
python-brace-formatEnable the Format d’accolade Python quality check.
python-formatEnable the Format Python quality check.
qt-formatEnable the Format Qt quality check.
qt-plural-formatEnable the Forme plurielle Qt quality check.
ruby-formatEnable the Format Ruby quality check.
scheme-formatEnable the Format Scheme quality check.
vue-formatEnable the Formatage Vue I18n quality check.
md-textTreat text as a Markdown document. Enable Liens Markdown, Références Markdown, and Syntaxe Markdown quality checks.
case-insensitiveAdjust checks behavior to be case-insensitive. Currently affects only Balises de remplacement quality check.
safe-htmlEnable the HTML non sûr quality check.
urlThe string should consist of only a URL. Enable the URL quality check.
ignore-all-checksIgnorer toutes les vérifications de qualité.
ignore-bbcodeSkip the Balisage BBCode quality check.
ignore-duplicateSkip the Répétition de mots quality check.
ignore-check-glossarySkip the Non conforme au glossaire quality check.
ignore-double-spaceSkip the Double espace quality check.
ignore-angularjs-formatSkip the Chaîne d’interpolation AngularJS quality check.
ignore-c-formatSkip the Format C quality check.
ignore-c-sharp-formatSkip the Format C# quality check.
ignore-es-formatSkip the Modèle de littéraux ECMAScript quality check.
ignore-i18next-interpolationSkip the Interpolation i18next quality check.
ignore-icu-message-formatSkip the ICU MessageFormat quality check.
ignore-java-formatSkip the MessageFormat Java quality check.
ignore-java-printf-formatSkip the Format Java quality check.
ignore-javascript-formatSkip the Format JavaScript quality check.
ignore-lua-formatSkip the Format Lua quality check.
ignore-object-pascal-formatSkip the Format Pascal objet quality check.
ignore-percent-placeholdersSkip the Balises de remplacement par caractères pour cent quality check.
ignore-perl-formatSkip the Format Perl quality check.
ignore-php-formatSkip the Format PHP quality check.
ignore-python-brace-formatSkip the Format d’accolade Python quality check.
ignore-python-formatSkip the Format Python quality check.
ignore-qt-formatSkip the Format Qt quality check.
ignore-qt-plural-formatSkip the Forme plurielle Qt quality check.
ignore-ruby-formatSkip the Format Ruby quality check.
ignore-scheme-formatSkip the Format Scheme quality check.
ignore-vue-formatSkip the Formatage Vue I18n quality check.
ignore-translatedSkip the A déjà été traduit quality check.
ignore-inconsistentSkip the Incohérence quality check.
ignore-kashidaSkip the Présence d’un caractère kashida quality check.
ignore-md-linkSkip the Liens Markdown quality check.
ignore-md-reflinkSkip the Références Markdown quality check.
ignore-md-syntaxSkip the Syntaxe Markdown quality check.
ignore-max-lengthSkip the Taille maximum de la traduction quality check.
ignore-max-sizeSkip the Taille maximale de la traduction quality check.
ignore-escaped-newlineSkip the Pas de correspondance \n quality check.
ignore-end-colonSkip the Incohérence de caractère deux-points quality check.
ignore-end-ellipsisSkip the Incohérence de points de suspension quality check.
ignore-end-exclamationSkip the Incohérence de point d’exclamation quality check.
ignore-end-stopSkip the Incohérence de point final quality check.
ignore-end-questionSkip the Incohérence de point d’interrogation quality check.
ignore-end-semicolonSkip the Incohérence de point-virgule quality check.
ignore-newline-countSkip the Incohérence dans les sauts de ligne quality check.
ignore-pluralsSkip the Pluriels manquants quality check.
ignore-placeholdersSkip the Balises de remplacement quality check.
ignore-punctuation-spacingSkip the Espacement de ponctuation quality check.
ignore-regexSkip the Expression rationnelle quality check.
ignore-same-pluralsSkip the Pluriel identique quality check.
ignore-begin-newlineSkip the Nouvelle ligne au début quality check.
ignore-begin-spaceSkip the Espaces au début quality check.
ignore-end-newlineSkip the Saut de ligne à la fin quality check.
ignore-end-spaceSkip the Espace à la fin quality check.
ignore-sameSkip the Traduction inchangée quality check.
ignore-safe-htmlSkip the HTML non sûr quality check.
ignore-urlSkip the URL quality check.
ignore-xml-tagsSkip the Balisage XML quality check.
ignore-xml-invalidSkip the Syntaxe XML quality check.
ignore-zero-width-spaceSkip the Espace sans chasse quality check.
ignore-ellipsisSkip the Points de suspension quality check.
ignore-icu-message-format-syntaxSkip the Syntaxe ICU MessageFormat quality check.
ignore-long-untranslatedSkip the Ancienne chaîne non traduite quality check.
ignore-multiple-failuresSkip the Plusieurs vérifications en échec quality check.
ignore-unnamed-formatSkip the Multiples variables non nommées quality check.
ignore-optional-pluralSkip the Non pluralisé quality check.
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#
Nouveau dans la version 3.11.
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#
Nouveau dans la version 3.7.
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 check-max-size`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 :ref:`custom-checks).
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 Customizing behavior using flags). Vous aurez probablement besoin des drapeaux suivants :
max-size:500Définit la largeur maximale en pixels.
font-family:ubuntuDéfinit le groupe de polices à utiliser en spécifiant son identifiant.
font-size:22Définit la taille de la police en pixels.
Rédiger ses propres contrôles#
A wide range of quality checks are built-in, (see Quality checks), though
they might not cover everything you want to check. The list of performed checks
can be adjusted using CHECK_LIST, and you can also add custom checks.
Subclass the weblate.checks.Check
Définir certains attributs.
Implement either the
check(if you want to deal with plurals in your code) or thecheck_singlemethod (which does it for you).
Quelques exemples :
To install custom checks, provide a fully-qualified path to the Python class
in the CHECK_LIST, see Custom quality checks, add-ons and auto-fixes.
Checking translation text does not contain « foo »#
This is a pretty simple check which just checks whether the translation is missing the string « foo ».
# 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 as _
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 = _("Foo check")
# Description for failing check
description = _("Your translation is foo")
# Real check code
def check_single(self, source, target, unit):
return "foo" in target
Checking that Czech translation text plurals differ#
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 as _
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 = _("Foo check")
# Description for failing check
description = _("Your translation is foo")
# Real check code
def check_target_unit(self, sources, targets, unit):
if self.is_language(unit, ("cs",)):
return targets[1] == targets[2]
return False
def check_single(self, source, target, unit):
"""We don't check target strings here."""
return False