-
Notifications
You must be signed in to change notification settings - Fork 0
/
tranpo2.js
88 lines (65 loc) · 2 KB
/
tranpo2.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
#!/usr/bin/cjs
const Gio = imports.gi.Gio;
const ByteArray = imports.byteArray;
function main() {
let file_name = ARGV[0];
let data;
let ok, etag;
file = Gio.File.new_for_path(file_name);
if (!file.query_exists(null)) {
print('Error: File not found.');
return;
}
[ok, contents, etag] = file.load_contents(null);
if (ok != true){
print('Error: Cannot read file.');
return;
}
data = contents;
if (data instanceof Uint8Array) {
data = ByteArray.toString(data);
} else {
print("Data not Uint8Array... continuing...");
data = data.toString();
}
let transfile_name = ARGV[1];
let transdata;
let tok, tetag;
transfile = Gio.File.new_for_path(transfile_name);
if (!transfile.query_exists(null)) {
print('Error: Translations file not found.');
return;
}
[tok, translations, tetag] = transfile.load_contents(null);
if (tok != true){
print('Error: Cannot read translations file.');
return;
}
transdata = translations;
if (transdata instanceof Uint8Array) {
transdata = ByteArray.toString(transdata);
} else {
print("transdata not Uint8Array... continuing...");
transdata = transdata.toString();
}
let transa = transdata.split("\n");
//concatenate all strings divided over multiple lines
const regex = /"\n"/g;
data = data.replaceAll(regex, '');
let copyout = "";
let c = 0;
let i = data.indexOf('\nmsgstr ""');
while (i > -1) {
if (!transa[c]) {
print("Translation missing or not enough translations. Aborting.");
return;
}
data = data.substring(0, i + 9) + transa[c] + data.substring(i + 9);
c++;
i = data.indexOf('\nmsgstr ""', i + 1);
}
print(c + " strings translated.");
//print(data);
file.replace_contents(data, etag, true, null, null); //replace original .po file and make a backup (.po~)
}
main();