Spatie Laravel 带有 Inertia JS 的翻译加载器

Spatie Laravel Translation Loader with Inertia JS

因为我需要将翻译文本存储在数据库中以便用户可以更新它,所以我使用了 spatie/laravel-translation-loader 包。在我的应用程序中,我结合了 Inertia JS 和 Vue 2。我正在寻找有关如何有效地将翻译数据传递给 Vue 组件的建议。

谢谢。

我使用了以下策略:

我分享了以下翻译数据:

class HandleInertiaRequests extends Middleware
...
public function share(Request $request)
{
...

'trans' => [
        'common' =>   LanguageLine::getTranslationsForGroup(app()->currentLocale(),'common')
    ],
...
}
...

已创建 trans() 函数和全局混合

export default function(group, key) {
    let value = _.get(this.$page.props.trans[group], key);
    if (value) {
        return value;
    } else {
       return key;
    }
}
import trans from '@/utils/trans';
Vue.prototype.$trans = trans;
Vue.mixin({
    methods: {
        trans: trans
    },
});

在 vue 组件中使用 trans() 作为:

<template>

...
 <h1> trans('common', 'dashboard') </h1>
...
</template>