CakePHP3で遊ぶ


ブラウザの言語からデフォルトのロケールを取得する

デフォルトのロケールをブラウザから取得したい

CakePHP3 のロケールは、デフォルトでen_USにセットされています。
しかし、ブラウザから指定された言語のリストからセットするのが望ましいと考えます。
その取得方法をメモしておきます。

src/config/app.php
    'App' => [
              :
        'defaultLocale' => locale_accept_from_http(env('HTTP_ACCEPT_LANGUAGE', env('APP_DEFAULT_LOCALE', 'en_US'))),
              :
    ],

環境変数HTTP_ACCEPT_LANGUAGEが、設定されていないことはまず考えられませんが、念のためにenv('APP_DEFAULT_LOCALE', 'en_US')を指定しています。

参考サイト

CakePHP3:メッセージを日本語化する
Locale::acceptFromHttp - 最もあてはまるロケールを HTTP "Accept-Language" ヘッダにもとづいて探す