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:
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: Custom quality checks, add-ons, automatic suggestions and auto-fixes.
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 Inconsistent reStructuredText 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 Inconsistent reStructuredText 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.
These flags are understood both in Összetevőkonfiguráció settings, per source string settings and in the translation file itself (for example in GNU gettext).
Location-based flags¶
Some flags are added to strings by default, based on their locations. This means that certain checks will be automatically enabled depending on where the string is used.
rst-text: This flag is automatically added to strings in reStructuredText files, if location extension is.rst.md-text: This flag is automatically added to strings in Markdown files, if location extension is.mdor.markdown.
Ellenőrzések kötelezővé tétele¶
The enforced checks cannot be dismissed and mark string as Needs editing (see Fordítási állapotok). This prevents translators from hiding such checks.
Tipp
Turning on check enforcing doesn’t enable it automatically. Some checks have to be turned on by adding the corresponding flag to the string or component flags.
This is best used with checks that can cause serious issues when used like checks for Formázott szövegek. Using for style checks like Változatlan fordítás is not recommended because dismissal is sometimes a reasonable approach in these.
The Commit Policy can then be used to exclude strings needing editing from being committed to the version control.
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).
Weblate font management tool in Fonts under the Operations menu of your translation project provides interface to upload and manage fonts. TrueType or OpenType fonts can be uploaded, set up font-groups and use those in the check.
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: Custom quality checks, add-ons, automatic suggestions and auto-fixes.
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.
"""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.
"""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