【发布时间】:2021-07-29 15:59:29
【问题描述】:
我目前正在使用 vuetify 2.x 和 vue-i18n 编写我的第一个 Web 应用程序。不幸的是,我无法让 i18n 为我自己的翻译工作。
我有一个包含以下条目的菜单
<v-menu bottom left offset-y transition="slide-y-transition">
<template v-slot:activator="{ on }">
<v-btn icon v-on="on">
<v-icon>mdi-dots-vertical</v-icon>
</v-btn>
</template>
<v-list>
<v-list-item @click="showAllItems">
<v-list-item-title>
{{ $vuetify.lang.t("cancelFilters") }}
</v-list-item-title>
</v-list-item>
<v-list-item @click="showNonZeroItems">
<v-list-item-title>
{{ $vuetify.lang.t("maskZero") }}
</v-list-item-title>
</v-list-item>
</v-list>
</v-menu>
但是显示的是按键而不是英语或其他语言。我将英语设置为备用语言。
该功能存在且正在运行,但未考虑我的翻译。
这是src/locales/en.json的内容。我不确定键是否可能包含空格。
{
"search": "Search",
"cancelFilters": "Cancel filters",
"maskZero": "Mask zero counts",
"maskUnchecked": "Mask unchecked",
"maskChecked": "Mask checked",
"sharingCode": "Sharing code",
"preferences": "Preferences",
"addList": "Add list",
"disconnect": "Disconnect",
"sponsoringLink": "Sponsoring link"
}
我看到locales目录下的json文件都加载到src/i18n.js文件中了。
获得我的翻译需要哪些步骤?
如何更改当前语言?
解决方案:我发现了如何使用 en.json 中定义的我自己的翻译。只需将$vuetify.lang.t替换为$i18n.t。就如此容易。仍然需要找到如何更改当前语言。
【问题讨论】:
-
我不确定您在哪里看到使用 json 文件进行 vuetifys 翻译。 docs 提供了一种稍微不同的方法,您可以在其中创建一个纯 js/ts 文件,该文件继承 vuetifys 翻译并将您的添加到顶部。然后将它们传递给 vuetify 插件的选项。在我看来,您现在只是跳过了 vuetifys,而是直接进入了 i18n,这也没关系^^
-
选择了 i18n 选项的 vue cli 安装在其中安装了
src/localesdirectory 和示例en.jsonfile。我发现 json 文件很方便,因为它易于操作。一个对javascript一无所知的翻译可以做到这一点。显然这就是 i18n 与 vuetify 的集成方式。$vuetify.lang.t用于 vuetify 翻译。我希望 vuetify 文档还展示了如何将$i18n.t函数与 json 文件一起使用。它也更简洁。我现在必须探索它的能力。 -
Mh... 看起来您刚刚安装了两个翻译器。 Vuetify 自带一个,你通过 vue cli 添加了一个。就像我上面说的那样,您现在使用 i18n 而不是使用 vuetify 。但是,这可能并不重要,只要你得到你想要的结果,那就去吧=)
-
$i18n.t来自 vue-i18n,而不是 vuetify。
标签: vue.js vuetify.js vue-i18n