|
|
|
var fs = require('fs'),
|
|
|
|
path = require('path'),
|
|
|
|
async = require('async'),
|
|
|
|
|
|
|
|
Languages = {};
|
|
|
|
|
|
|
|
Languages.list = function(callback) {
|
|
|
|
var languagesPath = path.join(__dirname, '../public/language'),
|
|
|
|
languages = [];
|
|
|
|
|
|
|
|
fs.readdir(languagesPath, function(err, files) {
|
|
|
|
async.each(files, function(folder, next) {
|
|
|
|
fs.stat(path.join(languagesPath, folder), function(err, stat) {
|
|
|
|
if (!err) {
|
|
|
|
if (stat.isDirectory()) {
|
|
|
|
var configPath = path.join(languagesPath, folder, 'language.json');
|
|
|
|
fs.exists(configPath, function(exists) {
|
|
|
|
if (exists) {
|
|
|
|
fs.readFile(configPath, function(err, stream) {
|
|
|
|
languages.push(JSON.parse(stream.toString()));
|
|
|
|
next();
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
next();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
next();
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
next();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}, function(err) {
|
|
|
|
// Sort alphabetically
|
|
|
|
languages = languages.sort(function(a, b) {
|
|
|
|
return a.code > b.code ? 1 : -1;
|
|
|
|
});
|
|
|
|
|
|
|
|
callback(err, languages);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = Languages;
|