Framework Nette disponuje rozhraním pro překlad.
Je třeba vytvořit tzv. translátor – objekt implementující rozhraní Nette\Localization\ITranslator a v něm metodu translate().
class MyTranslator implements \Nette\Localization\ITranslator { /** * @param $message * @param null $count * @return mixed */ public function translate($message, $count = null) { return $message; } }
Použití translátoru ve formulářích
Formuláře (popisky, položky selectboxů i chybové hlášky) podporují lokalizaci.
Formulář i jednotlivé prvky formuláře disponují metodou setTranslator() pro nastavení translátoru.
$form->setTranslator(new MyTranslator());
Translátor lze tedy nastavit jak na úrovni celého formuláře, tak na úrovni jednotlivých formulářových prvků.
Překlad pro určitý prvek lze vypnout nastavením NULL do translátoru:
$form->addSelect('items', 'Items:', $items) ->setTranslator(null);
Použití translátoru v šablonách
Šablonám nastavíme translátor metodou setTranslator v presenteru, nejlépe v metodě beforeRender:
function beforeRender() { $this->template->setTranslator($translator); }
Lokalizované texty poté obalíme makrem s podtržítkem:
{_'Text'} {_$text} {_}Text{/_}
Implementace vlastního translátoru
Framework Nette neobsahuje konkrétní implementaci pro rozhraní ITranslator. Můžeme si napsat vlastní, nebo však využít některé z hotových řešeních dostupných na webu componette.com.