Nepřekládané zprávy přes addError

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Sochi
Člen | 17
+
0
-

Narazil jsem na drobný problém s „automatickými“ překlady formulářů. Zprávy předané do formuláře metodou addError se nepřekládaji. Toto feature nebo bug?

Originální kód (verze 2.0.5) překlad nikde nevolá.

<?php
/**
 * Adds error message to the list.
 * @param  string  error message
 * @return void
 */
public function addError($message)
{
    $this->valid = FALSE;
    if ($message !== NULL && !in_array($message, $this->errors, TRUE)) {
        $this->errors[] = $message;
    }
}
?>

Vytvořil jsem si na to vlastní úpravu, viz níže, ale jde mi spíše o princip, jestli to opravdu bylo původně myšleno tak, aby se chybové zprávy nepřekládaly? Nehledě na to, že mi to připadá zvláštní, je tohle chování v Nette minimálně od verze 2.0.3.

<?php
/**
 * Adds error message to the list.
 * @param  string  error message
 * @return void
 */
public function addError($message)
{
    $this->valid = FALSE;
    if ($message !== NULL) {
        if ($this->translator) {
            $message = $this->translator->translate($message);
        }
        if (!in_array($message, $this->errors, TRUE)) {
            $this->errors[] = $message;
        }
    }
}
?>
Tomáš Votruba
Moderator | 1114
+
0
-

Pošli pull request, to celé řízení při nejmenším urychlí. Translator bych umístil až za kontrolu existence zprávy, nemá smysl překládat zprávu, která se nepředá.

duke
Člen | 650
+
0
-

Toto se už kdysi řešilo (na tomto fóru i na githubu). Potíž je v tom, že metoda addError se používá i tak, že se jí předává už přeložená zpráva, takže řešení vyžaduje výraznější zásah do kódu než jen úpravu jedné metody.

Sochi
Člen | 17
+
0
-

duke napsal(a):

Potíž je v tom, že metoda addError se používá i tak, že se jí předává už přeložená zpráva

Jestli se tak nepoužívá právě proto, že vložená chyba se automaticky nepřekládá. Logicky, pokud nastavím formuláři objekt pro kompletní překlad, očekávám, že přeloží i chybovou zprávu (nehledě na to, že se volá odjinud). Tudíž současný stav rozhodně není intuitivně v pořádku. (A pokud byl zamýšlen, rozhodně by se hodilo varování v dokumentaci.)

Edit: nepochopil jsem argumenty vedoucí k zamítnutí původního pull requestu. Vytvořit druhou metodu pro nepřekládání validačních pravidel je triviální a podpora plurálů v tomto překladu nemá příliš smysl (když ji fakticky nepodporuje ani zbytek překladové obsluhy formulářů).

Editoval Sochi (6. 9. 2012 15:02)