laravel vue多语言站点:字符串作为键

时间:2017-09-28 20:35:24

标签: php laravel vue.js vuejs2

我一直在寻找一个简单的无插件解决方案。

我使用laravel的字符串作为翻译文件的关键格式。我有fr.json文件,在这个文件中我有所有文本和它的翻译。 它适用于刀片,但无法在我的.vue文件中使用它。

请帮助我如何在我的所有.vue文件中使用此fr.json文件。 谢谢。

1 个答案:

答案 0 :(得分:1)

如果您想在Vue中获取翻译文件,则必须在javascript中导入它们。

首先。使用当前语言在头部设置元标记:

<meta name='locale' content='{{app()->getLocale()}}' />

然后在您的javascript中为此示例resources/assets/js/app.js

var locale = document.head.querySelector('meta[name="csrf-token"]').content;
var lang = {
    locale: require('../../lang/' + locale + '.json')
}

也许你可以为默认/后备语言做同样的事情。那么翻译函数将如下所示:

function trans(key, replace) {
    var message;
    if (lang[locale][key] != undefined) {
         message = lang[locale][key];
    } else if (lang[defaultLocale][key] != undefined) {
         message = lang[defaultLocale][key];
    }
    if (message) {
        // Loop through each item of replace and string replace the message.

        return message;
    }

    return key;
}

我认为这样的事情可行。没有测试它,需要一些调整,但我认为这应该是解决这个问题的想法。