metoda Form::addError a lokalizované chybové zprávy

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

Zjistil jsem, že metoda Form::addError ignoruje translator formu. Není to chyba?
Chci-li předat formu vlastní chybovou zprávu v přeložené podobě, jak mám postupovat, abych nemusel obcházet nastavený translator formu?

uestla
Backer | 799
+
0
-

S překlady formulářů se taky semtam peru.

K překladu chybové hlášky dochází až na úrovni pravidla (Rules::formatMessage()), čili skutečně následující není totéž:

$form->addRule(..., $message, ...);
// a
$form->addError($message);

Také nevím, zda je to dobře.

Na tvůj problém leda použít

$form->addError( $form->translator->translate($message) );

Ale to pro tebe asi není nic nového :-(

duke
Člen | 650
+
0
-

Ale to pro tebe asi není nic nového :-(

To opravdu ne, ale i tak díky.
Říkal jsem si, že se tomu úplně vyhnu tím, že si napíšu vlastní validační funkci pro jistý control, kterou přidám přes addRule(callback(…, ale narazil jsem na to, že v tomto případě zase prakticky nelze zobrazovat chybové hlášky, které obsahují parametry získané teprve při validaci z modelu. Resp. možná to lze pomocí vlastního form rendereru, ale do toho jsem se zatím nepouštěl.

kravčo
Člen | 721
+
0
-

Bolo by skvelé, najmä ak sa jedná o jednoduchú opravu, ak by ste napísali patch :)

smasty
Člen | 90
+
0
-

kravčo napsal(a):

Bolo by skvelé, najmä ak sa jedná o jednoduchú opravu, ak by ste napísali patch :)

Tak, a je tam Pull Request.

duke
Člen | 650
+
0
-

Tak, a je tam Pull Request.

Teď ještě zajistit, aby se překlad neprováděl dvakrát pro validation rules, viz. tento řádek a přitom nějak zachovat (nebo nejlépe rozšířit) možnost doplnění parametrů do zprávy, a to tak, aby bylo možné efektivně překládat zprávy včetně podpory plurálů.

Kdyby na to stačil takovýto jednoduchý pull request, také bych ho už dávno poslal. :-)

smasty
Člen | 90
+
0
-

duke napsal(a):

Kdyby na to stačil takovýto jednoduchý pull request, také bych ho už dávno poslal. :-)

No jo, toho som si nevšimol. Pull som zatiaľ zavrel a nad riešením pouvažujem.

spidy
Člen | 55
+
0
-

Tento problém pořád nebyl vyřešen? Zrovna dělám překládání formulářů a docela by se mi to hodilo… Dále jsem narazil na to, že nefunguje

$form->addText('antispam', 'napište '. $word)
            ->addRule(Form::EQUAL, 'napište %s', $word);

zde se sice všechno přeloží, ale %s se nenahradí za $word (zkoušel jsem dump v translatoru a do něj už se tento parametr nedostane).

srobowak
Člen | 27
+
0
-

tiez mam problem s tym, ze sprava pridana cez addError() sa neprelozi :(

juzna.cz
Člen | 248
+
0
-

Koukam, ze stale nevyreseno a problem pretrvava :(

Existuje nejaky duvod, proc se to takto chova? Nebo je to proste opomenute?

hapi
Člen | 35
+
0
-

Stále není vyřešeno v nette 2.0.5 :(

MartinitCZ
Člen | 580
+
0
-

Je to už nějak vyřešené? Asi né co? :/

Mám Nette 2.0.10 a stále se nedají překládat ->addError(..);

Editoval martinit (8. 4. 2013 17:19)

krucinal
Člen | 38
+
0
-

Potreboval bych taky mit hezky prelozene formulare. Uz to nekdo spravil?

kuty.cz
Člen | 33
+
0
-

krucinal napsal(a):

Potreboval bych taky mit hezky prelozene formulare. Uz to nekdo spravil?

řeším to přes metodu translate… v mém případě $form->addError($this->translator->translate(‚chyba‘));

krucinal
Člen | 38
+
0
-

kuty.cz napsal(a):

krucinal napsal(a):

Potreboval bych taky mit hezky prelozene formulare. Uz to nekdo spravil?

řeším to přes metodu translate… v mém případě $form->addError($this->translator->translate(‚chyba‘));

njn, tomu jsem se prave chtel vyhnout, kdyz se Nette v manualu hrde busi do prsou jak uzasne vsechno ve formularich preklada. Ale asi mi koukam nic jineho nezbyde :(

hapi
Člen | 35
+
+1
-

No osobne si rikam, jestli by nebylo lepsi ty errory prekladat az na pri renderu. Myslim si ze by bylo lepsi kdyby v lokalizovatelne komponente byly texty nelokalizovane az do posledni chvile. Sice me ted nenapada kdy by se mohlo hodit ty texty mit moznost vytahnout jeste neprelozene.

Uz pak neni problem mit ve formu metodu getLocalizedErrors()

Nicmene tohodle kodu $form->addError($this->translator->translate(‚chyba‘)); bych se konecne rad zbavil.

Klidne na to pull request udelam, jen bych byl docela rad, kdyby se k tomu prvne nekdo vyjadril.

Editoval hapi (17. 5. 2014 19:18)