【问题标题】:i18n text update language didn't work on scripti18n 文本更新语言不适用于脚本
【发布时间】:2020-11-13 10:12:03
【问题描述】:

我正在研究多语言 i18n,我已准备好一切并尝试翻译 HTML 文本,例如:

<q-item-section>{{ $t('display') }}</q-item-section>

它工作正常,但我现在的问题是更新脚本中的 txt,就像我有这样的部分:

<q-item-section >{{HideMore}}</q-item-section>

并且进入数据(myscript)我已经尝试过:

HideMore: this.$t('hide')

好的,现在它显示了 txt,但是当我尝试切换语言时,实际上什么也没发生(txt 没有更新)。

【问题讨论】:

  • 你是如何在语言之间切换的。能否确认切换是否真的成功?
  • 是的,我正在使用 drop List 然后获取数据并使用诸如this.$i18n.locale = lang.value 之类的删除数据更改区域设置语言的值,并且实际上当我想像第一个示例一样在我的html上切换txt时它给了我正确的字符串,就像我使用 en-us 一样:结果将是“HIDE ELEMENT”,当我使用 fr 时,它将是“Masquerlélément”所以它可以工作,但是当我尝试在代码中切换变量时它永远不会改变了。

标签: vue.js vue-i18n


【解决方案1】:

据我所知,您不能在 data 对象中使用此(或任何函数)。

当我遇到这个问题时,我将它放在一个计算变量中:

computed: {
    breadcrumbs: function(){
        return [{
            text: this.$t('locations.titlePlural')
        }]
    },
}, 

编辑:

当你这样定义数据属性时我发现:

data: function () {
    return {
        propName: this.someFunction()
    }
},

您实际上可以调用this 并且可以调用返回值的方法!

Vue docs

【讨论】:

  • 啊,对,没想到会这样。或者,您也可以将t 函数与导入的i18n 实例一起使用,例如:i18n.t('Hide')(在data 选项内)。
  • @YomS。不知道可以,谢谢分享!
猜你喜欢
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 2012-05-15
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
相关资源
最近更新 更多