当前位置 博文首页 > 文章内容

    Vue多语言切换-i18n使用

    作者: 栏目:未分类 时间:2020-07-20 14:04:24

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    多语言切换

        vue使用中经常设计到多语言切换。

        官方文档比较通俗,1小时看完就会上手,我简单记录下自己在使用犯蠢的错误。

    官网地址:http://kazupon.github.io/vue-i18n/zh/api/#

    1. $tc , $t , $te , v-t

    1.$tc 用于复数,例如英文一般分单复数

    这里的复数,指的是同一个字段,可能根据单复数不同可以有多个值对关系;

    const messages = {
      en: {
        apple: 'no apples | one apple | {count} apples',
        banana: 'no bananas | {n} banana | {n} bananas'
      }
    }
    <p>{{ $tc('car', 1) }}</p>
    <p>{{ $tc('car', 2) }}</p>
    

    2.$t 使用在一般场景,替换值为单个元素的

    注意:$tc可以用于复数和非复数情况,$t只能用于非复数情况

    3.$te 返回的是boolean值,判断key是否存在。

    4.v-t 指令形式的表达

    • 两种形式:1.字符串形式传递。总之需要传递的值是字符串,在“”双引号中,单引号''包裹的字符串;2.对象的方式,具体可以看官网示例
     <!-- 字符串 -->
      <p v-t="'hello'"></p>
      <!-- 通过数据进行键名路径绑定 -->
      <p v-t="path"></p> 
    
     i18n: new VueI18n({
        locale: 'en',
        messages: {
          en: { hello: 'hi there!' }
        }
      }),
      data: { path: 'hello' }
    
    • v-t 和 $t()进行比较
      - v-t 性能更好,但是使用更复杂,需要设置自定义指令到 createRenderer 函数的 directives 选项
      - $t() 更灵活,但是每次重新渲染时都会被执行,影响性能。

    存在问题

    问题1.Cannot translate the value of keypath 'home.totalAssets'

    无法成功展示,切换

    很多人说是下面的这个配置:
    
    silentFallbackWarn:true,//避免退到 fallbackLocale 产生警告
    
    然鹅,我犯得比较低级的错误,我把定义i18n中的messages,写成了message。粗心造成的问题,害我找了半天。