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

正しい、PHPuloc_acceptLanguageFromHTTPはロケール リストを渡す機能なしで ICU をラップします。全体として、intl拡張機能は比較的新しく (PHP 5.3+)、次のリリースですぐに修正されるいくつかのバグを見つけました。

あなたができることは次のとおりです。

  • バグ/機能のリクエストを送信します同様のバグがすでに報告されています。

  • Accept-Language 形式はそれほど複雑ではありません。20 行のコードで独自のパーサーを作成できるはずです。例については、この記事を参照してください。

于 2012-01-29T08:40:03.960 に答える