How can I translate the webpage opened via Selenium Webdriver to English using Python?

Question:

This is my code so far:

username_input = "username"
password_input = "password"
url='myurl'
browser = webdriver.Chrome(r'chromedriver.exe')
browser.get(url)
browser.maximize_window()
username = browser.find_element_by_id("j_username")
password = browser.find_element_by_id("j_password")
username.send_keys(str(username_input))
password.send_keys(str(password_input))
browser.find_element_by_xpath('//*[@id="inner-box"]/form/label[3]/input').click()
time.sleep(2)

Once I have logged in everything is in French but I need it in English.. how do I do this?

I have tried several things such as Chrome Options but didn’t understand it/wasn’t working.

Any help will be appreciated.

Asked By: Sorath

||

Answers:

I suppose you have to set up Chrome options like:

chrome_options = Options()
chrome_options.add_argument("--lang=en")
Answered By: Xing-fu

add prefs below to auto translate french to english

options = Options()
prefs = {
  "translate_whitelists": {"fr":"en"},
  "translate":{"enabled":"true"}
}
options.add_experimental_option("prefs", prefs)
browser = webdriver.Chrome(chrome_options=options)

you can remove r'chromedriver.exe' if the location is in same folder with your script.

Answered By: ewwink

The correct solution is:

from selenium import webdriver
chrome_path = "D:chromedriver_win32chromedriver"
custom_options = webdriver.ChromeOptions()
prefs = {
  "translate_whitelists": {"ru":"en"},
  "translate":{"enabled":"true"}
}
custom_options.add_experimental_option("prefs", prefs)
driver=webdriver.Chrome(chrome_path, options=custom_options)
Answered By: Gil Baggio

The change of webpage language is determined by the browser settings. I tried practically almost all the strategies discussed and mentioned in the forum, but none of them worked for me. I was able to successfully achieve it by following the instructions outlined below.

  1. Create a new Chrome profile (i.e. Profile 2). Then move the new profile directory in the "Documents" directory of "Users"

  2. Now open Google Chrome (from new profile), "run as administrator" mode > open www.google.com > at the bottom of the page, click on "setting" > now click on "search setting" > select the "region setting" > select "United Kingdom" for opening the webpage only in English language.

  3. Now follow the following java code snippet.

    System.setProperty("webdriver.chrome.driver", "C:\Testing Work Space\chromedriver.exe");

// Chrome actual new profile path is "C:UsersshahDocumentsProfile 2"

// but you have to keep the chromeProfilePath till "Documents" as follows

String chromeProfilePath = "C:\Users\shah\Documents\";
ChromeOptions chroOption = new ChromeOptions();
chroOption.addArguments("user-data-dir=" + chromeProfilePath);

// Here you specify the new Chrome profile folder (Profile 2)

chroOption.addArguments("profile-directory=Profile 2");
WebDriver driver = new ChromeDriver(chroOption);
driver.get("https://facebook.com");
Answered By: Shah

All other answers not working for me. And I found bruteforce solution:

import pyautogui

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.options import Options


url = 'https://ifconfig.me/'

options = Options()
options.add_argument('--lang=fr')  # set your language here

browser = webdriver.Chrome(options=options)

browser.get(url)

actionChains = ActionChains(browser)
actionChains.context_click().perform()

# here maybe problem. Debug it:
for i in range(3):
    pyautogui.sleep(1)
    pyautogui.press('up')

pyautogui.press('enter')
Answered By: Jackssn

As of September 2022, It seems like setting prefs doesn’t work for chrome version 105. In order to solve this, you can either downgrade your chrome to version 95 or use selenium standalone docker. For the docker approach, You should pull and run standalone docker using:

docker pull selenium/standalone-chrome:95.0-chromedriver-95.0-20211102
docker run -d -p 4444:4444 --shm-size="2g" selenium/standalone-chrome:95.0-chromedriver-95.0-20211102

Then in your code use remoteDriver and apply prefs like this:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--lang=en')
prefs = {
    "translate_whitelists": {"es": "en"},
    "translate": {"enabled": "true"}
}
options.add_experimental_option("prefs", prefs)

driver = webdriver.Remote(command_executor='http://localhost:4444/wd/hub', options=options)
driver.get("https://www.amazon.es/")
Answered By: saeedghadiri