Formulář s translatorem a parametrizovanými překlady
- meridius
- Člen | 34
Nezkoušeli jste někdo pracovat s translátorem (kdyby/translation, ale asi
to bude platit pro všechny) ve formulářích? Mám s nim menší
„problém“/nepříjemnost.
Když ho nastavím pro celý formulář, tak funguje skvěle:
$form = new Form;
$form->setTranslator($t);
$form->addText('email', 'email.name');
Když pak ale potřebuju překlady parametrizovat, tak musím translátor zavolat ručně a Translator panel v Tracy mi pak hlásí nepřeložené řetězce. Logicky, protože se translátor snaží najít přeložený text místo ukazatelu na něj.
->addRule(Form::MAX_LENGTH, $t->translate('email.maxLength', 255, array("d" => 255)), 255);
V produkci to sice asi vadit nebude, ale minimálně je to nepříjemné a nepřehledné při vývoji. Nenašel jste na to někdo řešení?
- meridius
- Člen | 34
Mysteria: Tomu jsem se právě chtěl, použitím setTranslator(),
vyhnout – znepřehledňuje to kód.
Řešením by asi bylo upravit metody třídy Form, které přijímají
zobrazovaný text, aby jako druhý parametr přijímaly jak string, tak
i array.
Mohlo by to pak vypadat třeba takto:
$form = new Form;
$form->setTranslator($t);
$form->addText('email', 'email.name')
->addRule(Form::MAX_LENGTH, array('email.maxLength', 255, array("d" => 255)), 255);
Nevím ale, jak by to byl velký zásah do kódu Nette a jestli je to vůbec takhle „správně“.
- Filip Procházka
- Moderator | 4668
Tomuhle se v současnosti nevyhneš, je potřeba fixnout tohle v Nette a pak to půjde psát celkem pěkně :)
Na addRule
by to ale mělo fungovat, stačí použít ten
Phrase
objekt.