Php 什么';使用Vue组件和刀片时,更新Laravel中语言环境的最佳方法是什么?
我正在尝试创建一个Laravel项目,让用户在一个由Vue组件文件组成的页面上启动,我使用i18n.js库翻译组件中的文本,并通过header.Vue文件上的切换进行更新。当用户转到register时,我还需要保留这个区域设置,它都在blade.php扩展中,并且正在使用Php 什么';使用Vue组件和刀片时,更新Laravel中语言环境的最佳方法是什么?,php,laravel,vue.js,Php,Laravel,Vue.js,我正在尝试创建一个Laravel项目,让用户在一个由Vue组件文件组成的页面上启动,我使用i18n.js库翻译组件中的文本,并通过header.Vue文件上的切换进行更新。当用户转到register时,我还需要保留这个区域设置,它都在blade.php扩展中,并且正在使用Auth::routes()由Laravel提供 我以前曾尝试在Vue组件中的JavaScript中创建cookie,这样它就可以识别我的header.blade.php文件中的更新。但是,这纯粹是装饰性的,实际上并没有将正确的
Auth::routes()代码>由Laravel提供
我以前曾尝试在Vue组件中的JavaScript中创建cookie,这样它就可以识别我的header.blade.php文件中的更新。但是,这纯粹是装饰性的,实际上并没有将正确的区域设置应用到配置中,也没有使用存储在resources/lang/xx
中的数据
我曾经问过一个问题,在那里,我可以通过单击类似header.vue中切换的URL更新会话区域设置。但是,这无法更新cookie,但更改了区域设置,因此文本将在blade.php文件中更改,但不会转换为vue文件
代码参考:
php-设置会话区域设置,设置cookie返回加密,并且仅在URL下可用
Route::get('locale/{locale}', function($locale){
Session::put('locale', $locale);
setcookie('locale', $locale, time()+(60*60*24*10));
return redirect()->back();
});
Header.vue-通过标准应用程序持久化的vue组件
import i18n from '../../../lang/i18n';
export default{
data(){
lang: this.getLanguage()
},
methods:{
switchLangauge(locale) {
document.cookie = 'locale='+ locale;
this.lang = locale;
i18n.locale = locale;
},
getLanguag(){
var x = document.cookie.split(';');
for(var i = 0; i < x.length; i++){
var key = x[i].split('=')[0].trim();
if(key == "locale"){
return x[i].split('=')[1].trim();
}
}
}
}
}
从“../../../lang/i18n”导入i18n;
导出默认值{
数据(){
lang:这个。getLanguage()
},
方法:{
开关语言(语言环境){
document.cookie='locale='+locale;
this.lang=locale;
i18n.locale=语言环境;
},
getLanguag(){
var x=document.cookie.split(“;”);
对于(变量i=0;i
header.blade.php-在用户想要注册/登录时替换vue组件
<li>
<div id="toggle">
<div class="lang {{ $_COOKIE['locale'] == 'en' ? 'selected' : '' }}">
<a class="{{ $_COOKIE['locale'] == 'en' ? 'selected' : '' }}" href="{{ url('locale/en') }}">EN</a>
</div>
<div class="lang {{ $_COOKIE['locale'] == 'cy' ? 'selected' : '' }}">
<a class="{{ $_COOKIE['locale'] == 'cy' ? 'selected' : '' }}" href="{{ url('locale/cy') }}">CY</a>
</div>
</div>
</li>
我已经找到了我想在blade.php中实现的方法,但似乎无法在vue文件中使用,而且我无法检查代码,因为提供的repo已关闭
我的问题是:是否有一种正确的方法允许用户能够切换他们的语言选择并进行维护,从vue组件切换到blade.php页面,反之亦然,在两种类型的文件上更改文本以匹配所选语言
-编辑-27-01
我在vue.js中找到了一篇关于使用服务提供商使用翻译的文章(),这是实现我想要的唯一/最有效的方法吗?如果我实现了这一点,我能看到的唯一问题就是我无法设置cookie。任何帮助都将不胜感激
-编辑-28-01
我试图创建一个服务提供商,但是,我得到了一个错误:ReflectionException Class encrypter不存在
,找到的解决方案表明我需要运行php artisan key:generate
,但我已经运行了该程序来启动并运行项目,它是否需要重新生成,或者是否应该有一种解决方法