在使用 vuejs 计算的内部翻译

Posted

技术标签:

【中文标题】在使用 vuejs 计算的内部翻译【英文标题】:Translate inside a computed with vuejs 【发布时间】:2022-01-22 06:26:20 【问题描述】:

我想翻译这段代码中的状态:

computed: 

    variant() 
      if (status === this.$t("vue.pending") || this.$t("vue.not_contract")) 
        return "warning";
       else if (status === this.$t("vue.confirmed")) 
        return "success";
       else if (status === this.$t("vue.expired") || this.$t("vue.declined")) 
        return "error";
       else 
        return "dark";
      
    ,
  ,

我试过把这个。$t 但它不起作用。

模板是:

    <div class="mt-2">
 <b-badge :variant="variant">
   contract.status </b-badge>
</div>

有人可以帮我吗?

控制台返回此错误: [vue-i18n] 键 'vue.not_contract' 的值不是字符串或函数! [vue-i18n] 无法翻译 keypath ‘vue.not_contract’ 的值。使用 keypath 的值作为默认值。

我是这样安排的: 模板:

<div class="mt-2">
   <b-badge :variant="variant">
      $t(contract.status) </b-badge>
  </div>

脚本:

computed:
variant() 
      if (status === "pending" || "not_contract") 
        return "warning";
       else if (status === "confirmed") 
        return "success";
       else if (status === "expired" || "declined")
        return "error";
       else 
        return "dark";
      
    ,

【问题讨论】:

自上一个问题***.com/questions/70394734/… 以来没有任何改进。如果您有兴趣解决您的问题,您仍然需要提供一种重现问题的方法。在您的情况下,不知道什么不起作用。如果有错误,则需要列出。见***.com/help/how-to-ask 和***.com/help/mcve 您无法在计算属性中访问this,因此(afaik)在这里无法使用 vue-18n。相反,您需要在 methods 部分处理此登录。 错误:[vue-i18n] 键 'vue.not_contract' 的值不是字符串或函数! @Alicia 在我的模板中如何调用这些方法? 所以使用方法与计算值几乎完全相同,除了它们在methods部分下,该方法需要返回一个值,当你调用它时,你会需要包含括号()(与计算不同)。语法见方法部分of this page in the docs 【参考方案1】:

确保在数据部分声明status,即使它的值为undefined,否则它不会是反应式的。

data()
 return 
  status: undefined
  // or status: 'pending', etc
 

【讨论】:

以上是关于在使用 vuejs 计算的内部翻译的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 vuejs 翻译选择选项

如何使用 vuejs 翻译从 Api 获取的对象

在 Vuejs 中使用 async-await 等待函数内部的赋值

Vuejs使用笔记 --- component内部实现

使用Vuejs 开发chrome 插件的注意事项

在 vueJs 的方法中使用计算属性