translator v šabloně nefunguje

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Spectrik
Člen | 23
+
0
-

Ahoj,

zkouším jazykové mutace webu pomocí nette Itranslatoru podotýkám, že včera mi to fungovalo ale dnes jsem pravděpodobně něco změnil (netuším co) a už to nejede. Dostávám chybu:

**Nette\MemberAccessException

Call to undefined method Nette\Templating\FileTemplate::translate().**

Basepresenter:

<?php

namespace App\Presenters;

use Nette;

/**
 * Base presenter for all application presenters.
 */
abstract class BasePresenter extends Nette\Application\UI\Presenter
{

    protected $database;
    /** @persistent */
    protected $lang='cz';

     public function __construct(\Nette\Database\Context $database)
     {
        $this->database = $database;
     }

    protected function beforeRender()
    {
        $translator = new \Translator($this->database, $this->lang);
        $this->template->setTranslator = $translator;
    }

}

Translator:

<?php


class Translator extends \Nette\Object implements \Nette\Localization\ITranslator
{
    private $database;
    private $lang;

    public function __construct(\Nette\Database\Context $database, $lang) {
        $this->database = $database;
        $this->lang = $lang;
    }

    /**
     * Translates the given string.
     * @param  string   message
     * @param  int      plural count
     * @return string
     */
    public function translate($message, $count = NULL)
     {
        $ekvivalent = $this->database->table('localization')->where('lang', $this->lang)->fetchPairs('id','ekvivalent');

        return $ekvivalent[$message];
     }
}

pokud v šabloně nepoužiju „překládací makro“ {_''} tak vše jede. Jinak to spadne s výše uvedenou chybou. Podobné topicy jsem zde našel, ale nic mi nepomohlo. Co s tím? :)

voda
Člen | 561
+
+1
-

setTranslator je metoda, takže zkus:

$this->template->setTranslator($translator);
Spectrik
Člen | 23
+
+2
-

:DD Já se jednou zastřelím. Takové primitivní chyby. Díky moc.

Šaman
Člen | 2666
+
0
-

Ono by to mělo fungovat pomocí Nette\Object magie i jako property, ale v tom případě bez toho set.

$this->template->translator = $translator;