Pull RTL/LTR from Transifex

(closes #3489)
This commit is contained in:
Bryan Housel
2016-11-27 23:56:17 -05:00
parent 9e50af529b
commit 5494d0990a
3 changed files with 227 additions and 75 deletions
+188 -64
View File
@@ -1,66 +1,190 @@
{
"dataLocales": [
"af",
"sq",
"ar",
"ar-AA",
"hy",
"ast",
"bn",
"bs",
"bg-BG",
"ca",
"zh",
"zh-CN",
"zh-HK",
"zh-TW",
"yue",
"hr",
"cs",
"da",
"nl",
"en-GB",
"eo",
"et",
"fi",
"fr",
"gl",
"de",
"el",
"gu",
"hi",
"hu",
"is",
"id",
"it",
"ja",
"kn",
"ko",
"ku",
"lv",
"lij",
"lt",
"ml",
"no",
"fa",
"pl",
"pt",
"pt-BR",
"ro",
"ru",
"sc",
"sr",
"si",
"sk",
"sl",
"es",
"sv",
"tl",
"ta",
"te",
"th",
"tr",
"uk",
"vi"
]
"dataLocales": {
"af": {
"rtl": false
},
"ar": {
"rtl": true
},
"ar-AA": {
"rtl": true
},
"ast": {
"rtl": false
},
"bg-BG": {
"rtl": false
},
"bn": {
"rtl": false
},
"bs": {
"rtl": false
},
"ca": {
"rtl": false
},
"cs": {
"rtl": false
},
"da": {
"rtl": false
},
"de": {
"rtl": false
},
"el": {
"rtl": false
},
"en-GB": {
"rtl": false
},
"eo": {
"rtl": false
},
"es": {
"rtl": false
},
"et": {
"rtl": false
},
"fa": {
"rtl": true
},
"fi": {
"rtl": false
},
"fr": {
"rtl": false
},
"gl": {
"rtl": false
},
"gu": {
"rtl": false
},
"hi": {
"rtl": false
},
"hr": {
"rtl": false
},
"hu": {
"rtl": false
},
"hy": {
"rtl": false
},
"id": {
"rtl": false
},
"is": {
"rtl": false
},
"it": {
"rtl": false
},
"ja": {
"rtl": false
},
"kn": {
"rtl": false
},
"ko": {
"rtl": false
},
"ku": {
"rtl": false
},
"lij": {
"rtl": false
},
"lt": {
"rtl": false
},
"lv": {
"rtl": false
},
"ml": {
"rtl": false
},
"nl": {
"rtl": false
},
"no": {
"rtl": false
},
"pl": {
"rtl": false
},
"pt": {
"rtl": false
},
"pt-BR": {
"rtl": false
},
"ro": {
"rtl": false
},
"ru": {
"rtl": false
},
"sc": {
"rtl": false
},
"si": {
"rtl": false
},
"sk": {
"rtl": false
},
"sl": {
"rtl": false
},
"sq": {
"rtl": false
},
"sr": {
"rtl": false
},
"sv": {
"rtl": false
},
"ta": {
"rtl": false
},
"te": {
"rtl": false
},
"th": {
"rtl": false
},
"tl": {
"rtl": false
},
"tr": {
"rtl": false
},
"uk": {
"rtl": false
},
"vi": {
"rtl": false
},
"yue": {
"rtl": false
},
"zh": {
"rtl": false
},
"zh-CN": {
"rtl": false
},
"zh-HK": {
"rtl": false
},
"zh-TW": {
"rtl": false
}
}
}
+38 -11
View File
@@ -1,8 +1,9 @@
/* Downloads the latest translations from Transifex */
var request = require('request').defaults({maxSockets: 1}),
var request = require('request').defaults({ maxSockets: 1 }),
yaml = require('js-yaml'),
fs = require('fs'),
stringify = require('json-stable-stringify'),
_ = require('lodash');
var resources = ['core', 'presets'];
@@ -26,27 +27,39 @@ var auth = JSON.parse(fs.readFileSync('./transifex.auth', 'utf8'));
var sourceCore = yaml.load(fs.readFileSync('./data/core.yaml', 'utf8')),
sourcePresets = yaml.load(fs.readFileSync('./data/presets.yaml', 'utf8'));
asyncMap(resources, getResource, function(err, locales) {
if (err) return console.log(err);
var locale = _.merge(sourceCore, sourcePresets),
codes = [];
dataLocales = {};
locales.forEach(function(l) {
locale = _.merge(locale, l);
});
for (var i in locale) {
if (i === 'en' || _.isEmpty(locale[i])) continue;
codes.push(i);
var obj = {};
obj[i] = locale[i];
fs.writeFileSync(outdir + i + '.json', JSON.stringify(obj, null, 4));
}
fs.writeFileSync('data/locales.json', JSON.stringify({ dataLocales: codes }, null, 4));
asyncMap(Object.keys(locale),
function(code, done) {
if (code === 'en' || _.isEmpty(locale[code])) {
done();
} else {
var obj = {};
obj[code] = locale[code];
fs.writeFileSync(outdir + code + '.json', JSON.stringify(obj, null, 4));
getLanguageInfo(code, function(err, info) {
dataLocales[code] = { rtl: info && info.rtl };
done();
});
}
}, function(err) {
if (!err) {
fs.writeFileSync('data/locales.json', stringify({ dataLocales: dataLocales }, { space: 4 }));
}
}
);
});
function getResource(resource, callback) {
resource = project + 'resource/' + resource + '/';
getLanguages(resource, function(err, codes) {
@@ -65,6 +78,7 @@ function getResource(resource, callback) {
});
}
function getLanguage(resource) {
return function(code, callback) {
code = code.replace(/-/g, '_');
@@ -78,6 +92,18 @@ function getLanguage(resource) {
};
}
function getLanguageInfo(code, callback) {
code = code.replace(/-/g, '_');
var url = api + 'language/' + code;
request.get(url, { auth : auth }, function(err, resp, body) {
if (err) return callback(err);
console.log(resp.statusCode + ': ' + url);
callback(null, JSON.parse(body));
});
}
function getLanguages(resource, callback) {
var url = resource + '?details';
request.get(url, { auth: auth },
@@ -92,6 +118,7 @@ function getLanguages(resource, callback) {
});
}
function asyncMap(inputs, func, callback) {
var remaining = inputs.length,
results = [],
+1
View File
@@ -49,6 +49,7 @@
"happen": "~0.3.1",
"js-yaml": "~3.7.0",
"jsonschema": "~1.1.0",
"json-stable-stringify": "~1.0.1",
"maki": "0.5.0",
"mapillary-js": "2.1.0",
"minimist": "~1.2.0",