vue-i18n多语言文件归类的两种方法
1.按语言类型归类
流行的做法是按照语言对文件进行归类,目录结构类似于:
--lang
----en
------test.json
--------"abc": "abc"
----zh
------test.json
--------"abc": "测试"
这样处理有个问题,就是没出添加一项,都要同时切换到两个文件中进行添加,开发起来很麻烦,
2.按功能模块分类
还有个方法就是按照功能模块分类,一个文件中包含了这个功能下的所有语言,目录结构类型下面:
--lang
----test.js
------en
--------"abc": "abc"
------zh
--------"abc": "测试"
这样的话,开发过程中,只需要关注一个文件,就能完成所有国际化设置.
3.两种方式对比
按照语言进行分类的好处,就是加载时会根据本地语言环境加载不同的语言包,不用一次性加载所有的,按照模块分类的好处就是,开发容易了,编写国际化项的时候,只关注一个文件就行了。
开发流行的还是按照语言分类,然后辅助一多语言工具来管理;
4.两种方式的实现方法
4.1按语言包实现代码
4.1.1目录结构
i18n
--en
----index.js
----common.json
--zh_CN
----index.js
----common.json
4.1.2main.js
import Vue from 'vue'
import App from './App.vue'
import i18n from './i18n' Vue.config.productionTip = false new Vue({
i18n,
render: h => h(App),
}).$mount('#app')
4.1.3 i18n/index.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Cookie from 'vue-cookie'
import ZH from './zh_CN'
import EN from './en' Vue.use(Cookie)
Vue.use(VueI18n) const loc = Cookie.get('lang') const i18n = new VueI18n({
locale: loc || 'zh',
messages: {
en: EN,
zh: ZH
}
}) export default i18n
4.1.4 en/index.js
import common from './common.json'
export default {
common
}
4.1.5 en/common.json
{
"webName": "User Management System",
"translations": "中文"
}
4.1.6 zh_cn/index.js
同 4.1.4 en/index.js
4.1.7 zh_cn/common.json
{
"webName": "用户管理系统",
"translations": "English"
}
以上是按照语言格式进行多文件分类的实现,下面是按照功能模块进行多文件分类的实现
4.2 按功能模块进行文件分类
4.2.1 目录结构
i18n
--index.js
--login.js
--test.js
4.2.2 main.js
同 4.1.2 main.js
4.2.2 i18n/index.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import {zh as loginZh, en as loginEn} from './login'
import {zh as testZh, en as testEn} from './test' Vue.use(VueI18n) let EN = {
login: loginEn,
test: testEn
}
let ZH = {
login: loginZh,
test: testZh
} const i18n = new VueI18n({
locale: 'zh',
messages: {
en: EN,
zh: ZH
}
}) export default i18n
4.2.3 i18n/login.js
export const en = {
"title": "title"
}
export const zh = {
"title": "标题"
}
4.2.4 i18n/test.js
export const en = {
"title": "title",
"err": "error"
}
export const zh = {
"title": "标题",
"err": "错误信息"
}
vue-i18n多语言文件归类的两种方法的更多相关文章
- PDF怎么转换为CAD文件?这两种方法你的会
在日常的办公中,我们最常见的文件格式就是PDF格式的,因为PDF文件的安全性是比较高的,可以防止不小心触碰到键盘修改文件内容,而且PDF文件便于进行文件的传输.但是有时候也需要将PDF转换成CAD,那 ...
- Oracle导出表(即DMP文件)的两种方法
转载:http://blog.csdn.net/lanpy88/article/details/7580691 方法一:利用PL/SQL Developer工具导出: 菜单栏---->Too ...
- upload控件上传json文件合并的两种方法
方法一: byte[] byte1 = FileUpload1.FileBytes; byte[] byte2 = FileUpload2.FileBytes; byte[] a1 = Encodin ...
- C#根据字体名通过注册表获取该字体文件路径(win10)两种方法推荐第二种
方法一: 直接先上源码: private System.Collections.Generic.SortedDictionary<string, string> ReadFontInfor ...
- java写文件时往末尾追加文件(而不是覆盖原文件),的两种方法总结
代码如下: import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; public ...
- Java遍历文件夹的两种方法(非递归和递归)
import java.io.File; import java.util.LinkedList; public class FileSystem { public static int num ...
- android获取文件getMimeType的两种方法
方法1: import java.util.Locale; private static String getSuffix(File file) { if (file == null || !file ...
- python语言实现阶乘的两种方法---递归和迭代
阶乘的递归实现,代码如下: def factorial(n): if n==1: return 1 else: return n*factorial(n-1) number = int(input(& ...
- vue路由跳转传参的两种方法
路由跳转: this.$router.push({ name: '工单列表', params: {p_camera_dev_name: 'xxx'} }); 使二级菜单呈点击状态: $('[index ...
随机推荐
- 【PAT甲级】1021 Deepest Root (25 分)(暴力,DFS)
题意: 输入一个正整数N(N<=10000),然后输入N-1条边,求使得这棵树深度最大的根节点,递增序输出.如果不是一棵树,输出这张图有几个部分. trick: 时间比较充裕数据可能也不是很极限 ...
- A way to use NAT network by using Oracle virtualBox
That is true. Vmware is easy and confortable tools to make vitrual machines than Oracle virtual box ...
- java-jpa-criteriaBuilder使用
一个复杂的查询例子(包含常用的所有查询方法) CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); //查询结果所 ...
- 初始化加载和导航时脚本执行的函数(初始化脚本执行环境)page.evaluateOnNewDocument
/** * Copyright 2017 Google Inc., PhantomJS Authors All rights reserved. * * Licensed under the Apac ...
- java并发LockSupport
java并发LockSupport LockSupport是阻塞和唤醒线程的重要类. park()方法使得当前线程阻塞 unpark(Thread thread)唤醒线程 例子 可以把注释取消再执行, ...
- java并发:初探消费者和生产者模式
消费者和生产者模式 用继承Thread方式,用wait和notifyAll方法实现. 消费者和生产者模式的特点 1. 什么时候生产:仓库没有满的时候,生产者这可以生产,消费者也可以消费,仓库满的时候停 ...
- 「Luogu P3072 [USACO13FEB]周长Perimeter」
USACO的题目,感觉还是挺神奇的. 前置芝士 DFS(BFS)遍历:用来搜索(因为DFS好写,本文以DFS为准还不是因为作者懒) STL中的set(map)的基本用法:数据很大,不能直接存. 具体做 ...
- 机器学习(ML)十一之CNN各种模型
深度卷积神经网络(AlexNet) 在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机.虽然LeNet可以在早期的小数据集上取得好的成绩,但是在更大的真实数据集上的表现 ...
- Day10 - 灾难 HYSBZ - 2815
Description 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. 学过生 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:关闭图标
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...