Nepřekládané zprávy přes addError
- Sochi
- Člen | 17
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
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
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
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)