• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • Locale::acceptFromHttp()

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

    尝试基于HTTP“Accept Language”头找出最佳可用区域设置r

    说明

    面向对象风格
    publicstaticLocale::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