Как использовать 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" 

Related of "Как использовать Locale :: acceptFromHttp без списка фильтров?"

Правильно, PHP обертывает uloc_acceptLanguageFromHTTP ICU без возможности передать ваш список uloc_acceptLanguageFromHTTP . В целом, расширение intl относительно новое (PHP 5.3+), и я действительно нашел пару ошибок, которые были быстро исправлены в следующей версии.

Что вы можете сделать, так это:

  • Отправьте запрос об ошибке / функции. Об этом сообщается аналогичная ошибка.

  • Формат Accept-Language на самом деле не такой сложный, я уверен, вы могли бы написать свой собственный парсер в 20 строках кода. См. Эту статью для примера.