✨ Add glossary option #3
2 changed files with 18 additions and 1 deletions
|
|
@ -41,6 +41,7 @@ translate(sentence, source, target).then(console.log).catch(console.error);
|
||||||
- `source` *string* (optional) - Word/sentence original language
|
- `source` *string* (optional) - Word/sentence original language
|
||||||
<br>Default : `auto`
|
<br>Default : `auto`
|
||||||
- `target` *string* - Language for word/sentence to be translated
|
- `target` *string* - Language for word/sentence to be translated
|
||||||
|
- `glossary` *object* - The key is the source word and the value is the target word
|
||||||
|
|
||||||
#### Supported languages
|
#### Supported languages
|
||||||
|
|
||||||
|
|
|
||||||
18
index.js
18
index.js
|
|
@ -12,7 +12,7 @@ const getBrowser = async () => {
|
||||||
const getNewPage = async () => await (await getBrowser()).newPage();
|
const getNewPage = async () => await (await getBrowser()).newPage();
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
translate: async (sentence, sourceLanguage = 'auto', targetLanguage) => {
|
translate: async (sentence, sourceLanguage = 'auto', targetLanguage, glossary) => {
|
||||||
if(!/^(auto|[a-z]{2})$/.test(sourceLanguage))
|
if(!/^(auto|[a-z]{2})$/.test(sourceLanguage))
|
||||||
throw new Error('INVALID_SOURCE_LANGUAGE');
|
throw new Error('INVALID_SOURCE_LANGUAGE');
|
||||||
if(!/^[a-z]{2}-[A-Z]{2}$/.test(targetLanguage))
|
if(!/^[a-z]{2}-[A-Z]{2}$/.test(targetLanguage))
|
||||||
|
|
@ -25,6 +25,10 @@ module.exports = {
|
||||||
targetLangMenu = '.lmt__language_select--target .lmt__language_select__menu',
|
targetLangMenu = '.lmt__language_select--target .lmt__language_select__menu',
|
||||||
sourceLangButton = `.lmt__language_select--source button[dl-test=translator-lang-option-${sourceLanguage}]`,
|
sourceLangButton = `.lmt__language_select--source button[dl-test=translator-lang-option-${sourceLanguage}]`,
|
||||||
targetLangButton = `.lmt__language_select--target button[dl-test=translator-lang-option-${targetLanguage}]`,
|
targetLangButton = `.lmt__language_select--target button[dl-test=translator-lang-option-${targetLanguage}]`,
|
||||||
|
glossaryButton = `.lmt__glossary_onOffSwitch_label`,
|
||||||
|
sourceGlossaryInput = `.lmt__glossary_newEntry_inputSource`,
|
||||||
|
targetGlossaryInput = `.lmt__glossary_newEntry_inputTarget`,
|
||||||
|
glossaryAddButton = `.lmt__glossary_acceptButton`,
|
||||||
originalSentenceField = '.lmt__source_textarea',
|
originalSentenceField = '.lmt__source_textarea',
|
||||||
targetSentenceField = '.lmt__target_textarea'/*,
|
targetSentenceField = '.lmt__target_textarea'/*,
|
||||||
targetSentencesContainer = '.lmt__translations_as_text'*/;
|
targetSentencesContainer = '.lmt__translations_as_text'*/;
|
||||||
|
|
@ -51,8 +55,20 @@ module.exports = {
|
||||||
throw new Error('UNSUPPORTED_TARGET_LANGUAGE');
|
throw new Error('UNSUPPORTED_TARGET_LANGUAGE');
|
||||||
}
|
}
|
||||||
await page.waitForSelector(targetLangMenu, { hidden: true });
|
await page.waitForSelector(targetLangMenu, { hidden: true });
|
||||||
|
if (glossary) {
|
||||||
|
await page.waitForSelector(glossaryButton, { visible: true })
|
||||||
|
await page.click(glossaryButton);
|
||||||
|
await page.waitForSelector(sourceGlossaryInput, { visible: true });
|
||||||
|
const words = Object.keys(glossary);
|
||||||
|
for (let word of words) {
|
||||||
|
await page.type(sourceGlossaryInput, word);
|
||||||
|
await page.type(targetGlossaryInput, glossary[word]);
|
||||||
|
await page.click(glossaryAddButton);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
await page.waitForSelector(originalSentenceField);
|
await page.waitForSelector(originalSentenceField);
|
||||||
|
await page.click(originalSentenceField);
|
||||||
await page.type(originalSentenceField, sentence);
|
await page.type(originalSentenceField, sentence);
|
||||||
|
|
||||||
let sentences = [];
|
let sentences = [];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue