How to set different localization file for different users?

By default WordPress only loads translations according to the user’s language when they’re viewing admin pages.

You can see that in the code for the load_theme_textdomain function:

$locale = apply_filters( 'theme_locale',
    is_admin() ? get_user_locale() : get_locale(),
//  ^^^^^^^^
$domain );

So your code is fine if you want to override that behaviour for the front end of your site.

Is it conventional? Well, this is what filters are for. However, I’d say this isn’t normally done unless the language of the actual content is also changing.