» 首頁 » 討論區 » PHP與網頁技術 »Laravel 建立多國語言的網站

Laravel 建立多國語言的網站

發表人: Seachaos
積分: 2432
發表時間: 2016-05-27 01:09:50
Laravel 有支援多國語言,此範例以 Laravel 設定中文與英文為示範 (配合 Session )
要先在 lang 下建立 zh_tw 資料夾,然後在 en 與 zh_tw 中加入語言定義檔
( 此處可以參考 Laravel 官網的方式 )

再來就是本教學的重點,使用 Session 來記錄與切換使用者的 Locale (語言設定)
(有用到Session的部份記得 use Session; )

Controller:
function set_lang(Request $request, $lang){
        switch($lang){
            case 'zh_tw':
                App::setLocale('zh_tw');
                Session::put('locale', App::getLocale());
                break;
            default:
                App::setLocale(config('app.fallback_locale'));
                Session::put('locale', App::getLocale());
                break;
        }
        return Redirect::back();
    }
此 method 會設定語言在 Session 後回到前一頁

Router:

Route::get('/lang/set/{lang}', [email protected]_lang');


建立Middleware:

php artisan make:middleware LangMiddleware


然後在Middleware中設定 Locale:

    public function handle($request, Closure $next)
    {
        if(!Session::has('locale'))
        {
            Session::put('locale', config('app.fallback_locale'));
        }
        app()->setLocale(Session::get('locale'));
        return $next($request);
    }
(記得要設定其他 Middleware 配置)

View上就可以使用以下範例:

 <li><a href="{{ url('/lang/set/eng') }}">English</a></li>
 <li><a href="{{ url('/lang/set/zh_tw') }}">繁體中文</a></li>


這樣就可以設定使用者的語言了