Überprüfungen und Korrekturen#
Benutzerdefinierte automatische Korrekturen#
Sie können auch Ihre eigenen automatischen Korrekturen zusätzlich zu den Standardkorrekturen implementieren und sie in AUTOFIX_LIST aufnehmen.
Die automatischen Korrekturen sind leistungsstark, können aber auch Schaden anrichten; seien Sie vorsichtig, wenn Sie eine schreiben.
Zum Beispiel würde die folgende automatische Korrektur jedes Vorkommen der Zeichenfolge foo in einer Übersetzung durch bar ersetzen:
# 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
Um benutzerdefinierte Prüfungen zu installieren, geben Sie in AUTOFIX_LIST einen vollqualifizierten Pfad zu der Python-Klasse an, siehe Benutzerdefinierte Qualitätsprüfungen, Erweiterungen und automatische Korrekturen.
Anpassen des Verhaltens mit Markierungen#
Sie können das Verhalten von Weblate durch die Verwendung von Markierungen feinabstimmen. Dies kann auf der Ebene der Ausgangszeichenkette geschehen (siehe Zusätzliche Informationen über Ausgangszeichenketten), oder in der Komponentenkonfiguration (Übersetzungsmarkierungen). Einige Dateiformate erlauben es auch, Markierungen direkt im Format anzugeben (siehe Unterstützte Dateiformate).
Die Markierungen sind durch Kommas getrennt, die Parameter durch Doppelpunkte. Sie können Anführungszeichen verwenden, um Leerzeichen oder Sonderzeichen in die Zeichenkette aufzunehmen. Zum Beispiel:
placeholders:"special:value":"other value", regex:.*
Es werden sowohl einfache als auch doppelte Anführungszeichen akzeptiert, Sonderzeichen werden mit Backslash maskiert:
placeholders:"quoted \"string\"":'single \'quoted\''
Hier finden Sie eine Liste der derzeit akzeptierten Markierungen:
rst-textBehandelt einen Text als ein reStructuredText-Dokument, wirkt sich auf Unveränderte Übersetzung aus.
dos-eolVerwendet DOS-Zeilenende-Markierungen anstelle von Unix-Markierungen (
\r\nanstelle von\n).read-onlyDie Zeichenkette ist schreibgeschützt und sollte in Weblate nicht bearbeitet werden, siehe Schreibgeschützte Zeichenketten.
- priority:N
Priorität der Zeichenkette. Zeichenketten mit höherer Priorität werden zuerst zur Übersetzung angeboten. Die Standardpriorität ist 100. Je höher die Priorität einer Zeichenkette ist, desto früher wird sie zur Übersetzung angeboten.
- max-length:N
Begrenzt die maximale Länge für eine Zeichenkette auf N Zeichen, siehe Maximale Länge der Übersetzung.
xml-textBehandelt Text als XML-Dokument, betrifft XML-Syntax und XML-Auszeichnung.
- font-family:NAME
Definieren Sie die Schriftfamilie für Rendering-Prüfungen, siehe Schriftarten verwalten.
- font-weight:WEIGHT
Definieren Sie das Schriftgewicht für Rendering-Prüfungen, siehe Schriftarten verwalten.
font-size:SIZEDefinieren Sie die Schriftgröße für Rendering-Prüfungen, siehe Schriftarten verwalten.
font-spacing:SPACINGDefinieren Sie die Buchstabenabstände für Rendering-Prüfungen, siehe Schriftarten verwalten.
icu-flags:FLAGSDefinieren Sie Markierungen, um das Verhalten der Qualitätsprüfung ICU MessageFormat anzupassen.
icu-tag-prefix:PREFIXSetzen Sie ein erforderliches Präfix für XML-Tags für die Qualitätsprüfung ICU MessageFormat.
placeholders:NAME:NAME2:...Platzhalter-Zeichenketten werden in der Übersetzung erwartet, siehe Platzhalter.
replacements:FROM:TO:FROM2:TO2...Ersetzungen, die bei der Überprüfung der resultierenden Textparameter durchgeführt werden sollen (zum Beispiel in Maximaler Umfang der Übersetzung oder Maximale Länge der Übersetzung). Der typische Anwendungsfall hierfür ist die Erweiterung von Platzhaltern, um sicherzustellen, dass der Text auch bei langen Werten passt, zum Beispiel:
replacements:%s:"John Doe".variants:SOURCEMarkiert diese Zeichenkette als Variante der Zeichenkette mit gleicher Ausgangszeichenkette. Siehe Zeichenkette-Varianten.
regex:REGEXRegulärer Ausdruck zum Abgleich mit der Übersetzung, siehe Regulärer Ausdruck.
forbiddenZeigt eine verbotene Übersetzung in einem Glossar an, siehe Unzulässige Übersetzungen.
strict-sameUnveränderte Übersetzung“ vermeiden, indem man die eingebaute schwarze Liste der Wörter verwendet, siehe Unveränderte Übersetzung.
check-glossaryAktiviere Qualitätsprüfung Folgt nicht dem Glossar.
angularjs-formatAktiviere Qualitätsprüfung AngularJS-Interpolations-Zeichenkette.
c-formatAktiviere Qualitätsprüfung C-Format.
c-sharp-formatAktiviere Qualitätsprüfung C#-Format.
es-formatAktiviere Qualitätsprüfung ECMAScript-Buchstabenvorlagen.
i18next-interpolationAktiviere Qualitätsprüfung i18next Interpolation.
icu-message-formatAktiviere Qualitätsprüfung ICU MessageFormat.
java-printf-formatAktiviere Qualitätsprüfung Java-Format.
java-formatAktiviere Qualitätsprüfung Java-MessageFormat.
javascript-formatAktiviere Qualitätsprüfung JavaScript-Format.
lua-formatAktiviere Qualitätsprüfung Lua-Format.
object-pascal-formatAktiviere Qualitätsprüfung Object Pascal-Format.
percent-placeholdersAktiviere Qualitätsprüfung Platzhalter in Prozent.
perl-formatAktiviere Qualitätsprüfung Perl-Format.
php-formatAktiviere Qualitätsprüfung PHP-Format.
python-brace-formatAktiviere Qualitätsprüfung Python-Brace-Format.
python-formatAktiviere Qualitätsprüfung Python-Format.
qt-formatAktiviere Qualitätsprüfung Qt-Format.
qt-plural-formatAktiviere Qualitätsprüfung Qt-Plural-Format.
ruby-formatAktiviere Qualitätsprüfung Ruby-Format.
scheme-formatAktiviere Qualitätsprüfung Scheme-Format.
vue-formatAktiviere Qualitätsprüfung Vue I18n-Formatierung.
md-textText wie ein Markdown-Dokument behandeln. Aktivieren Sie die Qualitätsprüfungen Markdown-Links, Markdown-Referenzen, und Markdown-Syntax.
case-insensitiveAnpassung des Prüfverhaltens, so dass Groß- und Kleinschreibung nicht berücksichtigt werden. Betrifft derzeit nur die Qualitätsprüfung Platzhalter.
safe-htmlAktiviere Qualitätsprüfung Unsicheres HTML.
urlDie Zeichenkette sollte nur aus einer URL bestehen. Aktivieren Sie die Qualitätsprüfung URL.
ignore-all-checksIgnoriere alle Qualitätsprüfungen.
ignore-bbcodeÜberspringe Qualitätsprüfung BBCode-Markup.
ignore-duplicateÜberspringe Qualitätsprüfung Aufeinanderfolgende doppelte Wörter.
ignore-check-glossaryÜberspringe Qualitätsprüfung Folgt nicht dem Glossar.
ignore-double-spaceÜberspringe Qualitätsprüfung Doppeltes Leerzeichen.
ignore-angularjs-formatÜberspringe Qualitätsprüfung AngularJS-Interpolations-Zeichenkette.
ignore-c-formatÜberspringe Qualitätsprüfung C-Format.
ignore-c-sharp-formatÜberspringe Qualitätsprüfung C#-Format.
ignore-es-formatÜberspringe Qualitätsprüfung ECMAScript-Buchstabenvorlagen.
ignore-i18next-interpolationÜberspringe Qualitätsprüfung i18next Interpolation.
ignore-icu-message-formatÜberspringe Qualitätsprüfung ICU MessageFormat.
ignore-java-formatÜberspringe Qualitätsprüfung Java-MessageFormat.
ignore-java-printf-formatÜberspringe Qualitätsprüfung Java-Format.
ignore-javascript-formatÜberspringe Qualitätsprüfung JavaScript-Format.
ignore-lua-formatÜberspringe Qualitätsprüfung Lua-Format.
ignore-object-pascal-formatÜberspringe Qualitätsprüfung Object Pascal-Format.
ignore-percent-placeholdersÜberspringe Qualitätsprüfung Platzhalter in Prozent.
ignore-perl-formatÜberspringe Qualitätsprüfung Perl-Format.
ignore-php-formatÜberspringe Qualitätsprüfung PHP-Format.
ignore-python-brace-formatÜberspringe Qualitätsprüfung Python-Brace-Format.
ignore-python-formatÜberspringe Qualitätsprüfung Python-Format.
ignore-qt-formatÜberspringe Qualitätsprüfung Qt-Format.
ignore-qt-plural-formatÜberspringe Qualitätsprüfung Qt-Plural-Format.
ignore-ruby-formatÜberspringe Qualitätsprüfung Ruby-Format.
ignore-scheme-formatÜberspringe Qualitätsprüfung Scheme-Format.
ignore-vue-formatÜberspringe Qualitätsprüfung Vue I18n-Formatierung.
ignore-translatedÜberspringe Qualitätsprüfung Ist übersetzt worden.
ignore-inconsistentÜberspringe Qualitätsprüfung Inkonsistent.
ignore-kashidaÜberspringe Qualitätsprüfung Kashida-Buchstabe verwendet.
ignore-md-linkÜberspringe Qualitätsprüfung Markdown-Links.
ignore-md-reflinkÜberspringe Qualitätsprüfung Markdown-Referenzen.
ignore-md-syntaxÜberspringe Qualitätsprüfung Markdown-Syntax.
ignore-max-lengthÜberspringe Qualitätsprüfung Maximale Länge der Übersetzung.
ignore-max-sizeÜberspringe Qualitätsprüfung Maximaler Umfang der Übersetzung.
ignore-escaped-newlineÜberspringe Qualitätsprüfung Unterschiedliche Menge \n.
ignore-end-colonÜberspringe Qualitätsprüfung Nicht übereinstimmender Doppelpunkt.
ignore-end-ellipsisÜberspringe Qualitätsprüfung Nicht übereinstimmende Auslassungspunkte.
ignore-end-exclamationÜberspringe Qualitätsprüfung Nicht übereinstimmendes Ausrufezeichen.
ignore-end-stopÜberspringe Qualitätsprüfung Nicht übereinstimmender Punkt.
ignore-end-questionÜberspringe Qualitätsprüfung Nicht übereinstimmendes Fragezeichen.
ignore-end-semicolonÜberspringe Qualitätsprüfung Nicht übereinstimmendes Semikolon.
ignore-newline-countÜberspringe Qualitätsprüfung Nicht übereinstimmende Zeilenumbrüche.
ignore-pluralsÜberspringe Qualitätsprüfung Fehlende Pluralformen.
ignore-placeholdersÜberspringe Qualitätsprüfung Platzhalter.
ignore-punctuation-spacingÜberspringe Qualitätsprüfung Satzzeichenabstand.
ignore-regexÜberspringe Qualitätsprüfung Regulärer Ausdruck.
ignore-same-pluralsÜberspringe Qualitätsprüfung Identische Pluralformen.
ignore-begin-newlineÜberspringe Qualitätsprüfung Zeilenumbruch am Anfang.
ignore-begin-spaceÜberspringe Qualitätsprüfung Leerzeichen am Anfang.
ignore-end-newlineÜberspringe Qualitätsprüfung Zeilenumbruch am Ende.
ignore-end-spaceÜberspringe Qualitätsprüfung Leerzeichen am Ende.
ignore-sameÜberspringe Qualitätsprüfung Unveränderte Übersetzung.
ignore-safe-htmlÜberspringe Qualitätsprüfung Unsicheres HTML.
ignore-urlÜberspringe Qualitätsprüfung URL.
ignore-xml-tagsÜberspringe Qualitätsprüfung XML-Auszeichnung.
ignore-xml-invalidÜberspringe Qualitätsprüfung XML-Syntax.
ignore-zero-width-spaceÜberspringe Qualitätsprüfung Leerzeichen ohne Breite.
ignore-ellipsisÜberspringe Qualitätsprüfung Auslassungspunkte.
ignore-icu-message-format-syntaxÜberspringe Qualitätsprüfung ICU MessageFormat-Syntax.
ignore-long-untranslatedÜberspringe Qualitätsprüfung Lange nicht übersetzt.
ignore-multiple-failuresÜberspringe Qualitätsprüfung Mehrfach fehlgeschlagene Überpüfungen.
ignore-unnamed-formatÜberspringe Qualitätsprüfung Mehrere unbenannte Variablen.
ignore-optional-pluralÜberspringe Qualitätsprüfung Ohne Pluralformen.
Bemerkung
Im Allgemeinen heißt die Regel ignore-* für jede Prüfung, wobei ihr Bezeichner verwendet wird, so dass Sie dies auch für Ihre benutzerdefinierten Prüfungen verwenden können.
Diese Markierungen werden sowohl in den Komponentenkonfiguration-Einstellungen, in den Einstellungen für die Ausgangszeichenkette als auch in der Übersetzungsdatei selbst (zum Beispiel in GNU gettext) verstanden.
Qualitätsprüfungen erzwingen#
Neu in Version 3.11.
Sie können eine Liste von Prüfungen konfigurieren, die nicht ignoriert werden können, indem Sie Erzwungene Qualitätsprüfungen in Komponentenkonfiguration setzen. Jede aufgelistete Prüfung kann in der Benutzeroberfläche nicht abgelehnt werden und jede Zeichenkette, die diese Prüfung nicht besteht, wird als Bearbeitung erforderlich markiert (siehe Übersetzungsstatus).
Bemerkung
Das Einschalten der Qualitätsprüfung-Erzwingung aktiviert diese nicht automatisch. Die Prüfung kann durch Hinzufügen der entsprechenden Markierung zu den Zeichenketten- oder Komponenten-Markierungen aktiviert werden.
Schriftarten verwalten#
Neu in Version 3.7.
Hinweis
In Weblate hochgeladene Schriften werden nur für die Maximaler Umfang der Übersetzung-Prüfung verwendet, sie haben keine Auswirkungen auf die Weblate-Benutzeroberfläche.
Die Qualitätsprüfung Maximaler Umfang der Übersetzung, die zur Berechnung der Größe des gerenderten Textes verwendet wird, benötigt eine Schriftart, die in Weblate geladen und mit einer Übersetzungsmarkierung ausgewählt wurde (siehe Anpassen des Verhaltens mit Markierungen).
Das Weblate-Schriftarten-Management-Tool in Schriftarten unter dem Menü Verwalten Ihres Übersetzungsprojekts bietet eine Schnittstelle zum Hochladen und Verwalten von Schriftarten. Sie können TrueType- oder OpenType-Schriften hochladen, Font-Gruppen einrichten und diese bei der Prüfung verwenden.
Die Schriftartgruppen ermöglichen es Ihnen, verschiedene Schriftarten für verschiedene Sprachen zu definieren, was normalerweise für nicht-lateinische Sprachen erforderlich ist:
Die Schriftartgruppen werden durch einen Namen identifiziert, der keine Leer- oder Sonderzeichen enthalten darf, damit er in der Prüfdefinition leicht verwendet werden kann:
Schriftfamilie und -stil werden nach dem Hochladen automatisch erkannt:
In Weblate können Sie eine Reihe von Schriftarten laden:
Um die Schriftarten für die Überprüfung der Zeichenkettenlänge zu verwenden, übergeben Sie ihr die entsprechenden Markierungen (siehe Anpassen des Verhaltens mit Markierungen). Sie werden wahrscheinlich die folgenden benötigen:
max-length:NLegt die maximale Breite in Pixeln fest.
font-weight:WEIGHTDefiniert die zu verwendende Schriftartgruppe durch Angabe ihres Bezeichners.
max-length:NDefinition der Schriftgröße in Pixeln.
Eigene Qualitätsprüfungen schreiben#
Eine breite Palette von Qualitätsprüfungen ist eingebaut (siehe Qualitätsprüfungen), obwohl sie möglicherweise nicht alles abdecken, was Sie überprüfen wollen. Die Liste der durchgeführten Prüfungen kann mit CHECK_LIST angepasst werden, und Sie können auch eigene Prüfungen hinzufügen.
Unterklasse von weblate.checks.Check erstellen
Legen Sie ein paar Attribute fest.
Implementieren Sie entweder die Methode
check(wenn Sie in Ihrem Code mit Pluralen umgehen wollen) oder die Methodecheck_single(die dies für Sie erledigt).
Einige Beispiele:
Um benutzerdefinierte Prüfungen zu installieren, geben Sie in CHECK_LIST einen vollqualifizierten Pfad zur Python-Klasse an, siehe Benutzerdefinierte Qualitätsprüfungen, Erweiterungen und automatische Korrekturen.
Prüfen, ob der Übersetzungstext „foo“ nicht enthält#
Es handelt sich um eine recht einfache Prüfung, bei der lediglich überprüft wird, ob in der Übersetzung die Zeichenfolge „foo“ fehlt.
# 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
Prüfen, ob sich die Pluralformen des tschechischen Übersetzungstextes unterscheiden#
Prüfen Sie anhand der Sprachinfo, ob die beiden Pluralformen im Tschechischen nicht gleich sind.
# 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