基于Vue+ElementUI架构的前端国际化解决方案
1.项目目录结构
├── build 构建相关配置文件
| |── index.js webpack的基础配置入口
├── mock 项目mock 模拟数据 在后端没有提供接口的情况下可以拦截自己的数据进行开发
├── public 静态资源
│ │── favicon.ico favicon图标
│ └── index.html html模板,主html入口
├── dist 项目构建后生成的目录结构
| |── index.html
| |── static
| |── css
| |── js
| |── images
├── src 源代码
│ ├── api 存放数据请求的接口,目录下的js命名(模块名.js)
│ ├── assets 存放静态资源,如字体,图片,公共样式,js等
│ ├── components 全局公用组件 如有一个独立功能需要建立多个组件请建立文件夹
│ ├── directive 全局指令
│ ├── filters 全局 filter
│ ├── icons 项目所有 svg icons
│ ├── language 多语言配置
│ ├── layout 全局 layout,框架布局目录
│ ├── router 路由
│ ├── store 全局 store管理 VueX目录
│ ├── styles 全局样式
│ ├── utils 全局公用方法
│ ├── views views 所有页面 主要用于存放导航或者侧边栏,路由配置成嵌套路由即可存在导航或侧边栏
│ ├── App.vue 入口页面
│ ├── main.js 入口文件 加载组件 初始化等
│ └── permission.js 权限管理
├── tests 测试
├── .env.xxx 环境变量配置,测试,线上等
├── .eslintrc.js eslint 配置项
├── .babelrc babel-loader 配置
├── .travis.yml 自动化CI配置
├── vue.config.js vue-cli 配置
├── postcss.config.js postcss 配置
└── package.json package.json,依赖安装及版本
2.安装多语言模块 npm install vue-i18n --save
创建目录 /src/language,并分别创建文件 en.json、index.js、lang.js、zh.json,以中英文语言切换为例,如果需要增加其他语言,可增加相应的 .json文件即可
├── src 源代码
│ ├── language 多语言配置目录
│ │ │── index.js 多语言核心入口文件
│ │ │── lang.js 存储用户的语言选择
│ │ │── en.json 中文配置文件
│ │ │── zh.json 英文配置文件
......
/src/language/index.js 文件的内容如下:
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import LangStorage from './lang'
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN' Vue.use(VueI18n) const DEFAULT_LANG = 'zh'
const LOCALE_KEY = 'localeLanguage'
const locales = {
zh: Object.assign(require('./zh.json'), zhLocale),
en: Object.assign(require('./en.json'), enLocale)
}
const i18n = new VueI18n({
locale: LangStorage.getLang('zh'),
messages: locales
})
export const setup = lang => {
if (lang === undefined) {
lang = window.localStorage.getItem(LOCALE_KEY)
if (locales[lang] === undefined) {
lang = DEFAULT_LANG
}
}
console.log(lang)
window.localStorage.setItem(LOCALE_KEY, lang)
Object.keys(locales).forEach(lang => {
document.body.classList.remove(`lang-${lang}`)
})
document.body.classList.add(`lang-${lang}`)
document.body.setAttribute('lang', lang)
Vue.config.lang = lang
i18n.locale = lang
}
window.i18n = i18n
export default i18n
/src/language/index.js 文件的内容如下:
export default {
setLang (lang) {
window.localStorage.setItem('user_lang', lang)
},
getLang (defaultLang) {
const localLang = window.localStorage.getItem('user_lang')
if (localLang === null) {
return defaultLang
} else {
return localLang
}
}
}
/src/language/zh.json 文件的内容如下:
{
"main": {
"hello": "你好"
},
"Form": "表单",
"router": {
"maybe": "也许"
}
}
/src/language/en.json 文件的内容如下:
{
"main": {
"hello": "Hello"
},
"Form": "Form",
"router": {
"maybe": "Maybe"
}
}
/src/main.js中新增代码如下:
import i18n from './language'
Vue.use(ElementUI, {
i18n: (key, value) => i18n.t(key, value)
})
new Vue({
el: '#app',
i18n,
router,
store,
render: h => h(App)
})
3.模板中使用
<el-button @click="changeLanguage">中英切换</el-button>
<div>{{$t("main.hello")}}</div>
......
import { setup } from '@/language/index.js'
import LangStorage from '@/language/lang'
methods:{
changeLanguage () {
if (this.$i18n.locale === 'en') {
setup('zh')
} else {
setup('en')
}
LangStorage.setLang(this.$i18n.locale)
}
}
点击按钮即可查看切换效果~~
基于Vue+ElementUI架构的前端国际化解决方案的更多相关文章
- 「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之自定义组件(四)
基于Vue和Quasar的前端SPA项目实战之序列号(四) 回顾 通过上一篇文章 基于Vue和Quasar的前端SPA项目实战之布局菜单(三)的介绍,我们已经完成了布局菜单,本文主要介绍序列号功能的实 ...
- 前端系列——jquery前端国际化解决方案“填坑日记”
前言:最近,新的平台还没有开发完成,原来的老项目又提出了新的需求:系统国际化.如果是前后端完全分离的开发模式,要做国际化,真的太简单了,有现成的解决方案,基于Node构建的时下热门的任何一种技术选型都 ...
- 前端系列——jquery.i18n.properties前端国际化解决方案“填坑日记”
前言:最近,新的平台还没有开发完成,原来的老项目又提出了新的需求:系统国际化.如果是前后端完全分离的开发模式,要做国际化,真的太简单了,有现成的解决方案,基于Node构建的时下热门的任何一种技术选型都 ...
- jquery.i18n.properties前端国际化解决方案“填坑日记”
但现在的情况是老的项目并没有使用这类架构.说起国际化,博主几年前就做过,在MVC里面实现国际化有通用的解决方案,主要就是通过资源文件的方式定义多语言.最初接到这个任务,并没有太多顾虑,毕竟这种东西有很 ...
- 基于Vue.js的uni-app前端框架结合.net core开发跨平台project
一.由来 最近由于业务需要要开发一套公益的APP项目,因此结合所给出的需求最终采用uni-app这种跨平台前端框架以及.netcore快速搭建我们的项目,并且能做到一套代码跨多个平台. 当然在前期技术 ...
- Vue(三十三)国际化解决方案
摘自:https://blog.csdn.net/qq_41485414/article/details/81093999 (1)第一种方式:中英文两套页面 优点:技术含量最低 缺点:占内存,响应慢, ...
- 基于Vue的机器学习平台前端
项目演示地址:http://vidanao.com/ml>注意1:前端兼容性不太好,360浏览器比较兼容; >注意2:此vidanao.com也是我的个人博文主页,但目前还没部署 源码地址 ...
- 基于Vue element-ui实现支持多级纵向动态表头的仿表格布局
[本文出自天外归云的博客园] 需求图示如下,多级纵向动态表头表格: 我的思路是用element-ui的layout实现,做出一个仿造表格,能够支持动态的.多级的.纵向的表头: <template ...
- Vue -- 项目报错整理(2):IE报错 - ‘SyntaxError:strict 模式下不允许一个属性有多个定义‘ ,基于vue element-ui页面跳转坑的解决
随机推荐
- cmake - 编译
cmake在编译期间会使用到的命令总结: 1.指定编译器并同时设置编译选项 set(CMAKE_CXX_COMPILER "clang++" ) # 显示指定使用的C++编译器 s ...
- 震惊!java中日期格式化的大坑!
前言 我们都知道在java中进行日期格式化使用simpledateformat.通过格式 yyyy-MM-dd 等来进行格式化,但是你知道其中微小的坑吗? yyyy 和 YYYY 示例代码 @Test ...
- Salesforce 大数据量处理篇(二)Index
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.202.0.salesforce_large_data_volumes_bp.meta/ ...
- linux脚本错误: line *: [: missing `]',linux编写shell脚本时的注意点
转载:https://www.cnblogs.com/bovenson/p/4548079.html 关于shell的一些注意点,粘贴自拉钩教育精选评论:测试开发核心技术 46 讲-->第6讲 ...
- Server 2012 R2 Standard 安装运行PCS7时出现“无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll”解决方法
网上看到了这篇文章https://www.jianshu.com/p/21f4bb8b5502,根据思路自己尝试,解决了丢失的问题.提示[计算机中丢失api-ms-win-crt-runtime-l1 ...
- leetcode1637-两点之间不包括任何点的最宽垂直面积
题目 给你 n 个二维平面上的点 points ,其中 points[i] = [xi, yi] ,请你返回两点之间内部不包含任何点的 最宽垂直面积 的宽度. 垂直面积 的定义是固定宽度,而 y 轴上 ...
- C++ 异常机制(上)
目录 一.概念 二.异常的好处 三.基本语法 四.栈解旋 五.异常接口声明 六.异常对象的内存模型 七.异常对象的生命周期 一.概念 异常:存在于运行时的反常行为,这些行为超过了函数的正常的功能范围. ...
- kubernets之configMap和secret
一 如何有效且更好的将配置写到pod的容器中 考虑一个问题,就是在传统的应用中,程序里面需要的配置一般以配置文件的形式或者shell脚本里面的参数是在执行的时候在命令行里面进行添加,但是在kuber ...
- C#实现一个弹窗监控小程序
一..实现弹窗淡入淡出等效果即弹窗自动关闭 技术要点: 1.弹窗效果(淡入淡出,自下而上滑入)使用WIN API实现 2.弹出的窗体在一定时间后,自动关闭使用一个timer实现,弹窗开始是,打开tim ...
- ABAP program lines are wider than the internal table
错误详细描述: An exception occurred that is explained in detail below.The exception, which is assigned to ...