Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

For a single site wordpress, the language must be set from wp-config.php's WPLANG, but is it possible to set from my plugin which override the default value?

share|improve this question
1  
The link also appears at the right column of this page, but I think it's worth noting in the comments another approach for a similar situation: wordpress.stackexchange.com/a/53678/12615 –  brasofilo May 31 '12 at 21:00

1 Answer 1

up vote 9 down vote accepted

In wp-includes/l10n.php you will find the function get_locale(). It offers a filter; you can set the language and ignore the constant:

function get_locale() {
    global $locale;

    if ( isset( $locale ) )
        return apply_filters( 'locale', $locale );

    // WPLANG is defined in wp-config.
    if ( defined( 'WPLANG' ) )
        $locale = WPLANG;

    // If multisite, check options.
    if ( is_multisite() ) {
        // Don't check blog option when installing.
        if ( defined( 'WP_INSTALLING' ) || ( false === $ms_locale = get_option( 'WPLANG' ) ) )
            $ms_locale = get_site_option('WPLANG');

        if ( $ms_locale !== false )
            $locale = $ms_locale;
    }

    if ( empty( $locale ) )
        $locale = 'en_US';

    return apply_filters( 'locale', $locale );
}

To change it per plugin use the filter 'locale'. Example:

add_filter( 'locale', 'wpse_52419_change_language' );
function wpse_52419_change_language( $locale )
{
    return 'de_DE';
}
share|improve this answer
    
Works like a magic. But in my case, it's returning an error: Fatal error: Cannot redeclare get_locale(). So I simply changed the function name from get_locale() to nano_get_locale(), and it's working wonderfully. –  Mayeenul Islam Nov 4 '13 at 9:25
2  
@MayeenulIslam You should not copy the get_locale() function, that’s a quote from the core. All you need is the last code block. –  toscho Nov 4 '13 at 12:38

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.