Help:Extension:Translate/Validators/cs

Překládané řetězce často obsahují značky, které chceme u překladu zachovat tak, jak jsou. Zápis takových značek do překladu může být pro překladatele problematický, obzvláště, pokud se při něm pracuje se speciálními znaky, které nejsou moc běžné. Proto se při značkování používají zástupné elementy, které pak v překladatelském rozhraní nabízí tlačítka, po jejichž stisknutí se na aktuální pozici kurzoru vloží do překládané zprávy zástupný prvek. Pokud se takový zástupný element do překladu nevloží, může na to rozšíření překladatele upozornit, nebo dokonce může jeho překlad odmítnout, je-li kód zástupného elementu nezbytný pro to, aby se překlad zobrazoval správně.

Kupříkladu následující řetězec "Adapted by %{name} from a work by %{original}" bude vyžadovat hned dva zástupné elementy. Pro řetězce  a. Pokud by je překladatel do překladu nevložil, tak by se přeložená zpráva nezobrazovala správně.

Proto existuje komponenta  která pomáhá překladatelům tím, že ověřuje překlady. Pracuje při tom s tzv. validátory, které se aplikují na překlad ještě před uložením. Pokud nevyhoví jejich nastavení, překladatele upozorní nebo rovnou oznámí chybu. Je-li oznámeno pouze varování, překlad se uloží, ale při ohlášené chybě ne. Jedině uživatel, který má právo  může uložit i překlad ve kterém je chyba.

Konfigurační soubor validátoru identifikuje řetězce na základě regulárního výrazu. Proto nesmí chybět. Validátor z něj může vygenerovat zástupný element, který se pak zobrazí jako tlačítko v překladatelském rozhraní, přes které se dá do překladu vložit.

Můžete si vytvořit i vlastní validátory, pokud potřebujete mít více specializované ověřování.

Konfigurace
Takto vypadá kompletní konfigurace validátoru:

K výše uvedenému příkladu:


 * 1)   je validátor dodávaný v rámci instalace, jehož regulární výraz si můžete upravit, tak aby vyhovoval vašim požadavkům na ověřování.
 * 2)   je třída, která ověřuje řetězec podle vlastních pravidel.
 * 3)   je další validátor, který je součástí instalace.

je pole. Parametry, které se v rámci tohoto pole použijí, jsou klíče zastupující jednotlivé položky.

Předpřipravené / Dodávané validátory
Toto je přehled validátorů, které jsou již předpřipravené

BraceBalance
ID:

Zajišťuje, že počet otevřených závorek / závorek odpovídá počtu uzavřených závorek / závorek v překladu.

Prošly by například následující překlady:



přičemž následující by se nezdařilo:



Tento validátor nelze označit jako vložitelný.

EscapeCharacter
ID:

Validátor zajišťuje, že v překladu je přítomen pouze zadaný znak escape.

Povolené znaky escape lze zadat při přidávání validátoru a mohou obsahovat pouze:



Tento validátor nelze vložit.

GettextNewline
ID:

Funguje speciálně pro skupiny zpráv založených na GetText.

Zajišťuje, že překlad má na začátku a na konci řetězce stejný počet nových řádků jako zdrojová zpráva.

GettextPlural
ID:

Funguje konkrétně na skupinách zpráv založených na GetText.

Zajišťuje, že pokud zdroj / definice obsahuje množné číslo ve formátu -, překlad jej musí obsahovat také. Na základě jazyka se také kontroluje, zda má překlad správný počet tvarů množného čísla. Například angličtina má dva, ale hebrejština čtyři.

InsertableRegex
ID:

Obecný opakovaně použitelný validátor, který lze použít ke specifikaci vlastních validací a vložitelných položek.

Vezměte například následující konfiguraci, kde je validátor označen jako vložitelný a vynucený:

Vzhledem k následující zdrojové zprávě – ''Hello $name. My name is $myName., která se překládá, musí mít překlad parametry – $name a $myName''. Budou také zobrazeny jako vložené položky, aby je překladatelé mohli snáze použít v překladu. Absence těchto parametrů způsobí, že se v překladači zobrazí chyba.

