我想在Blade.php和vuejs视图中都使用i18n。可能吗? 我已经为i18n制作了json文件,它看起来像这样:
export default {
"en": {
"menu": {
"home":"Home",
"example":"Example"
}
}
}
它可以与vuejs一起使用,但我想知道如何在laravel中使用它...这可能吗?
否则,有没有办法在laravel和vuejs中访问cookie,还是我需要使用axios请求存储它并在vue中获取它? (我想存储和阅读使用lang)。
这是我要使用i18n的blade.php视图
@if (Route::has('register'))
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">{{ __('home.example') }}</a>
</li>
@endif
在vue.js文件中,我要做的就是 {{$ t('home.example')}}
我使用这个库:https://github.com/kazupon/vue-i18n
非常感谢您!
答案 0 :(得分:1)
我认为在Blade模板中使用vue-i18n很容易。
刀片模板allow,您可以在花括号(@
和{{
)前使用}}
符号,以指示该表达式不应由Blade求值。我想建议您利用它来发挥自己的优势,并在Blade中使用@ {{ $t('home.example') }}
。我认为它必须在Vue挂载的元素内,Vue-i18n才能将其拿起。但是,Vue replaces是Vue 2.x以后的已安装元素,因此Vue已安装元素中的Blade模板可能会丢失。
我认为最好的选择是使用生成器将所有Laravel翻译字符串复制到Vue-i18n。 laravel-vue-i18n-generator 看起来是一个不错的软件包。
基本上,您可以将翻译字符串存储在Laravel中,并能够像平常一样在Blade中使用它们。每次更新这些字符串时,都将不得不再次运行生成器以使其在Vue-i18n中可用,您可以在其中使用Vue-i18n照常访问它们。