You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#!/usr/bin/env node const fs = require('fs') const forEach = require('async-foreach').forEach
var all = {} var allIds = []
/* read existing translation files in lang/ */ fs.readdir('lang', function (err, files) { forEach(files, function (f) { let m = f.match(/^(.*)\.json$/) if (!m) { return }
let done = this.async() let lang = m[1]
fs.readFile('lang/' + f, function (err) { if (!(lang in all)) { all[lang] = {} }
done() }) }) })
fs.readdir( '.', function (err, files) { forEach( files, function (f) { if (f === 'package.json') { return }
let m = f.match(/^(.*)\.json$/) if (!m) { return }
let done = this.async() let id = m[1] allIds.push('category:' + id)
fs.readFile(f, function (err, contents) { let data = JSON.parse(contents)
if ('name' in data) { for (var lang in data.name) { if (!(lang in all)) { all[lang] = {} }
all[lang]['category:' + id] = data.name[lang] }
if (data.type && data.type === 'index') { parseSubCategories(data.subCategories, all) } if (data.type && data.type === 'overpass') { if (data.lists) { for (let listId in data.lists) { let list = data.lists[listId] let langStrId = 'category:' + id + ':' + listId
allIds.push(langStrId) for (let lang in list.name) { all[lang][langStrId] = list.name[lang] } } } } }
done() }) }, writeTranslationFiles ) } )
function parseSubCategories(categories, all) { categories.forEach(data => { if ('name' in data) { for (var lang in data.name) { if (!(lang in all)) { all[lang] = {} }
allIds.push('category:' + data.id) all[lang]['category:' + data.id] = data.name[lang] }
if (data.type && data.type === 'index') { parseSubCategories(data.subCategories, all) } } }) }
function writeTranslationFiles () { forEach(Object.keys(all), function (lang) { let done = this.async()
allIds = allIds.sort() let data = {} allIds.forEach(function (id) { data[id] = '' })
let keys = Object.keys(all[lang]) keys.sort() for (let i = 0; i < keys.length; i++) { data[keys[i]] = all[lang][keys[i]] }
fs.writeFile( 'lang/' + lang + '.json', JSON.stringify(data, null, ' ') + '\n', function (err, result) { done() } ) }) }
|