Как использовать Locale:: acceptFromHttp без списка фильтров?
locale_accept_from_http
является базовой оболочкой вокруг API ICU 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"
1 ответов
правильно, PHP обертывает ICU uloc_acceptLanguageFromHTTP
без возможности передать свой список локалей. В целом, intl
расширение относительно новое (PHP 5.3+), и я нашел пару ошибок, которые были быстро исправлены в следующем выпуске.
что вы могли бы сделать это:
отправить запрос на ошибку / функцию. Уже есть похожая ошибка об этом сообщает.
формат Accept-Language действительно не так сложен, Бьюсь об заклад, вы можете написать свой собственный парсер в пределах 20 строк кода. См.в этой статье для примера.