-
Notifications
You must be signed in to change notification settings - Fork 1
/
script.js
132 lines (122 loc) · 3.51 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import originalLangObject from "./source/vn.js";
import targetLangObject from "./source/cn.js";
import customTargetObject from "./source/addmore.js";
import fs from "fs";
import util from "util";
// region biến toàn cục
// danh sách các kết quả lỗi
let errorList = {};
let resultPath = "./output/result.js";
let errorResultPath = "./output/errorResult.js";
let logPath = "./output/log.txt";
let exportDefault = "export default ";
// end region biến toàn cục
translateNow();
// region xử lý file
function translateNow() {
let startTime = performance.now();
//reset error
errorList = {};
if (originalLangObject && targetLangObject && customTargetObject) {
// thay thế các chữ cái tiếng việt bằng chữ cái tiếng trung
let replaceLanguageText = replaceLanguage(
originalLangObject,
targetLangObject,
customTargetObject
);
// lưu kết quả vào file output
fs.writeFile(
resultPath,
exportDefault + util.inspect(replaceLanguageText),
(err) => {
if (err) throw err;
}
);
// lưu thêm những kết quả lỗi
fs.writeFile(
errorResultPath,
exportDefault + util.inspect(errorList),
(err) => {
if (err) throw err;
}
);
let endTime = performance.now();
// log thời gian chạy chương trình
logTime(startTime, endTime);
}
}
function logTime(startTime, endTime) {
let seconds = Math.floor((endTime - startTime) / 1000);
fs.writeFile(
logPath,
`thời gian chạy của chương trình lần gần nhất là ${seconds} giây`,
(err) => {
if (err) throw err;
}
);
}
function replaceLanguage(
originalLangObject,
targetLangObject,
customTargetObject
) {
let result = originalLangObject;
for (const key in result) {
if (Object.hasOwnProperty.call(result, key)) {
const element = result[key];
if (typeof element == "string") {
//bo sung check neu trung value thi cung them vao error list
checkValueIsSameByKey(originalLangObject, targetLangObject, key);
if (
targetLangObject &&
targetLangObject.hasOwnProperty(key) &&
targetLangObject[key]
) {
result[key] = targetLangObject[key];
} else if (
customTargetObject &&
customTargetObject.hasOwnProperty(key) &&
customTargetObject[key]
) {
result[key] = customTargetObject[key];
} else {
// thêm vào mảng để người dùng đọc được là tự dịch tay
errorList[key] = result[key];
}
}
// nếu key hiện tại có value là object thì gọi đệ quy
if (typeof element == "object") {
let targetLang = null;
if (
targetLangObject &&
targetLangObject.hasOwnProperty(key) &&
targetLangObject[key]
) {
targetLang = targetLangObject[key];
}
result[key] = replaceLanguage(
result[key],
targetLang,
customTargetObject
);
}
}
}
return result;
}
/**
* bo sung check neu trung value thi cung them vao error list
*/
function checkValueIsSameByKey(originalLangObject, targetLangObject, key) {
if (
key &&
originalLangObject &&
originalLangObject.hasOwnProperty(key) &&
targetLangObject &&
targetLangObject.hasOwnProperty(key) &&
originalLangObject[key] == targetLangObject[key]
) {
errorList[key] = originalLangObject[key];
}
}
// end region xử lý file