Last modified: 2014-05-15 14:14:15 UTC

Wikimedia Bugzilla is closed!

Wikimedia migrated from Bugzilla to Phabricator. Bug reports are handled in Wikimedia Phabricator.
This static website is read-only and for historical purposes. It is not possible to log in and except for displaying bug reports and their history, links might be broken. See T63446, the corresponding Phabricator task for complete and up-to-date bug report information.
Bug 61446 - Wikidata: inappropriate language prompts
Wikidata: inappropriate language prompts
Status: VERIFIED FIXED
Product: MediaWiki extensions
Classification: Unclassified
WikidataRepo (Other open bugs)
master
All All
: Normal normal (vote)
: ---
Assigned To: Thiemo Mättig
u=dev c=frontend p=3
: need-volunteer
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2014-02-16 21:06 UTC by Andy Mabbett
Modified: 2014-05-15 14:14 UTC (History)
7 users (show)

See Also:
Web browser: ---
Mobile Platform: ---
Assignee Huggle Beta Tester: ---


Attachments

Description Andy Mabbett 2014-02-16 21:06:11 UTC
I have {{#babel:en}} on my user page, and speak no languages other than English, but am constantly being prompted to add labels in "Scots" & "Cymraeg".
Comment 1 Thiemo Mättig 2014-02-17 17:23:05 UTC
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.
Comment 2 Andy Mabbett 2014-02-17 17:48:54 UTC
I have as requested checked [[d:Special:MyLanguageFallbackChain]], while logged in; it lists only "en - English".

I have only English listed under the languages in my browser settings (in each of the browsers in which this occurs); there are no "Scots" or "Cymraeg" options for me to delete.
Comment 3 Lydia Pintscher 2014-02-17 17:56:15 UTC
Thiemo: Let's talk about this quickly tomorrow.
Comment 4 Thiemo Mättig 2014-02-17 18:00:21 UTC
(In reply to Andy Mabbett from comment #2)
> there are no "Scots" or "Cymraeg" options for me to delete.

These are probably determined from your geolocation (or from the cookie, if you haven't deleted it).

I would love to fix this but this needs a bit of refactoring of the underlying PHP code to not break case no. 2 as described above. Not sure if this is worth the trouble at the moment since we have more important things to fix first.

Other workaround: Add a second language to your Babel box. Instead of multiple other languages only this single additional language will be displayed.
Comment 5 Andy Mabbett 2014-02-17 19:42:51 UTC
(In reply to Thiemo Mättig from comment #4)
> (In reply to Andy Mabbett from comment #2)
> > there are no "Scots" or "Cymraeg" options for me to delete.
> 
> These are probably determined from your geolocation (or from the cookie, if
> you haven't deleted it).

I was responding specifically to your "Check the languages in your browser settings and remove languages you don't want."
Comment 6 Thiemo Mättig 2014-02-19 13:04:02 UTC
(In reply to Andy Mabbett from comment #5)
> I was responding specifically to your [...]

I know. :-) I wasn't sure if you know about the "Accept-Language" settings in your browser.

http://www.w3.org/International/questions/qa-lang-priorities.en

I think I have a good idea how to fix the described issue and started working on it.
Comment 7 Gerrit Notification Bot 2014-02-20 16:10:24 UTC
Change 114486 had a related patch set uploaded by Thiemo Mättig (WMDE):
Don't display languages based on ULS heuristics if I have a Babel box

https://gerrit.wikimedia.org/r/114486
Comment 8 Gerrit Notification Bot 2014-03-13 10:36:31 UTC
Change 114486 merged by jenkins-bot:
Don't display languages based on ULS heuristics if I have a Babel box

https://gerrit.wikimedia.org/r/114486

Note You need to log in before you can comment on or make changes to this bug.


Navigation
Links