I needed something similar for translation & direction purposes.
By defining $direction for each post, 'ltr' or 'rtl'...using this simple plugin ...
I edited the plugin by adding following action to plugin.php file:
add_action('wp', function($locale){
// get post meta from database, which is generated by the plugin
global $post;
$direction = get_post_meta($post->ID, 'os_custom_box_for_rtl', true);
// set locale language based on post meta
$locale = ($direction == 'rtl')? 'ar':'en_US'; // ...or use your own locale codes
// if not admin area, do switch! it will work for frontend only per specific page/post
is_admin() or switch_to_locale( $locale );
});