Controles en reparaties¶
Aangepaste automatische reparaties¶
U kunt ook uw eigen automatische reparatie implementeren, in aanvulling op die van de standaard, en ze opnemen in AUTOFIX_LIST.
De automatische reparaties zijn krachtig, maar kunnen ook schade toebrengen; wees voorzichtig bij het schrijven ervan.
De volgende automatische reparatie zou, bijvoorbeeld, elke instantie van de tekenreeks foo in een vertaling vervangen door 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
Verschaf, om aangepaste controles te installeren, een volledig gekwalificeerd pad naar de Python class in de AUTOFIX_LIST, bekijk Aangepaste controles voor kwaliteit, add-ons, automatische suggesties en automatisch repareren.
Gedrag aanpassen met vlaggen¶
U kunt het gedrag van Weblate fijn afstemmen met vlaggen. De vlaggen verschaffen visuele terugkoppeling aan de vertalers en helpen ze om hun vertaling te verbeteren. De vlaggen worden samengevoegd uit de volgende bronnen:
Brontekenreeks extra vlaggen:
Aanvullende informatie over brontekenreeksen beschrijft handmatig bewerken.
Bulk bewerken kan worden gebruikt om vlaggen in batch toe te passen.
Bulk bewerken add-on kan automatisch vlaggen toepassen.
Vlaggen per tekenreeks uitgenomen uit de bestandsindeling, bekijk Bestandsindelingen voor vertalen.
Translation flags (currently only
read-onlyflag for bilingual source string or when monolingual template editing is turned off).Specifieke vlaggen voor bestandsindeling.
De vlaggen worden gescheiden met komma’s; als zij parameters hebben worden die gescheiden door een dubbele punt. U kunt aanhalingstekens gebruiken om witruimte of speciale tekens in de tekenreeks op te nemen. Bijvoorbeeld:
placeholders:"special:value":"other value", regex:.*
Zowel enkele als dubbele aanhalingstekens worden geaccepteerd, speciale tekens moeten worden geëscapet met een backslash:
placeholders:"quoted \"string\"":'single \'quoted\''
placeholders:r"^#*"
Verifiëren dat vertalers de kop van een document met Markdown niet wijzigen: Een mislukte controle zal worden geactiveerd wanneer de tekenreeks ### Index is vertaald als # Indice.
placeholders:r"\]\([^h].*?\)"
Zorgen dat interne koppelingen niet worden vertaald (d.i. [test](../checks) mag niet worden [test](../chequeos).
De vlaggen, die zijn gedefinieerd op een hoger niveau, kunnen worden genegeerd met de syntaxis discard:NAME. Bijvoorbeeld als een onderdeel is geconfigureerd voor safe-html, kunt u discard:safe-html toevoegen aan de vlaggen van de tekenreeks om die voor deze bepaalde tekenreeks over te slaan.
Hier is een lijst met momenteel geaccepteerde vlaggen:
rst-textBehandelt een tekst als een document met reStructuredText, heeft invloed op ongewijzigde vertaling. Schakelt reStructuredText fout in syntaxis en Inconsistente reStructuredText in.
bbcode-textBehandelt tekst als een document met Bulletin Board Code (BBCode), heeft invloed op ongewijzigde vertaling.
dos-eolGebruikt markeringen van DOS voor einde regel in plaats van die van Unix (
\r\nin plaats van\n).read-onlyDe tekenreeks is alleen-lezen en zou niet moeten worden bewerkt in Weblate, bekijk Alleen-lezen-tekenreeksen.
terminologyGebruikt in Woordenlijst. Kopieert de tekenreeks naar alle talen voor de woordenlijst, zodat het consistent kan worden gebruikt in alle vertalingen. Ook nuttig in combinatie met
read-only, bijvoorbeeld voor productnamen.priority:NPrioriteit van de tekenreeks. Tekenreeksen met een hogere prioriteit worden als eerste gepresenteerd voor vertaling. De standaard prioriteit is 100, hoe hoger de prioriteit die een tekenreeks heeft, hoe eerder die wordt aangeboden voor vertaling.
max-length:NBeperkt de maximale lengte voor een tekenreeks tot N tekens, bekijk Maximumlengte van de vertaling.
xml-textBehandel tekst als een document met XML, heeft invloed op xml-syntaxis en XML-opmaak.
font-family:NAMEDefinieert familie van lettertype voor controles voor renderen, bekijk Lettertypen beheren.
font-weight:WEIGHTDefinieer het letterbeeld voor controles voor renderen, bekijk Lettertypen beheren.
font-size:SIZEDefinieer grootte voor het lettertype voor controles voor renderen, bekijk Lettertypen beheren.
font-spacing:SPACINGDefinieer afstand tussen letters voor controles voor renderen, bekijk Lettertypen beheren.
icu-flags:FLAGSVlaggen definiëren voor aanpassen van het gedrag van de kwaliteitscontrole ICU MessageFormat.
icu-tag-prefix:PREFIXStel een vereist voorvoegsel in voor XML-tags voor de kwaliteitscontrole ICU MessageFormat.
placeholders:NAME:NAME2:...Tekenreeksen als plaatsvervanger, verwacht in vertaling, bekijk Tijdelijke aanduidingen.
replacements:FROM:TO:FROM2:TO2...Vervangingen om uit te voeren bij het controleren van resulterende tekstparameters (bijvoorbeeld in Maximumomvang van de vertaling of Maximumlengte van de vertaling). Een typisch gebruiksgeval hiervoor is om plaatsvervangers uit te breiden om ervoor te zorgen dat tekstbestanden zelfs met lange waarden passen, bijvoorbeeld:
replacements:%s:"John Doe".variants:SOURCEMarkeer deze tekenreeks als een variant van een tekenreeks met een overeenkomende bron. Bekijk Varianten van tekenreeksen.
regex:REGEXReguliere expressie om vertalingen mee te vergelijken, bekijk Reguliere uitdrukking.
discard:NAMEVlaggen op een hoger niveau negeren.
forbiddenGeeft verboden vertalingen aan in een woordenlijst, bekijk Verboden vertalingen.
strict-sameZorg ervoor dat ongewijzigde vertaling de ingebouwde uitzonderingen van woorden vermijdt.
strict-formatForceren dat controles voor indeling de indeling zelfs voor meervoudsvormen met een enkele waarde gebruiken, bekijk Opgemaakte tekenreeksen.
check-glossarySchakel de kwaliteitscontrole Niet-overeenkomend met begrippenlijst in.
angularjs-formatSchakel de kwaliteitscontrole AngularJS-interpolatietekenreeks in.
c-formatSchakel de kwaliteitscontrole C-opmaak in.
c-sharp-formatSchakel de kwaliteitscontrole C#-opmaak in.
es-formatSchakel de kwaliteitscontrole ECMAScript-sjabloonletters in.
i18next-interpolationSchakel de kwaliteitscontrole i18next-interpolatie in.
icu-message-formatSchakel de kwaliteitscontrole ICU MessageFormat in.
java-printf-formatSchakel de kwaliteitscontrole Java-opmaak in.
java-formatSchakel de kwaliteitscontrole Java MessageFormat in.
javascript-formatSchakel de kwaliteitscontrole JavaScript-opmaak in.
lua-formatSchakel de kwaliteitscontrole Lua-opmaak in.
object-pascal-formatSchakel de kwaliteitscontrole Object Pascal-formaat in.
percent-placeholdersSchakel de kwaliteitscontrole Procentaanduidingen in.
perl-brace-formatSchakel de kwaliteitscontrole Perl-haakjes opmaak in.
perl-formatSchakel de kwaliteitscontrole Perl-opmaak in.
php-formatSchakel de kwaliteitscontrole PHP-opmaak in.
python-brace-formatSchakel de kwaliteitscontrole Python-haakjesopmaak in.
python-formatSchakel de kwaliteitscontrole Python-opmaak in.
qt-formatSchakel de kwaliteitscontrole Qt indeling in.
qt-plural-formatSchakel de kwaliteitscontrole Qt meervoudsformaat in.
ruby-formatSchakel de kwaliteitscontrole Ruby-opmaak in.
scheme-formatSchakel de kwaliteitscontrole Schemaformaat in.
vue-formatSchakel de kwaliteitscontrole Vue i18n-opmaak in.
md-textBehandel tekst als een document van Markdown en verschaf accentueren van syntaxis van Markdown in het gebied van de vertaling. Schakelt kwaliteitscontroles Markdown-links, Markdown-verwijzingen en Markdown-syntaxis in.
case-insensitivePas het gedrag van controles aan naar niet-hoofdlettergevoelig. Beïnvloedt momenteel alleen de kwaliteitscontrole Tijdelijke aanduidingen.
safe-htmlSchakel de kwaliteitscontrole Onveilige html in.
urlDe tekenreeks zou allen uit een URL moeten bestaan. Schakel de kwaliteitscontrole URL in.
ignore-all-checksAlle kwaliteitscontroles negeren.
fluent-source-inner-htmlSchakel de kwaliteitscontrole Fluent interne html in.
fluent-source-syntaxSchakel de kwaliteitscontrole Fluent-syntaxis bron in.
icu-message-formatSchakel de kwaliteitscontrole ICU Java MessageFormat-syntaxis in.
ignore-bbcodeSla de kwaliteitscontrole BBCode-opmaak over.
ignore-duplicateSla de kwaliteitscontrole Opeenvolgende dubbele woorden over.
ignore-check-glossarySla de kwaliteitscontrole Niet-overeenkomend met begrippenlijst over.
ignore-double-spaceSla de kwaliteitscontrole Dubbele spatie over.
ignore-fluent-partsSla de kwaliteitscontrole Fluent-onderdelen over.
ignore-fluent-referencesSla de kwaliteitscontrole Fluent-referenties over.
ignore-fluent-target-inner-htmlSla de kwaliteitscontrole Fluent-vertaling binnen html over.
ignore-fluent-target-syntaxSla de kwaliteitscontrole Fluent-vertaalsyntaxis over.
ignore-angularjs-formatSla de kwaliteitscontrole AngularJS-interpolatietekenreeks over.
ignore-automattic-components-formatSla de kwaliteitscontrole Opmaak van onderdelen van Automattic over.
ignore-c-formatSla de kwaliteitscontrole C-opmaak over.
ignore-c-sharp-formatSla de kwaliteitscontrole C#-opmaak over.
ignore-es-formatSla de kwaliteitscontrole ECMAScript-sjabloonletters over.
ignore-i18next-interpolationSla de kwaliteitscontrole i18next-interpolatie over.
ignore-icu-message-formatSla de kwaliteitscontrole ICU MessageFormat over.
ignore-java-printf-formatSla de kwaliteitscontrole Java-opmaak over.
ignore-java-formatSla de kwaliteitscontrole Java MessageFormat over.
ignore-javascript-formatSla de kwaliteitscontrole JavaScript-opmaak over.
ignore-lua-formatSla de kwaliteitscontrole Lua-opmaak over.
ignore-object-pascal-formatSla de kwaliteitscontrole Object Pascal-formaat over.
ignore-percent-placeholdersSla de kwaliteitscontrole Procentaanduidingen over.
ignore-perl-brace-formatSla de kwaliteitscontrole Perl-haakjes opmaak over.
ignore-perl-formatSla de kwaliteitscontrole Perl-opmaak over.
ignore-php-formatSla de kwaliteitscontrole PHP-opmaak over.
ignore-python-brace-formatSla de kwaliteitscontrole Python-haakjesopmaak over.
ignore-python-formatSla de kwaliteitscontrole Python-opmaak over.
ignore-qt-formatSla de kwaliteitscontrole Qt indeling over.
ignore-qt-plural-formatSla de kwaliteitscontrole Qt meervoudsformaat over.
ignore-ruby-formatSla de kwaliteitscontrole Ruby-opmaak over.
ignore-scheme-formatSla de kwaliteitscontrole Schemaformaat over.
ignore-vue-formatSla de kwaliteitscontrole Vue i18n-opmaak over.
ignore-translatedSla de kwaliteitscontrole Is vertaald over.
ignore-inconsistentSla de kwaliteitscontrole Inconsistent over.
ignore-rst-referencesSla de kwaliteitscontrole Inconsistente reStructuredText over.
ignore-kashidaSla de kwaliteitscontrole Gebruikte kashida-letter over.
ignore-md-linkSla de kwaliteitscontrole Markdown-links over.
ignore-md-reflinkSla de kwaliteitscontrole Markdown-verwijzingen over.
ignore-md-syntaxSla de kwaliteitscontrole Markdown-syntaxis over.
ignore-max-lengthSla de kwaliteitscontrole Maximumlengte van de vertaling over.
ignore-max-sizeSla de kwaliteitscontrole Maximumomvang van de vertaling over.
ignore-escaped-newlineSla de kwaliteitscontrole Niet overeenkomende \n over.
ignore-end-colonSla de kwaliteitscontrole Niet overeenkomende dubbele punt over.
ignore-end-ellipsisSla de kwaliteitscontrole Niet overeenkomend beletselteken over.
ignore-end-exclamationSla de kwaliteitscontrole Niet overeenkomend uitroepteken over.
ignore-end-stopSla de kwaliteitscontrole Niet overeenkomende punt over.
ignore-end-interrobangSla de kwaliteitscontrole Niet overeenkomende interrobang (‽) over.
ignore-end-questionSla de kwaliteitscontrole Niet overeenkomend vraagteken over.
ignore-end-semicolonSla de kwaliteitscontrole niet-overeenkomende puntkomma over.
ignore-newline-countSla de kwaliteitscontrole Het aantal witruimtes komt niet overeen over.
ignore-pluralsSla de kwaliteitscontrole Ontbrekende meervouden over.
ignore-kabyle-charactersSla de kwaliteitscontrole Niet standaard tekens in Kabyle over.
ignore-placeholdersSla de kwaliteitscontrole Tijdelijke aanduidingen over.
ignore-prohibited-initial-characterSla de kwaliteitscontrole Verboden initiële teken over.
ignore-punctuation-spacingSla de kwaliteitscontrole Interpunctie-afstand over.
ignore-regexSla de kwaliteitscontrole Reguliere uitdrukking over.
ignore-rst-syntaxSla de kwaliteitscontrole reStructuredText fout in syntaxis over.
ignore-reusedSla de kwaliteitscontrole Hergebruikte vertaling over.
ignore-same-pluralsSla de kwaliteitscontrole Identieke meervouden over.
ignore-begin-newlineSla de kwaliteitscontrole Nieuwe regel aan het begin over.
ignore-begin-spaceSla de kwaliteitscontrole Spaties aan het begin over.
ignore-end-newlineSla de kwaliteitscontrole Nieuwe regel aan het einde over.
ignore-end-spaceSla de kwaliteitscontrole spatie aan het einde over.
ignore-sameSla de kwaliteitscontrole ongewijzigde vertaling over.
ignore-safe-htmlSla de kwaliteitscontrole Onveilige html over.
ignore-urlSla de kwaliteitscontrole URL over.
ignore-xml-tagsSla de kwaliteitscontrole XML-opmaak over.
ignore-xml-invalidSla de kwaliteitscontrole xml-syntaxis over.
ignore-zero-width-spaceSla de kwaliteitscontrole Spatie zonder breedte over.
ignore-ellipsisSla de kwaliteitscontrole Beletselteken (…) over.
ignore-fluent-source-inner-htmlSla de kwaliteitscontrole Fluent interne html over.
ignore-fluent-source-syntaxSla de kwaliteitscontrole Fluent-syntaxis bron over.
ignore-icu-message-formatSla de kwaliteitscontrole ICU Java MessageFormat-syntaxis over.
ignore-long-untranslatedSla de kwaliteitscontrole Al lange tijd onvertaald over.
ignore-multiple-failuresSla de kwaliteitscontrole Meerdere foutmeldingen over.
ignore-unnamed-formatSla de kwaliteitscontrole Meerdere naamloze variabelen over.
ignore-optional-pluralSla de kwaliteitscontrole geen meervoud over.
Notitie
Gewoonlijk is de controle genaamd ignore-* voor elke controle, zijn identificatie gebruikend, dus u kunt dit zelfs gebruiken voor uw aangepaste controles.
Deze vlaggen worden begrepen in zowel instellingen Configuratie onderdeel, instellingen per tekenreeks en in het vertaalbestand zelf (bijvoorbeeld in GNU gettext).
Op locatie gebaseerde vlaggen¶
Sommige vlaggen worden standaard aan tekenreeksen toegevoegd, gebaseerd op hun locaties. Dat betekent dat bepaalde controles automatisch zullen worden ingeschakeld, afhankelijk van waar de tekenreeks wordt gebruikt.
rst-text: Deze vlag wordt automatisch toegevoegd in bestanden met reStructuredText, als de extensie van de locatie.rstis.md-text: Deze vlag wordt automatisch toegevoegd in bestanden met Markdown, als de extensie van de locatie.mdof.markdownis.
Controles afdwingen¶
De afgedwongen controles kunnen niet worden uitgeschakeld en markeren een tekenreeks met Bewerken nodig (bekijk Statussen voor vertalingen). Dit voorkomt dat vertalers dergelijke controles verbergen.
Hint
Inschakelen van het afdwingen van controles schakelt ze niet automatisch in. Sommige controles moeten worden ingeschakeld door de corresponderende vlag toe te voegen aan de tekenreeks of de vlaggen van het onderdeel.
Dit kan het beste worden gebruikt met controles zoals voor Opgemaakte tekenreeksen. Gebruiken van controles voor opmaak, zoals ongewijzigde vertaling, wordt niet aanbevolen, omdat in deze het uitschakelen een redelijke benadering is.
De Kwaliteitsfilter vertaling kan dan worden gebruikt om tekenreeksen uit te sluiten dat tekenreeksen, die moeten worden bewerkt, worden ingediend bij versiebeheer.
Lettertypen beheren¶
Hint
Lettertypen die worden geüpload in Weblate worden puur gebruikt voor de doelen van de controle Maximumomvang van de vertaling, zij hebben geen effect in de gebruikersinterface van Weblate.
De controle Maximumomvang van de vertaling, die wordt gebruikt om dimensies van de gerenderde tekst te berekenen, heeft lettertypen nodig die zijn geladen in Weblate en zijn geselecteerd met een vlag voor de vertaling (bekijk Gedrag aanpassen met vlaggen).
Het gereedschap voor het beheren van lettertypen in Weblate Lettertypen in het menu Bewerkingen van uw vertaalproject verschaft de interface voor het uploaden en beheren van lettertypen. Lettertypen TrueType of OpenType kunnen worden geüpload, groepen lettertypen kunnen worden ingesteld en die kunnen worden gebruikt in de controle.
De groepen voor lettertypen stellen u in staat verschillende lettertypen te definiëren voor verschillende talen, wat gewoonlijk nodig is voor niet-Latijnse talen:
De groepen lettertypen worden geïdentificeerd op naam, die geen witruimte of speciale tekens mag bevatten, zodat het gemakkelijk kan worden gebruikt in de definitie van de controle:
Familie en stijl van lettertype worden automatisch herkend na het uploaden ervan:
U mag een aantal lettertypen hebben geladen in Weblate:
Geef het, om de lettertypen te gebruiken voor het controleren van de lengte van de tekenreeks, de toepasselijke vlaggen (bekijk Gedrag aanpassen met vlaggen). U zult waarschijnlijk de volgende nodig hebben:
max-size:500/max-size:300:5Definieert de maximale breedte in pixels en, optioneel, het maximum aantal regels (tekstterugloop wordt toegepast).
font-family:ubuntuDefinieert de groep van het lettertype door zijn identificatie te specificeren.
font-size:22Definieert de grootte van het lettertype in pixels.
Eigen controles schrijven¶
Een breed scala aan kwaliteitscontroles is ingebouwd, (bekijk Kwaliteitscontroles), hoewel zij misschien niet alles afdekken wat u wilt controleren. De lijst met uitgevoerde controles kan worden aangepast met CHECK_LIST, en u kunt ook aangepaste controles toevoegen.
Subklasseer de weblate.checks.Check
Stel een paar attributen in.
Implementeer ofwel de methode
check(als u meervouden wilt afhandelen in uw code) of de methodecheck_single(die het voor u doet).
Enkele voorbeelden:
Verschaf, om aangepaste controles te installeren, een volledig gekwalificeerd pad naar de klasse van Python in de CHECK_LIST, bekijk Aangepaste controles voor kwaliteit, add-ons, automatische suggesties en automatisch repareren.
Controleren of de vertaalde tekst niet “foo” bevat¶
Dit is een vrij eenvoudige controle die slechts controleert of in de vertaling de tekenreeks “foo” ontbreekt.
"""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
Controleren dat Tsjechische meervouden in de vertaalde tekst verschillen¶
Controleren met informatie voor de taal om te verifiëren of de twee meervouden in de Tsjechische taal niet hetzelfde zijn.
"""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