一、Laravel端
总体思路:由于使用App::setLocale()只能切换当前页面语言,无法使语言选项持久化。解决方案是将语言选项保持在Seesion中,通过在web中间件组中注册SwitchLanguage中间件从Session中获取选择的语言,然后利用App::setLocale()实现语言切换。
以下是实现步骤:
1、在config/app.php中配置语言切换选项数组locales:
'locales' => ['en' => 'English', 'zh' => 'Chinese'],
2、定义并实现中间件:php artisan make:middleware SwitchLanguage
3、在App\Http\Controllers\Controller中实现setLocaleLang函数,并在routes/web.php中添加语言切换路由:
4、在resources中定义全局字典或分类字典,结构如下:
5、在blade中实现切换功能:
6、在blade模板中将当前语言选择项传递给vue组件:
二、vue组件
总体思路:利用第三方组件vue-i18n实现。官网地址:VueI18n
实现步骤:
1、yarn add --dev vue-i18n或npm install --dev vue-i18n
2、在resources/assets/js/app.js中加入i18n引用并挂载到vue根实例上:
3、编写语言字典:
4、在组件created函数中设置显示语言
5、在组件中使用语言字典内容:
总结:到此Laravel5.5+vue实现多语言支持已完成,时间比较紧,写得不够详细,请谅解。如有问题,随时留言。