mm_lang 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/example/index.js +54 -0
- package/lib/lang.js +3 -3
- package/package.json +5 -1
package/example/index.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mm_lang 多语言/语言包模块示例
|
|
3
|
+
* 演示 Lang 类的翻译(get/t)、语言切换(setLang)与复数形式(tc)
|
|
4
|
+
* 运行:node example/index.js
|
|
5
|
+
*/
|
|
6
|
+
const { Lang } = require('../index.js');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 主函数
|
|
10
|
+
*/
|
|
11
|
+
function main() {
|
|
12
|
+
console.log('=== 语言包翻译 ===');
|
|
13
|
+
|
|
14
|
+
// 创建语言实例,字典为 语言代码 -> 词条对象
|
|
15
|
+
var lang = new Lang({
|
|
16
|
+
zh_cn: {
|
|
17
|
+
hello: '你好, {0}!',
|
|
18
|
+
order: {
|
|
19
|
+
count: ['共 {count} 个商品']
|
|
20
|
+
},
|
|
21
|
+
greet: ['你好', '你们好']
|
|
22
|
+
},
|
|
23
|
+
en: {
|
|
24
|
+
hello: 'Hello, {0}!',
|
|
25
|
+
order: {
|
|
26
|
+
count: ['{count} item', '{count} items']
|
|
27
|
+
},
|
|
28
|
+
greet: ['Hello', 'Hello everyone']
|
|
29
|
+
},
|
|
30
|
+
default: 'zh_cn'
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// 翻译并替换占位符
|
|
34
|
+
console.log('zh_cn hello ->', lang.get('hello', '张三'));
|
|
35
|
+
|
|
36
|
+
// 切换语言
|
|
37
|
+
lang.setLang('en');
|
|
38
|
+
console.log('en hello ->', lang.t('hello', 'Tom'));
|
|
39
|
+
|
|
40
|
+
// en 的复数形式按数量区分
|
|
41
|
+
console.log('en order.count(1) ->', lang.tc('order.count', 1));
|
|
42
|
+
console.log('en order.count(5) ->', lang.tc('order.count', 5));
|
|
43
|
+
|
|
44
|
+
// 切换回中文
|
|
45
|
+
lang.setLang('zh_cn');
|
|
46
|
+
console.log('zh_cn greet(1) ->', lang.tc('greet', 1));
|
|
47
|
+
console.log('支持的语言列表 ->', lang.getLangs().join(', '));
|
|
48
|
+
|
|
49
|
+
// 动态设置词条
|
|
50
|
+
lang.set('bye', '再见');
|
|
51
|
+
console.log('新词条 bye ->', lang.get('bye'));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
main();
|
package/lib/lang.js
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
class Lang {
|
|
8
8
|
/**
|
|
9
9
|
* 创建语言实例
|
|
10
|
-
* @param {Object}
|
|
10
|
+
* @param {Object} config - 语言包配置,键为语言代码,值可为词条对象;可含 default 与 fallback
|
|
11
11
|
*/
|
|
12
|
-
constructor(
|
|
12
|
+
constructor(config = {}) {
|
|
13
13
|
/**
|
|
14
14
|
* 语言包配置,语言代码对应词条字典
|
|
15
15
|
* @type {Object}
|
|
@@ -19,7 +19,7 @@ class Lang {
|
|
|
19
19
|
en: {},
|
|
20
20
|
default: 'zh_cn',
|
|
21
21
|
fallback: true
|
|
22
|
-
},
|
|
22
|
+
}, config);
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* 复数规则表,键为语言代码,值为按数量返回形式的索引的函数
|
package/package.json
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mm_lang",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "超级美眉多语言/语言包模块",
|
|
5
5
|
"main": "index.js",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://gitee.com/qiuwenwu91/mm_lang.git"
|
|
9
|
+
},
|
|
6
10
|
"keywords": [
|
|
7
11
|
"mm_mod",
|
|
8
12
|
"mm_infra",
|