【问题标题】:How to force translate i18n in some specific text (variable) in Vuejs如何在Vuejs中的某些特定文本(变量)中强制翻译i18n
【发布时间】:2021-07-19 03:55:40
【问题描述】:

在正常情况下,我们只是将翻译属性附加到像这样的变量:

this.name = this.$t('language.name');

但我有时想用一种特定的语言来具体说明它(例如:法语)。 我们可以在vue.js 中做这样的事情吗?

this.name = this.$t('language.name', locale: fr);

【问题讨论】:

    标签: javascript python vue.js internationalization vue-i18n


    【解决方案1】:

    使用旧包kazupon/vue-i18n,应该可以:

    $t(key, locale)
    

    使用后继包 intlify/vue-i18n-next 时,答案取决于您使用的是 Vue I18n 的 Legacy API 还是更新的 Composition API


    使用Legacy API,如普通setup guide 中所述,t() 函数的用法说明为here

    这意味着您仍然可以使用以下调用将键转换为特定语言环境(例如“fr”):

    $t(key, locale)
    

    例子:

    $t('message.key', 'fr')
    

    通过调用createI18n()legacy: false 选项(如here 所述)使用Composition APIt() 函数的用法与here 所述不同。您不能再将语言环境字符串作为第二个参数传递,但语言环境可以在TranslateOptions object 内传递。不幸的是,没有t(key,TranslateOptions) 变体,只有以下变体:

    $t(key, plural, TranslateOptions)
    $t(key, defaultMsg, TranslateOptions)
    $t(key, interpolations, TranslateOptions)
    

    所以最简单的解决方案是例如:

    $t('message.key', 1, { locale: 'fr' })
    

    【讨论】:

    • 感谢您的帮助,它成功了。你能分享我的文件或与这个主题相关的任何东西吗?
    • @DFXNguyễn 没问题!我实际上已经意识到,Vue I18n 有两种使用模式:Legacy API 和更新的 Composition API。我假设您使用的是后者。我已经更新了我对两种模式的状态解决方案的回答,并添加了文档链接。
    猜你喜欢
    • 2018-11-29
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多