diff --git a/commands/message/utils/translate.js b/commands/message/utils/translate.js index 9ac821a..38af3f8 100644 --- a/commands/message/utils/translate.js +++ b/commands/message/utils/translate.js @@ -1,9 +1,9 @@ const { createEmbed } = require('../../../labscore/utils/embed') const { editOrReply } = require('../../../labscore/utils/message') -const { codeblock, highlight, icon, pill } = require('../../../labscore/utils/markdown'); +const { codeblock, icon, pill } = require('../../../labscore/utils/markdown'); -const { isSupported } = require('../../../labscore/utils/translate'); +const { isSupported, getCodeFromAny } = require('../../../labscore/utils/translate'); const { googleTranslate } = require('../../../labscore/api'); const { STATICS } = require('../../../labscore/utils/statics'); const { TRANSLATE_LANGUAGES, TRANSLATE_LANGUAGE_MAPPINGS } = require('../../../labscore/constants'); @@ -37,6 +37,9 @@ module.exports = { if(!isSupported(args.to)) return editOrReply(context, createEmbed("warning", context, "Invalid language (to).")) if(!isSupported(args.from)) return editOrReply(context, createEmbed("warning", context, "Invalid language (from).")) + args.to = getCodeFromAny(args.to) + args.from = getCodeFromAny(args.from) + try{ let translate = await googleTranslate(context, content, args.to, args.from) diff --git a/labscore/utils/translate.js b/labscore/utils/translate.js index b73fc8a..6255e98 100644 --- a/labscore/utils/translate.js +++ b/labscore/utils/translate.js @@ -1,4 +1,4 @@ -const { TRANSLATE_LANGUAGES } = require("../constants"); +const { TRANSLATE_LANGUAGES, TRANSLATE_LANGUAGE_MAPPINGS } = require("../constants"); function getCode(desiredLang) { if (!desiredLang) { @@ -11,16 +11,32 @@ function getCode(desiredLang) { } var keys = Object.keys(TRANSLATE_LANGUAGES).filter(function (key) { - if (typeof TRANSLATE_LANGUAGES[key] !== 'string') { - return false; - } + if (typeof TRANSLATE_LANGUAGES[key] !== 'string') { + return false; + } - return TRANSLATE_LANGUAGES[key].toLowerCase() === desiredLang; - }); + return TRANSLATE_LANGUAGES[key].toLowerCase() === desiredLang; +}); + + keys.push(Object.keys(TRANSLATE_LANGUAGE_MAPPINGS).filter(function (key) { + if (typeof TRANSLATE_LANGUAGE_MAPPINGS[key] !== 'string') { + return false; + } + + return TRANSLATE_LANGUAGE_MAPPINGS[key].toLowerCase() === desiredLang; + })); return keys[0] || false; } +module.exports.getCodeFromAny = function (prompt) { + if(TRANSLATE_LANGUAGES[prompt.toLowerCase()]) return prompt.toLowerCase() + let languages = []; + for(const i of Object.keys(TRANSLATE_LANGUAGES)) if(!languages.includes(i) && TRANSLATE_LANGUAGES[i].toLowerCase() == prompt.toLowerCase()) languages.push(i) + for(const i of Object.keys(TRANSLATE_LANGUAGE_MAPPINGS)) if(!languages.includes(i) && TRANSLATE_LANGUAGE_MAPPINGS[i].toLowerCase() == prompt.toLowerCase()) languages.push(i) + return languages[0]; +}; + module.exports.isSupported = function (desiredLang) { return Boolean(getCode(desiredLang)); } \ No newline at end of file