-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsync_transifex.js
More file actions
71 lines (60 loc) · 1.83 KB
/
Copy pathsync_transifex.js
File metadata and controls
71 lines (60 loc) · 1.83 KB
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
var request = require('request'),
fs = require('fs');
var outdir = './locales/';
var api = 'https://www.transifex.com/api/2/';
var project = api + 'project/directions-instructions/';
var auth = {
user: process.env.TRANSIFEX_USER,
pass: process.env.TRANSIFEX_PASSWORD
};
getResource('core', function(err, res) {
fs.writeFileSync('translations.json', JSON.stringify(res));
});
function getResource(resource, callback) {
resource = project + 'resource/' + resource + '/';
getLanguages(resource, function(err, codes) {
if (err) return callback(err);
asyncMap(codes, getLanguage(resource), function(err, results) {
if (err) return callback(err);
var locale = {};
results.forEach(function(result, i) {
locale[codes[i]] = result;
});
callback(null, locale);
});
});
}
function getLanguage(resource) {
return function(code, callback) {
code = code.replace(/-/g, '_');
var url = resource + 'translation/' + code;
if (code === 'vi') url += '?mode=reviewed';
request.get(url, { auth : auth }, function(err, resp, body) {
if (err) return callback(err);
callback(null, JSON.parse(JSON.parse(body).content));
});
};
}
function getLanguages(resource, callback) {
request.get(resource + '?details', { auth: auth }, function(err, resp, body) {
if (err) return callback(err);
callback(null, JSON.parse(body).available_languages.map(function(d) {
return d.code.replace(/_/g, '-');
}).filter(function(d) {
return d !== 'en';
}));
});
}
function asyncMap(inputs, func, callback) {
var remaining = inputs.length,
results = [],
error;
inputs.forEach(function(d, i) {
func(d, function done(err, data) {
if (err) error = err;
results[i] = data;
remaining --;
if (!remaining) callback(error, results);
});
});
}