Vue 国际化

本贴最后更新于 607 天前,其中的信息可能已经时过境迁

国际化

安装

Vue-Cli3 使用下面命令

vue add i18n

然后可能会报错

TypeError: _ctx.$t is not a function 

解决办法

在创建国际化组件时,加上一个属性

globalInjection: true,

默认位于/src/i18n.js

本地国际化

最新版本还支持本地文件国际化,使用方法如下:


  {{ t('hello') }}





import { defineComponent } from 'vue'
import { useI18n } from 'vue-i18n'

export default defineComponent({
  name: 'HelloI18n',
  setup() {
    const { t } = useI18n({
      inheritLocale: true,
      useScope: 'local'
    })

    // Something todo ..

    return { t }
  }
})



{
  "en": {
    "hello": "Hello i18n in SFC!"
  }
}

语言选择

添加语言选择功能


  
    
      
        
          
        
      
    
  





export default {
  name: 'locale-changer',
  data() {
    return {
      langs: [
        {
          value: 'zh_CN',
          label: "简体中文"
        },
        {
          value: 'en_US',
          label: "English"
        }
      ]
    }
  },
  methods: {
    langChanged(lang) {
      console.log("langChanged=>", lang);
      localStorage.Lang = lang;
    }
  },
  mounted() {
    if (localStorage.Lang != null) this.$i18n.locale = localStorage.Lang;
  }
}

参考

https://github.com/intlify/vue-i18n-next/issues/350

https://stackoverflow.com/questions/56854403/vue-i18n-how-to-keep-language-after-refresh-access-i18n-locale-in-js-runtime

打赏 5 积分后可见
5 积分
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    261 引用 • 662 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    7 引用 • 26 回帖 • 3 关注

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...