Ellenőrzések és javítások¶
Egyéni automatikus javítások¶
A meglévő automatikus javítások mellett sajátot is készíthet, és hozzáadhatja az AUTOFIX_LIST beállításhoz.
Az automatikus javítások hatékonyak, de károkat is okozhatnak, ezért körültekintően kell őket megírni.
Például az alábbi automatikus javítás minden fordításban kicseréli a foo szöveget bar szövegre:
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
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
Egyedi ellenőrzések telepítéséhez adja meg a Python osztály teljes elérési útját az AUTOFIX_LIST beállításban, részletek: Egyedi minőség-ellenőrzések, kiegészítők és automatikus javítások.
Viselkedés testreszabása jelzők használatával¶
A Weblate viselkedése finomhangolható jelzők segítségével. A jelzők vizuális visszajelzést adnak a fordítóknak, és segítik őket a fordítások minőségének javításában. A jelzők az alábbi forrásokból származhatnak:
Forrásszöveghez tartozó további jelzők:
További információk a forrásszövegekről részletezi a kézi szerkesztést.
Tömeges szerkesztés segítségével tömegesen alkalmazhatók jelzők.
A Tömeges szerkesztés kiegészítő automatikusan is alkalmazhat jelzőket.
Egyes szövegekhez tartozó jelzők, amelyeket a fájlformátumból nyer ki a rendszer, lásd: Fordítási fájlformátumok.
Fordítási jelzők (jelenleg csak a
read-onlyjelző kétnyelvű forrásszöveg esetén).Fájlformátum-specifikus jelzők.
A jelzők vesszővel elválasztva jelennek meg; ha paraméterezettek, akkor kettősponttal választjuk el őket. Szóközök vagy speciális karakterek megadásához idézőjeleket lehet használni. Például:
placeholders:"special:value":"other value", regex:.*
Mind az egyszeres (» «), mind a dupla (” „) idézőjelek elfogadottak, a speciális karaktereket visszaperrel kell kimenekíteni:
placeholders:"quoted \"string\"":'single \'quoted\''
placeholders:r"^#*"
Például, hogy ellenőrizzük, a fordítók nem módosították-e egy Markdown-dokumentum fejlécét. Sikertelen ellenőrzés történik, ha a ### Index szöveget például # Indice fordítják.
placeholders:r"\]\([^h].*?\)"
Vagy például annak biztosítására, hogy belső hivatkozások ne legyenek lefordítva (tehát a [test](../checks) ne váljon [test](../chequeos) alakra).
A magasabb szinten definiált jelzők felülírhatók a discard:NAME szintaxis használatával. Például, ha egy összetevőn a safe-html jelző aktív, akkor a szövegspecifikus jelzőkben discard:safe-html megadásával kihagyható az adott szövegre vonatkozóan.
Jelenleg az alábbi jelzők használhatók:
rst-textA szöveget reStructuredText dokumentumként kezeli, ez hatással van a Változatlan fordítás ellenőrzésre. Engedélyezi a reStructuredText szintaxis hiba és Nem egységes reStructuredText hivatkozások ellenőrzéseket is.
bbcode-textA szöveget Bulletin Board Code (BBCode) dokumentumként kezeli, hatással van a Változatlan fordítás ellenőrzésre.
dos-eolDOS sorvégi jeleket használ Unix helyett (
\r\na\nhelyett).read-onlyA szöveg csak olvasható, nem szerkeszthető Weblate-ben, lásd: Csak olvasható szövegek.
terminologyHasználat a Szójegyzék esetén. A szöveget automatikusan átmásolja minden szójegyzék-nyelvre, így következetesen használható a fordításokban. Különösen hasznos például terméknevek esetén a
read-onlyjelzővel kombinálva.priority:NA szöveg prioritása. A magasabb prioritású szövegek jelennek meg először fordításra. Az alapértelmezett prioritás értéke 100; minél magasabb a prioritás, annál hamarabb kínálja fel a rendszer fordításra a szöveget.
max-length:NKorlátozza a szöveg maximális hosszát N karakterre, lásd: Fordítás maximális hossza.
xml-textA szöveget XML-dokumentumként kezeli, hatással van az XML szintaxis és XML jelölő ellenőrzésekre.
font-family:NAMEBetűtípus-család meghatározása a megjelenítési ellenőrzésekhez, lásd: Betűtípusok kezelése.
font-weight:WEIGHTBetűvastagság meghatározása a megjelenítési ellenőrzésekhez, lásd: Betűtípusok kezelése.
font-size:SIZEBetűméret meghatározása a megjelenítési ellenőrzésekhez, lásd: Betűtípusok kezelése.
font-spacing:SPACINGBetűk közötti térköz meghatározása a megjelenítési ellenőrzésekhez, lásd: Betűtípusok kezelése.
icu-flags:FLAGSJelzők megadása a ICU-üzenetformátum minőség-ellenőrzés viselkedésének testreszabásához.
icu-tag-prefix:PREFIXKötelező előtag beállítása XML-címkékhez a ICU-üzenetformátum minőség-ellenőrzéshez.
placeholders:NAME:NAME2:...A fordításban elvárt helyettesítő szövegek megadása, lásd: Helyettesítők.
replacements:FROM:TO:FROM2:TO2...Csereértékek megadása az eredményül kapott szövegparaméterek ellenőrzésekor (például a Fordítás maximális mérete vagy Fordítás maximális hossza ellenőrzéseknél). Tipikus használati példa: helykitöltők bővítése annak érdekében, hogy a szöveg hosszabb értékek mellett is illeszkedjen, például:
replacements:%s:\"John Doe\".variants:SOURCEA szöveg megjelölése olyan változatként, amely egy egyező forrásszöveg változata, lásd: Szövegváltozatok.
regex:REGEXReguláris kifejezés megadása a fordítás egyeztetéséhez, lásd: Reguláris kifejezés.
discard:NAMEMagasabb szinten definiált jelzők elvetése.
forbiddenTiltott fordítás jelzése egy szójegyzékben, lásd: Tiltott fordítások.
strict-sameA Változatlan fordítás ellenőrzésnél a beépített szó-kivétellisták használatának mellőzése.
strict-formatA formátumellenőrzések szigorú érvényesítése, még olyan többes számú alakok esetén is, ahol csak egy érték szerepel, lásd: Formázott szövegek.
check-glossaryA Nem követi a szójegyzéket minőség-ellenőrzés engedélyezése.
angularjs-formatA AngularJS-helyettesítési szöveg minőség-ellenőrzés engedélyezése.
c-formatA C formátum minőség-ellenőrzés engedélyezése.
c-sharp-formatA C# formátum minőség-ellenőrzés engedélyezése.
es-formatA ECMAScript sablonszövegek minőség-ellenőrzés engedélyezése.
i18next-interpolationA i18next-helyettesítés minőség-ellenőrzés engedélyezése.
icu-message-formatA ICU-üzenetformátum minőség-ellenőrzés engedélyezése.
java-printf-formatA Java formátum minőség-ellenőrzés engedélyezése.
java-formatA Java-üzenetformátum minőség-ellenőrzés engedélyezése.
javascript-formatA JavaScript formátum minőség-ellenőrzés engedélyezése.
lua-formatA Lua formátum minőség-ellenőrzés engedélyezése.
object-pascal-formatA Object Pascal formátum minőség-ellenőrzés engedélyezése.
percent-placeholdersA Százalékos helyettesítők minőség-ellenőrzés engedélyezése.
perl-brace-formatA Perl kapcsos zárójeles formátum minőség-ellenőrzés engedélyezése.
perl-formatA Perl formátum minőség-ellenőrzés engedélyezése.
php-formatA PHP formátum minőség-ellenőrzés engedélyezése.
python-brace-formatA Python kapcsos zárójeles formátum minőség-ellenőrzés engedélyezése.
python-formatA Python formátum minőség-ellenőrzés engedélyezése.
qt-formatA Qt formátum minőség-ellenőrzés engedélyezése.
qt-plural-formatA Qt többes szám formátum minőség-ellenőrzés engedélyezése.
ruby-formatA Ruby formátum minőség-ellenőrzés engedélyezése.
scheme-formatA Scheme formátum minőség-ellenőrzés engedélyezése.
vue-formatA Vue I18n formázás minőség-ellenőrzés engedélyezése.
md-textA szöveget Markdown-dokumentumként kezeli, és Markdown szintaxiskiemelést biztosít a fordítási szövegmezőben. Engedélyezi a következő minőség-ellenőrzéseket: Markdown hivatkozások, Markdown hivatkozási címkék, és Markdown szintaxis.
case-insensitiveAz ellenőrzések viselkedését kis- és nagybetűk figyelmen kívül hagyására állítja. Jelenleg csak a Helyettesítők minőség-ellenőrzést érinti.
safe-htmlA Nem biztonságos HTML minőség-ellenőrzés engedélyezése.
urlA szövegnek kizárólag URL-ből kell állnia. Engedélyezi a URL minőség-ellenőrzést.
ignore-all-checksMinden minőség-ellenőrzés figyelmen kívül hagyása.
fluent-source-inner-htmlA Fluent-forrás – belső HTML minőség-ellenőrzés engedélyezése.
fluent-source-syntaxA Fluent forrásszintaxis minőség-ellenőrzés engedélyezése.
icu-message-formatA ICU üzenetformátum szintaxis minőség-ellenőrzés engedélyezése.
ignore-bbcodeA BBCode jelölés minőség-ellenőrzés kihagyása.
ignore-duplicateAz Egymás utáni ismétlődő szavak minőség-ellenőrzés kihagyása.
ignore-check-glossaryA Nem követi a szójegyzéket minőség-ellenőrzés kihagyása.
ignore-double-spaceA Dupla szóköz minőség-ellenőrzés kihagyása.
ignore-fluent-partsA Fluent-részek minőség-ellenőrzés kihagyása.
ignore-fluent-referencesA Fluent-hivatkozások minőség-ellenőrzés kihagyása.
ignore-fluent-target-inner-htmlA Fluent-fordítás belső HTML minőség-ellenőrzés kihagyása.
ignore-fluent-target-syntaxA Fluent-fordítás szintaxisa minőség-ellenőrzés kihagyása.
ignore-angularjs-formatA AngularJS-helyettesítési szöveg minőség-ellenőrzés kihagyása.
ignore-automattic-components-formatAz Automattic-összetevők formázása minőség-ellenőrzés kihagyása.
ignore-c-formatA C formátum minőség-ellenőrzés kihagyása.
ignore-c-sharp-formatA C# formátum minőség-ellenőrzés kihagyása.
ignore-es-formatA ECMAScript sablonszövegek minőség-ellenőrzés kihagyása.
ignore-i18next-interpolationA i18next-helyettesítés minőség-ellenőrzés kihagyása.
ignore-icu-message-formatA ICU-üzenetformátum minőség-ellenőrzés kihagyása.
ignore-java-printf-formatA Java formátum minőség-ellenőrzés kihagyása.
ignore-java-formatA Java-üzenetformátum minőség-ellenőrzés kihagyása.
ignore-javascript-formatA JavaScript formátum minőség-ellenőrzés kihagyása.
ignore-lua-formatA Lua formátum minőség-ellenőrzés kihagyása.
ignore-object-pascal-formatA Object Pascal formátum minőség-ellenőrzés kihagyása.
ignore-percent-placeholdersA Százalékos helyettesítők minőség-ellenőrzés kihagyása.
ignore-perl-brace-formatA Perl kapcsos zárójeles formátum minőség-ellenőrzés kihagyása.
ignore-perl-formatA Perl formátum minőség-ellenőrzés kihagyása.
ignore-php-formatA PHP formátum minőség-ellenőrzés kihagyása.
ignore-python-brace-formatA Python kapcsos zárójeles formátum minőség-ellenőrzés kihagyása.
ignore-python-formatA Python formátum minőség-ellenőrzés kihagyása.
ignore-qt-formatA Qt formátum minőség-ellenőrzés kihagyása.
ignore-qt-plural-formatA Qt többes szám formátum minőség-ellenőrzés kihagyása.
ignore-ruby-formatA Ruby formátum minőség-ellenőrzés kihagyása.
ignore-scheme-formatA Scheme formátum minőség-ellenőrzés kihagyása.
ignore-vue-formatA Vue I18n formázás minőség-ellenőrzés kihagyása.
ignore-translatedA Már le lett fordítva minőség-ellenőrzés kihagyása.
ignore-inconsistentA Nem egységes minőség-ellenőrzés kihagyása.
ignore-rst-referencesA Nem egységes reStructuredText hivatkozások minőség-ellenőrzés kihagyása.
ignore-kashidaA Kashida karakter használata minőség-ellenőrzés kihagyása.
ignore-md-linkA Markdown hivatkozások minőség-ellenőrzés kihagyása.
ignore-md-reflinkA Markdown hivatkozási címkék minőség-ellenőrzés kihagyása.
ignore-md-syntaxA Markdown szintaxis minőség-ellenőrzés kihagyása.
ignore-max-lengthA Fordítás maximális hossza minőség-ellenőrzés kihagyása.
ignore-max-sizeA Fordítás maximális mérete minőség-ellenőrzés kihagyása.
ignore-escaped-newlineA Eltérő \n-karakterek minőség-ellenőrzés kihagyása.
ignore-end-colonAz Eltérő kettőspont minőség-ellenőrzés kihagyása.
ignore-end-ellipsisA Eltérő hármaspont minőség-ellenőrzés kihagyása.
ignore-end-exclamationA Eltérő felkiáltójel minőség-ellenőrzés kihagyása.
ignore-end-stopAz Eltérő mondatvégi pont minőség-ellenőrzés kihagyása.
ignore-end-interrobangA Eltérő felkiáltójel–kérdőjel kombináció minőség-ellenőrzés kihagyása.
ignore-end-questionA Eltérő kérdőjel minőség-ellenőrzés kihagyása.
ignore-end-semicolonA Eltérő pontosvessző minőség-ellenőrzés kihagyása.
ignore-newline-countA Eltérő sortörések minőség-ellenőrzés kihagyása.
ignore-pluralsA Hiányzó többes számú alakok minőség-ellenőrzés kihagyása.
ignore-kabyle-charactersA Nem szabványos karakterek a kabil nyelvben minőség-ellenőrzés kihagyása.
ignore-placeholdersA Helyettesítők minőség-ellenőrzés kihagyása.
ignore-prohibited-initial-characterA Tiltott kezdőkarakter minőség-ellenőrzés kihagyása.
ignore-punctuation-spacingAz Írásjel térköze minőség-ellenőrzés kihagyása.
ignore-regexA Reguláris kifejezés minőség-ellenőrzés kihagyása.
ignore-rst-syntaxA reStructuredText szintaxis hiba minőség-ellenőrzés kihagyása.
ignore-reusedAz Újrahasznált fordítás minőség-ellenőrzés kihagyása.
ignore-same-pluralsA Ugyanaz a többes szám minőség-ellenőrzés kihagyása.
ignore-begin-newlineA Kezdő soremelés minőség-ellenőrzés kihagyása.
ignore-begin-spaceA Kezdő szóközök minőség-ellenőrzés kihagyása.
ignore-end-newlineA Lezáró soremelés minőség-ellenőrzés kihagyása.
ignore-end-spaceA Lezáró szóköz minőség-ellenőrzés kihagyása.
ignore-sameA Változatlan fordítás minőség-ellenőrzés kihagyása.
ignore-safe-htmlA Nem biztonságos HTML minőség-ellenőrzés kihagyása.
ignore-urlA URL minőség-ellenőrzés kihagyása.
ignore-xml-tagsAz XML jelölő minőség-ellenőrzés kihagyása.
ignore-xml-invalidAz XML szintaxis minőség-ellenőrzés kihagyása.
ignore-zero-width-spaceA Nulla szélességű szóköz minőség-ellenőrzés kihagyása.
ignore-ellipsisA Hármaspont minőség-ellenőrzés kihagyása.
ignore-fluent-source-inner-htmlA Fluent-forrás – belső HTML minőség-ellenőrzés kihagyása.
ignore-fluent-source-syntaxA Fluent forrásszintaxis minőség-ellenőrzés kihagyása.
ignore-icu-message-formatA ICU üzenetformátum szintaxis minőség-ellenőrzés kihagyása.
ignore-long-untranslatedA Régóta lefordítatlan minőség-ellenőrzés kihagyása.
ignore-multiple-failuresA Több sikertelen ellenőrzés minőség-ellenőrzés kihagyása.
ignore-unnamed-formatA Több névtelen változó minőség-ellenőrzés kihagyása.
ignore-optional-pluralA Többes szám nélküli minőség-ellenőrzés kihagyása.
Megjegyzés
Általánosan igaz, hogy bármely ellenőrzés esetében az ignore-* elnevezést kell használni az azonosító alapján, így ezt saját egyedi ellenőrzéseknél is alkalmazhatja.
Ezeket a jelzőket a összetevő beállításaiban, egyes forrásszöveg-beállításokban, valamint magában a fordítási fájlban is értelmezi a rendszer (például a GNU gettext esetében).
Ellenőrzések kötelezővé tétele¶
A Kényszerített ellenőrzések beállítás megadásával meghatározható, hogy mely ellenőrzéseket nem lehet figyelmen kívül hagyni az adott összetevőszinten. Az itt megadott ellenőrzések nem hagyhatók jóvá a felhasználói felületen, és az ezekben hibázó szövegek Szerkesztést igényel állapotúak lesznek (lásd: Fordítási állapotok).
Megjegyzés
Az ellenőrzések kötelezővé tétele önmagában még nem kapcsolja be őket. Az ellenőrzés aktiválásához hozzá kell adni a megfelelő jelzőt a szöveg vagy az összetevő jelzői közé.
Betűtípusok kezelése¶
Tipp
A Weblate-be feltöltött betűtípusok kizárólag a Fordítás maximális mérete ellenőrzéshez szükségesek, a Weblate felhasználói felületének megjelenését nem befolyásolják.
A Fordítás maximális mérete ellenőrzés, amely a megjelenített szöveg méretét számítja ki, megköveteli a megfelelő betűtípus betöltését a Weblate-be, és annak kiválasztását egy fordítási jelzőn keresztül (lásd: Viselkedés testreszabása jelzők használatával).
A Weblate Kezelés menüjében, a Betűtípusok alatt elérhető betűtípus-kezelő felület lehetőséget ad betűtípusok feltöltésére és kezelésére. TrueType vagy OpenType formátumú betűtípusok tölthetők fel, betűcsoportok hozhatók létre, és ezek használhatók az ellenőrzések során.
A betűcsoportok lehetővé teszik, hogy különböző nyelvekhez eltérő betűtípusokat rendeljen, ami jellemzően nem latin alapú nyelveknél szükséges:
A betűcsoportokat névvel kell azonosítani, amely nem tartalmazhat szóközt vagy speciális karaktert, hogy könnyen lehessen hivatkozni rájuk az ellenőrzésekben:
A betűtípus-család és a stílus automatikusan felismerésre kerül a feltöltés után:
Több betűtípus is betölthető a Weblate-be:
A szöveghossz ellenőrzéséhez a megfelelő jelzők segítségével kell beállítani a használandó betűtípust (lásd: Viselkedés testreszabása jelzők használatával). Általában az alábbi beállításokra lesz szükség:
max-size:500/max-size:300:5Maximális szélesség pixelben, és opcionálisan a maximális sorok száma (szövegtördelés figyelembevételével).
font-family:ubuntuA használandó betűcsoport azonosítójának megadása.
font-size:22A betűméret pixelben.
Egyedi ellenőrzések írása¶
Számos minőség-ellenőrzés be van építve (lásd: Minőség-ellenőrzések), de ezek nem feltétlenül fednek le minden egyedi igényt. Az elvégzett ellenőrzések listája a CHECK_LIST beállítással módosítható, és saját egyedi ellenőrzéseket is hozzá lehet adni.
Ehhez származtasson egy osztályt a weblate.checks.Check osztályból
Állítson be néhány attribútumot.
Valósítsa meg vagy a
checkmetódust (ha a többes számok kezelését is saját kódban szeretné végezni) vagy acheck_singlemetódust (ami ezt automatikusan elintézi).
Néhány példa:
Egyedi ellenőrzések telepítéséhez adja meg a Python osztály teljes elérési útját a CHECK_LIST beállításban, részletek: Egyedi minőség-ellenőrzések, kiegészítők és automatikus javítások.
Ellenőrzés: a fordítás szövege nem tartalmazhatja a „foo” karakterláncot¶
Ez egy egyszerű ellenőrzés, amely csak azt vizsgálja, hogy a fordításból hiányzik-e a „foo” szöveg.
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""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
Ellenőrzés: a cseh fordítás többes számai eltérnek-e¶
Ez az ellenőrzés nyelvi információ alapján ellenőrzi, hogy a cseh nyelv két többes számú alakja nem azonos-e.
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""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