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:
Källsträngens ytterligare flaggor:
Ytterligare information om källsträngar beskriver manuell redigering.
Massredigering kan användas för att tillämpa flera flaggor.
Massredigering-tillägget kan tillämpa flaggor automatiskt.
Flaggor per sträng extraherade från filformatet, se Lokalisering filformat.
Translation flags (currently only
read-onlyflag for bilingual source string or when monolingual template editing is turned off).Filformatsspecifika flaggor.
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-onlySträngen är skrivskyddad och bör inte redigeras i Weblate, se Skrivskyddade strängar.
terminologyAnvä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:NSträ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:NBegränsa den maximala längden för en sträng till N tecken, se Maximal längd av översättningen.
xml-textBehandla text som XML-dokument, påverkar XML-syntax och XML-markering.
font-family:NAMEDefiniera teckensnittsfamilj för renderingskontroller, se Hantera teckensnitt.
font-weight:WEIGHTDefiniera teckensnittsvikt för renderingskontroller, se Hantera teckensnitt.
font-size:SIZEDefiniera teckenstorlek för renderingskontroller, se Hantera teckensnitt.
font-spacing:SPACINGDefiniera teckenavstånd för renderingkontroller, se Hantera teckensnitt.
icu-flags:FLAGSDefiniera flaggor för att anpassa beteendet för kvalitetskontrollen ICU MessageFormat.
icu-tag-prefix:PREFIXAnge 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:SOURCEMarkera denna sträng som en variant av strängen med matchande källa. Se Strängvarianter.
regex:REGEXReguljära uttryck för att matcha översättning, se Reguljärt uttryck.
discard:NAMEKasserar flaggan som definierats på en högre nivå.
forbiddenIndikerar förbjuden översättning i en ordlista, se Förbjudna översättningar.
strict-sameGör så att Oförändrad översättning undviker att använda de inbyggda ordundantagen.
strict-formatGör formatkontroller obligatoriska även för pluralformer med ett enda värde, se Formaterade strängar.
case-insensitiveJustera kontrollernas beteende så att de inte skiljer mellan versaler och gemener. Påverkar för närvarande endast Platshållare kvalitetskontroll.
bbcode-textTreat a text as an Bulletin Board Code (BBCode) document, affects Oförändrad översättning. Enables the BBCode-märkning quality check.
check-glossaryEnables the Överensstämmer inte med ordlistan quality check.
fluent-partsEnables the Fluent-delar quality check.
fluent-referencesEnables the Fluent-referenser quality check.
fluent-target-inner-htmlEnables the Fluent- översättning, inre HTML quality check.
fluent-target-syntaxEnables the Fluent översättningssyntax quality check.
angularjs-formatEnables the AngularJS interpolationssträng quality check.
automattic-components-formatEnables the Formatering av Automattic-komponenter quality check.
c-formatEnables the C-format quality check.
c-sharp-formatEnables the C#-format quality check.
csharp-formatEnables the C#-format quality check.
es-formatEnables the EMAScript-mallitteraler quality check.
i18next-interpolationEnables the i18next-interpolation quality check.
icu-message-formatEnables the ICU MessageFormat and ICU MessageFormat syntax quality checks.
java-printf-formatEnables the Java-format quality check.
java-formatEnables the Java Message-format quality check.
auto-java-messageformatTreat 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-formatEnables the JavaScript-format quality check.
laravel-formatEnables the Laravel-format quality check.
lua-formatEnables the Lua-format quality check.
object-pascal-formatEnables the Object Pascal-format quality check.
objc-formatEnables the Objective-C format quality check.
percent-placeholdersEnables the Procentplatshållare quality check.
perl-brace-formatEnables the Perl-parentesformat quality check.
perl-formatEnables the Perl-format quality check.
php-formatEnables the PHP-format quality check.
python-brace-formatEnables the Python brace-format quality check.
python-formatEnables the Python-format quality check.
qt-formatEnables the Qt-format quality check.
qt-plural-formatEnables the Qt pluralformat quality check.
ruby-formatEnables the Ruby-format quality check.
scheme-formatEnables the Schemaformat quality check.
vue-formatEnables the Vue I18n-formatering quality check.
rst-textTreat a text as an reStructuredText document, affects Oförändrad översättning. Enables the Inkonsekvent reStructuredText and reStructuredText-syntaxfel quality checks.
md-textTreat 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-lengthEnables the Maximal längd av översättningen quality check.
max-sizeEnables the Maximal storlek för översättningen quality check.
placeholdersEnables the Platshållare quality check.
regexEnables the Reguljärt uttryck quality check.
safe-htmlEnables the Osäker HTML quality check.
auto-safe-htmlTreat 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.
urlThe string should consist of only a URL. Enables the URL quality check.
fluent-source-inner-htmlEnables the Fluent källkod för inre HTML quality check.
fluent-source-syntaxEnables the Fluent källsyntax quality check.
ignore-all-checksIgnorera alla kvalitetskontroller.
ignore-bbcodeHoppa över BBCode-märkning kvalitetskontrollen.
ignore-xml-chars-around-tagsSkip the Chars around XML tags quality check.
ignore-duplicateHoppa över kvalitetskontrollen På varandra följande identiska ord.
ignore-check-glossaryHoppa över kvalitetskontrollen Överensstämmer inte med ordlistan.
ignore-double-spaceHoppa över kvalitetskontrollen Dubbla mellanslag.
ignore-fluent-partsHoppa över kvalitetskontrollen Fluent-delar.
ignore-fluent-referencesHoppa över kvalitetskontrollen Fluent-referenser.
ignore-fluent-target-inner-htmlHoppa över kvalitetskontrollen Fluent- översättning, inre HTML.
ignore-fluent-target-syntaxHoppa över kvalitetskontrollen Fluent översättningssyntax.
ignore-angularjs-formatHoppa över kvalitetskontrollen AngularJS interpolationssträng.
ignore-automattic-components-formatHoppa över kvalitetskontrollen Formatering av Automattic-komponenter.
ignore-c-formatHoppa över kvalitetskontrollen C-format.
ignore-c-sharp-formatHoppa över kvalitetskontrollen C#-format.
ignore-es-formatHoppa över kvalitetskontrollen EMAScript-mallitteraler.
ignore-i18next-interpolationHoppa över kvalitetskontrollen i18next-interpolation.
ignore-icu-message-formatHoppa över kvalitetskontrollen ICU MessageFormat.
ignore-java-printf-formatHoppa över kvalitetskontrollen Java-format.
ignore-java-formatHoppa över kvalitetskontrollen Java Message-format.
ignore-javascript-formatHoppa över kvalitetskontrollen JavaScript-format.
ignore-laravel-formatSkip the Laravel-format quality check.
ignore-lua-formatHoppa över kvalitetskontrollen Lua-format.
ignore-object-pascal-formatHoppa över kvalitetskontrollen Object Pascal-format.
ignore-objc-formatSkip the Objective-C format quality check.
ignore-percent-placeholdersHoppa över kvalitetskontrollen Procentplatshållare.
ignore-perl-brace-formatHoppa över kvalitetskontrollen Perl-parentesformat.
ignore-perl-formatHoppa över kvalitetskontrollen Perl-format.
ignore-php-formatHoppa över kvalitetskontrollen PHP-format.
ignore-python-brace-formatHoppa över kvalitetskontrollen Python brace-format.
ignore-python-formatHoppa över kvalitetskontrollen Python-format.
ignore-qt-formatHoppa över kvalitetskontrollen Qt-format.
ignore-qt-plural-formatHoppa över kvalitetskontrollen Qt pluralformat.
ignore-ruby-formatHoppa över kvalitetskontrollen Ruby-format.
ignore-scheme-formatHoppa över kvalitetskontrollen Schemaformat.
ignore-vue-formatHoppa över kvalitetskontrollen Vue I18n-formatering.
ignore-translatedHoppa över kvalitetskontrollen Har blivit översatt.
ignore-inconsistentHoppa över kvalitetskontrollen Inkonsekvent.
ignore-rst-referencesHoppa över kvalitetskontrollen Inkonsekvent reStructuredText.
ignore-kashidaHoppa över kvalitetskontrollen Använder kashida.
ignore-md-linkHoppa över kvalitetskontrollen Markdown-länkar.
ignore-md-reflinkHoppa över kvalitetskontrollen Markdown-referenser.
ignore-md-syntaxHoppa över kvalitetskontrollen Markdown-syntax.
ignore-max-lengthHoppa över kvalitetskontrollen Maximal längd av översättningen.
ignore-max-sizeHoppa över kvalitetskontrollen Maximal storlek för översättningen.
ignore-escaped-newlineHoppa över kvalitetskontrollen Felaktig matchning \n.
ignore-end-colonHoppa över kvalitetskontrollen Omatchat kolon.
ignore-end-ellipsisHoppa över kvalitetskontrollen Omatchad ellips.
ignore-end-exclamationHoppa över kvalitetskontrollen Omatchat utropstecken.
ignore-end-stopHoppa över kvalitetskontrollen Omatchad slutpunkt.
ignore-end-interrobangHoppa över kvalitetskontrollen Omatchade interrobang.
ignore-end-questionHoppa över kvalitetskontrollen Omatchat frågetecken.
ignore-end-semicolonHoppa över kvalitetskontrollen Omatchat semikolon.
ignore-newline-countHoppa över kvalitetskontrollen Radbrytningarna matchar inte.
ignore-pluralsHoppa över kvalitetskontrollen Saknade pluralformer.
ignore-multiple-capitalSkip the Multiple capitals quality check.
ignore-kabyle-charactersHoppa över kvalitetskontrollen Icke-standardtecken i kabyliska.
ignore-placeholdersHoppa över kvalitetskontrollen Platshållare.
ignore-prohibited-initial-characterHoppa över kvalitetskontrollen Förbjuden inledande bokstav.
ignore-punctuation-spacingHoppa över kvalitetskontrollen Skiljeteckensavstånd.
ignore-regexHoppa över kvalitetskontrollen Reguljärt uttryck.
ignore-rst-syntaxHoppa över kvalitetskontrollen reStructuredText-syntaxfel.
ignore-reusedHoppa över kvalitetskontrollen Återanvänd översättning.
ignore-same-pluralsHoppa över kvalitetskontrollen Identiska pluralformer.
ignore-begin-newlineHoppa över kvalitetskontrollen Inledande radbryt.
ignore-begin-spaceHoppa över kvalitetskontrollen Inledande mellanslag.
ignore-end-newlineHoppa över kvalitetskontrollen Avslutande radbryt.
ignore-end-spaceHoppa över kvalitetskontrollen Avslutande mellanslag.
ignore-sameHoppa över kvalitetskontrollen Oförändrad översättning.
ignore-safe-htmlHoppa över kvalitetskontrollen Osäker HTML.
ignore-urlHoppa över kvalitetskontrollen URL.
ignore-xml-tagsHoppa över kvalitetskontrollen XML-markering.
ignore-xml-invalidHoppa över kvalitetskontrollen XML-syntax.
ignore-zero-width-spaceHoppa över kvalitetskontrollen Mellanrum utan bredd.
ignore-ellipsisHoppa över kvalitetskontrollen Ellips.
ignore-fluent-source-inner-htmlHoppa över kvalitetskontrollen Fluent källkod för inre HTML.
ignore-fluent-source-syntaxHoppa över kvalitetskontrollen Fluent källsyntax.
ignore-icu-message-formatHoppa över kvalitetskontrollen ICU MessageFormat syntax.
ignore-long-untranslatedHoppa över kvalitetskontrollen Sedan länge oöversatt.
ignore-multiple-failuresHoppa över kvalitetskontrollen Flera fallerande kontroller.
ignore-unnamed-formatHoppa över kvalitetskontrollen Flera namnlösa variabler.
ignore-optional-pluralHoppa ö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:
Fontgrupperna identifieras med namn, som inte får innehålla blanktecken eller specialtecken, så att de enkelt kan användas i kontrolldefinitionen:
Font-family and style are automatically recognized after uploading them:
Du kan ladda ett antal typsnitt i Weblate:
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:5Definierar maximal bredd i pixlar och, valfritt, maximalt antal rader (ordbrytning tillämpas).
font-family:ubuntuDefinierar vilken teckensnittsgrupp som ska användas genom att ange dess identifierare.
font-size:22Definierar 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.
Underklass till weblate.checks.Check
Ställ in några attribut.
Implementera antingen metoden
check(om du vill hantera pluralformer i din kod) eller metodencheck_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