以下代码:
import Vue from 'vue'
import Component from 'vue-class-component'
@Component
export default class SomeComponent extends Vue {
public someText = this.$t('some.key')
}
引发错误:
[Vue warn]: Error in data(): "TypeError: i18n is undefined"
我确保使用Vue.use(VueI18n)
和初始化 Vue new Vue({ /* ... */, i18n })
。对象以这种i18n
方式初始化:
new VueI18n({
locale: DEFAULT_LOCALE, // imported
fallbackLocale: 'en',
messages // imported
})
只要不立即调用翻译,就可以完美地工作,例如在模板或组件方法中。
这个vue-i18n 问题似乎暗示存在初始化问题。
我可以通过使用方法并仅在模板中进行翻译来解决此问题,但是有一个不受我控制的特定实例会发生这种立即调用:Vuetify input rules
。
someRule = [(v) => !!v || this.$t('field.must_not_be_empty')]
这些规则会立即执行,即使lazy-validation
在Vuetify forms上也是如此。
我已经确定了两种可能的解决方案:
- 绕过 Vuetify
rules
系统并允许简单地返回要在模板本身内翻译的字符串; - 解决
$t
即时可用性问题。
可悲的是,我无法完成其中任何一项。
有没有办法解决这个问题?