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多语言文件归类的两种方法的更多相关文章

  1. PDF怎么转换为CAD文件?这两种方法你的会

    在日常的办公中,我们最常见的文件格式就是PDF格式的,因为PDF文件的安全性是比较高的,可以防止不小心触碰到键盘修改文件内容,而且PDF文件便于进行文件的传输.但是有时候也需要将PDF转换成CAD,那 ...

  2. Oracle导出表(即DMP文件)的两种方法

    转载:http://blog.csdn.net/lanpy88/article/details/7580691   方法一:利用PL/SQL Developer工具导出: 菜单栏---->Too ...

  3. upload控件上传json文件合并的两种方法

    方法一: byte[] byte1 = FileUpload1.FileBytes; byte[] byte2 = FileUpload2.FileBytes; byte[] a1 = Encodin ...

  4. C#根据字体名通过注册表获取该字体文件路径(win10)两种方法推荐第二种

    方法一: 直接先上源码: private System.Collections.Generic.SortedDictionary<string, string> ReadFontInfor ...

  5. java写文件时往末尾追加文件(而不是覆盖原文件),的两种方法总结

    代码如下: import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; public ...

  6. Java遍历文件夹的两种方法(非递归和递归)

    import java.io.File; import java.util.LinkedList; public class FileSystem {    public static int num ...

  7. android获取文件getMimeType的两种方法

    方法1: import java.util.Locale; private static String getSuffix(File file) { if (file == null || !file ...

  8. python语言实现阶乘的两种方法---递归和迭代

    阶乘的递归实现,代码如下: def factorial(n): if n==1: return 1 else: return n*factorial(n-1) number = int(input(& ...

  9. vue路由跳转传参的两种方法

    路由跳转: this.$router.push({ name: '工单列表', params: {p_camera_dev_name: 'xxx'} }); 使二级菜单呈点击状态: $('[index ...

随机推荐

  1. SwiftStack 因战略转变而裁员

    导读 销售团队在前段圣诞节来临前面临裁减的糟糕处境.企业云存储公司SwiftStack进行了裁员,人数不详,公司规模因此缩小. IT外媒The Register获悉,这家公司裁掉了大概一半的人员,但总 ...

  2. Codeforces Round #580 (Div. 2)D(思维,Floyd暴力最小环)

    #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;const int maxn=300;cons ...

  3. 安装哪个python版本比较好

    四.电脑是32位选择第一个,64为选择第二个

  4. underscore.js -2009年发布的js库

    2009 Underscore.js 0.1.0发布 Underscore一个JavaScript实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象.它是这个问题的 ...

  5. python基础day05

    上节内容变量if else注释 # ''' msg ''' 3个引号 打印多行 ', "" 双单引号的意义是一样的 缩进 本节内容pycharm使用 集成开发环境(IDE,Inte ...

  6. 「AMPPZ2014」The Captain

    传送门: 这是一道bzoj权限题 Luogu团队题链接 解题思路 直接连边的话边数肯定会爆炸,考虑减少边数. 我们画出坐标系,发现一个东西: 对于两个点 \(A,B\),\(|x_A-y_A|\) 可 ...

  7. 郁闷的 IE6/7/8 所遇兼容问题

    IE6,7只支持inline元素设置为inline-block,但不支持block元素转换成inline-block,所以非inline元素在IE6,7下要转换成inline-block,需先转换成i ...

  8. Ubuntu操作基本快捷键

    * 打开主菜单 = Alt + F1* 运行 = Alt + F2* 显示桌面 = Ctrl + Alt + d* 最小化当前窗口 = Alt + F9* 最大化当前窗口 = Alt + F10* 关 ...

  9. 本地jar在打包时打入到项目中去

    <dependency> <groupId>com.hxyc</groupId> <artifactId>hxyc-common</artifac ...

  10. 深入理解 Python 中的装饰器

    装饰器本质上也是函数,接收函数对象来作为参数,并在装饰器的内部来调用接受的函数对象完成相关的函数调用,也可以这样理解   ,为了方便在几个不同函数调用之前或者完成相关的统一操作,注意是完成统一的操作, ...