Standard language codes (#5218)

* Use standard language codes. Fallback for plugins.

* Fix transifex config

* Tab vs space here for some reason

* Remove redundancies

* config.relative_path instead of allcaps

* added upgrade script for existing users' accounts
This commit is contained in:
Peter Jaszkowiak
2016-11-23 09:50:49 -07:00
committed by Julian Lam
parent cafbdfd83e
commit c5237443cd
164 changed files with 301 additions and 243 deletions

View File

@@ -261,6 +261,7 @@ module.exports = function (Plugins) {
}
var pathToFolder = path.join(__dirname, '../../node_modules/', pluginData.id, pluginData.languages);
var defaultLang = pluginData.defaultLang.replace('_', '-').replace('@', '-x-');
utils.walk(pathToFolder, function (err, languages) {
if (err) {
@@ -273,7 +274,9 @@ module.exports = function (Plugins) {
return next(err);
}
var data;
var route = pathToLang.replace(pathToFolder + '/', '');
var language = path.dirname(pathToLang).split(/[\/\\]/).pop().replace('_', '-').replace('@', '-x-');
var namespace = path.basename(pathToLang, '.json');
var langNamespace = language + '/' + namespace;
try {
data = JSON.parse(file.toString());
@@ -282,18 +285,15 @@ module.exports = function (Plugins) {
return next(err);
}
Plugins.customLanguages[route] = Plugins.customLanguages[route] || {};
_.extendOwn(Plugins.customLanguages[route], data);
Plugins.customLanguages[langNamespace] = Plugins.customLanguages[langNamespace] || {};
Object.assign(Plugins.customLanguages[langNamespace], data);
if (pluginData.defaultLang && pathToLang.endsWith(pluginData.defaultLang + '/' + path.basename(pathToLang))) {
Plugins.languageCodes.map(function (code) {
if (pluginData.defaultLang !== code) {
return code + '/' + path.basename(pathToLang);
} else {
return null;
}
}).filter(Boolean).forEach(function (key) {
Plugins.customLanguages[key] = _.defaults(Plugins.customLanguages[key] || {}, data);
if (defaultLang && defaultLang === language) {
Plugins.languageCodes.filter(function (lang) {
return defaultLang !== lang;
}).forEach(function (lang) {
var langNS = lang + '/' + namespace;
Plugins.customLanguages[langNS] = Object.assign(Plugins.customLanguages[langNS] || {}, data);
});
}