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 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
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 flaggor i batch.
Massredigering-tillägget kan tillämpa flaggor automatiskt.
Flaggor per sträng extraherade från filformatet, se Lokalisering filformat.
Översättningsflaggor (för närvarande endast flaggan
skrivskyddadför tvåspråkiga källsträngar).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:
rst-textBehandla en text som ett reStructuredText-dokument, påverkar Oförändrad översättning. Aktiverar reStructuredText-syntaxfel och Inkonsekvent reStructuredText.
bbcode-textBehandla en text som ett BBCode-dokument (Bulletin Board Code), påverkar Oförändrad översättning.
dos-eolAnvänder DOS-radslutmarkörer istället för Unix-markörer (
\r\nistället för\n).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.
check-glossaryAktivera kvalitetskontrollen Överensstämmer inte med ordlistan.
angularjs-formatAktivera kvalitetskontrollen AngularJS interpolationssträng.
c-formatAktivera kvalitetskontrollen C-format.
c-sharp-formatAktivera kvalitetskontrollen C#-format.
es-formatAktivera kvalitetskontrollen EMAScript-mallitteraler.
i18next-interpolationAktivera kvalitetskontrollen i18next-interpolation.
icu-message-formatAktivera kvalitetskontrollen ICU MessageFormat.
java-printf-formatAktivera kvalitetskontrollen Java-format.
java-formatAktivera kvalitetskontrollen Java Message-format.
javascript-formatAktivera kvalitetskontrollen JavaScript-format.
lua-formatAktivera kvalitetskontrollen Lua-format.
object-pascal-formatAktivera kvalitetskontrollen Object Pascal-format.
percent-placeholdersAktivera kvalitetskontrollen Procentplatshållare.
perl-brace-formatAktivera kvalitetskontrollen Perl-parentesformat.
perl-formatAktivera kvalitetskontrollen Perl-format.
php-formatAktivera kvalitetskontrollen PHP-format.
python-brace-formatAktivera kvalitetskontrollen Python brace-format.
python-formatAktivera kvalitetskontrollen Python-format.
qt-formatAktivera kvalitetskontrollen Qt-format.
qt-plural-formatAktivera kvalitetskontrollen Qt pluralformat.
ruby-formatAktivera kvalitetskontrollen Ruby-format.
scheme-formatAktivera kvalitetskontrollen Schemaformat.
vue-formatAktivera kvalitetskontrollen Vue I18n-formatering.
md-textBehandla texten som ett Markdown-dokument och tillhandahåll Markdown-syntaxmarkering i översättningstextområdet. Aktiverar kvalitetskontroller Markdown-länkar, Markdown-referenser och Markdown-syntax.
case-insensitiveJustera kontrollernas beteende så att de inte skiljer mellan versaler och gemener. Påverkar för närvarande endast Platshållare kvalitetskontroll.
safe-htmlAktivera kvalitetskontrollen Osäker HTML.
urlSträngen ska endast bestå av en URL. Aktivera kvalitetskontrollen URL.
ignore-all-checksIgnorera alla kvalitetskontroller.
fluent-source-inner-htmlAktivera kvalitetskontrollen Fluent källkod för inre HTML.
fluent-source-syntaxAktivera kvalitetskontrollen Fluent källsyntax.
icu-message-formatAktivera kvalitetskontrollen ICU MessageFormat syntax.
ignore-bbcodeHoppa över BBCode-märkning kvalitetskontrollen.
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-lua-formatHoppa över kvalitetskontrollen Lua-format.
ignore-object-pascal-formatHoppa över kvalitetskontrollen Object Pascal-format.
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-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: Denna flagga läggs automatiskt till strängar i Markdown-filer om platsförlängningen är.mdeller.markdown.
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.
Åtagandepolicy 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:
Fontfamilj och stil känns igen automatiskt efter uppladdning:
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
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
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
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