我有一个简单的项目代码和框
我使用/vue-i18n
你好世界模板:
<h1>{{msg}}</h1>
Run Code Online (Sandbox Code Playgroud)
和脚本:
data() {
return {
msg: `{{ $t("welcomeMsg") }}`
}
}
Run Code Online (Sandbox Code Playgroud)
插件/i18n.js :
const messages = {
en: {
welcomeMsg: "Welcome to Your Vue.js App",
},
es: {
welcomeMsg: "Bienvenido a tu aplicación Vue.js",
}
};
Run Code Online (Sandbox Code Playgroud)
问题:如何从msg:{{ $t("welcomeMsg") }}这样的脚本中使用 vue-i18n ?
PS: this.$t("welcomeMsg")这是工作,但没有翻译!
对于 ES6 模板字符串,您需要使用${ }语法而不是{{ }}:
msg: `${this.$t("welcomeMsg")}`
Run Code Online (Sandbox Code Playgroud)
但是这里不需要使用模板字符串(除非你想在消息之前或之后添加额外的文本);只需这样做:
msg: this.$t("welcomeMsg")
Run Code Online (Sandbox Code Playgroud)
最后,如果您不打算修改msg,那么它应该是一个计算属性:
computed: {
msg() {
return this.$t("welcomeMsg")
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
除了 user115014 的评论之外,这就是您在 Vue3 中通过组合 api 使用它的方式。
import {useI18n} from "vue-i18n";
const i18n = useI18n();
const translatedMessage = i18n.t("welcomeMsg");
Run Code Online (Sandbox Code Playgroud)