Locale::acceptFromHttp()
(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)
尝试基于HTTP“Accept Language”头找出最佳可用区域设置r
说明
面向对象风格public static Locale::acceptFromHttp(string $header): string
过程化风格
locale_accept_from_http(string $header): string
尝试查找能够满足HTTP“Accept language”头请求的语言列表的区域设置
参数
- $header
根据RFC 2616中的格式,包含“接受语言”头的字符串。
返回值
相应的区域设置标识符。
范例
locale_accept_from_http() example
<?php $locale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']); echo $locale; ?>
OO example
<?php $locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']); echo $locale; ?>
以上例程会输出:
en_US
参见
- locale_lookup() Searches the language tag list for the best match to the language
It's good to mention that if user browser will not send HTTP_ACCEPT_LANGUAGE, the output from: Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']); Will be null. So remember to set up a fail over scenario!
If you're struggling to figure out how to use this function in a project that only supports certain languages, move along. Unfortunately, this function doesn't let you specify languages supported by your project - and since the internal header parsing and negotiation logic isn't exposed in any other way, you'll most likely want to ditch this function and go for a custom implementation of the same thing: https://github.com/willdurand/Negotiation
Didn't see this being documented anywhere and the bug hasn't been addressed yet, so to save headache for otherS, this method does a little weird thing with these different locales: php > echo locale_accept_from_http("zh_TW"); zh php > echo locale_accept_from_http("zh_CN"); zh