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:

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 Inconsistent reStructuredText 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 Inconsistent reStructuredText 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.

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 .md or .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:

../_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: 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