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:

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?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Install the plugin WP Native Dashboard. Then you can set one language for the front-end in your wp-config.php and each user can choose another one for the back-end.
See Change language of comments template for details and a screenshot.

Method 2

There is a plugin that may be what you need.

http://wordpress.org/extend/plugins/fe-be-localization/

Method 3

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()

Method 4

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.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x