Author: andy
Description:
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".
Version: master
Severity: normal
Whiteboard: u=dev c=frontend p=3
Author: andy
Description:
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".
Version: master
Severity: normal
Whiteboard: u=dev c=frontend p=3
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:
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:
The first language (which always is the current interface language) is truncated. Max. 3 languages are displayed.
Result for anonymous users:
Results for registered users:
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.
andy wrote:
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.
(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.
andy wrote:
(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."
(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.
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
Change 114486 merged by jenkins-bot:
Don't display languages based on ULS heuristics if I have a Babel box