0
我正嘗試使用瀏覽器語言首選項在Zend_Locale和Zend_Currency之間建立連接。Zend Locale&Zend_Currency:地區代碼
瀏覽器:連接
$locale = new Zend_Locale(Zend_Locale::BROWSER);
Zend_Debug::Dump($locale->getLanguage());
Zend_Debug::Dump($locale->getRegion());
die;
結果:
string(2) "en"
bool(false)
瀏覽器:EN_US
$locale = new Zend_Locale(Zend_Locale::BROWSER);
Zend_Debug::Dump($locale->getLanguage());
Zend_Debug::Dump($locale->getRegion());
die;
結果:
string(2) "en"
string(2) "US"
何我有解決這個問題嗎?
這是我的插件控制器:
class MyProject_Controller_Plugin_Language extends Zend_Controller_Plugin_Abstract {
public function routeShutdown(Zend_Controller_Request_Abstract $request) {
$locale = new Zend_Locale(Zend_Locale::BROWSER);
$registry = Zend_Registry::getInstance();
// Check if the config file has been created
$isReady = MyProject_Main::isReady();
$module = $request->getModuleName();
if($module == "default"){ // set the right session namespace per module
$ns = new Zend_Session_Namespace ('Default');
}elseif($module == "admin"){
$ns = new Zend_Session_Namespace ('Admin');
}else{
$ns = new Zend_Session_Namespace ('Default');
}
// check the user request if it is not set, please get the old prefereces
$lang = $request->getParam ('lang', $ns->lang);
if(empty($lang)){ // Get the user preference
if(strlen($locale) == 2){ // Check if the Browser locale is formed with 2 chars
$lang = $locale;
}elseif (strlen($locale) > 4){ // Check if the Browser locale is formed with > 4 chars
$lang = substr($locale, 0, 2); // Get the language code from the browser preference
}
}
// Get the translate language or the default language: en
if(file_exists(PUBLIC_PATH . "/languages/$lang/$lang.mo")){
$translate = new Zend_Translate(array('adapter' => "MyProject_Translate_Adapter_Gettext", 'content' => PUBLIC_PATH . "/languages/$lang/$lang.mo", 'locale' => $lang, 'disableNotices' => true));
}else{
$translate = new Zend_Translate(array('adapter' => "MyProject_Translate_Adapter_Gettext", 'locale' => $lang, 'disableNotices' => true));
}
$registry->set('Zend_Translate', $translate);
$registry->set('Zend_Locale', $locale);
if($isReady){
$ns->langid = Languages::get_language_id_by_code($lang);
}else{
$ns->langid = 1;
}
$ns->lang = $lang;
}
}
感謝
嗨我已經更新了我的問題添加php代碼。正如你所看到的,我已經避免了像之前描述的那樣設置貨幣,並且我已經以這種方式處理了區域設置,但在我看來,這是一種粗魯的方式。任何建議? – Michelangelo 2013-05-10 09:36:43