Problem/Motivation
When working in a multilingual context per default the interface translation is enabled. Leading to the following implications:
- translations in views only allow filtering by Interface Language
- twig `t` function and `trans` tag use the Interface Language
After enabling language negotiation, not only on the default Interface but also on the Content, creates problems. IMHO the purpose to have this distinction is to have a backend in one language and the actual content/frontend in an other.
Is the language negotiation enabled for content three consequences appear:
- In views the language Interface filter is accompanied with the new Content filter. If not corrected from formally "Interface text language selected for page" to "Content language selected for page" the view will return wrong content
- A new language switcher block appears to switch Content (if you set url as a Content language detection). But the old (interface) Language switch will switch the Content language, too.
- twig `t` will still adhere the Interface language given -- not the content language.
Detection methods `Account administration pages` and `user`
From the Drupal backend there is little information on the implications of the distinction between `Account administration pages` and `user` detection.
If both are enabled on `/admin/config/regional/language/detection` the user profile page will show two drop downs.
`user`
This is said to influence the communication with the user and his/her account information. Meaning something like content original language.
No hint to the Interface.
`Account administration pages`
This one is clearly the "Account administration pages language setting". Is it? because when enabled, the frontend Content language will always default to this setting. Even showing a `404` for other paths! At this point I am unsure, if this is a bug.
But furthermore, in addition to the `user` setting this generates a couple of strange behaviors with e.g. three languages:
- in the fronted a admin toolbar in primary language, the content in the secondary and the `t` strings in a third.
- the backend in the secondary language.
This is seriously misleading, since a simple user (with the permissions given) could configure his/her own profile like this!
Proposed resolution
- per default prioritize Content language over Interface language
- As found out in #2830033, clean up the two negotiations in `LanguageNegotiationUser.php` and `LanguageNegotiationUserAdmin.php`
- Make the `t` function and `trans` tag aware of Content or Interface language
- update the [docs on multilingual](
https://www.drupal.org/docs/8/multilingual/choosing-and-installing-multi... →
) and add information on the difference on `Account administration pages` and `user`.
Related Issues
- #2830033
- #2313309
- #2189267