Kontroller och korrigeringar

Anpassade automatiska korrigeringar

Du kan också implementera egna automatiska korrigeringar utöver standardkorrigeringarna och inkludera dem i AUTOFIX_LIST.

De automatiska korrigeringarna är kraftfulla, men kan också orsaka skador. Var försiktig när du skriver en.

Till exempel skulle följande automatiska korrigering ersätta varje förekomst av strängen foo i en översättning med bar:

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

För att installera anpassade kontroller, ange en fullständig sökväg till Python-klassen i AUTOFIX_LIST, se Anpassade kvalitetskontroller, tillägg, automatiska förslag och automatiska korrigeringar.

Anpassa beteende med hjälp av flaggor

Du kan finjustera Weblates beteende med hjälp av flaggor. Flaggorna ger översättarna visuell feedback och hjälper dem att förbättra sina översättningar. Flaggorna sammanförs från följande källor:

Flaggorna är separerade med kommatecken; om de har parametrar separeras de med kolon. Du kan använda citattecken för att inkludera blanksteg eller specialtecken i strängen. Till exempel:

placeholders:"special:value":"other value", regex:.*

Både enkla och dubbla citattecken accepteras, specialtecken undviks med hjälp av backslash:

placeholders:"quoted \"string\"":'single \'quoted\''
placeholders:r"^#*"

För att verifiera att översättare inte ändrar rubriken i ett Markdown-dokument. En felaktig kontroll utlöses om strängen ### Index översätts till # Indice.

placeholders:r"\]\([^h].*?\)"

För att säkerställa att interna länkar inte översätts (dvs. att [test](../checks) inte blir [test](../chequeos).

Flaggorna som definieras på en högre nivå kan kasseras med hjälp av syntaxen discard:NAME. Om en komponent till exempel är konfigurerad till safe-html kan du lägga till discard:safe-html till strängflaggorna för att hoppa över den för just denna sträng.

Här är en lista över flaggor som för närvarande accepteras:

read-only

Strängen är skrivskyddad och bör inte redigeras i Weblate, se Skrivskyddade strängar.

terminology

Används i Ordlista. Kopierar strängen till alla språk i ordlistan så att den kan användas konsekvent i alla översättningar. Användbar även i kombination med read-only, till exempel i produktnamn.

priority:N

Strängens prioritet. Strängar med högre prioritet visas först för översättning. Standardprioriteten är 100. Ju högre prioritet en sträng har, desto tidigare erbjuds den för översättning.

max-length:N

Begränsa den maximala längden för en sträng till N tecken, se Maximal längd av översättningen.

xml-text

Behandla text som XML-dokument, påverkar XML-syntax och XML-markering.

font-family:NAME

Definiera teckensnittsfamilj för renderingskontroller, se Hantera teckensnitt.

font-weight:WEIGHT

Definiera teckensnittsvikt för renderingskontroller, se Hantera teckensnitt.

font-size:SIZE

Definiera teckenstorlek för renderingskontroller, se Hantera teckensnitt.

font-spacing:SPACING

Definiera teckenavstånd för renderingkontroller, se Hantera teckensnitt.

icu-flags:FLAGS

Definiera flaggor för att anpassa beteendet för kvalitetskontrollen ICU MessageFormat.

icu-tag-prefix:PREFIX

Ange ett obligatoriskt prefix för XML-taggar för kvalitetskontrollen ICU MessageFormat.

placeholders:NAME:NAME2:...

Platshållarsträngar som förväntas i översättningen, se Platshållare.

replacements:FROM:TO:FROM2:TO2...

Ersättningar som ska utföras vid kontroll av resulterande textparametrar (till exempel i Maximal storlek för översättningen eller Maximal längd av översättningen). Det vanligaste användningsområdet för detta är att expandera placerbara objekt för att säkerställa att texten passar även med långa värden, till exempel: ersättningar:%s:"John Doe".

variants:SOURCE

Markera denna sträng som en variant av strängen med matchande källa. Se Strängvarianter.

regex:REGEX

Reguljära uttryck för att matcha översättning, se Reguljärt uttryck.

discard:NAME

Kasserar flaggan som definierats på en högre nivå.

forbidden

Indikerar förbjuden översättning i en ordlista, se Förbjudna översättningar.

strict-same

Gör så att Oförändrad översättning undviker att använda de inbyggda ordundantagen.

strict-format

Gör formatkontroller obligatoriska även för pluralformer med ett enda värde, se Formaterade strängar.

case-insensitive

Justera kontrollernas beteende så att de inte skiljer mellan versaler och gemener. Påverkar för närvarande endast Platshållare kvalitetskontroll.

bbcode-text

Treat a text as an Bulletin Board Code (BBCode) document, affects Oförändrad översättning. Enables the BBCode-märkning quality check.

check-glossary

Enables the Överensstämmer inte med ordlistan quality check.

fluent-parts

Enables the Fluent-delar quality check.

fluent-references

Enables the Fluent-referenser quality check.

fluent-target-inner-html

Enables the Fluent- översättning, inre HTML quality check.

fluent-target-syntax

Enables the Fluent översättningssyntax quality check.

angularjs-format

Enables the AngularJS interpolationssträng quality check.

automattic-components-format

Enables the Formatering av Automattic-komponenter quality check.

c-format

Enables the C-format quality check.

c-sharp-format

Enables the C#-format quality check.

csharp-format

Enables the C#-format quality check.

es-format

Enables the EMAScript-mallitteraler quality check.

i18next-interpolation

Enables the i18next-interpolation quality check.

icu-message-format

Enables the ICU MessageFormat and ICU MessageFormat syntax quality checks.

java-printf-format

Enables the Java-format quality check.

java-format

Enables the Java Message-format quality check.

auto-java-messageformat

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

javascript-format

Enables the JavaScript-format quality check.

laravel-format

Enables the Laravel-format quality check.

lua-format

Enables the Lua-format quality check.

object-pascal-format

Enables the Object Pascal-format quality check.

objc-format

Enables the Objective-C format quality check.

percent-placeholders

Enables the Procentplatshållare quality check.

perl-brace-format

Enables the Perl-parentesformat quality check.

perl-format

Enables the Perl-format quality check.

php-format

Enables the PHP-format quality check.

python-brace-format

Enables the Python brace-format quality check.

python-format

Enables the Python-format quality check.

qt-format

Enables the Qt-format quality check.

qt-plural-format

Enables the Qt pluralformat quality check.

ruby-format

Enables the Ruby-format quality check.

scheme-format

Enables the Schemaformat quality check.

vue-format

Enables the Vue I18n-formatering quality check.

rst-text

Treat a text as an reStructuredText document, affects Oförändrad översättning. Enables the Inkonsekvent reStructuredText and reStructuredText-syntaxfel quality checks.

md-text

Treat a text as a Markdown document, and provide Markdown syntax highlighting on the translation text area. Enables the Markdown-länkar, Markdown-referenser and Markdown-syntax quality checks.

max-length

Enables the Maximal längd av översättningen quality check.

max-size

Enables the Maximal storlek för översättningen quality check.

placeholders

Enables the Platshållare quality check.

regex

Enables the Reguljärt uttryck quality check.

safe-html

Enables the Osäker HTML quality check.

auto-safe-html

Treat a text as conditional HTML, enabling Osäker 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 Osäker HTML quality check.

url

The string should consist of only a URL. Enables the URL quality check.

fluent-source-inner-html

Enables the Fluent källkod för inre HTML quality check.

fluent-source-syntax

Enables the Fluent källsyntax quality check.

ignore-all-checks

Ignorera alla kvalitetskontroller.

ignore-bbcode

Hoppa över BBCode-märkning kvalitetskontrollen.

ignore-xml-chars-around-tags

Skip the Chars around XML tags quality check.

ignore-duplicate

Hoppa över kvalitetskontrollen På varandra följande identiska ord.

ignore-check-glossary

Hoppa över kvalitetskontrollen Överensstämmer inte med ordlistan.

ignore-double-space

Hoppa över kvalitetskontrollen Dubbla mellanslag.

ignore-fluent-parts

Hoppa över kvalitetskontrollen Fluent-delar.

ignore-fluent-references

Hoppa över kvalitetskontrollen Fluent-referenser.

ignore-fluent-target-inner-html

Hoppa över kvalitetskontrollen Fluent- översättning, inre HTML.

ignore-fluent-target-syntax

Hoppa över kvalitetskontrollen Fluent översättningssyntax.

ignore-angularjs-format

Hoppa över kvalitetskontrollen AngularJS interpolationssträng.

ignore-automattic-components-format

Hoppa över kvalitetskontrollen Formatering av Automattic-komponenter.

ignore-c-format

Hoppa över kvalitetskontrollen C-format.

ignore-c-sharp-format

Hoppa över kvalitetskontrollen C#-format.

ignore-es-format

Hoppa över kvalitetskontrollen EMAScript-mallitteraler.

ignore-i18next-interpolation

Hoppa över kvalitetskontrollen i18next-interpolation.

ignore-icu-message-format

Hoppa över kvalitetskontrollen ICU MessageFormat.

ignore-java-printf-format

Hoppa över kvalitetskontrollen Java-format.

ignore-java-format

Hoppa över kvalitetskontrollen Java Message-format.

ignore-javascript-format

Hoppa över kvalitetskontrollen JavaScript-format.

ignore-laravel-format

Skip the Laravel-format quality check.

ignore-lua-format

Hoppa över kvalitetskontrollen Lua-format.

ignore-object-pascal-format

Hoppa över kvalitetskontrollen Object Pascal-format.

ignore-objc-format

Skip the Objective-C format quality check.

ignore-percent-placeholders

Hoppa över kvalitetskontrollen Procentplatshållare.

ignore-perl-brace-format

Hoppa över kvalitetskontrollen Perl-parentesformat.

ignore-perl-format

Hoppa över kvalitetskontrollen Perl-format.

ignore-php-format

Hoppa över kvalitetskontrollen PHP-format.

ignore-python-brace-format

Hoppa över kvalitetskontrollen Python brace-format.

ignore-python-format

Hoppa över kvalitetskontrollen Python-format.

ignore-qt-format

Hoppa över kvalitetskontrollen Qt-format.

ignore-qt-plural-format

Hoppa över kvalitetskontrollen Qt pluralformat.

ignore-ruby-format

Hoppa över kvalitetskontrollen Ruby-format.

ignore-scheme-format

Hoppa över kvalitetskontrollen Schemaformat.

ignore-vue-format

Hoppa över kvalitetskontrollen Vue I18n-formatering.

ignore-translated

Hoppa över kvalitetskontrollen Har blivit översatt.

ignore-inconsistent

Hoppa över kvalitetskontrollen Inkonsekvent.

ignore-rst-references

Hoppa över kvalitetskontrollen Inkonsekvent reStructuredText.

ignore-kashida

Hoppa över kvalitetskontrollen Använder kashida.

ignore-md-link

Hoppa över kvalitetskontrollen Markdown-länkar.

ignore-md-reflink

Hoppa över kvalitetskontrollen Markdown-referenser.

ignore-md-syntax

Hoppa över kvalitetskontrollen Markdown-syntax.

ignore-max-length

Hoppa över kvalitetskontrollen Maximal längd av översättningen.

ignore-max-size

Hoppa över kvalitetskontrollen Maximal storlek för översättningen.

ignore-escaped-newline

Hoppa över kvalitetskontrollen Felaktig matchning \n.

ignore-end-colon

Hoppa över kvalitetskontrollen Omatchat kolon.

ignore-end-ellipsis

Hoppa över kvalitetskontrollen Omatchad ellips.

ignore-end-exclamation

Hoppa över kvalitetskontrollen Omatchat utropstecken.

ignore-end-stop

Hoppa över kvalitetskontrollen Omatchad slutpunkt.

ignore-end-interrobang

Hoppa över kvalitetskontrollen Omatchade interrobang.

ignore-end-question

Hoppa över kvalitetskontrollen Omatchat frågetecken.

ignore-end-semicolon

Hoppa över kvalitetskontrollen Omatchat semikolon.

ignore-newline-count

Hoppa över kvalitetskontrollen Radbrytningarna matchar inte.

ignore-plurals

Hoppa över kvalitetskontrollen Saknade pluralformer.

ignore-multiple-capital

Skip the Multiple capitals quality check.

ignore-kabyle-characters

Hoppa över kvalitetskontrollen Icke-standardtecken i kabyliska.

ignore-placeholders

Hoppa över kvalitetskontrollen Platshållare.

ignore-prohibited-initial-character

Hoppa över kvalitetskontrollen Förbjuden inledande bokstav.

ignore-punctuation-spacing

Hoppa över kvalitetskontrollen Skiljeteckensavstånd.

ignore-regex

Hoppa över kvalitetskontrollen Reguljärt uttryck.

ignore-rst-syntax

Hoppa över kvalitetskontrollen reStructuredText-syntaxfel.

ignore-reused

Hoppa över kvalitetskontrollen Återanvänd översättning.

ignore-same-plurals

Hoppa över kvalitetskontrollen Identiska pluralformer.

ignore-begin-newline

Hoppa över kvalitetskontrollen Inledande radbryt.

ignore-begin-space

Hoppa över kvalitetskontrollen Inledande mellanslag.

ignore-end-newline

Hoppa över kvalitetskontrollen Avslutande radbryt.

ignore-end-space

Hoppa över kvalitetskontrollen Avslutande mellanslag.

ignore-same

Hoppa över kvalitetskontrollen Oförändrad översättning.

ignore-safe-html

Hoppa över kvalitetskontrollen Osäker HTML.

ignore-url

Hoppa över kvalitetskontrollen URL.

ignore-xml-tags

Hoppa över kvalitetskontrollen XML-markering.

ignore-xml-invalid

Hoppa över kvalitetskontrollen XML-syntax.

ignore-zero-width-space

Hoppa över kvalitetskontrollen Mellanrum utan bredd.

ignore-ellipsis

Hoppa över kvalitetskontrollen Ellips.

ignore-fluent-source-inner-html

Hoppa över kvalitetskontrollen Fluent källkod för inre HTML.

ignore-fluent-source-syntax

Hoppa över kvalitetskontrollen Fluent källsyntax.

ignore-icu-message-format

Hoppa över kvalitetskontrollen ICU MessageFormat syntax.

ignore-long-untranslated

Hoppa över kvalitetskontrollen Sedan länge oöversatt.

ignore-multiple-failures

Hoppa över kvalitetskontrollen Flera fallerande kontroller.

ignore-unnamed-format

Hoppa över kvalitetskontrollen Flera namnlösa variabler.

ignore-optional-plural

Hoppa över kvalitetskontrollen Opluraliserad.

Observera

Generellt sett heter regeln ignore-* för alla kontroller, med hjälp av dess identifierare, så du kan använda detta även för dina egna kontroller.

Dessa flaggor förstås både i Komponentkonfiguration-inställningar, per källstränginställningar och i själva översättningsfilen (till exempel i GNU gettext).

Platsbaserade flaggor

Vissa flaggor läggs till i strängar som standard, baserat på deras placering. Detta innebär att vissa kontroller aktiveras automatiskt beroende på var strängen används.

  • rst-text: Denna flagga läggs automatiskt till strängar i reStructuredText-filer om platsförlängningen är .rst.

  • md-text: This flag is automatically added to strings in Markdown and MDX files, if location extension is .md, .markdown, or .mdx.

Genomförande av kontroller

De tvingande kontrollerna kan inte ignoreras och markera strängen som Behöver redigeras (se Översättningsstatus). Detta förhindrar översättare från att dölja sådana kontroller.

Råd

Att aktivera kontrollen aktiverar den inte automatiskt. Vissa kontroller måste aktiveras genom att lägga till motsvarande flagga till sträng- eller komponentflaggorna.

Detta används bäst med kontroller som kan orsaka allvarliga problem när de används, såsom kontroller för Formaterade strängar. Det rekommenderas inte att använda detta för stilkontroller som Oförändrad översättning, eftersom det ibland är rimligt att avfärda dessa.

Filter för översättningskvalitet kan sedan användas för att undanta strängar som behöver redigeras från att läggas in i versionshanteringen.

Hantera teckensnitt

Råd

Typsnitt som laddas upp till Weblate används enbart för Maximal storlek för översättningen-kontrollen och har ingen inverkan på Weblates användargränssnitt.

Kontrollen Maximal storlek för översättningen som används för att beräkna dimensionerna för den renderade texten kräver att teckensnittet laddas in i Weblate och väljs med hjälp av en översättningsflagga (se Anpassa beteende med hjälp av flaggor).

Weblate-verktyget för typsnittshantering i Fonts under menyn Operations i ditt översättningsprojekt erbjuder ett gränssnitt för att ladda upp och hantera typsnitt. TrueType- eller OpenType-typsnitt kan laddas upp, typsnittsgrupper kan skapas och dessa kan användas i kontrollen.

Med teckensnittsgrupperna kan du definiera olika teckensnitt för olika språk, vilket vanligtvis behövs för icke-latinska språk:

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

Fontgrupperna identifieras med namn, som inte får innehålla blanktecken eller specialtecken, så att de enkelt kan användas i kontrolldefinitionen:

../_images/font-group-list.webp

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

../_images/font-edit.webp

Du kan ladda ett antal typsnitt i Weblate:

../_images/font-list.webp

För att använda teckensnitten för att kontrollera stränglängden, skicka lämpliga flaggor (se Anpassa beteende med hjälp av flaggor). Du kommer troligen att behöva följande:

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

Definierar maximal bredd i pixlar och, valfritt, maximalt antal rader (ordbrytning tillämpas).

font-family:ubuntu

Definierar vilken teckensnittsgrupp som ska användas genom att ange dess identifierare.

font-size:22

Definierar teckenstorlek i pixlar.

Skriva egna checkar

Ett brett utbud av kvalitetskontroller är inbyggda (se Kvalitetskontroller), men de täcker kanske inte allt du vill kontrollera. Listan över utförda kontroller kan justeras med CHECK_LIST, och du kan också lägga till egna kontroller.

  1. Underklass till weblate.checks.Check

  2. Ställ in några attribut.

  3. Implementera antingen metoden check (om du vill hantera pluralformer i din kod) eller metoden check_single (som gör det åt dig).

Några exempel:

För att installera anpassade kontroller, ange en fullständig sökväg till Python-klassen i CHECK_LIST, se Anpassade kvalitetskontroller, tillägg, automatiska förslag och automatiska korrigeringar.

Kontrollerar att översättningstexten inte innehåller ”foo”

Detta är en ganska enkel kontroll som bara kontrollerar om översättningen saknar strängen ”foo”.

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

Kontrollera att pluralformer i den tjeckiska översättningen skiljer sig åt

Kontrollera med hjälp av språkinformationen att de två pluralformerna på tjeckiska inte är identiska.

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