tolgee / tolgee-js

Tolgee JavaScript libraries monorepo
https://tolgee.io
MIT License
231 stars 26 forks source link

LanguageDetector does not work in Chromium browsers #3160

Closed kilianso closed 1 year ago

kilianso commented 1 year ago

I'm using the LanguageDetector plugin to set the language based on the users browser settings. Using the @toggle/svelte package, i'm doing the following:

In my +layout.svelte

import { TolgeeProvider, Tolgee, LanguageDetector } from '@tolgee/svelte';

const tolgee = Tolgee()
   .use(LanguageDetector())
   .init({
      defaultLanguage: 'it',
       availableLanguages: ['de', 'fr', 'it'],
   });

Then in my +page.svelte

import { T, getTolgee } from "@tolgee/svelte";
const tolgee = getTolgee(['language'])

const handleLanguageChange = () => {
   $tolgee.changeLanguage(lang)
}

let lang = $tolgee.getLanguage() || 'de';
$: lang && handleLanguageChange();

If if i use the lang variable, in Firefox and Safari it works as expected oversteering the defaultLanguage. However in Chromium (Brave with shield down and also Chrome) it does not work. Always picking the defaultLanguage.

stepan662 commented 1 year ago

Hey, I've tested it and it doesn't seem to work any different in chrome for me. Could you check what value you have in window.navigator.language?

Alternatively you can copy this code to create your own LanguageDetector and see what needs to be changed in order to make it work: https://github.com/tolgee/tolgee-js/blob/main/packages/web/src/LanguageDetector.ts

kilianso commented 1 year ago

Oh facepalm. You are right. It was a setting. Works as expected.