Multi language site using only .mo and WPLANG

I am vaguely aware that it has something to do with the way WordPress is initialized. I know WPLANG can’t be changed on the fly.

It’s how PHP works: You can’t change an already defined constant.

But there’re filters for that. The following plugin is a sketch that you could use and try to see if this direction fits your needs.

<?php
defined( 'ABSPATH' ) OR exit;
/**
 * Plugin Name: (#102471) Query Locale
 */

add_filter( 'locale', 'wpse_102471_locale', 20 );
/**
 * Callback to filter the locale/textdomain.
 * Assumes that you got a `lang` query var
 * @param  bool $locale
 * @return mixed string/bool $locale|$GLOBALS['wp_query']['lang']
 */
function wpse_102471_locale( $locale = false )
{
    global $wp_query;
    if ( isset( $wp_query['lang'] ) )
         return $wp_query['lang'];

    return $locale;
}