Background of the issue:
open wp-admin (e.g. your admin language is "fr")
Click something that will trigger an admin-ajax POST request that contains "lang" with value "de" and "action" in the POST body.
All text in the ajax post reply will be in "de" instead of "fr" and I do not understand a word of that language.
This happens bc you have a bug in WPML_Locale->locale()
Practical use case (where this happens to us all the time):
when we modify a WooCommerce order, we have a button that will send an email and it also uses "lang" which contains the customers (!) language though.
Solution:
instead of using $_REQUEST use $_GET
Symptoms:
All text in the ajax post reply is in 'de' instead of 'fr'