As a Spanish user viewing the English version of Wikipedia
I want to switch to the French version in my local language via typing francés which currently matches no results
so that I save time by not being required to remember that I need to search for it as "francais" or "french".
Related: T139799
More detail
Do this in beta first, ensuring that it's possible to later move this to stable.
Ideally, in addition to searching in your current language (T139799), I should be able to search in any langauge: "Francés" (spanish version), "Französisch" (german version), etc. This is currently possible using the Universal language selector and I believe they are simply using the action api: action=languagesearch to do so.
While a search request is pending, do not modify the result list. Only upon response modify the list.
Technical details
Change client side filtering to:
- API query example: https://en.wikipedia.org/w/api.php?action=languagesearch&format=json&search=aleman
- After that, match the language codes with the ones we have on the client to show the relevant results
AC
- Searching for "aleman" in an english wiki with english language browser will show "German" in the list of languages.
- While searching there's an unobtrusive loading indicator as showed in the mocks after 2 seconds of loading time.
- If the api query fails, there is an error message shown as specified in the mocks `TBD``` @Nirzar.
- If the api query takes too long (10s for example), it should timeout and there should be an error message shown as specified in the mocks.
- If there are concurrent searches the results shown will be the ones of the last query issued. Previous old queries will be dismissed if they arrive later.
- Search API querying (input changes) is debounced to avoid excessive network calls.
- Unit and browser tests are adapted to the new behavior.
- Existing event logging behaviour is unchanged
- Event logging is updated to include languagesearch API request errors
Final mocks
Initial state
Successful search (results before 2 seconds) we don't want to show flickering spinner
If the api takes more than 2 seconds to return, then only we show the spinner
Notice the list is unaffected while the query is taking more than 2 seconds.
After 10s waiting (timeout), show error state:
Both:
- I searched for a language that does not exist at all on wikipedia
- I searched for a language that does exist on wikipedia but this article does not exist in that language
Suggested testing, RTL+LTR, landscape+portrait:
- Android 2.3 Browser phone form factor
- Android 4.x or higher Chrome phone form factor
- Android 4.x or higher Chrome tablet form factor
- iOS 9.3 iPhone Safari
- iOS 9.3 iPad Safari
- Opera Mini non-compressed (not extreme mode) Android 4.x or higher phone form factor
- UC browser (not mini with compression) Android 4.x or higher phone form factor
- Windows 7.5+ Phone IE
- Desktop Firefox
- Desktop Chrome
- Desktop Safari
- Internet Explorer 11
- Edge