Thiemo Mättig <> changed:

           What    |Removed                     |Added
          Component|WikidataRepo                |WikidataClient
            Version|unspecified                 |master

--- Comment #1 from Thiemo Mättig <> ---
Please check if [[d:Special:MyLanguageFallbackChain]] displays "en" only (I'm
pretty sure it does).

I started digging into this issue and found the reason. But I'm afraid we can
not fix this easily without breaking the experience for some users.

First, it's important to understand that there are two very different
algorithms, one on the server (PHP) and one in the client (JavaScript).

The server (you can try this if you disable JavaScript) uses two sources:
1. The language you had set in your preferences (or by using ?setlanguage=xx in
the URL).
2. All languages in the #babel box (including xx-0 languages, which is a
different bug that should be fixed).
The current interface language (this can be different from your preference if
you are using ?uselang=xx) is excluded.

The client relies on a function from the UniversalLanguageSelector (ULS) which
uses other sources:
1. Current interface language.
2. Wiki's content language.
3. Accept-Languages from the browser.
4. User's previous selected languages.
5. Language from the user's geolocation.
The first language (which always is the current interface language) is
truncated. Max. 3 languages are displayed.

Result for anonymous users:
1. The server never displays "other languages" since anonymous users neither
have preferences nor #babel. ULS magic always happens.

Results for registered users:
2. If a user does not have a #babel and the interface language is identical to
his preferences (which should be the default in most cases) it's the same as
for anonymous users.
3. If the user temporary changed the interface language (?uselang=xx) only the
preference language will be used in "other languages". ULS magic does not
happen in this case.
4. If the user does have a #babel with two or more languages this will be used.
ULS magic never happens in this case.
5. If there is only 1 language in the #babel box and it happens to be identical
to the interface language it's basically ignored. The server does not display
"other languages". ULS kicks in.

No. 5 is the problem. It's possible to fix it without breaking no. 1 by
checking if the user is logged in. But no. 2 will break (which I consider
important). Currently there is no way to distinguish between no. 2 and 5.
JavaScript simply does not know if the user has a #babel box set or not.

Workaround: Delete the "uls-previous-languages" cookie. Check the languages in
your browser settings and remove languages you don't want.

You are receiving this mail because:
You are on the CC list for the bug.
Wikibugs-l mailing list

Reply via email to