Today we will play with Puppeteer to control Google Translate service. The scenario is to translate a text from Bahasa Indonesia to English. Language code for Bahasa Indonesia is id and language code for English is en.
You can adjust the language code with your own.
Technically speaking, I just want to control this URL.
https://translate.google.com/#view=home&op=translate&sl=id&tl=en
sl parameter is language code for source text
tl parameter is language code for translated text
Let's play.
Preparation
Install Puppeteer
npm i puppeteer
Sample code
File google_translate.js
const puppeteer = require('puppeteer');
(async () => {
let launchOptions = { headless: false, args: ['--start-maximized'] };
const browser = await puppeteer.launch(launchOptions);
const page = await browser.newPage();
// set viewport and user agent (just in case for nice viewing)
await page.setViewport({width: 1366, height: 768});
await page.setUserAgent('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36');
// define source and target language code
let sourceLang = 'id', targetLang = 'en';
await page.goto(`https://translate.google.com/#view=home&op=translate&sl=${sourceLang}&tl=${targetLang}`);
// detect the source textarea for input data (source string)
await page.waitForSelector('#source');
await page.waitFor(1000);
// string that we want to translate and type it on the textarea
let sourceString = 'Apa kamu sadar kalau muka kamu itu jelek sekali?';
await page.type('#source', sourceString);
// wait for the result container available
await page.waitForSelector('.result-shield-container');
await page.waitFor(3000);
// get the result string (translated text)
const translatedResult = await page.evaluate(() => {
return document.querySelectorAll('.result-shield-container')[0].textContent;
});
// display the source and translated text to console
console.log(`${sourceLang}: ${sourceString}\n${targetLang}: ${translatedResult}`);
await page.waitFor(1000);
await browser.close();
})();
The code are self explanatory. I set the headless option to false, so we can see the browser automation in action.
Run it
node google_translate.js
Sample of result are below
Ow nice.
I hope you enjoy it. Thank you very much.
Repository of this sample is available at https://github.com/sonyarianto/translate-text-with-google-translate-and-puppeteer

Top comments (0)