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 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, 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 :
Source string additional flags:
Additional info on source strings décrit les modifications manuelles.
Modification en masse peut être utilisé pour appliquer des drapeaux dans un traitement par lot.
Modification en masse les greffons peuvent appliquer des drapeaux automatiquement.
Drapeaux par chaîne extraits du format de fichier, voir Localization file formats.
Translation flags (currently only
read-onlyflag for bilingual source string or when monolingual template editing is turned off).É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).
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 :
rst-textTreat a text as an reStructuredText document, affects Traduction inchangée. Turns on erreur de syntaxe reStructuredText and reStructuredText incohérent.
bbcode-textTreat a text as an Bulletin Board Code (BBCode) document, affects 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.
terminologyUtilisé 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: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:FLAGSDéfinir les drapeaux pour personnaliser le comportement du contrôle de qualité ICU MessageFormat.
icu-tag-prefix:PREFIXDé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:SOURCEMarquez cette chaîne en tant que variante de la chaîne avec la source correspondante. Voir Variantes de chaînes.
regex:REGEXExpression rationnelle correspondant à la traduction, voir Expression rationnelle.
discard:NAMESupprime le drapeau défini à un niveau supérieur.
forbiddenIndique une traduction interdite dans un glossaire, voir Traductions interdites.
strict-samePermet au Traduction inchangée d’éviter l’utilisation des exceptions des mots pré-enregistrés.
strict-formatForcer les contrôles de format en utilisant format même pour les formes plurielles avec une seule valeur, voir Formatted strings.
check-glossaryActiver le contrôle de qualité Non conforme au glossaire.
angularjs-formatActiver le contrôle qualité Chaîne d’interpolation AngularJS.
c-formatActiver le contrôle qualité Format C.
c-sharp-formatActiver le contrôle qualité Format C#.
es-formatActiver le contrôle qualité Modèle de littéraux ECMAScript.
i18next-interpolationActiver le contrôle qualité Interpolation i18next.
icu-message-formatActiver le contrôle qualité ICU MessageFormat.
java-printf-formatActiver le contrôle qualité Format Java.
java-formatActiver le contrôle qualité MessageFormat Java.
javascript-formatActiver le contrôle qualité Format JavaScript.
lua-formatActiver le contrôle qualité Format Lua.
object-pascal-formatActiver le contrôle qualité Format Pascal objet.
percent-placeholdersActiver le contrôle qualité Balises de remplacement par caractères pour cent.
perl-brace-formatActiver le contrôle qualité Format Perl avec accolades.
perl-formatActiver le contrôle qualité Format Perl.
php-formatActiver le contrôle qualité Format PHP.
python-brace-formatActiver le contrôle qualité Format d’accolade Python.
python-formatActiver le contrôle qualité Format Python.
qt-formatActiver le contrôle qualité Format Qt.
qt-plural-formatActiver le contrôle qualité Forme plurielle Qt.
ruby-formatActiver le contrôle qualité Format Ruby.
scheme-formatActiver le contrôle qualité Format Scheme.
vue-formatActiver le contrôle qualité Formatage Vue I18n.
md-textTraiter 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-insensitiveAjuster 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-htmlActiver le contrôle qualité HTML non sûr.
urlLa chaîne doit être composée d’une URL seule. Activer le contrôle qualité URL.
ignore-all-checksIgnorer toutes les vérifications de qualité.
fluent-source-inner-htmlEnable the HTML interne de la source Fluent quality check.
fluent-source-syntaxEnable the Syntaxe Fluent source quality check.
icu-message-formatEnable the Syntaxe ICU MessageFormat quality check.
ignore-bbcodeIgnorer le contrôle qualité Balisage BBCode.
ignore-duplicateIgnorer le contrôle de qualité Répétition de mots.
ignore-check-glossaryIgnorer le contrôle de qualité Non conforme au glossaire.
ignore-double-spaceIgnorer le contrôle qualité Double espace.
ignore-fluent-partsIgnorer le contrôle de qualité Parties Fluent.
ignore-fluent-referencesIgnorer le contrôle de qualité Références Fluent.
ignore-fluent-target-inner-htmlIgnorer le contrôle de qualité HTML interne de la traduction Fluent.
ignore-fluent-target-syntaxSkip the Syntaxe de traduction Fluent quality check.
ignore-angularjs-formatSkip the Chaîne d’interpolation AngularJS quality check.
ignore-automattic-components-formatIgnorer le contrôle de qualité Formatage des composants Automattic.
ignore-c-formatSkip the Format C quality check.
ignore-c-sharp-formatIgnorer le contrôle qualité Format C#.
ignore-es-formatSkip the Modèle de littéraux ECMAScript quality check.
ignore-i18next-interpolationSkip the Interpolation i18next quality check.
ignore-icu-message-formatIgnorer le contrôle de qualité ICU MessageFormat.
ignore-java-printf-formatIgnorer le contrôle qualité Format Java.
ignore-java-formatIgnorer le contrôle de qualité MessageFormat Java.
ignore-javascript-formatIgnorer le contrôle qualité Format JavaScript.
ignore-lua-formatIgnorer le contrôle de qualité Format Lua.
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-brace-formatSkip the Format Perl avec accolades quality check.
ignore-perl-formatIgnorer le contrôle de qualité Format Perl.
ignore-php-formatSkip the Format PHP quality check.
ignore-python-brace-formatSkip the Format d’accolade Python quality check.
ignore-python-formatIgnorer le contrôle qualité Format Python.
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-formatIgnorer le contrôle de qualité Format Scheme.
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-rst-referencesSkip the reStructuredText incohérent quality check.
ignore-kashidaIgnorer le contrôle qualité Présence d’un caractère kashida.
ignore-md-linkSkip the Liens Markdown quality check.
ignore-md-reflinkIgnorer le contrôle de qualité Références Markdown.
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-ellipsisIgnorez le contrôle qualité Incohérence de points de suspension.
ignore-end-exclamationIgnorer le contrôle de qualité Incohérence de point d’exclamation.
ignore-end-stopSkip the Incohérence de point final quality check.
ignore-end-interrobangSkip the Incohérence de point exclarrogatif 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-countIgnorer le contrôle de qualité Incohérence dans les sauts de ligne.
ignore-pluralsSkip the Pluriels manquants quality check.
ignore-kabyle-charactersIgnorer le contrôle de qualité Caractères non standard en kabyle.
ignore-placeholdersSkip the Balises de remplacement quality check.
ignore-prohibited-initial-characterIgnorer le contrôle qualité Caractère interdit en première position.
ignore-punctuation-spacingIgnorer le contrôle qualité Espacement de ponctuation.
ignore-regexIgnorer le contrôle qualité Expression rationnelle.
ignore-rst-syntaxSkip the erreur de syntaxe reStructuredText quality check.
ignore-reusedSkip the Traduction réutilisée quality check.
ignore-same-pluralsIgnorer le contrôle de qualité Pluriel identique.
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-spaceIgnorer le contrôle qualité Espace à la fin.
ignore-sameIgnorer le contrôle de qualité Traduction inchangée.
ignore-safe-htmlIgnorer le contrôle de qualité HTML non sûr.
ignore-urlIgnorer le contrôle de qualité URL.
ignore-xml-tagsIgnorer le contrôle de qualité Balisage XML.
ignore-xml-invalidSkip the Syntaxe XML quality check.
ignore-zero-width-spaceIgnorer le contrôle qualité Espace sans chasse.
ignore-ellipsisIgnorer le contrôle qualité Points de suspension.
ignore-fluent-source-inner-htmlSkip the HTML interne de la source Fluent quality check.
ignore-fluent-source-syntaxIgnorer le contrôle de qualité Syntaxe Fluent source.
ignore-icu-message-formatIgnorer le contrôle de qualité Syntaxe ICU MessageFormat.
ignore-long-untranslatedIgnorer le contrôle qualité Ancienne chaîne non traduite.
ignore-multiple-failuresIgnorer le contrôle qualité Plusieurs vérifications en échec.
ignore-unnamed-formatIgnorer le contrôle qualité Multiples variables non nommées.
ignore-optional-pluralIgnorer 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 files, if location extension is.mdor.markdown.
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 :
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:5Définit la largeur maximale en pixels et, éventuellement, le nombre maximal de lignes (un retour automatique à la ligne est appliqué).
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¶
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.
Implémenter soit la méthode
check(si vous souhaitez gérer les pluriels dans votre code) ou la méthodecheck_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
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.
"""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