2016-12-11 36 views
0

我需要獲取請求語言環境代碼的幫助。使應用程序區域知道(從URL獲取語言環境)

我的理論是在URL中定義的語言環境,因爲這樣的:

'http://localhost/en/services/web

爲區域en(英語)

OR

'http://localhost/fr/services/web

爲locale fr(法語)

and then extract the locale from the URL and have the routes still work

的值將在更換it$lang可變

這是我的當前的Application Module Class內部代碼:

public function onBootstrap(MvcEvent $e) 
{ 
    $lang = 'it'; // this needs to reflect current request locale instead 
    $request = $e->getApplication()->getServiceManager()->get('Request'); 
    $translator = $e->getApplication()->getServiceManager()->get('MvcTranslator'); 
    $translator->addTranslationFile("phparray",Pluto::path('language',"$lang.php")); 
    $viewHelperManager = $e->getApplication()->getServiceManager()->get('ViewHelperManager'); 
    $viewHelperManager->get('translate')->setTranslator($translator); 
} 

My solution would be to have the variable $lang populated with the request locale並且剩餘的URL部分相關的路由

我想這些也會對我的路由進行一些修改。

回答

0

晚上好!

您使用的是ZF2還是3?我邀請你看看https://github.com/juriansluiman/SlmLocale,它正是你正在試圖達到的目標(甚至比這更多),以正確的方式。我承諾在幾個月前將它與ZF3兼容,但暫時找不到時間,所以稍後我會研究它,但如果適合您的需求,只需在ZF2中使用它:)

0

你想確切的是(如果你不希望新的模塊添加到您的應用程序):

對於ZF3:https://gist.github.com/Itach1Uchixa/6ec75b8f2af47a0b63e3f52fa0285a24

對於ZF2:https://gist.github.com/Itach1Uchixa/4840b004be2f2dcded19ec516e8aa6f1

實例配置爲ZF2:

1步。將以下行添加到您的service_manager配置中

'HttpRouter' => 'Application\Factory\LocalizedTreeRouteFactory' 

2步。註冊聽衆到您的活動管理器

Application\Listener\RouteListener 

3步。你翻譯的配置必須有區域設置密鑰必須像

'translator' => array(
    // this will be default locale of route 
    'locale' => 'en_US', 
    // key must be locale that you want 
    'locales' => array(
     'en_US' => 'English', 
     'fr' => 'French', 
     'ru_RU' => 'Russian' 
    ), 
), 

第三步是可選的,你可以改變路線的工廠使用其他配置 上面的配置將讓你的路線:

/your/route or en_US/your/route for English 
/fr/your/route for French 
/ru_RU/your/route for Russian 
相關問題