Ü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
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
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 mit Hilfe von Markierungen feinabstimmen. Die Markierungen geben den Übersetzern eine visuelle Rückmeldung und helfen ihnen, ihre Übersetzungen zu verbessern. Die Markierungen werden aus folgenden Quellen zusammengeführt:
Ausgangszeichenkette, siehe Zusätzliche Informationen über Ausgangszeichenketten.
Markierungen pro Zeichenkette, extrahiert aus dem Dateiformat, siehe Unterstützte Dateiformate.
Übersetzungsmarkierungen (aktuell nur
read-only
-Markierung für zweisprachige Ausgangszeichenketten).Dateiformatspezifische Markierungen.
Die Markierungen sind durch Komma getrennt; wenn sie Parameter haben, werden sie durch Doppelpunkt getrennt. 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\''
placeholders:r"^#*"
Um zu überprüfen, dass Übersetzer die Überschrift eines Markdown-Dokuments nicht ändern: Eine fehlgeschlagene Prüfung wird ausgelöst, wenn die Zeichenkette „### Index“ mit „# Indice“ übersetzt wird
placeholders:r"\]\([^h].*?\)"
Um sicherzustellen, dass interne Links nicht übersetzt werden (d. h. [test](../checks) wird nicht zu [test](../chequeos).
Hier finden Sie eine Liste der derzeit akzeptierten Markierungen:
rst-text
Behandelt einen Text als ein reStructuredText-Dokument, wirkt sich auf Unveränderte Übersetzung aus.
dos-eol
Verwendet DOS-Zeilenende-Markierungen anstelle von Unix-Markierungen (
\r\n
anstelle von\n
).read-only
Die Zeichenkette ist schreibgeschützt und sollte nicht in Weblate bearbeitet werden, siehe Schreibgeschützte Zeichenketten.
terminology
Verwendet im Glossar. Kopiert die Zeichenkette in alle Sprachen des Glossars, damit sie in allen Übersetzungen einheitlich verwendet werden kann. Auch nützlich in Kombination mit
read-only
, zum Beispiel in Produktnamen.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-text
Behandelt Text als XML-Dokument, betrifft XML-Syntax und XML-Auszeichnung.
font-family:NAME
Definiert die Schriftfamilie für Rendering-Prüfungen, siehe Schriftarten verwalten.
font-weight:WEIGHT
Definiert das Schriftgewicht für Rendering-Prüfungen, siehe Schriftarten verwalten.
font-size:SIZE
Definiert die Schriftgröße für Rendering-Prüfungen, siehe Schriftarten verwalten.
font-spacing:SPACING
Definiert die Buchstabenabstände für Rendering-Prüfungen, siehe Schriftarten verwalten.
icu-flags:FLAGS
Definiert Markierungen, um das Verhalten der Qualitätsprüfung ICU MessageFormat anzupassen.
icu-tag-prefix:PREFIX
Setzt 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:SOURCE
Markiert diese Zeichenkette als Variante der Zeichenkette mit gleicher Ausgangszeichenkette. Siehe Zeichenkette-Varianten.
regex:REGEX
Regulärer Ausdruck zum Abgleich mit der Übersetzung, siehe Regulärer Ausdruck.
forbidden
Zeigt eine verbotene Übersetzung in einem Glossar an, siehe Unzulässige Übersetzungen.
strict-same
Vermeidet „Unveränderte Übersetzung“, indem die Sperrliste für Wörter verwendet wird, siehe Unveränderte Übersetzung.
strict-format
Erzwingt für Formatprüfungen die Verwendung des Formats auch für Pluralformen mit einem einzigen Wert, siehe Formatierte Zeichenketten.
check-glossary
Aktiviert die Qualitätsprüfung Folgt nicht dem Glossar.
angularjs-format
Aktiviert die Qualitätsprüfung AngularJS-Interpolations-Zeichenkette.
c-format
Aktiviert die Qualitätsprüfung C-Format.
c-sharp-format
Aktiviert die Qualitätsprüfung C#-Format.
es-format
Aktiviert die Qualitätsprüfung ECMAScript-Buchstabenvorlagen.
i18next-interpolation
Aktiviert die Qualitätsprüfung i18next Interpolation.
icu-message-format
Aktiviert die Qualitätsprüfung ICU MessageFormat.
java-printf-format
Aktiviert die Qualitätsprüfung Java-Format.
java-format
Aktiviert die Qualitätsprüfung Java-MessageFormat.
javascript-format
Aktiviert die Qualitätsprüfung JavaScript-Format.
lua-format
Aktiviert die Qualitätsprüfung Lua-Format.
object-pascal-format
Aktiviert die Qualitätsprüfung Object Pascal-Format.
percent-placeholders
Aktiviert die Qualitätsprüfung Platzhalter in Prozent.
perl-brace-format
Aktiviert die Qualitätsprüfung Perl-Brace-Format.
perl-format
Aktiviert die Qualitätsprüfung Perl-Format.
php-format
Aktiviert die Qualitätsprüfung PHP-Format.
python-brace-format
Aktiviert die Qualitätsprüfung Python-Brace-Format.
python-format
Aktiviert die Qualitätsprüfung Python-Format.
qt-format
Aktiviert die Qualitätsprüfung Qt-Format.
qt-plural-format
Aktiviert die Qualitätsprüfung Qt-Plural-Format.
ruby-format
Aktiviert die Qualitätsprüfung Ruby-Format.
scheme-format
Aktiviert die Qualitätsprüfung Scheme-Format.
vue-format
Aktiviert die Qualitätsprüfung Vue I18n-Formatierung.
md-text
Behandelt Text als Markdown-Dokument und bietet Markdown-Syntax-Hervorhebung im Textbereich der Übersetzung. Ermöglicht die Qualitätsprüfungen Markdown-Links, Markdown-Referenzen und Markdown-Syntax.
case-insensitive
Passt das Prüfverhaltens an, so dass Groß-/Kleinschreibung nicht berücksichtigt wird. Betrifft derzeit nur die Qualitätsprüfung Platzhalter.
safe-html
Aktiviert die Qualitätsprüfung Unsicheres HTML.
url
Die Zeichenkette sollte nur aus einer URL bestehen. Aktiviert die Qualitätsprüfung URL.
ignore-all-checks
Ignoriert alle Qualitätsprüfungen.
ignore-bbcode
Überspringt die Qualitätsprüfung BBCode-Auszeichnung.
ignore-duplicate
Überspringt die Qualitätsprüfung Aufeinanderfolgende doppelte Wörter.
ignore-check-glossary
Überspringt die Qualitätsprüfung Folgt nicht dem Glossar.
ignore-double-space
Überspringt die Qualitätsprüfung Doppeltes Leerzeichen.
ignore-angularjs-format
Überspringt die Qualitätsprüfung AngularJS-Interpolations-Zeichenkette.
ignore-c-format
Überspringt die Qualitätsprüfung C-Format.
ignore-c-sharp-format
Überspringt die Qualitätsprüfung C#-Format.
ignore-es-format
Überspringt die Qualitätsprüfung ECMAScript-Buchstabenvorlagen.
ignore-i18next-interpolation
Überspringt die Qualitätsprüfung i18next Interpolation.
ignore-icu-message-format
Überspringt die Qualitätsprüfung ICU MessageFormat.
ignore-java-printf-format
Überspringt die Qualitätsprüfung Java-Format.
ignore-java-format
Überspringt die Qualitätsprüfung Java-MessageFormat.
ignore-javascript-format
Überspringt die Qualitätsprüfung JavaScript-Format.
ignore-lua-format
Überspringt die Qualitätsprüfung Lua-Format.
ignore-object-pascal-format
Überspringt die Qualitätsprüfung Object Pascal-Format.
ignore-percent-placeholders
Überspringt die Qualitätsprüfung Platzhalter in Prozent.
ignore-perl-brace-format
Überspringt die Qualitätsprüfung Perl-Brace-Format.
ignore-perl-format
Überspringt die Qualitätsprüfung Perl-Format.
ignore-php-format
Überspringt die Qualitätsprüfung PHP-Format.
ignore-python-brace-format
Überspringt die Qualitätsprüfung Python-Brace-Format.
ignore-python-format
Überspringt die Qualitätsprüfung Python-Format.
ignore-qt-format
Überspringt die Qualitätsprüfung Qt-Format.
ignore-qt-plural-format
Überspringt die Qualitätsprüfung Qt-Plural-Format.
ignore-ruby-format
Überspringt die Qualitätsprüfung Ruby-Format.
ignore-scheme-format
Überspringt die Qualitätsprüfung Scheme-Format.
ignore-vue-format
Überspringt die Qualitätsprüfung Vue I18n-Formatierung.
ignore-translated
Überspringt die Qualitätsprüfung Ist übersetzt worden.
ignore-inconsistent
Überspringt die Qualitätsprüfung Inkonsistent.
ignore-kashida
Überspringt die Qualitätsprüfung Kashida-Buchstabe verwendet.
ignore-md-link
Überspringt die Qualitätsprüfung Markdown-Links.
ignore-md-reflink
Überspringt die Qualitätsprüfung Markdown-Referenzen.
ignore-md-syntax
Überspringt die Qualitätsprüfung Markdown-Syntax.
ignore-max-length
Überspringt die Qualitätsprüfung Maximale Länge der Übersetzung.
ignore-max-size
Überspringt die Qualitätsprüfung Maximaler Umfang der Übersetzung.
ignore-escaped-newline
Überspringt die Qualitätsprüfung Unterschiedliche Menge \n.
ignore-end-colon
Überspringt die Qualitätsprüfung Nicht übereinstimmender Doppelpunkt.
ignore-end-ellipsis
Überspringt die Qualitätsprüfung Nicht übereinstimmende Auslassungspunkte.
ignore-end-exclamation
Überspringt die Qualitätsprüfung Nicht übereinstimmendes Ausrufezeichen.
ignore-end-stop
Überspringt die Qualitätsprüfung Nicht übereinstimmender Punkt.
ignore-end-question
Überspringt die Qualitätsprüfung Nicht übereinstimmendes Fragezeichen.
ignore-end-semicolon
Überspringt die Qualitätsprüfung Nicht übereinstimmendes Semikolon.
ignore-newline-count
Überspringt die Qualitätsprüfung Nicht übereinstimmende Zeilenumbrüche.
ignore-plurals
Überspringt die Qualitätsprüfung Fehlende Pluralformen.
ignore-placeholders
Überspringt die Qualitätsprüfung Platzhalter.
ignore-punctuation-spacing
Überspringt die Qualitätsprüfung Interpunktionszeichenabstand.
ignore-regex
Überspringt die Qualitätsprüfung Regulärer Ausdruck.
ignore-reused
Überspringt die Qualitätsprüfung Wiederverwendete Übersetzung.
ignore-same-plurals
Überspringt die Qualitätsprüfung Identische Pluralformen.
ignore-begin-newline
Überspringt die Qualitätsprüfung Zeilenumbruch am Anfang.
ignore-begin-space
Überspringt die Qualitätsprüfung Leerzeichen am Anfang.
ignore-end-newline
Überspringt die Qualitätsprüfung Zeilenumbruch am Ende.
ignore-end-space
Überspringt die Qualitätsprüfung Leerzeichen am Ende.
ignore-same
Überspringt die Qualitätsprüfung Unveränderte Übersetzung.
ignore-safe-html
Überspringt die Qualitätsprüfung Unsicheres HTML.
ignore-url
Überspringt die Qualitätsprüfung URL.
ignore-xml-tags
Überspringt die Qualitätsprüfung XML-Auszeichnung.
ignore-xml-invalid
Überspringt die Qualitätsprüfung XML-Syntax.
ignore-zero-width-space
Überspringt die Qualitätsprüfung Breitenloses Leerzeichen.
ignore-ellipsis
Überspringt die Qualitätsprüfung Auslassungspunkte.
ignore-icu-message-format-syntax
Überspringt die Qualitätsprüfung ICU MessageFormat-Syntax.
ignore-long-untranslated
Überspringt die Qualitätsprüfung Lange nicht übersetzt.
ignore-multiple-failures
Überspringt die Qualitätsprüfung Mehrfach fehlgeschlagene Überprüfungen.
ignore-unnamed-format
Überspringt die Qualitätsprüfung Mehrere unbenannte Variablen.
ignore-prohibited-initial-character
Überspringt die Qualitätsprüfung Unzulässiges Anfangszeichen.
ignore-optional-plural
Überspringt die Qualitätsprüfung Ohne Pluralformen.
Bemerkung
Im Allgemeinen heißt die Regel ignore-*
für jede Qualitätsprüfung, wobei ihr Bezeichner verwendet wird, sodass Sie dies auch für Ihre benutzerdefinierten Qualitätsprü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¶
Sie können eine Liste von Qualitätsprüfungen konfigurieren, die nicht ignoriert werden können, indem Sie Erzwungene Qualitätsprüfungen in Komponentenkonfiguration setzen. Jede aufgelistete Prüfung kann in der Bedienoberfläche nicht verworfen werden und jede Zeichenkette, die diese Prüfung nicht besteht, wird als Bearbeitungsbedürftig 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¶
Hinweis
In Weblate hochgeladene Schriften werden nur für die Maximaler Umfang der Übersetzung-Prüfung verwendet, sie haben keine Auswirkungen auf die Weblate-Bedienoberflä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 Werkzeug für die Weblate-Schriftartenverwaltung in Schriftarten unter dem Menü Verwalten Ihres Übersetzungsprojekts bietet eine Oberfläche 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-size:500
/max-size:300:5
Definiet die maximale Breite in Pixeln und optional die maximale Anzahl von Zeilen (Wortumbruch wird angewendet).
font-family:ubuntu
Definiert die zu verwendende Schriftartgruppe durch Angabe ihres Bezeichners.
font-size:22
Definiert die Schriftgröße in Pixeln.
Eigene Qualitätsprüfungen schreiben¶
Eine breite Palette von Qualitätsprüfungen ist integriert (siehe Qualitätsprüfungen), obwohl sie möglicherweise nicht alles abdecken, was Sie überprüfen möchten. 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
Ein paar Attribute festlegen.
Entweder die
check
- (wenn Sie in Ihrem Code mit Pluralformen umgehen möchten) odercheck_single
-Methode (die dies für Sie erledigt) implementieren.
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
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
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
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