首先是是在main.js文件中把国际化引入进来

  1. import Vue from 'vue'
  2. import App from './App'
  3. import router from './router'
  4. import VueI18n from 'vue-i18n'
  5.  
  6. Vue.use(VueI18n)
  7. Vue.config.productionTip = false
  8. const i18n = new VueI18n({
  9. locale: 'zh-CN',
  10. messages: {
  11. 'zh-CN': {
  12. 'detail1': '详情1',
  13. 'detail2': '详情2',
  14. 'detail3': '详情3',
  15. 'year': '年'
  16. },
  17. 'en-US': {
  18. 'detail1': 'Detail1',
  19. 'detail2': 'Detail2',
  20. 'detail3': 'Detail3',
  21. 'year': 'year'
  22. }
  23. }
  24. })
  25.  
  26. new Vue({
  27. el: '#app',
  28. i18n: i18n,
  29. router,
  30. components: { App },
  31. template: '<App/>'
  32. })

main.js

其中我现在先在这个文件里面简单配置一些国际化的数据,放到常量i18n中,其中locale就是用来配置当前系统的语言的。目前这里采用的中文的,如果页面可以支持多种语言切换的话,这事件触发后就是改这里的配置的值,若改成英文,这设置为“en-US”

接下来就是在页面中使用的问题了。

第一种使用方式:在视图模板中直接使用,采用{{$t('xxxx')}}的方式。如下我现在使用'detail1'这个的国际化:

页面显示的效果就是:

中文效果:

英文效果:

第二种使用方式,是在脚本里面使用,这时可以采用 this.$t('xxxx')的方式。如下

  1. <template>
  2. <div>
  3. <h1>{{$t('detail1')}}</h1>
  4. <el-button @click="print">打印</el-button>
  5. </div>
  6. </template>
  7. <script>
  8. export default{
  9. methods:{
  10. print(){
  11. console.log(this.$t('detail1'))
  12. }
  13. },
  14. }
  15. </script>
  16.  
  17. <style>
  18.  
  19. </style>

test.vue

因为第二种方式中的this,指的是vue实例,所以这种方式在.vue结尾的的文件中能够生效。但是如果是例如在我们定义常量的文件里面要使用的话,就行不通了。那我们在常量中定义的数据,到页面显示,要怎样才能也使用上这个国际化呢。这个我们就来看下第三种方式。

第三种使用方式,在普通js文件中中配置,在页面上也展示国际化。

首先我们现在main.js文件中的国际化里面增加月份的国际化配置:

  1. const i18n = new VueI18n({
  2. locale: 'zh-CN',
  3. messages: {
  4. 'zh-CN': {
  5. 'detail1': '详情1',
  6. 'detail2': '详情2',
  7. 'detail3': '详情3',
  8. 'year': '年',
  9. 'month1': '1月',
  10. 'month2': '2月',
  11. 'month3': '3月'
  12. },
  13. 'en-US': {
  14. 'detail1': 'Detail1',
  15. 'detail2': 'Detail2',
  16. 'detail3': 'Detail3',
  17. 'year': 'year',
  18. 'month1': 'January',
  19. 'month2': 'February',
  20. 'month3': 'March'
  21. }
  22. }
  23. })

main.js

然后我们准备一个constant.js文件。在里面如下配置:

  1. export const months = ['month1', 'month2', 'month3'].map((item, index) => { return {'label': item, 'value': index + 1} })

constants.js

这里注意的是,我这里的月份,直接使用的就是我们国际化里面配置的月份的key值。接下来我们就来页面上使用了。

这里把月份放到下拉框里面展示为例:

  1. <template>
  2. <div>
  3. <h1>{{$t('detail1')}}</h1>
  4. <el-button @click="print">打印</el-button>
  5. <el-select v-model="month" placeholder="请选择月份">
  6. <el-option v-for="item in months" :key="item.value" :label="$t(item.label)" :value="item.value">
  7. </el-option>
  8. </el-select>
  9. </div>
  10. </template>
  11. <script>
  12. import {months} from '@/util/constants'
  13. export default{
  14. data(){
  15. return{
  16. month:'',
  17. months:[]
  18. }
  19. },
  20. methods:{
  21. print(){
  22. console.log(this.$t('detail1'))
  23. }
  24. },
  25. created(){
  26. this.months = months
  27. }
  28. }
  29. </script>
  30.  
  31. <style>
  32.  
  33. </style>

