>> are no longer switching languages...
I'm a bit confused... :-( Do you mean they did switch before this fix, while the php didn't? Or did they never?
Anyway, for SilverStripe javascript (ss.i18n.js) to detect the right locale, you need something like this in your template, that's where the detectLocale() function tries to find the current locale:
<meta http-equiv="Content-Language" content="$ContentLocale"/>
Also the right js translation file needs to be present in sapphire/javascript/lang/ (there are only a few). I know there were some other issues, but I can't quite remember... :-(