簡體   English   中英

在zend framework 2網站上選擇語言

[英]choose language in the zend framework 2 website

我使用Zend / Translator翻譯我網站上的文字。 我設置了一個默認本地,它的工作原理。 現在,用戶應該能夠在layout.html中選擇語言:

...

<li class="dropdown">
   <a href="<?php echo $this->url('home');?>" class="dropdown-toggle" data-toggle="dropdown">Sprache<b class="caret"></b></a>
        <ul class="dropdown-menu">
          <li><a href="#">Deutsch</a></li>
          <li><a href="<?php echo $this->url('application/default', array('action'=>'en'));?>">Englisch</a></li>
          <li><a href="#">Französisch</a></li>
          <li><a href="#">Spanisch</a></li>
        </ul>
</li>

...

默認語言是德語。 現在我嘗試通過在下拉菜單中選擇“Englisch”將語言更改為英語。 但我不知道在控制器中寫什么。 我試過這樣,但它不起作用:

public function enAction()
{
    $translator = $this->getServiceLocator()->get('translator');
    $translator->setLocale('en');

    return $this->redirect()->toRoute('home');

}

有人能幫我嗎?

謝謝。

您可以查看SlmLocale ,這是一個執行區域設置檢測和存儲的模塊(通過會話或cookie)。 使用SlmLocale,您可以渲染菜單以從區域設置切換,相應地更新所有URL。

echo $this->localeMenu();

SlmLocale能夠根據主機名,路徑的一部分(即/en/my/url )或查詢參數選擇區域設置。

免責聲明:我是SlmLocale的作者:)

設置區域設置時,翻譯器不會記住所選語言。 您需要將選定的lang保留在會話中以供將來請求使用。 在你的模塊bootstrap從會話中獲取lang並設置翻譯器語言環境。

當你想要更改語言時,應該有代碼來刷新頁面,並將lang參數附加到url。 設置是

class Settings{

   const DEFAULT_LANGUAGE = 'en';
   public static $locations = array(
    'sa'=>'sa_SA',
        'en'=>'en_US'
    );
}

並在Application \\ Module.php中

public function onBootstrap(MvcEvent $e) {
    $lang = $e->getRequest()->getQuery('lang'); // new language
    $session = new Container('base');
    if($lang == null || $lang == ''){
        if ($session->offsetExists('lang')) {
            $lang = $session->offsetGet('lang'); // current language
        }else{
            $lang = 'en; // default language
        }
    }
    $session->offsetSet('lang', $lang);
    $loc = Settings::$locations[$lang];
    $translator
    ->setLocale($loc)
    ->setFallbackLocale(Settings::DEFAULT_LANGUAGE .'_' . Settings::DEFAULT_LOCATION);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM