【问题标题】:How to localize my Vue components library?如何本地化我的 Vue 组件库?
【发布时间】:2019-12-06 08:10:42
【问题描述】:

我自己开发vue组件库,这个组件有很多文字需要本地化。 vue-i18n 不支持这个,因为它应该附加到 Vue (例如Vue.use(VueI18n)),但是如果是组件库,它会导致冲突。

我的库中需要有独立的翻译文件,与我的应用程序完全分开(以防止冲突)

我正在努力在其他来源中找到这个问题的任何答案,我希望有人可以给我这个案例的例子。提前致谢。

【问题讨论】:

  • 我知道 Element UI 有 i18n 功能,也许你可以从他们的源代码中获得灵感? github.com/ElemeFE/element
  • 瓦伦丁,谢谢。我看到他们使用旧版本的 vue-i18n,但我仍然不清楚如何使用新版本。

标签: vue.js localization vue-component vue-i18n


【解决方案1】:

由于您提到的原因,vue-i18n 似乎确实不适用于组件库(将其自身附加到Vue.prototype + 与用户代码冲突)。

我不知道您在使用 vue-i18n 的哪些功能,但如果它只是简单的翻译,似乎滚动您自己的自定义解决方案并选择插入用户选择的 i18n 库将是最好的。这并不难。大多数组件库都是这样的......

你可以看看“大佬”是如何做到的——在这个例子中是 Vuetify。 Docs Code

【讨论】:

  • 感谢您的详细回复和提供的链接。我将再看一下 vuetify 和 element 内部。 vue-i18n 有一个未解决的问题:github.com/kazupon/vue-i18n/issues/746。另一种选择是实现我自己的库,我也需要它用于后端的模板。也许存在不依赖 vue 和运行时不可知论的现有解决方案,因此我可以在 lib 和服务器端模板中使用它们来处理电子邮件。我会从这个角度检查其他解决方案,谢谢你的提示。
  • 你是对的,也许选择不同的库,而不是把自己紧紧地融入 Vue 也可以是解决方案。例如i18next - 它很成熟,也可以在许多后端使用。我没有将其作为解决方案提出,因为我在 .NET 中使用库中的库意味着您的用户附加到您正在使用的 lib 版本。但是在 JS 中这可能不是那么大的问题....
猜你喜欢
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 2019-10-12
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多