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:

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-text

A 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-text

A szöveget Bulletin Board Code (BBCode) dokumentumként kezeli, hatással van a Változatlan fordítás ellenőrzésre.

dos-eol

DOS sorvégi jeleket használ Unix helyett (\r\n a \n helyett).

read-only

A szöveg csak olvasható, nem szerkeszthető Weblate-ben, lásd: Csak olvasható szövegek.

terminology

Haszná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-only jelzővel kombinálva.

priority:N

A 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:N

Korlátozza a szöveg maximális hosszát N karakterre, lásd: Fordítás maximális hossza.

xml-text

A szöveget XML-dokumentumként kezeli, hatással van az XML szintaxis és XML jelölő ellenőrzésekre.

font-family:NAME

Betűtípus-család meghatározása a megjelenítési ellenőrzésekhez, lásd: Betűtípusok kezelése.

font-weight:WEIGHT

Betűvastagság meghatározása a megjelenítési ellenőrzésekhez, lásd: Betűtípusok kezelése.

font-size:SIZE

Betűméret meghatározása a megjelenítési ellenőrzésekhez, lásd: Betűtípusok kezelése.

font-spacing:SPACING

Betű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:FLAGS

Jelzők megadása a ICU-üzenetformátum minőség-ellenőrzés viselkedésének testreszabásához.

icu-tag-prefix:PREFIX

Kö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:SOURCE

A szöveg megjelölése olyan változatként, amely egy egyező forrásszöveg változata, lásd: Szövegváltozatok.

regex:REGEX

Reguláris kifejezés megadása a fordítás egyeztetéséhez, lásd: Reguláris kifejezés.

discard:NAME

Magasabb szinten definiált jelzők elvetése.

forbidden

Tiltott fordítás jelzése egy szójegyzékben, lásd: Tiltott fordítások.

strict-same

A Változatlan fordítás ellenőrzésnél a beépített szó-kivétellisták használatának mellőzése.

strict-format

A 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-glossary

A Nem követi a szójegyzéket minőség-ellenőrzés engedélyezése.

angularjs-format

A AngularJS-helyettesítési szöveg minőség-ellenőrzés engedélyezése.

c-format

A C formátum minőség-ellenőrzés engedélyezése.

c-sharp-format

A C# formátum minőség-ellenőrzés engedélyezése.

es-format

A ECMAScript sablonszövegek minőség-ellenőrzés engedélyezése.

i18next-interpolation

A i18next-helyettesítés minőség-ellenőrzés engedélyezése.

icu-message-format

A ICU-üzenetformátum minőség-ellenőrzés engedélyezése.

java-printf-format

A Java formátum minőség-ellenőrzés engedélyezése.

java-format

A Java-üzenetformátum minőség-ellenőrzés engedélyezése.

javascript-format

A JavaScript formátum minőség-ellenőrzés engedélyezése.

lua-format

A Lua formátum minőség-ellenőrzés engedélyezése.

object-pascal-format

A Object Pascal formátum minőség-ellenőrzés engedélyezése.

percent-placeholders

A Százalékos helyettesítők minőség-ellenőrzés engedélyezése.

perl-brace-format

A Perl kapcsos zárójeles formátum minőség-ellenőrzés engedélyezése.

perl-format

A Perl formátum minőség-ellenőrzés engedélyezése.

php-format

A PHP formátum minőség-ellenőrzés engedélyezése.

python-brace-format

A Python kapcsos zárójeles formátum minőség-ellenőrzés engedélyezése.

python-format

A Python formátum minőség-ellenőrzés engedélyezése.

qt-format

A Qt formátum minőség-ellenőrzés engedélyezése.

qt-plural-format

A Qt többes szám formátum minőség-ellenőrzés engedélyezése.

ruby-format

A Ruby formátum minőség-ellenőrzés engedélyezése.

scheme-format

A Scheme formátum minőség-ellenőrzés engedélyezése.

vue-format

A Vue I18n formázás minőség-ellenőrzés engedélyezése.

md-text

A 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-insensitive

Az 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-html

A Nem biztonságos HTML minőség-ellenőrzés engedélyezése.

url

A szövegnek kizárólag URL-ből kell állnia. Engedélyezi a URL minőség-ellenőrzést.

ignore-all-checks

Minden minőség-ellenőrzés figyelmen kívül hagyása.

