Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Modification dynamique de la langue de votre site WordPress (locale)

16

Il existe de fantastiques plugins multilingues pour WordPress, mais pour un projet client, j’avais besoin de quelque chose de beaucoup plus flexible, car ce client particulier devait répondre à plusieurs pays qui parlaient chacun plusieurs langues.

En bref, le client devait pouvoir disposer d’une instance multisite avec un pays et une langue définis par défaut, et la possibilité de remplacer le pays et la langue sur chaque page/publication.

Construire un plugin multilingue

Si suffisamment de personnes me dérangent pour le faire, je pourrais envisager de publier le tout en tant que plugin autonome, mais le cœur du plugin multilingue que je construis repose sur le localefiltre WordPress, et le cœur du plugin réside dans l’extrait de code suivant :


function wholesomecode_example_redefine_locale( $locale) {

    $country = get_post_meta( get_the_id(), '_wholesomecode_example_global_country_override', true );
    $lang    = get_post_meta( get_the_id(), '_wholesomecode_example_global_language_override', true );

    if (( empty( $lang) ||! (is_page() || is_single() || is_singular()) )) {
        $country = get_theme_mod( 'wholesomecode_example_multilingual_country', 'gb' );
        $lang    = get_theme_mod( 'wholesomecode_example_multilingual_language', 'en' );
    }

    if ('default' !== $country) {
        $locale = $lang. '_'. strtoupper( $country );
    } else {
        $locale = $lang. '-'. $country;
    }

    return $locale;

}
add_filter( 'locale', 'wholesomecode_example_redefine_locale', 10 );

Tada ! Vos paramètres régionaux sont maintenant définis et votre site multilingue devrait maintenant changer de langue en fonction de la méta de votre page/site.

Attendre! Mes traductions par défaut de base de WordPress ne fonctionnent pas !

C’est un problème que j’ai rencontré et que je n’ai pas pu résoudre de toute ma vie. Mon thème s’est parfaitement traduit après avoir ajouté les fichiers .mo et .po pertinents, mais les traductions par défaut de base de WordPress (telles que le message "Laisser une réponse" dans le modèle de commentaires) ne se traduisaient pas.

Il s’avère que la solution était assez simple! Bien que j’aie prévu des traductions de domaine personnalisées, j’avais oublié de mettre un simple morceau de code dans mon thème : load_default_textdomain().


load_default_textdomain();

Si j’ai épargné quelques heures de votre débogage avec cette "astuce bizarre", vous êtes les bienvenus !

Source d’enregistrement: wholesomecode.ltd

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More