Lokalizace
Lokalizace znamená přizpůsobení software pro různé jazyky, regionální rozdíly a technické požadavky cílového trhu.
Pokud programujete vícejazyčnou aplikaci, budete nejspíš potřebovat
stejnou stránku nebo formulář vykreslit v různých jazykových mutacích.
Nette Framework disponuje rozhraním pro překlad. Stačí si vytvořit tzv.
překladač, což je objekt implementující rozhraní Nette\Localization\ITranslator.
Rozhraní má jedinou metodu translate().
class MyTranslator implements Nette\Localization\ITranslator
{
/**
* Translates the given string.
* @param string message
* @param int plural count
* @return string
*/
public function translate($message, $count = NULL)
{
return ...;
}
}
Jako konkrétní implementaci překladače můžeme použít například GNU gettext nebo Zend_Translate.
Překlad formulářů
Formuláře i jednotlivé formulářové prvky mají metodu
setTranslator(), kterou lze nastavit překladač.
$translator = new MyTranslator;
$form->setTranslator($translator); // nastavíme jej do formuláře
Od této chvíle se nejen všechny popisky, ale i všechny chybové hlášky nebo položky select boxů transparentně přeloží do jiného jazyka.
U jednotlivých formulářových prvků je přitom možné nastavit jiný
překladač nebo překládání úplně vypnout hodnotou NULL:
$form->addSelect('carModel', 'Model:', $cars)
->setTranslator(NULL);
Překlad šablon
Šabloně lze také nastavit překladač metodou
setTranslator(), například v presenteru:
function beforeRender()
{
...
$this->template->setTranslator($translator);
}
Poté budou překládány všechny výrazy v podtržítkovém makru:
<li><a href="basket">{_'Košík'}</a> {_$item}
Makro je volitelně párové:
<li><a href="order">{_}Objednávka{/_}</a>

