Ü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:

from weblate.trans.autofixes.base import AutoFix


class ReplaceFooWithBar(AutoFix):
    """Replace foo with bar."""

    # Might be localized using gettext_lazy
    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, automatische Vorschläge und automatische Korrekturen.

Verhalten mit Markierungen anpassen

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:

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).

Die auf einer höhereren Ebene definierten Markierungen können mit der Syntax discard:NAME verworfen werden. Wenn eine Komponente beispielsweise auf safe-html konfiguriert ist, können Sie discard:safe-html zu den Markierungen der Zeichenketten hinzufügen, um sie für diese spezielle Zeichenkette zu überspringen.

Hier finden Sie eine Liste der derzeit akzeptierten Markierungen:

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.

discard:NAME

Verwirft die auf einer höheren Ebene definierte Markierung.

forbidden

Verweist auf eine unzulässige Übersetzung in einem Glossar, siehe Unzulässige Übersetzungen.

strict-same

Vermeidet, dass Unveränderte Übersetzung die integrierte Wörter-Ausnahmeliste verwendet.

strict-format

Erzwingt für Formatprüfungen die Verwendung des Formats auch für Pluralformen mit einem einzigen Wert, siehe Formatierte Zeichenketten.

case-insensitive

Passt das Prüfverhaltens an, so dass Groß-/Kleinschreibung nicht berücksichtigt wird. Betrifft derzeit nur die Qualitätsprüfung Platzhalter.

bbcode-text

Behandelt einen Text als Bulletin-Board-Code-Dokument (BBCode), betrifft Unveränderte Übersetzung. Aktiviert die Qualitätsprüfung BBCode-Auszeichnung.

check-glossary

Aktiviert die Qualitätsprüfung Folgt nicht dem Glossar.

fluent-parts

Aktiviert die Qualitätsprüfung Fluent-Teile.

fluent-references

Aktiviert die Qualitätsprüfung Fluent-Referenzen.

fluent-target-inner-html

Aktiviert die Qualitätsprüfung Inneres HTML der Fluent-Übersetzung.

fluent-target-syntax

Aktiviert die Qualitätsprüfung Fluent-Übersetzungssyntax.

angularjs-format

Aktiviert die Qualitätsprüfung AngularJS-Interpolations-Zeichenkette.

automattic-components-format

Aktiviert die Qualitätsprüfung Automattic-Komponenten-Formatierung.

c-format

Aktiviert die Qualitätsprüfung C-Format.

c-sharp-format

Aktiviert die Qualitätsprüfung C#-Format.

csharp-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üfungen ICU MessageFormat und ICU-MessageFormat-Syntax.

java-printf-format

Aktiviert die Qualitätsprüfung Java-Format.

java-format

Aktiviert die Qualitätsprüfung Java-MessageFormat.

auto-java-messageformat

Treat a text as conditional Java MessageFormat, enabling Java-MessageFormat only when the source contains Java MessageFormat placeholders. Enables the Java-MessageFormat quality check.

javascript-format

Aktiviert die Qualitätsprüfung JavaScript-Format.

laravel-format

Aktiviert die Qualitätsprüfung Laravel-Format.

lua-format

Aktiviert die Qualitätsprüfung Lua-Format.

object-pascal-format

Aktiviert die Qualitätsprüfung Object-Pascal-Format.

objc-format

Aktiviert die Qualitätsprüfung Objective-C-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.

rst-text

Behandelt einen Text als reStructuredText-Dokument, betrifft Unveränderte Übersetzung. Aktiviert die Qualitätsprüfungen Inkonsistenter reStructuredText und reStructuredText-Syntaxfehler.

md-text

Behandelt einen Text als Markdown-Dokument und bietet Markdown-Syntax-Hervorhebung im Textbereich der Übersetzung. Aktivert die Qualitätsprüfungen Markdown-Links, Markdown-Referenzen und Markdown-Syntax.

max-length

Aktiviert die Qualitätsprüfung Maximale Länge der Übersetzung.

max-size

Aktiviert die Qualitätsprüfung Maximaler Umfang der Übersetzung.

placeholders

Aktiviert die Qualitätsprüfung Platzhalter.

regex

Aktiviert die Qualitätsprüfung Regulärer Ausdruck.

safe-html

Aktiviert die Qualitätsprüfung Unsicheres HTML.

auto-safe-html

Treat a text as conditional HTML, enabling Unsicheres HTML only for plain text or source strings that contain standard HTML markup or valid custom elements. This is useful for extended Markdown variants such as MDX, where angle-bracket syntax may not be HTML. Enables the Unsicheres HTML quality check.

url

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

fluent-source-inner-html

Aktiviert die Qualitätsprüfung Inneres HTML der Fluent-Quelle.

fluent-source-syntax

Aktiviert die Qualitätsprüfung Fluent-Quellsyntax.

ignore-all-checks

Ignoriert alle Qualitätsprüfungen.

ignore-bbcode

Überspringt die Qualitätsprüfung BBCode-Auszeichnung.

ignore-xml-chars-around-tags

Überspringt die Qualitätsprüfung XML-Tags umgebende Zeichen.

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-fluent-parts

Überspringt die Qualitätsprüfung Fluent-Teile.

ignore-fluent-references

Überspringt die Qualitätsprüfung Fluent-Referenzen.

ignore-fluent-target-inner-html

Überspringt die Qualitätsprüfung Inneres HTML der Fluent-Übersetzung.

ignore-fluent-target-syntax

Überspringt die Qualitätsprüfung Fluent-Übersetzungssyntax.

ignore-angularjs-format

Überspringt die Qualitätsprüfung AngularJS-Interpolations-Zeichenkette.

ignore-automattic-components-format

Überspringt die Qualitätsprüfung Automattic-Komponenten-Formatierung.

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-laravel-format

Überspringt die Qualitätsprüfung Laravel-Format.

ignore-lua-format

Überspringt die Qualitätsprüfung Lua-Format.

ignore-object-pascal-format

Überspringt die Qualitätsprüfung Object-Pascal-Format.

ignore-objc-format

Überspringt die Qualitätsprüfung Objective-C-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-rst-references

Überspringt die Qualitätsprüfung Inkonsistenter reStructuredText.

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-interrobang

Überspringt die Qualitätsprüfung Nicht übereinstimmendes Fragerufzeichen.

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-multiple-capital

Überspringt die Qualitätsprüfung Mehrere Großbuchstaben.

ignore-kabyle-characters

Überspringt die Qualitätsprüfung Nicht standardisierte Zeichen in Kabyle.

ignore-placeholders

Überspringt die Qualitätsprüfung Platzhalter.

ignore-prohibited-initial-character

Überspringt die Qualitätsprüfung Unzulässiges Anfangszeichen.

ignore-punctuation-spacing

Überspringt die Qualitätsprüfung Interpunktionszeichenabstand.

ignore-regex

Überspringt die Qualitätsprüfung Regulärer Ausdruck.

ignore-rst-syntax

Überspringt die Qualitätsprüfung reStructuredText-Syntaxfehler.

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-fluent-source-inner-html

Überspringt die Qualitätsprüfung Inneres HTML der Fluent-Quelle.

ignore-fluent-source-syntax

Überspringt die Qualitätsprüfung Fluent-Quellsyntax.

ignore-icu-message-format

Ü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-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.

Speicherortbezogene Markierungen

Einige Markierungen werden Zeichenketten standardmäßig basierend auf ihrem Speicherort hinzugefügt. Das bedeutet, dass bestimmte Qualitätsprüfungen automatisch aktiviert werden, je nachdem, wo die Zeichenkette verwendet wird.

  • rst-text: Diese Markierung wird automatisch zu Zeichenketten in reStructuredText-Dateien hinzugefügt, wenn die Dateiendung .rst lautet.

  • md-text: Diese Markierung wird automatisch zu Zeichenketten in Markdown- und MDX-Dateien hinzugefügt, wenn die Dateiendung .md, .markdown oder .mdx lautet.

Qualitätsprüfungen erzwingen

Die erzwungenen Prüfungen können nicht verworfen werden und kennzeichnen Zeichenketten als Bearbeitungsbedürftig (siehe Übersetzungsstatus). Dadurch wird verhindert, dass Übersetzer solche Prüfungen ausblenden können.

Hinweis

Das Einschalten der Qualitätsprüfung-Erzwingung aktiviert diese nicht automatisch. Einige Prüfungen müssen durch Hinzufügen der entsprechenden Markierung zu den Zeichenketten- oder Komponenten-Markierungen aktiviert werden.

Dies eignet sich am besten für Prüfungen, die beim Anwenden schwerwiegende Probleme verursachen können, wie z. B. bei Prüfungen für Formatierte Zeichenketten. Das Verwenden bei Stilprüfungen wie Unveränderte Übersetzung wird nicht empfohlen, da ein Verwerfen dort manchmal sinnvoll ist.

Die Filter für die Übersetzungsqualität können dann verwendet werden, um bearbeitungsbedürftige Zeichenketten beim Commit an die Versionsverwaltung auszuschließen.

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 Verhalten mit Markierungen anpassen).

Das Werkzeug für die Weblate-Schriftartenverwaltung in Schriftarten unter dem Menü Operationen 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:

../_images/font-group-edit.webp

Die Schriftartgruppen 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.webp

Font-family and style are automatically recognized after uploading them:

../_images/font-edit.webp

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

../_images/font-list.webp

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

max-size:500 / max-size:300:5

Definiert 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.

  1. Unterklasse von weblate.checks.Check erstellen

  2. Ein paar Attribute festlegen.

  3. Entweder die check- (wenn Sie in Ihrem Code mit Pluralformen umgehen möchten) oder check_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, automatische Vorschläge und automatische Korrekturen.

Prüfen, ob der Übersetzungstext „foo“ 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.

"""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
    # Might be localized using gettext_lazy
    name = "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.

"""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
    # Might be localized using gettext_lazy
    name = "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