Default Language

How to enforce default language?

If you have your own deployment:

On a per-user basis, I believe you can also force it using ?lang= param (example https://meet.jit.si/ForcesYourPreferenceToFrance?lang=fr) but this does not play nice with stored preferences on user browsers and will reset their previous preference.

This is creating a problem, as our users do not know English, and thus will not be able to navigate settings to change it their language.

Do you have your own jitsi deployment? or using meet.jit.si or jaas?

If own deployment, the defaultLanguage config would be the way to go, but for existing users the last used language might already be stored in browser so they won’t see that change. In which case, I can think of 3 options:

  1. You document steps with screenshots so they can navigate to the right settings to change it back
  2. Have them use the ?lang= approach once to reset their browser preference
  3. Have them clear browser cache and the defaultLanguage from config.js should then take effect.

Option (2) is something you could also do if your users use a deployment you don’t control like meet.jit.si. Create a one-off link that they visit once to set their preference, and the browser should then remember it for future visits.

We have our own deployment, and changed defaultLanguage but it seems with no effect…

It may be a cache issue. Can you try it with a private tab in your browser?

Have you tried with a new users or in private browsing tab?

Note my comments and suggestions above re “but for existing users the last used language might already be stored in browser so they won’t see that change”.

no effect, the file was: .usr/share/jitsi-meet-web-config/config.js

Do you see that change when you browser directly to https://yourdomain.com/config.js?

The correct file is /etc/jitsi/meet/YOUR-DOMAIN-config.js

yes, that file as well was changed.

yes, I can see the file on https://yourdomain.com/config.js and the defaultlanguage is set as I did, but it is not taking effect even in private browser.

@ali.alhaidary restart service maybe

/etc/init.d/jicofo restart && /etc/init.d/jitsi-videobridge2 restart && /etc/init.d/prosody restart

Sorry for troubling you with me, but I even restated the box several times

Shouldn’t need to restart since config.js is loaded at request time and can take effect without restarts.

Let’s try something. In /usr/share/jitsi-meet/interface-config.js, try setting LANG_DETECTION: false

I’m just guessing here, but my suspicion is that there is some precedence at play when it comes to selecting language. Something like “first check in querystring and localstorage for lang preferences, followed by language detection offered by browser based on user locale, and finally the defaultLanguage from config”. Which makes sense, considering the config is called “default language” not “preferred language”.

2 Likes

@ali.alhaidary

if you try to change localstroage and put en for english

yes, yes, yes @shawn LANG_DETECTION: false did it.
So many thanks…

Thank you @mbiriki_koussai but I do not have that screen, nor know to display it.

:+1:

So we now know why it is behaving like that. Now it is down to you to decide if you want to ignore browser suggestions and use defaultLanguage from config (LANG_DETECTION: false) or let user’s browser decide the best language (LANG_DETECTION: true).

And of course, after the first visit by the user, that detected language will be stored in their browser and future visits will use that and no new detection is done unless they clear browser cache.

For future readers, here’s a summary of how I believe language detection works (based on this code).

  1. If ?lang=<LANG> querystring is provided, this always takes precedence.
  2. Next, if user visited before and has language set in localstorage, then this will be used and subsequent language detection methods do not apply.
  3. If LANG_DETECTION: true is set in interfaceConfig, then it attempts to detect the language from the browser (checking navigator.languages, navigator.userLanguage, navigator.language).
  4. Finally, if LANG_DETECTION: false or if none detected from browser, then defaultLanguage in config.js is used as the fallback language.

Definitely worth noting that once user has visited before and has language stored in browser, (3) and (4) will never kick in so changes in config won’t affect them. To influence language for existing users, they will have to do one of the following:

  • Change it in Jitsi settings modal, under the “more” tab
  • OR, clear browser data for the domain (or manually update language in Local Storage).
  • OR, use the lang querystring once to force update to a different language

If you have lots of non-technical users, the last option is probably the easiest to do at scale. E.g. in your user help page or email instructions, just give them a link like this (https://meet.domain.com?lang=en) to use each time they need to revert to a specific language.

2 Likes