Framework Nette

Framework Nette: Lokalizace

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.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *