【问题标题】:How to add my own translations to my vuetify 2.x web app?如何将我自己的翻译添加到我的 vuetify 2.x 网络应用程序中?
【发布时间】: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


【解决方案1】:

$vuetify.lang 只是一个轻量级的实现,旨在供 Vuetify 的组件在内部使用,以翻译像 v-select 的 no-data-text 这样的字符串。这些 props 可以采用纯字符串 (no-data-text="There's nothing here") 以及翻译键,因此键需要以 $vuetify (no-data-text="$vuetify.noDataText") 为前缀。

显然,这不是很实用,也没有给您太大的灵活性,因此对于翻译您网站的其余部分,我们建议改用vue-i18n。我们还展示了如何在 vue-i18n json 文件中存储自定义的 vuetify 翻译:https://vuetifyjs.com/en/features/internationalization/#vue-i18n

【讨论】:

  • 文档在模板中缺少使用示例。 src/locales/ 中的 json 文件作为消息自动导入也没有解释。我有一个小应用程序,加载所有翻译不是问题。但是对于大型应用程序,我认为延迟加载翻译更可取。我不知道该怎么做。
  • Vuetify 没有做任何这些,json 文件属于 vue-i18n
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多