Vue.js的国际化

Sim*_*yll 24 javascript vue.js

Vue国际化的最佳实践是什么?

目前我正在考虑拥有一个包含所有字符串的'strings'对象,然后根据json文件更新该字符串对象的一些ajax魔法,并将字符串翻译成某些语言.

谁有更好的想法?我目前在使用我的字符串方法时遇到了一些麻烦,因为必须在其他任何东西之前加载字符串对象.

Vue中的字符串是否有占位符功能?例如,我有一个菜单,其条目位于我的vm数据中.有没有办法将其设置为静态字符串,然后一旦存在就自动将其绑定到另一个字符串?

Ber*_*ert 28

VUE-i18n的插件是相当不错的.它们的文档遵循Vue文档设置的标准.包裹也保持最新.我会从那里开始.

我喜欢的一件事是他们支持单个文件组件.您可以使用特定于组件的转换向组件添加其他标记.以下是他们的文档中的示例:

<i18n>
{
  "en": {
    "hello": "hello world!"
  },
  "ja": {
    "hello": "?????????"
  }
}
</i18n>
Run Code Online (Sandbox Code Playgroud)

  • 如果我有很多翻译,在我们的案例18中,它们不会最终都在同一个文件中,这个文件会变得庞大吗?我更愿意在需要时加载它们而不是将它们添加到vue文件中. (4认同)
  • 这是一个相当好的插件,但他们一直忽略复数问题。 (2认同)

adr*_*rai 11

你可能会读到这篇文章 ......

我建议查看一个可以在不同框架中使用的i18n lib,即i18next

还有一些vue库:即vue-i18next@ panter/vue-i18next

此外,您不仅要考虑必须检测代码(i18n)以便翻译您的应用程序/网站.您也应该考虑这个过程 - 您将如何解决持续本地化,如何跟踪进度等等......

对于翻译管理+系统,您可以例如.有在看locize它与所有基于JSON国际化框架打得很好......并提供比传统系统多了不少.


rak*_*nsi 9

另一种可能性是vuex-i18n,如果你想使用Vuex商店.它定义了一个方法和一个过滤器:

{{ 'Item' | translate }}
{{ $t('You have {count} new messages', {count: 5}) }}
Run Code Online (Sandbox Code Playgroud)