[TOC]
#### Vue 国际化
* [ ] 文档 https://github.com/kazupon/vue-i18n
* [ ] 安装 cnpm i -S vue-i18n
* [ ] 使用
1. src 目录下新建 lang 文件夹
![](https://box.kancloud.cn/34f8661924c4316ba4e8c0eeb8279166_156x183.png)
*****
2. cn.js en.js
~~~
const messages = {
home: {
title:
'书城',
hint: '计算机科学和软件工程',
guessYouLike: '猜你喜欢',
change: '换一批',
clear: '清空',
hotSearch: '热门搜索',
historySearch: '搜索历史',
sameAuthor: '与$1同作者',
sameReader: '对$1感兴趣的人也在读',
readPercent: '阅读$2的人,$1都在读',
recommend: '热门推荐',
seeAll: '查看全部',
readers: '$1人同时在读',
featured: '精选',
category: '分类',
books: '本书',
readNow: '立即阅读',
allBook: '共 $1 本图书'
}
}
export default messages
~~~
~~~
const messages = {
home: {
title:'Book Store',
hint: 'Computer Science And Software Engineering',
guessYouLike: 'Guess You Like',
change: 'Change',
clear: 'Clear',
hotSearch: 'Hot Search',
historySearch: 'History Search',
sameAuthor: 'Same author with $1',
sameReader: 'Same reader with $1',
readPercent: '$1 is reading $2',
recommend: 'Recommend',
seeAll: 'See all',
readers: '$1 is reading',
featured: 'Featured',
category: 'Category',
books: 'books',
readNow: 'Read Now',
allBook: '$1 books'
}
}
export default messages
~~~
*****
3. index.js
~~~
import Vue from 'vue'
import VueI18N from 'vue-i18n'
// 引入中英文
import en from './en'
import cn from './cn'
import { getLanguage, saveLanguage } from '@/utils/storages'
// 插件注册
Vue.use(VueI18N)
const messages = {
en,
cn
}
// 从缓存中获取
let locale= getLanguage()
// 不存在 则 设置一个默认语言,然后保存在缓存中
if (!locale) {
locale= 'cn'
saveLanguage( locale)
}
// i18n 配置
const i18n = new VueI18N({
locale, // 语言
messages // 语言包
})
export default i18n
~~~
*****
~~~
import Storage from 'web-storage-cache'
const localStorage = new Storage()
export function setLocalStorage(key, value)
{
return localStorage.set(key, value)
}
export function getLocalStorage(key)
{
return localStorage.get(key)
}
export function removeLocalStorage(key)
{
return localStorage.delete(key)
}
export function clearLocalStorage()
{
return localStorage.clear()
}
// 获取语言
export function getLanguage()
{
return getLocalStorage('locale')
}
// 设置语言
export function saveLanguage(value)
{
return setLocalStorage('locale', value)
}
~~~
*****
4. man.js 引入 国际化
![](https://box.kancloud.cn/4c9e38841db0d70fd3cb9b007c389048_386x433.png)
~~~
import 'babel-polyfill'
import Vue from 'vue'
import './cube-ui'
import App from './App.vue'
import router from './router'
import store from './store'
import i18n from './lang'
import 'amfe-flexible'
import fastClick from 'fastclick'
import 'assets/stylus/base.styl'
fastClick.attach(document.body)
Vue.config.productionTip = false
new Vue({
router,
store,
i18n,
render: h => h(App)
}).$mount('#app')
~~~
*****
5. 组件中使用
![](https://box.kancloud.cn/c4c72a451dc463ee2a1730f98f56c14f_662x139.png)
~~~
<div class="title">
<div class="title-down" @click="hidePopUp"><i class="icon-down2"></i></div>
{{$t('book.selectFont')}}
</div>
~~~
- 起步
- 环境搭建
- mock数据
- 基础
- 生命周期
- 过滤器
- 过渡动画
- keyframes动画
- 动画JS钩子
- 路由
- 导航守卫
- 全局守卫
- 监听器
- 自定义组件
- 获取焦点
- mixins
- mixins抽离vuex
- 国际化
- 动态组件
- Dom
- 扩展
- 安装devTools
- scss
- Nuxt引用多个UI库
- vuex
- vuex命名空间
- vuex定义
- cli
- 安装与卸载
- 环境变量
- 杂项
- Mock数据
- FeHelper
- git
- 反向代理
- 本地存储
- stylus
- 常用mixins
- jsonp
- 配置
- mock配置
- 跨域配置
- 自定义路径
- px2rem
- 代理后端请求
- 常用算法
- 字母排序城市数据
- 倒计时
- 通讯录数据结构
- 请求
- axios防止多次请求
- 封装axios请求
- axios使用
- 封装axios
- 插件
- BetterScroll
- 高德定位
- polyfill
- fastClick
- LazyLoad
- storageCache
- moment
- keyFrameAnimation
- vueSwiper
- 组件
- Loading组件
- header组件
- 仿有道App导航
- SupportIcon
- 仿饿了么购物车跳动
- 购物车小球缓动
- 小球飞入购物车
- 仿音乐歌手列表
- 唱片飞入效果
- 搜索组件
- 仿美团PC搜索框
- 页面布局
- stickyFooter
- 背景色渐变
- 背景虚化
- Ui组件
- CubeUi
- CreateApi
- tab滑屏切换
- 索引列表
- BScroll
- BScroll左右联动导航
- vant
- 函数库
- 常用Dom函数库
- axios封装
- 格式化音乐播放时长
- 搜索节流
- time格式化
- JS基础
- window对象中的高度
- JS中的宽高
- 常用正则
- nuxt
- nuxtVuex
- 监听页面滚动
- 监听body滚动
- 监听局部滚动