yahoi
Version:
Yet Another Highly Opinionated Isomorphic Framework
91 lines (64 loc) • 2.39 kB
JavaScript
import { Controller } from './../lib';
import path from 'path';
import updateJson from 'update-json';
import mkdirp from 'mkdirp';
import fs from 'fs';
export default class TranslationController extends Controller {
constructor(props) { super(props); }
getAction(parameters) {
this.require({
ns: this.Joi.string().required(),
lng: this.Joi.string().required(),
});
if(parameters.areValid()) {
let nsArray = parameters.get('ns').split(' ');
let lngArray = parameters.get('lng').split(' ');
let transDir = path.resolve(this.app.getProjectPath(), 'Translations');
//console.log('nsparam', parameters.get('ns'))
//console.log('nsArray', nsArray)
let data = {};
lngArray.map(lng => {
if(typeof(data[lng])=='undefined') {
data[lng] = {};
}
nsArray.map(ns => {
try {
//turn off in prod
if(typeof(require.cache[require.resolve(`${transDir}/${lngArray[0]}/${ns}.json`)])!='undefined') {
delete require.cache[require.resolve(`${transDir}/${lngArray[0]}/${ns}.json`)]
}
data[lng][ns] = require(`${transDir}/${lngArray[0]}/${ns}.json`);
} catch(e) {
data[lng][ns] = String(e);
}
});
});
this.sendJson(data);
}
}
addAction(parameters) {
let ns = parameters.get('ns');
let lng = parameters.get('lng');
let _t = parameters.get('_t');
let translations = parameters.getAllPostParameters();
var _translations = {};
if(typeof(ns)=='undefined' || typeof(lng)=='undefined' || typeof(_t)=='undefined') {
return this.reject(`Sorry. Something's missing here :-(`);
}
let transDir = path.resolve(this.app.getProjectPath(), 'Translations');
let jsonFile = `${transDir}/${lng}/${ns}.json`;
for(var key in translations) {
if(key!='_t') {
let translation = translations[key];
//console.log(`save ${key} as ${translations[key]} to ${transDir}/${lng}/${ns}.json`);
_translations[key] = translations[key];
}
}
updateJson(jsonFile, _translations, (error) => {
if (error) { return this.reject(error); }
this.sendJson({
success: true
});
});
}
}