fluent-source-inner-html

A Fluent-forrás – belső HTML minőség-ellenőrzés engedélyezése.

fluent-source-syntax

A Fluent forrásszintaxis minőség-ellenőrzés engedélyezése.

icu-message-format

A ICU üzenetformátum szintaxis minőség-ellenőrzés engedélyezése.

ignore-bbcode

A BBCode jelölés minőség-ellenőrzés kihagyása.

ignore-duplicate

Az Egymás utáni ismétlődő szavak minőség-ellenőrzés kihagyása.

ignore-check-glossary

A Nem követi a szójegyzéket minőség-ellenőrzés kihagyása.

ignore-double-space

A Dupla szóköz minőség-ellenőrzés kihagyása.

ignore-fluent-parts

A Fluent-részek minőség-ellenőrzés kihagyása.

ignore-fluent-references

A Fluent-hivatkozások minőség-ellenőrzés kihagyása.

ignore-fluent-target-inner-html

A Fluent-fordítás belső HTML minőség-ellenőrzés kihagyása.

ignore-fluent-target-syntax

A Fluent-fordítás szintaxisa minőség-ellenőrzés kihagyása.

ignore-angularjs-format

A AngularJS-helyettesítési szöveg minőség-ellenőrzés kihagyása.

ignore-automattic-components-format

Az Automattic-összetevők formázása minőség-ellenőrzés kihagyása.

ignore-c-format

A C formátum minőség-ellenőrzés kihagyása.

ignore-c-sharp-format

A C# formátum minőség-ellenőrzés kihagyása.

ignore-es-format

A ECMAScript sablonszövegek minőség-ellenőrzés kihagyása.

ignore-i18next-interpolation

A i18next-helyettesítés minőség-ellenőrzés kihagyása.

ignore-icu-message-format

A ICU-üzenetformátum minőség-ellenőrzés kihagyása.

ignore-java-printf-format

A Java formátum minőség-ellenőrzés kihagyása.

ignore-java-format

A Java-üzenetformátum minőség-ellenőrzés kihagyása.

ignore-javascript-format

A JavaScript formátum minőség-ellenőrzés kihagyása.

ignore-lua-format

A Lua formátum minőség-ellenőrzés kihagyása.

ignore-object-pascal-format

A Object Pascal formátum minőség-ellenőrzés kihagyása.

ignore-percent-placeholders

A Százalékos helyettesítők minőség-ellenőrzés kihagyása.

ignore-perl-brace-format

A Perl kapcsos zárójeles formátum minőség-ellenőrzés kihagyása.

ignore-perl-format

A Perl formátum minőség-ellenőrzés kihagyása.

ignore-php-format

A PHP formátum minőség-ellenőrzés kihagyása.

ignore-python-brace-format

A Python kapcsos zárójeles formátum minőség-ellenőrzés kihagyása.

ignore-python-format

A Python formátum minőség-ellenőrzés kihagyása.

ignore-qt-format

A Qt formátum minőség-ellenőrzés kihagyása.

ignore-qt-plural-format

A Qt többes szám formátum minőség-ellenőrzés kihagyása.

ignore-ruby-format

A Ruby formátum minőség-ellenőrzés kihagyása.

ignore-scheme-format

A Scheme formátum minőség-ellenőrzés kihagyása.

ignore-vue-format

A Vue I18n formázás minőség-ellenőrzés kihagyása.

ignore-translated

A Már le lett fordítva minőség-ellenőrzés kihagyása.

ignore-inconsistent

A Nem egységes minőség-ellenőrzés kihagyása.

ignore-rst-references

A Nem egységes reStructuredText hivatkozások minőség-ellenőrzés kihagyása.

ignore-kashida

A Kashida karakter használata minőség-ellenőrzés kihagyása.

ignore-md-link

A Markdown hivatkozások minőség-ellenőrzés kihagyása.

ignore-md-reflink

A Markdown hivatkozási címkék minőség-ellenőrzés kihagyása.

ignore-md-syntax

A Markdown szintaxis minőség-ellenőrzés kihagyása.

ignore-max-length

A Fordítás maximális hossza minőség-ellenőrzés kihagyása.

ignore-max-size

A Fordítás maximális mérete minőség-ellenőrzés kihagyása.

ignore-escaped-newline

A Eltérő \n-karakterek minőség-ellenőrzés kihagyása.

ignore-end-colon

Az Eltérő kettőspont minőség-ellenőrzés kihagyása.

ignore-end-ellipsis

A Eltérő hármaspont minőség-ellenőrzés kihagyása.

ignore-end-exclamation

A Eltérő felkiáltójel minőség-ellenőrzés kihagyása.

ignore-end-stop

Az Eltérő mondatvégi pont minőség-ellenőrzés kihagyása.

ignore-end-interrobang

A Eltérő felkiáltójel–kérdőjel kombináció minőség-ellenőrzés kihagyása.

ignore-end-question

A Eltérő kérdőjel minőség-ellenőrzés kihagyása.

ignore-end-semicolon

A Eltérő pontosvessző minőség-ellenőrzés kihagyása.

ignore-newline-count

A Eltérő sortörések minőség-ellenőrzés kihagyása.

ignore-plurals

A Hiányzó többes számú alakok minőség-ellenőrzés kihagyása.

ignore-kabyle-characters

A Nem szabványos karakterek a kabil nyelvben minőség-ellenőrzés kihagyása.

ignore-placeholders

A Helyettesítők minőség-ellenőrzés kihagyása.

ignore-prohibited-initial-character

A Tiltott kezdőkarakter minőség-ellenőrzés kihagyása.

ignore-punctuation-spacing

Az Írásjel térköze minőség-ellenőrzés kihagyása.

ignore-regex

A Reguláris kifejezés minőség-ellenőrzés kihagyása.

ignore-rst-syntax

A reStructuredText szintaxis hiba minőség-ellenőrzés kihagyása.

ignore-reused

Az Újrahasznált fordítás minőség-ellenőrzés kihagyása.

ignore-same-plurals

A Ugyanaz a többes szám minőség-ellenőrzés kihagyása.

ignore-begin-newline

A Kezdő soremelés minőség-ellenőrzés kihagyása.

ignore-begin-space

A Kezdő szóközök minőség-ellenőrzés kihagyása.

ignore-end-newline

A Lezáró soremelés minőség-ellenőrzés kihagyása.

ignore-end-space

A Lezáró szóköz minőség-ellenőrzés kihagyása.

ignore-same

A Változatlan fordítás minőség-ellenőrzés kihagyása.

ignore-safe-html

A Nem biztonságos HTML minőség-ellenőrzés kihagyása.

ignore-url

A URL minőség-ellenőrzés kihagyása.

ignore-xml-tags

Az XML jelölő minőség-ellenőrzés kihagyása.

ignore-xml-invalid

Az XML szintaxis minőség-ellenőrzés kihagyása.

ignore-zero-width-space

A Nulla szélességű szóköz minőség-ellenőrzés kihagyása.

ignore-ellipsis

A Hármaspont minőség-ellenőrzés kihagyása.

ignore-fluent-source-inner-html

A Fluent-forrás – belső HTML minőség-ellenőrzés kihagyása.

ignore-fluent-source-syntax

A Fluent forrásszintaxis minőség-ellenőrzés kihagyása.

ignore-icu-message-format

A ICU üzenetformátum szintaxis minőség-ellenőrzés kihagyása.

ignore-long-untranslated

A Régóta lefordítatlan minőség-ellenőrzés kihagyása.

ignore-multiple-failures

A Több sikertelen ellenőrzés minőség-ellenőrzés kihagyása.

ignore-unnamed-format

A Több névtelen változó minőség-ellenőrzés kihagyása.

ignore-optional-plural

A 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:

../_images/font-group-edit.webp

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:

../_images/font-group-list.webp

A betűtípus-család és a stílus automatikusan felismerésre kerül a feltöltés után:

../_images/font-edit.webp

Több betűtípus is betölthető a Weblate-be:

../_images/font-list.webp

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:5

Maximális szélesség pixelben, és opcionálisan a maximális sorok száma (szövegtördelés figyelembevételével).

font-family:ubuntu

A használandó betűcsoport azonosítójának megadása.

font-size:22

A 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.

  1. Ehhez származtasson egy osztályt a weblate.checks.Check osztályból

  2. Állítson be néhány attribútumot.

  3. Valósítsa meg vagy a check metódust (ha a többes számok kezelését is saját kódban szeretné végezni) vagy a check_single metó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