12.多国语言

1.创建语言文件,语言文件在resources/lang/路径下。

2.设置默认语言,文件在config/app.php中locale设置。

3.可在程序或模板中使用trans() 方法取得语言文字。字符串参数用点隔开,如trans('shop.auth.sign-in'),指的是在shop.php文件中auth=>sign-in的键值数据。

4.用户可在模板中选择语言时,设置cookie 存入 选择的语言。

5.可建立中间件,$request->cookie();读取cookie,并使用app()->setLocale()方法设置语言。

// 檔案位置:app/Http/Middleware/DetectLanguageMiddleware.php

namespace App\Http\Middleware;

use Closure;

class DetectLanguageMiddleware

{


    public function handle($request, Closure $next)

    {

        // 取得 cookie 語言設定

        $language = $request->cookie('shop_laravel_language');


        switch ($language) {

            // 語系指定為英文

            case 'en':

                app()->setLocale('en');

                break;

            // 語系指定為繁體中文

            case 'zh-CN':

                app()->setLocale('zh-CN');

                break;

            // 語系指定為繁體中文

            default:

            case 'zh-TW':

                app()->setLocale('zh-TW');

                break;

        }


        return $next($request);

    }

}


6.在app/Http/Kenrnel中设置中间件,如$middlewareGroups的web中,因为laravel对cookie是用了中间件EncryptCookies加密。所以要注释掉该中间件或在该中间件文件中的$except变量中加入语言cookie的键名,来取消掉对该语言cookie的加密。

你可能感兴趣的:(12.多国语言)