UNPKG

asksuite-core

Version:
121 lines (106 loc) 2.59 kB
const initializeTranslateObject = require('./translate-object'); const Translate = require('@google-cloud/translate'); const defaultAttributes = [ 'response', 'registerData', 'revision', 'chatTreeId', 'question', 'dateEnd', 'dateInit', 'isLink', 'holiday', 'trackId', 'dialog', 'intent', 'tags', 'goToDialog', 'type', 'search', 'image', 'registerData', 'id', 'subject', 'to', 'default', 'hsystemKey', 'statusRevision', 'dialogNewRequest', 'compareSuites', 'url', 'otherParams', 'cupom', 'typeBookingEngine', 'randomId', 'itemName', 'variableName', 'onFailGoToDialog', 'onInvalidGoToDialog', 'snippetId', 'identifier', 'events', 'onNoSuggestionsGoToDialog', ]; const ignoreBranches = ['parameters', 'iterator']; const removeAttributesRegex = [ /^[0-9]*$/g, // numbers, /^[{]{2,3}\s*[\w\.]+\s*[}]{2,3}$/g, // mustache variables ]; module.exports = function(config) { const translator = {}; const translateObject = initializeTranslateObject({ url: config.INFOCHAT_DATA_SERVER + '/', redis: { url: config.REDIS_URL, db: 0, // translates }, }); translator.translate = function(data, languageTo, languageFrom, languages, options) { let chatTreeId = data.chatTreeId; let test = false; if (chatTreeId && chatTreeId.indexOf('.') > 0) { // remove random prefix from test trees chatTreeId = chatTreeId.substr(chatTreeId.indexOf('.') + 1); test = true; } const json = data.json; return translateObject( json, languageFrom, languageTo, defaultAttributes.concat(removeAttributesRegex), chatTreeId, { test }, languages, ignoreBranches, ) .then(json => Object.assign({}, data, { json })) .catch(error => { if (options && options.catchOnError) { throw error; } console.log('error', error); return data; }); }; translator.googleTranslateIfNeed = function(text, target) { const translate = new Translate({ key: config.GOOGLE_TRANSLATE_KEY, }); return new Promise(function(resolve, reject) { translate .translate(text, { from: target, to: 'pt-br' }) .then(results => { const translation = results[0]; console.log(`Text: ${text}`); console.log(`Translation: ${translation}`); resolve(translation); }) .catch(err => { console.error('ERROR:', err); reject(err); }); }); }; return translator; };