Localization: I want the backend: english and frontend in defined language

I’d like to have the backend of WordPress in English and use a different locale for the frontend

so far I figure out perhaps I could do it by setting in the wpconfig the locale I want to use in the frontend, then add in functions.php something like this:

Read More
add_filter('locale', 'mytheme_backendlocale');
function mytheme_backendlocale($locale) {
    if ( is_admin() ) {
        return 'en_US';
    }
    return $locale;
}

is this the best practice to achieve what I want or should I do it differently?

Related posts

Leave a Reply

4 comments

  1. Till now, I think that Fulvio’s answer’s the best one. I’m using that filter even on a multisite setup, with just one line:

    add_filter('locale', 'set_admin_locale');
    function set_admin_locale($locale) {
      return 'en_US';
    }
    

    Basically sometimes, and in this case, I use multisite for multi-language sites instead of plugins. Also, I have 1 single theme for each language (usually child themes of the main language). So every site of the network has its own language, but on the admin side, I need all teh interfaces in italian.

    So what I do is:

    1. I don’t use the general WPLANG constant in wp-config.php
    2. I set italian in every site of teh network
    3. In each theme’s functions.php I use the above filter to control the frontend language/locale.

    NOTE: that filter won’t change the admin language, so there’s no need to check if is_admin()

  2. If anyone is still looking for that, here is what you should do since version 4.7

    function wp_noshor_redefine_locale($locale) {
        if( is_admin() ):
            switch_to_locale('en_US');
        endif;
    }
    add_filter('init','wp_noshor_redefine_locale');
    

    This forces the dashboard to load in English, then you can go to settings, set the language you desire.