Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Wielojęzykowy Zend Framework
nexis
post 10.06.2008, 20:58:37
Post #1





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Podstawowy bootstrap w środowisku Zend Framework wygląda następująco:

public/index.php
  1. <?php 
  2.  
  3. // Error reporting for development
  4. error_reporting(E_ALL | E_STRICT);
  5.  
  6. // Include path
  7. set_include_path(get_include_path() . PATH_SEPARATOR . '../library');
  8.  
  9. // Zend Framework Loader
  10. require_once('Zend/Loader.php');
  11.  
  12. Zend_Loader::loadClass('Zend_Controller_Front');
  13.  
  14. // Get the front controller
  15. $front = Zend_Controller_Front::getInstance();
  16. $front->setControllerDirectory('../application/controllers');
  17. $front->dispatch();
  18. ?>


Chciałbym do całego projektu dodać obsługą wielu języków, którą udaje mi się poprawnie wstawić np. do domyślnego kontrolera:

application/controllers/IndexController.php
  1. <?php 
  2.  
  3. class IndexController extends Zend_Controller_Action
  4. {
  5. public function indexAction()
  6. {
  7. $translate = new Zend_Translate('tmx', '../languages/multilanguage.tmx', 'pl');
  8. $translate->setLocale('en');
  9.  
  10. $this->view->translate = $translate;
  11. } 
  12. }
  13. ?>


Co mnie oczywiście nie zadowala, bo nie wyobrażam sobie dodawać do każdego kontrolera te same trzy linijki kodu.

W jaki sposób mogę moduł Zend_Translate zatem wstawić do głównego bootstrap, aby w widokach (views) był widoczny jako:

  1. <?php
  2. $this->translate->_("language");
  3. ?>


lub podobnie?


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
phpion
post 11.06.2008, 13:49:54
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Nie możesz po prostu utworzyć własnej klasy kontrolera? Przykładowo:
  1. <?php
  2. class My_Controller_Action extends Zend_Controller_Action {
  3. public function init() {
  4. $translate = new Zend_Translate('tmx', '../languages/multilanguage.tmx', 'pl');
  5. $translate->setLocale('en');
  6.  
  7. $this->view->translate = $translate;
  8. }
  9. }
  10. ?>

Coś w tym stylu. Następnie wszystkie kontrollery dziedziczą po My_Controller_Action, a nie po Zend_Controller_Action.
Go to the top of the page
+Quote Post
chlebik
post 11.06.2008, 14:01:01
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 5
Dołączył: 12.09.2006
Skąd: Pruszków/Warszawa

Ostrzeżenie: (0%)
-----


Albo pomysl o jakims pluginie/helperze, co bedzie to ogarnial. Z mojej strony polecam rozwiazanie oparte na plikach *.po.


--------------------
"Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog
KulturalnyChlebik
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 20:53