Ü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 der :Einstellung:`AUTOFIX_LIST` einen vollqualifizierten Pfad zu der Python-Klasse an, siehe Benutzerdefinierte Qualitätsprüfungen, Erweiterungen und automatische Korrekturen.

Anpassen des Verhaltens mit Flaggen

Sie können das Verhalten von Weblate durch die Verwendung von Flags feinabstimmen. Dies kann auf der Ebene des Quelltextes geschehen (siehe Additional info on source strings) oder in der Komponente (Übersetzungsmarkierungen). Einige Dateiformate erlauben es auch, Flags direkt im Format anzugeben (siehe Supported file formats).

Die Flags sind durch Kommas getrennt, die Parameter durch Doppelpunkte. Sie können Anführungszeichen verwenden, um Leerzeichen oder Sonderzeichen in die Zeichenfolge 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 Flaggen:

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

Der String ist schreibgeschützt und sollte in Weblate nicht bearbeitet werden, siehe Schreibgeschützte Zeichenketten.

priority:N

Priorität der Zeichenfolge. Zeichenketten mit höherer Priorität werden zuerst zur Übersetzung angeboten. Die Standardpriorität ist 100. Je höher die Priorität einer Zeichenfolge 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

Definieren Sie die Schriftart für Rendering Checks, siehe Schriftarten verwalten.

font-weight:WEIGHT

Definieren Sie font-weight für Rendering Checks, siehe Schriftarten verwalten.

font-size:SIZE

Definieren Sie die Schriftgröße für Rendering Checks, siehe Schriftarten verwalten.

font-spacing:SPACING

Definieren Sie die Buchstabenabstände für Rendering Checks, siehe Schriftarten verwalten.

icu-flags:FLAGS

Definieren Sie Markierungen, um das Verhalten der Qualitätsprüfung ICU MessageFormat anzupassen.

icu-tag-prefix:PREFIX

Setzen Sie ein erforderliches Präfix für XML-Tags für die Qualitätsprüfung ICU MessageFormat.

placeholders:NAME:NAME2:...

Platzhalter-Strings 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".

icu-flags:FLAGS

Markiert diese Zeichenkette als eine Variante von Zeichenkette mit passender Quelle. Siehe 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 Forbidden translations.

strict-same

Unveränderte Übersetzung“ vermeiden, indem man die eingebaute schwarze Liste der Wörter verwendet, siehe Unveränderte Übersetzung.

check-glossary

Aktiviere Qualitätsprüfung Folgt nicht dem Glossar.

angularjs-format

Aktiviere Qualitätsprüfung AngularJS-Interpolations-Zeichenkette.

c-format

Aktiviere Qualitätsprüfung C-Format.

c-sharp-format

Aktiviere Qualitätsprüfung C#-Format.

es-format

Aktiviere Qualitätsprüfung ECMAScript-Buchstabenvorlagen.

i18next-interpolation

Aktiviere Qualitätsprüfung i18next Interpolation.

icu-message-format

Aktiviere Qualitätsprüfung ICU MessageFormat.

java-printf-format

Aktiviere Qualitätsprüfung Java-Format.

java-format

Aktiviere Qualitätsprüfung Java-MessageFormat.

javascript-format

Aktiviere Qualitätsprüfung JavaScript-Format.

lua-format

Aktiviere Qualitätsprüfung Lua-Format.

object-pascal-format

Aktiviere Qualitätsprüfung Object Pascal-Format.

percent-placeholders

Aktiviere Qualitätsprüfung Platzhalter in Prozent.

perl-format

Aktiviere Qualitätsprüfung Perl-Format.

php-format

Aktiviere Qualitätsprüfung PHP-Format.

python-brace-format

Aktiviere Qualitätsprüfung Python-Brace-Format.

python-format

Aktiviere Qualitätsprüfung Python-Format.

qt-format

Aktiviere Qualitätsprüfung Qt-Format.

qt-plural-format

Aktiviere Qualitätsprüfung Qt-Plural-Format.

ruby-format

Aktiviere Qualitätsprüfung Ruby-Format.

scheme-format

Aktiviere Qualitätsprüfung Scheme-Format.

vue-format

Aktiviere Qualitätsprüfung Vue I18n-Formatierung.

md-text

Text wie ein Markdown-Dokument behandeln. Aktivieren Sie die Qualitätsprüfungen Markdown-Links, Markdown-Referenzen, und Markdown-Syntax.

case-insensitive

Anpassung des Prüfverhaltens, so dass Groß- und Kleinschreibung nicht berücksichtigt werden. Betrifft derzeit nur die Qualitätsprüfung Platzhalter.

safe-html

Aktiviere Qualitätsprüfung Unsicheres HTML.

url

Die Zeichenkette sollte nur aus einer URL bestehen. Aktivieren Sie die Qualitätsprüfung URL.

ignore-all-checks

Ignoriere 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 Flags werden sowohl in den Component configuration-Einstellungen, in den Einstellungen für die Quelltexte als auch in der Übersetzungsdatei selbst (zum Beispiel in GNU gettext) verstanden.

Durchsetzung der Kontrollen

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 Component configuration setzen. Jede aufgelistete Prüfung kann in der Benutzeroberfläche nicht abgewiesen werden und jede Zeichenkette, die diese Prüfung nicht besteht, wird als Needs editing markiert (siehe Translation states).

Bemerkung

Das Einschalten der Check-Erzwingung aktiviert diese nicht automatisch. Die Prüfung kann durch Hinzufügen des entsprechenden Flags zu String- oder Komponenten-Flags 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.

Der Maximaler Umfang der Übersetzung-Check, der zur Berechnung der Größe des gerenderten Textes verwendet wird, benötigt eine Schriftart, die in Weblate geladen und mit einem Übersetzungsflag ausgewählt wurde (siehe Anpassen des Verhaltens mit Flaggen).

Das Weblate-Schriftarten-Management-Tool in Fonts unter dem Menü Manage 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 Schriftgruppen ermöglichen es Ihnen, verschiedene Schriftarten für verschiedene Sprachen zu definieren, was in der Regel für nicht-lateinische Sprachen erforderlich ist:

../_images/font-group-edit.png

Die Font-Gruppen werden durch einen Namen identifiziert, der keine Leer- oder Sonderzeichen enthalten darf, damit er in der Prüfdefinition leicht verwendet werden kann:

../_images/font-group-list.png

Schriftart und -stil werden nach dem Hochladen automatisch erkannt:

../_images/font-edit.png

In Weblate können Sie eine Reihe von Schriftarten laden:

../_images/font-list.png

Um die Schriftarten für die Überprüfung der Zeichenkettenlänge zu verwenden, übergeben Sie ihr die entsprechenden Flags (siehe Anpassen des Verhaltens mit Flaggen). Sie werden wahrscheinlich die folgenden benötigen:

max-length:N

Legt die maximale Breite in Pixeln fest.

font-weight:WEIGHT

Definiert die zu verwendende Schriftgruppe durch Angabe ihres Bezeichners.

max-length:N

Definition der Schriftgröße in Pixeln.

Ausstellen eigener Schecks

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.

  1. Unterklasse der weblate.checks.Check

  2. Legen Sie ein paar Attribute fest.

  3. Implementieren Sie entweder die Methode check (wenn Sie in Ihrem Code mit Pluralen umgehen wollen) oder die Methode check_single (die dies für Sie erledigt).

Einige Beispiele:

Um benutzerdefinierte Prüfungen zu installieren, geben Sie in der :Einstellung:`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