Hei.
Osaisko joku neuvoa missä mättää, kun yritän mun zend projektissa asettaa zend translaten globaaliksi?
Eli mulla on bootstrap.php:ssä seuraavaa:
$view = new Zend_View(); $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $translate = new Zend_Translate('tmx', APPLICATION_PATH.'/i18n/translation.tmx', 'fi'); $translate->setLocale('fi'); $view->translate = $translate;
ja index.phtml:ssä sitä käytetään:
echo $this->translate->_('Hello');
mutta silloin antaa virheen: Call to a member function _() on a non-object
Eli jokin näkyvyystason ongelma?
Käännökset toimii hienosti, jos käytän näitä suoraan index.phtml:ssä
<?php $translate = new Zend_Translate('tmx', APPLICATION_PATH.'/i18n/translation.tmx', 'fi'); $translate->setLocale('fi'); ?> ... <?php echo $translate->_('Hello'); ?>
Tämä ei vaan ole kovin kiva tapa tuota käytää, koska käännöksiä tarvisi paljon muuallakin.
'$this' viittaa olioon itseensä, joten et voi käyttää sitä olion ulkopuolella. Sinun tulee käyttää juurikin tuota luotua oliota. Oliothan voi vaikka taulukoidan, jos se helpottaa asiaa.
Koitin myös käyttää sitä index.phmtl:ssä näin:
echo $view->translate->_('Hello');
mutta ei auttanut asiaan, sama virheilmoitus.
Jossain netin ohjeissä ekana mainitulla tavalla se oli tehty ja videossakin homma toimi, mutta en saanut itsellä toimimaan.
Onko translate siis oma olionsa? Vai onko se $view olion kantaluokan jäsenmuuttuja? Luulen, että jälkimmäinen arvaus on oikein, jolloin virheilmoitus on aivan oikeassa, koska tällöin et käytä metodia olion kautta, vaan jäsenmuuttujan kautta joka ei (tietenkään) onnistu.
Ongelma ratkaistu(?): http://mureakuha.com/keskustelut/2?18075
tsuriga kirjoitti:
Ongelma ratkaistu(?): http://mureakuha.com/keskustelut/2?18075
Kyllä, ongelma ratkaistu. Unohtui mainita siitä tänne.
Kiitoksia kaikille!
Aihe on jo aika vanha, joten et voi enää vastata siihen.