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的加密。