7

locale_accept_from_http是 ICU API 的基本包装器,uloc_acceptLanguageFromHTTP但 PHP/PECL 实现似乎存在根本缺陷,它使用系统的整个语言环境集而不是将列表作为参数?

例如说用户有HTTP_ACCEPT_LANGUAGE = zh-HK;q=0.2, fr,即用户阅读繁体中文或法文,更喜欢后者。例如,您有一个提供繁体中文和简体中文文章的新闻网站。使用 API Locale::acceptFromHttp只会返回fr.

<?php
var_dump (Locale::acceptFromHttp ("zh-HK;q=0.2,fr"));
?>

输出:

string(2) "fr"
4

1 回答 1

6

正确,PHP 包装了 ICU uloc_acceptLanguageFromHTTP,但无法传递您的语言环境列表。总的来说,intl扩展是相对较新的(PHP 5.3+),我自己也发现了一些错误,这些错误在下一个版本中很快得到修复。

你可以做的是:

  • 提交错误/功能请求。已经报告了一个类似的错误。

  • Accept-Language 格式真的没有那么复杂,我敢打赌你可以在 20 行代码内编写自己的解析器。有关示例,请参见本文。

于 2012-01-29T08:40:03.960 回答