Pek*_*ica 12 php zend-framework
我正在解散一个相当大的旧库,其中包含随着时间的推移积累的各种PHP帮助程序函数.我正在寻找基于Zend Framework的替代品来尽可能多地使用这些功能.
我的第一个候选人是一个函数,它可以从巨大的列表中返回用户最喜欢的浏览器语言http_accept_language.
ZF有功能吗?
我意识到Zend_Translate能够以某种方式检测浏览器语言,但我没有看到公开可用的函数来实际获取语言字符串.
Phi*_*off 11
干得好:
$locale = new Zend_Locale();
// if locale is 'de_AT' then 'de' will be returned as language
print $locale->getLanguage();
// if locale is 'de_AT' then 'AT' will be returned as region
print $locale->getRegion();
Run Code Online (Sandbox Code Playgroud)
Zend_Locale 对此应该能够提供帮助.
请参阅页面上的示例和说明使用Zend_Locale (引用):
对于大多数情况,
new Zend_Locale()将自动选择正确的区域设置,优先考虑用户的Web浏览器提供的信息.
此页面后面还有一些细节(引用):
Zend_Locale用于自动选择区域设置的搜索算法 使用三种信息源:
1.const Zend_Locale::BROWSER- 用户的Web浏览器为每个请求提供信息,这些信息由PHP在全局变量中发布HTTP_ACCEPT_LANGUAGE.如果找不到匹配的区域设置,则优先考虑ENVIRONMENT并最后 给出FRAMEWORK.
2.const Zend_Locale::ENVIRONMENT- PHP通过PHP内部函数发布主机服务器的语言环境setlocale().如果找不到匹配的区域设置,则优先考虑FRAMEWORK并最后给出BROWSER.
3.const Zend_Locale::FRAMEWORK- 当Zend Framework具有指定组件默认值(计划但尚未可用)的标准化方法时, 在实例化期间使用此常量将优先选择基于这些默认值的区域设置.如果找不到匹配的区域设置,则优先考虑ENVIRONMENT并最后给出BROWSER.
(建议:去看那个页面 - 我不会复制粘贴所有内容来阅读^^)
编辑:这是说明我的评论的代码部分:
$locale = new Zend_Locale();
var_dump($locale->getLanguage());
var_dump($locale->getRegion());
die;
Run Code Online (Sandbox Code Playgroud)
给我 :
string(2) "fr"
bool(false)
Run Code Online (Sandbox Code Playgroud)
好吧,我的浏览器要求法语,而不指定区域^^
我赞成了两个答案.作为一种替代方法来Zend_Locale考虑语言