InsertableRubyVariable
ID:

Toto je validátor, který odpovídá rubínovým proměnným v překladech. Interně rozšiřuje  a používá následující regulární výraz -. Tento validátor je vložitelný.

Příklad:

IosVariable
ID:

Vložitelný validátor proměnných pro IOS. Regex se používá odtud. Tento validátor je vložitelný.

Příklad:

MatchSet
ID:

Zajistí, že překlad je přítomen v seznamu hodnot. Také přebírá parametr –, který může být buď true (výchozí) nebo false.

Například v následující konfiguraci validátor ověří zprávu pomocí klíče -  a zajistí, že hodnoty pro ni mohou být buď ltr nebo rtl. Všimněte si, že LTR nebo RTL nebudou platné hodnoty, protože  je ve výchozím nastavení true.

MediaWikiLink
ID:

Zkontroluje, zda překlad používá odkazy, které jsou odrazovány. Platné odkazy jsou ty, které odkazují na Speciální: stránky,  nebo projektové stránky prostřednictvím zpráv MediaWiki jako je. Takže odkazy v definici jsou povoleny.

MediaWikiPageName
ID:

Zajišťuje, že pokud zdroj / definice obsahuje jmenný prostor, jako je, provedené překlady se nepokusí přeložit samotné jmenné prostory.

MediaWikiParameter
ID:

Toto je validátor, který odpovídá parametrům wiki v překladech. Interně rozšiřuje  a používá následující regulární výraz -. Tento validátor je vložitelný.

Příklad: ,.

MediaWikiPlural
ID:

Ensures that if the source / definition contains a, the translation should also have it. It can also be used as an insertable. Based on the language this also checks if the translation has the correct number of plural forms. For example, English has two, but Hebrew has three.

MediaWikiTimeList
ID:

Provides validations for expiry options and IP block options specified in the MediaWiki core. These are usually in the format,

The validations ensure that the translations have the exact same number of key-value pairs. These validations are run only on messages with keys,


 * 1) protect-expiry-options
 * 2) ipboptions

Newline
ID:

Ensures that the translation has the same number of newlines as the source / definition message at the beginning of the string. This validator is not insertable.

NotEmpty
ID:

Ensures that the translation has some content, and that content is not just whitespace. This validator is not insertable.

NumericalParameter
ID:

This validator matches numerical parameters by using the following regex:. This validator is insertable.

Example: ,  etc.

Printf
ID:

This validator checks for missing and unknown printf formatting characters in translations. This validator is insertable.

Example: ,  etc.

PythonInterpolation
ID:

This validator matches python string interpolation variables by using the following regex:. This validator is insertable.

Example: ,

Replacement
ID:

Checks if a translation is using the  string, and instead suggests the translator to use the string mentioned under. This validator is not insertable.

SmartFormatPlural
ID:

This works specifically on SmartFormat based message groups.

Ensures that if the source / definition contains a plural in the format -, the translation must contain it as well. Based on the language this also checks if the translation has the correct number of plural forms. For example, English has two, but Hebrew has four.

UnicodePlural
ID:

Ensures that if the source / definition contains a plural in the format -, the translation must contain it as well. Based on the language this also checks if the translation has the correct number of plural forms. For example, English has two, but Hebrew has three.

User interface
The user interface has been updated to differentiate between errors and warnings.

During translation, if an error is noticed with the translation, the Save translation button is disabled unless the user who is translating has  permission.

Additionally validation is also done on the server when the user is saving the translation. This will still allow users who have the  permission to save the translation even if it has errors.

Custom validators
Certain complicated validations might still require a custom validator to be written. Custom validators must implement the  interface.

Below is an example of a custom validator,

Also see the following classes,


 * 1)   - https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/Translate/+/master/src/Validation/ValidationIssues.php
 * 2)   - https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/Translate/+/master/src/Validation/ValidationIssue.php

The add the custom validator in the configuration file,