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:

Zajišťuje, že pokud zdroj / definice obsahuje, měl by ji obsahovat i překlad. Lze jej použít i jako vložku. 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 tři.

MediaWikiTimeList
ID:

Poskytuje ověření možností vypršení platnosti a možností blokování IP specifikovaných v jádře MediaWiki. Ty jsou obvykle ve formátu,

Validace zajišťují, že překlady mají přesně stejný počet párů klíč–hodnota. Tato ověření se spouštějí pouze u zpráv s klíči:


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

Newline
ID:

Zajišťuje, že překlad má stejný počet nových řádků jako zdrojová / definiční zpráva na začátku řetězce. Tento validátor nelze vložit.

NotEmpty
ID:

Zajišťuje, že překlad má nějaký obsah a že obsahem nejsou jen mezery. Tento validátor nelze vložit.

NumericalParameter
ID:

Tento validátor odpovídá číselným parametrům pomocí následujícího regulárního výrazu:. Tento validátor je vložitelný.

Příklad: ,  etc.

Printf
ID:

Tento validátor kontroluje chybějící a neznámé znaky formátování printf v překladech. Tento validátor je vložitelný.

Příklad: ,  etc.

PythonInterpolation
ID:

Tento validátor porovnává proměnné interpolace řetězců pythonu pomocí následujícího regulárního výrazu:. Tento validátor je vložitelný.

Příklad: ,

Replacement
ID:

Zkontroluje, zda překlad používá řetězec, a místo toho navrhne překladateli, aby použil řetězec uvedený pod. Tento validátor nelze vložit.

SmartFormatPlural
ID:

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

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,