LoginSignup
7
7

More than 5 years have passed since last update.

FuelPHPでユーザー毎の言語切り替えに対応する

Last updated at Posted at 2015-05-13

はじめに

多言語切り替えのアプリケーションの実装にあたり、

FuelPHPで日英などの多言語切り替えに対応する

こちらを参考にしましたが、既に読み込んでいる言語ファイルについては適用されなかったのと、bootstrap.phpに書いちゃうのがなんともあれだなと思ったので少し改良してみました。

参考記事ではbootstrap.phpFuel::init('config.php')の直後に追記していましたが、Coreを読んでみたところFuel::init()の最後の方でapp_createdイベントを発火させているので、タイミング的にはほぼ同じだと思います。

実装

概要

  • アプリケーション初期化後のイベントで言語を切り替える
  • Configの設定だけでなく、既に読み込んだ言語ファイルも上書きする

ソース

fuel/app/config/event.php
<?php 
return array(
    'fuelphp' => array(
        'app_created' => function()
        {
            //change language
            if( 1 ){
                Config::set('language','en');
                Config::set('locale','en_US');

                $array = \Config::get('always_load', array());
                if (isset($array['language']))
                {
                    foreach ($array['language'] as $lang => $lang_group)
                    {
                        \Lang::load((is_int($lang) ? $lang_group : $lang), (is_int($lang) ? true : $lang_group), 'en', true, true);
                    }
                }

            }
        }
    ),
);

おわり

この状態で、Configのlanguageにjaが指定されていても強制的にenに切り替わります。
あとは、切り替えた言語をクッキーにセットするなり、それを判断するなりして切り替えてもらえればいいと思います。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7