Error with the ru-RU locale migration in Google Chrome and how to get rid of it

    This article is about how I struggled with the consequences of the incorrect migration of "ru-RU" to "ru" in Google Chrome.

    This article is for those who have Chrome looks something like this:

    or, in simple terms, stubbornly continues to display sites in Russian, despite the fact that everywhere in the settings English is set.

    Under the cut, I have a few thoughts about the cause of the error and a way to solve the problem.


    • Web sites tend to display in a language other than the one selected in the settings
    • The problem appears after you log in to your user account and synchronize
    • All simple problems like checking settings in Chrome, Google Account, resetting histories and even synchronization do not help

    Why is this a problem:

    • It's annoying
    • Some sites simply do not work and fall with an error (Panera, for example)
    • Some sites do not offer the ability to change the language to other than navigator.language
    • The problem tends to spread to other Chrome accounts on the same computer.

    TL.DR., Thoughts on the root cause of the bug

    At some point, Google abandoned the “ru-RU” locale in favor of “ru” and migrated.
    Apparently, this migration bypassed those users who encrypted their account with passphrase, and left them unable to change this value in the interface.

    At the same time, a funny bug remained in the system.

    In the event that a user with a curved locale is defaulted, all subsequent users who log in under their account in Chrome will automatically inherit “ru-RU” and synchronize it with a backup in the cloud.

    To understand where the ears grow from this bug, I had to tinker a bit:

    1) Find out what language we speak for the Internet.

    The console and navigator.languages ​​will help us with this:
    (4) ["ru-RU", "en-US", "en", "ru"]

    2) We check what value came to us from the cloud.

    This can be done by opening chrome: // sync-internals in the tab for the Sync Node Browser
    in the Preferences / intl.accept_languages ​​section, we will receive an unpleasant surprise.

    This means that the locale curve was successfully synchronized with the cloud and any direct manipulations with the Preferences file will be rejected in favor of the version in the cloud.

    I started a bug to fix it, but something tells me that at best it will be closed as Won't Do.

    OK what to do?

    1. Make a list of all the devices where you are logged in to your account. they will have to be fixed manually
    2. On any selected device, make sure that you have the most complete local data backup (bookmarks, passwords, payment methods, etc.)
    3. Go to chrome: // settings / syncSetup sync settings and go to Manage Synced Data on Google Dashboard
    4. Run Reset Sync and close the browser
    5. You will need to find the Preferences file for your user (chrome: // versions shows the full path)
    6. Find and delete the unfortunate locale using any text editor
    7. After that, you can open the browser and enable synchronization again.

    Remember to do the same for all Chrome users on this device who are suffering from the same problem.

    Before enabling synchronization on other devices, remember to clean Preferences there too. For Android and iOS, you can simply clear the application data.

    These steps should help.

    Unfortunately, I don’t know a more elegant way to solve the problem, because I did not find the option to update Preferences using flags or the console in Chrome.

    I will be glad to alternative ways to solve the problem in the comments.

    Also popular now: