UNPKG

yahoi

Version:

Yet Another Highly Opinionated Isomorphic Framework

91 lines (64 loc) 2.39 kB
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 }); }); } }