在Zend Framework中确定浏览器语言?

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)


Pas*_*TIN 9

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)

好吧,我的浏览器要求法语,而不指定区域^^