Zend_Translate vs. Zend_Form

Kategorie: (Web), napsal Jirka Helmich, 4.5.2008

Tagy : , , , ,

Zend Framewok obsahuje třídu Zend_Form, pomocí které je možné vytvořit formuláře poměrně rychle, čistě a logicky. Díky ní není nutné vytvářet přímo HTML, ale formulář je možné vygenerovat pomocí sledu PHP příkazů. Jako doplněk lze použít tzv. validátory, které vyhodnotí vstupní data a v případě, že něco není v pořádku, vyplní formulář zadanými daty a okomentuje jej. Nicméně zde narážíme na malý problém, komentář je samozřejmě anglicky. Vypsat českému uživateli na výstup něco jako "abcd" doesn’t match against pattern "\d+\s[[:alnum]#@{}]" asi není nejlepší nápad, když už tam musí být uvedena maska, mohlo by to být alespoň česky.

K tomu ale potřebujete instanci Zend_Translate, kterou nastavíte jako překladač pro danou instanci formuláře. K tomu se také hodí zdrojová data s překladem. Ta si můžete stáhnout ve formátu XML/TMX zde (11 kB, provedl jsem překlad z němčiny, thanks to WP|Stalker from #zftalk for German version). A protože implementace je typicky na dva řádky, ale trochu trvá je vymyslet, přikládám ty své dva.

$translator = new Zend_Translate(
  ‘Zend_Translate_Adapter_Tmx’,
  /path/to/CzechValidatorsStrings.xml’,
  ‘cs’
);

$form->setTranslator($translator);

Zanechte zde nějaké moudro: