zoukankan      html  css  js  c++  java
  • Vue多语言切换-i18n使用

    多语言切换

        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。粗心造成的问题,害我找了半天。
    
    
  • 相关阅读:
    magento 产品目录全部修改 :
    zencart 支付流程总结
    去掉 power by ecshop的方法
    ECSHOP实现收货国家省市由选择下拉菜单改为手动
    MYSQL的随机抽取实现方法
    Ecshop中导航栏中使用二级菜单显示并调用子分类
    打包遇到的问题
    jQuery is not defined问题
    实现表格中每行展开收起内容
    jQuery对象与DOM对象的相互转化
  • 原文地址:https://www.cnblogs.com/perferect/p/13344370.html
Copyright © 2011-2022 走看看