registrace translatoru jako servis nefunguje
- joseff
- Člen | 233
Zdravim, nechapu to, ale zaregistroval jsem si Translator jako service v config.ini a kdyz zavolam kdekoliv v prezenteru toto:
print \Nette\Environment::getService("Nette\ITranslator")->translate('slovo');
tak mi to vypise preklad slova presne podle ocekavani, ale kdyz si zaregistruju helper:
$template->registerHelper('translate', '\Nette\Environment::getService("Nette\ITranslator")->translate');
a pak ho pouziju nekde v sablone, tak to vypise tuto vyjimku:
Netusite nekdo kde delam chybu? Dik
MemberAccessException
Call to undefined static method Nette\Environment::getService("Nette\ITranslator")->translate().
- baz
- Člen | 42
Ahoj,
mám taky problém s registrací tohoto helperu.
Podle jiných vláken tady ve fóru se mi podařilo nainstalovat NetteGettextExtractor, který mi vygeneruje soubor se stringy.
Ale nedaří se mi zaregistrovat helper. Snažil jsem se hledat a v několika vláknech je stejný problém, ale ztratil mezi ostatní komunikací a nebyl vyřešen.
Mám Nette v0.9.5 a když v presenteru použiju:
<?php
public function renderDefault() {
$this->template->registerHelper('translate', callback(Environment::getService("Nette\ITranslator"), 'translate'));
}
?>
tak dostanu následující chybu :
InvalidStateException
Service ‚Nette\ITranslator‘ not found.
Ještě se tu zmiňuje zaregistrovat jako službu v config.ini. Je to tento
problém? (Jak to mám udělat)
Můj config.ini :
<?php
[common]
; PHP configuration
php.date.timezone = "Europe/Prague"
php.iconv.internal_encoding = "UTF-8"
php.mbstring.internal_encoding = "UTF-8"
;php.default_charset = "UTF-8"
; variables
variable.lang = en
variable.tempDir = %appDir%/temp
variable.logDir = %appDir%/log
const.GALLERY_ITEM_TYPE_IMAGE = 1
const.GALLERY_ITEM_TYPE_VIDEO = 2
; services
service.Nette-Security-IAuthenticator = UsersModel
service.Nette-Loaders-RobotLoader.option.directory[] = %appDir%
service.Nette-Loaders-RobotLoader.option.directory[] = %libsDir%
service.Nette-Loaders-RobotLoader.run = TRUE
/* ... DB definice... */
?>
Přiznám se, že ani nevím jestli registraci helperu dělám správně v renderDefault v presenteru.
Předem mockrát děkuji za rady.
Editoval baz (18. 2. 2011 8:56)
- baz
- Člen | 42
Tak jsem ještě zkusil vložit do configu toto:
<?php
service.Nette-ITranslator.factory = "NetteTranslator\\Gettext::getTranslator"
service.Nette-ITranslator.run = TRUE
?>
chyba se změnila na
InvalidStateException
Cannot instantiate service ‚Nette\ITranslator‘, handler ‚Gettext::getTranslator‘ is not callable.
Předpokládám, že bych měl něco nahrát do libs\Nette ale netuším co
:-(
Jediné co jsem našel v mé aktuální složce Nette je Utils\ITranslator, ale
tam je jen definice interface …
Editoval baz (18. 2. 2011 9:07)