给iview项目加一个i18n国际化翻译

看了上一篇博客吗?我们就根据那一篇博客来,用里面的项目,进行我们接下来国际化翻译项目。
我们安装vue-i18n和js-cookie

npm install vue-i18n
npm install js-cookie --save

第一步在main.js的js引入i18n

第二步建立src/locale文件夹,

//en-US.js
export default {
    "components": {
    // "langChange": 'Language switching'
        "langChange": 'Lang'
    }
}
//zh-CN
export default {
    "components": {
        "langChange": '语言'
    }
}
//index.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Cookies from 'js-cookie'
import zhCNLocale from 'iview/src/locale/lang/zh-CN'
import enUSLocale from 'iview/src/locale/lang/en-US'
import zhCN from './lang/zh-CN'
import enUS from './lang/en-US'

Vue.use(VueI18n)

const messages = {
    'zh-CN':{
        ...zhCN,
        ...zhCNLocale
    },
    'en-US':{
        ...enUS,
        ...enUSLocale
    }
}
const getLanguage = function () {
    let lang = navigator.browerLanguage?navigator.browerLanguage:navigator.language||navigator.userLanguage
    lang = lang?lang:'zh-CN'
    if(Cookies.get('language')){
        lang = Cookies.get('language')
    }
    return lang
}
const i18n = new VueI18n({
    locale:getLanguage(),
    messages
})
export default i18n

创建LangSelect.vue组件

<template>
  <div>
    <Dropdown>
      <a href="javascript:void(0)">
        {{$t('components.langChange')}}
        <Icon type="ios-arrow-down"></Icon>
      </a>
      <Dropdown-menu slot="list">
        <!--
          DropdownItem 这里必须用 @click.native 绑定点击事件
         -->
        <Dropdown-item v-for="(item,key) in languages" :key="item.id" @click.native="changeLanguage(key)">
          {{ item }}
        </Dropdown-item>
      </Dropdown-menu>
    </Dropdown>
  </div>
</template>

<script>
export default {
  computed: {
    locale() {
      return this.$store.getters.language
    }
  },
  mounted() {
    // this.currentLanguage = this.languages[this.locale];
  },
  data() {
    return {
      // currentLanguage: "",
      languages: {
        "zh-CN": "简体中文",
        "en-US": "English"
      }
    };
  },
  methods: {
    changeLanguage(lang) {
      this.$i18n.locale = lang
      this.$store.dispatch('setLanguage', lang)
      this.currentLanguage = this.languages[this.locale];
    }
  }
};
</script>

<style scoped>
</style>

在store中添加状态

//action/index.js
import setLanguage from './setLanguage.js'
export default {
    setLanguage
}
//setLanguage.js
import Cookies from 'js-cookie'

export default ({ commit, getters }, language) => {
  commit('updateLanguage', language)
}
//getters/index.js
import language from './language'
export default {
    language
}
//getters/language.js
export default (state) => {
    return state.language
}
//mutations/index.js
import updateLanguage from './updateLanguage'
export default {
    updateLanguage
}
//mutations/updateLanguage.js
import Cookies from 'js-cookie'
export default (state,language) => {
    console.log('updateLang:'+language)
    state.language = language
    Cookies.set('language',language)
}
//state/index.js
import language from './language'
export default {
    language
}
//state/language
import Cookies from 'js-cookie'
export default Cookies.get('language') || 'zh-CN'
//store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
import state from './state'
import getters from './getters'
import mutations from './mutations'
import actions from './actions'
export default new Vuex.Store({
    state,
    getters,
    mutations,
    actions
})

在HelloWorld中引入LangSelect组件

<template>
  <div class="language-all">
    <div class="langguage">
      <lang-select class="right-menu-item"></lang-select>
    </div>
  </div>

</template>

<script>
import {mapGetters} from 'vuex'
import LangSelect from './LangSelect'
export default {
  name: 'HelloWorld',
  components:{
    'lang-select':LangSelect
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
  h3 {
    margin: 30px auto 20px 30px;
  }

  .device-list-con {
    padding: 10px;
  }

  .table-bar {
    margin: 30px 20px 10px 20px
  }

  .table-bar .search-input {
    width: 300px;
  }

  .table {
    margin: 0 20px 0 20px
  }
</style>

我们看一下页面运行的效果

大家可以按照上面我的方法做,实现不了效果留言,我解答
里面还存在一个很重要的东西没有引用,看你们发现没有。

原文地址:https://www.cnblogs.com/smart-girl/p/11083270.html

时间: 2024-10-29 09:11:54

给iview项目加一个i18n国际化翻译的相关文章

SpringBoot系列——i18n国际化

前言 国际化是项目中不可或缺的功能,本文将实现springboot + thymeleaf的HTML页面.js代码.java代码国际化过程记录下来. 代码编写 工程结构 每个文件里面的值(按工程结构循序从上往下) ##################默认值############################# welcome=Welcome ##################英文############################# welcome=Welcome ##########

Odoo国际化翻译方法及示例介绍

本文主要介绍了odoo国际化翻译使用的方法及示例 国际化翻译方法 每个模块的翻译文件放在该模块目录下i18n目录里.模块内相关字符串一般用英语写成,然后通过翻译模板导出功能(Settings ? Translations ? Import/Export ? Export Translation)导出一个翻译模板pot文件.翻译人员使用翻译软件(poedit)进行翻译后,产生对应语言po文件,再放入i18n目录下供odoo加载.po文件的文件名规则一般由对应语言缩写或语言_国家组成,如中文为zh.

Django1.9开发博客(12)- i18n国际化

国际化与本地化的目的为了能为各个不同的用户以他们最熟悉的语言和格式来显示网页. Django能完美支持文本翻译.日期时间和数字的格式化.时区. 另外,Django还有两点优势: 允许开发者和模板作者指定他们哪些app应该被翻译或被格式化为本地形式. 允许用户根据自己的偏好来实现本地化显示.翻译依据语言,格式化依据国家, 这些信息由浏览器中的Accept-Language头来决定.不过目前为止时区还未能实现. 参考官方文档:https://docs.djangoproject.com/en/1.9

004-ant design pro安装、目录结构、项目加载启动

一.概述 1.1.脚手架概念 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具.例如大多数的React项目都有src,public,webpack配置文件等等,而src目录中又包含components目录等等.每次在新建项目时,手动创建这些固定的文件目录.脚手架的作用就是帮助你完成这些重复性的工作,包括一键生成主要的目录结构.安装依赖等等. 1.2.参考地址 ant design参看地址:https://ant.design/docs/react/intr

前端框架Vue.js——vue-i18n ,vue项目中如何实现国际化

每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 一.前言 趁着10月的最后一天,来写一篇关于前端国际化的实践型博客.国际化应该都不陌生,就是一个网站.应用可以实现语言的切换. 在这就不谈原理,只说说如何实现中英文的切换.做技术的总得先把 demo 做出来嘛. 二.demo 场景需求分析 需求很简单,左上角 ''网易云音乐''就是一个中英文切换的按钮,点击弹出提示框,确认切换语言后,实现英文版本. 切换成英文版本: 三.实现国际化

css,js文件后面加一个版本号

由于前几天,更新了项目,更新的文件有js文件,今天客人截图过来,我发现修改之后的效果没有显示出来,我回复说清理浏览器缓存.到了晚上,客人找老板,说还没有处理到這个,说客人不懂這个.所以想到之前自己为了避免浏览器缓存js,css文件,在js,css后面加一个版本号,时间随机.這次笔者是在js后面加了一个版本号参数,应该可以强制到客人的浏览器浏览這个画面时,重新下载修改之后的js文件.如: <script type="text/javascript" src="js/tes

sh里没有多行注释,只能每一行加一个#号

sh里没有多行注释,只能每一行加一个#号.只能像这样: #-------------------------------------------- # 这是一个自动打ipa的脚本,基于webfrogs的ipa-build书写: # https://github.com/webfrogs/xcode_shell/blob/master/ipa-build # 功能:自动为etao ios app打包,产出物为14个渠道的ipa包 # 特色:全自动打包,不需要输入任何参数 #------------

项目集管理研究中心专家翻译与审校《项目集管理标准》

(2014年7月4日 北京) 共创国际-项目管理者联盟下属项目集管理研究中心(Program Management Research center)专家杨侃教授与林勇副主任参与翻译并审校<项目集管理标准>(<The Standard for Progra management>). <项目集管理标准>的引进与推广必将提升中国大型项目与项目群管理的实践水平.欢迎对该标准有研究与学习兴趣的企业经理,业界专家参与标准的交流.学习与研讨,共同推广项目集管理在中国的应用与发展.

JPA项目的一个小模块案例

最近在做一个Web项目,找一个小的模块来做笔记,稍微整理下,嗯,入题了 整个项目所用框架大致如下:后台>Struts+Spring+JPA; 前台>jgGrid 下面是整个项目的后台功能逻辑部分: 下面是前台页面展示部分: 这是系统所用到的jar包: 因为用到struts标签所以需要引入一下文件(前面为路径): 1.  b/WebRoot/WEB-INF/struts-bean.tld 2.  b/WebRoot/WEB-INF/struts-html.tld 3.  b/WebRoot/WE