Je l se susreo neko mozda sa sledecim problemom. Napravio sam route koje se prevode tako da se prilikom posete adresa
/archive
/moja-arhiva
poziva 'module' => 'default', 'controller' => 'index', 'action' => 'test'. E sad tu se javlja problem. Ja zelim da kad neko poseti /archive i zatrazi prevod za neki key da dobije prevod za taj jezik. Trenutno to neradi kako treba, a uspeso sam da utvrdim da ce se koristiti razlicit locale u zavisnosti kako je definisem za rutu
Code:
Zend_Controller_Router_Route::setDefaultTranslator($translator); # postavlja prvi definisan locale - en
Kad posetim linkove imam sledeci izlaz
/archive
month
/moja-arhiva [pogresno]
/moja-arhiva
/moja-arhiva
/moja-arhiva
month [pogresno]
/moja-arhiva
/moja-arhiva
/moja-arhiva
Ono sto ja ocekujem je da /archive sastavi link /archive umesto /moja-arhiva, a da /moja-arhiva za prevod ispise mesec.
A ako uradim ovako
Code:
Zend_Registry::set('Zend_Translate', $translator); # postavlja poslednji dodat locale - sr
/archive
mesec [pogresno]
/moja-arhiva [pogresno]
/moja-arhiva
/moja-arhiva
/moja-arhiva
month
/moja-arhiva
/moja-arhiva
/moja-arhiva
Engleska ruta vuce pogresan prevod i link, a na srpskoj je sve ok!?
Evo i koda
Code:
# bootstrap
$option_adapter = array('adapter' => Zend_Translate::AN_ARRAY);
$option_en = array(
'content' =>
array(
'archive' => 'archive',
'year' => 'year',
'month' => 'month',
'index' => 'index'
),
'locale' => 'en'
);
$option_sr = array(
'content' =>
array(
'archive' => 'moja-arhiva',
'year' => 'godina',
'month' => 'mesec',
'index' => 'indeks'
),
'locale' => 'sr'
);
$translator = new Zend_Translate(array_merge($option_en, $option_adapter));
$translator->addTranslation($option_sr);
// Ovde se koristi jedan od 2 nacina
// Zend_Registry::set('Zend_Translate', $translator); # postavlja poslednji dodat locale - sr
// Zend_Controller_Router_Route::setDefaultTranslator($translator); # postavlja prvi definisan locale - en
$router = Zend_Controller_Front::getInstance()->getRouter();
$route = new Zend_Controller_Router_Route(
'@archive',
array(
'module' => 'default',
'controller' => 'index',
'action' => 'test'
)
);
$router->addRoute('route-name', $route);
$route->assemble(array('@locale'=>'en'));
$route->assemble(array('@locale'=>'sr'));
Code:
# .../index/test.phtml
echo $this->translate('month') . '<br><br>';
echo $this->url(array(), 'route-name') . '<br>';
echo $this->url(array('@archive' => 'archive'), 'route-name') . '<br>';
echo $this->url(array('@archive' => $this->translate('archive')), 'route-name');