test.vue

这里注意的一点就是,在视图模型中,下拉框的label采用  :label="$t(item.label)"的方式,从而来到达国际展示的方式。

中文页面效果如下:

英文页面效果如下:

到此,三种方式介绍完毕。因为在开发中遇到这样的问题,故顺便总结下分享出来。如果大家有其他类似的问题或方式可以留言分享^_^。

Vue国际化的使用的更多相关文章

  1. Vue国际化处理 vue-i18n 以及项目自动切换中英文

    1. 环境搭建 命令进入项目目录,执行以下命令安装vue 国际化插件vue-i18n npm install vue-i18n --save 2. 项目增加国际化翻译文件 在项目的src下添加lang ...

  2. Vue 国际化 vue-i18n 用法详解

    vue-i18n 仓库地址:https://github.com/kazupon/vue-i18n 兼容性: 支持 Vue.js 2.x 以上版本 安装方法:(此处只演示 npm) npm insta ...

  3. vue国际化高逼格多语言

    ## 1.NPM 项目安装 ``` cnpm i vue-i18n ``` ## 2.使用方法 ``` /* 国际化使用规则 */ import Vue from 'vue' import VueI1 ...

  4. vue国际化问题i18n为null

    1.vue的国际化关于使用请看这位大佬的文章https://segmentfault.com/a/1190000015008808 2.this指向问题https://segmentfault.com ...

  5. 使用vue国际化中出现内置的组件无法切换语言的问题(element-ui、ivew)

    在main.js中引入对应组件的语言包 eg: import VueI18n from 'vue-i18n'; // 引入国际化 import elementEn from 'element-ui/l ...

  6. vue国际化

    插件:vue-i18n main.js引入i18n.js:+2行 新建文件(i18n.js),引入VueI18n.locale.语言包 新建语言包,包括index/zh/en(名字随意,引用正确就好) ...

  7. vue 国际化i18n 多语言切换

    安装 npm install vue-i18n 新建一个文件夹 i18n ,内新建 en.js zh.js index.js 三个文件 准备翻译信息 en.js export default { ho ...

  8. vue国际化插件

    1.安装 $ npm install vue-i18n 2.引入 import VueI18n from 'vue-i18n' Vue.use(VueI18n) const i18n = new Vu ...

  9. 应用九:Vue之国际化(vue-i18n)

    vue-i18n是一款针对Vue.js 的国际化插件,具体应用步骤如下: 一.安装插件 npm install vue-i18n --save 二.在main.js中引入插件 import VueI1 ...

随机推荐

  1. php redis 操作手册

    String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 1 $redis-&g ...

  2. 新的开发域名 fastadmin.tk

    新的开发域名 fastadmin.tk 这个的所有子域名批向 127.0.0.1,可以用于开发. 以后不用再修改系统的 hosts. 使用案例 手把手教你安装 FastAdmin 到虚拟主机 (php ...

  3. SQL Server 学习系列之六

    SQL Server 学习系列之六 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...

  4. Tomcat反带和集群

    Nginx|Apache反带用户请求到Tomcat LNMT: client -->http --> nginx --> reverse_proxy --> http --&g ...

  5. SQL SERVER存储过程的几种示例

    1.常用系统存储过程及使用语法:exec sp_databases; --查看数据库exec sp_tables; --查看表exec sp_columns student;--查看列exec sp_ ...

  6. C语言 字符串中数字的运算

    主函数中输入字符串"32486"和"12345",在主函数中输出的函数值为44831. #include <stdio.h> #include &l ...

  7. HP 防止cciss设备被DM映射

    http://h10025.www1.hp.com/ewfrf/wc/document?cc=cn&lc=zh-hans&dlc=zh-hans&docname=c034933 ...

  8. Mingw版QtCreator调用VS编译的C++库的方法

    https://wenku.baidu.com/view/ae3667fe0b1c59eef8c7b4bc.html

  9. django的settings.py设置session

    ############ # SESSIONS # ############ SESSION_CACHE_ALIAS = 'default' # Cache to store session data ...

  10. 使用cython把python编译so

    1.需求 为了保证线上代码安全和效率,使用python编写代码,pyc可直接反编译,于是把重要代码编译so文件 2.工作 2.1 安装相关库: pip install cython yum insta ...