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
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? :)