Locale::acceptFromHttp

locale_accept_from_http

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::acceptFromHttp -- locale_accept_from_httpTries to find out best available locale based on HTTP "Accept-Language" header

说明

面向对象风格

public static Locale::acceptFromHttp ( string $header ) : string|false

过程化风格

locale_accept_from_http ( string $header ) : string|false

Tries to find locale that can satisfy the language list that is requested by the HTTP "Accept-Language" header.

参数

header

The string containing the "Accept-Language" header according to format in RFC 2616.

返回值

The corresponding locale identifier.

Returns false when the length of header exceeds INTL_MAX_LOCALE_LEN.

范例

Example #1 locale_accept_from_http() example

<?php
$locale 
locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo 
$locale;
?>

Example #2 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

User Contributed Notes

mollasadra at g dot com 16-Apr-2018 03:29
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
rasmus at mindplay dot dk 22-Nov-2017 02:44
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
Adam Lange 14-Oct-2012 06:50
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!
PHP8中文手册 站长在线 整理 版权归PHP文档组所有