web-dev-qa-db-fra.com

Langue différente pour Frontend vs Backend

J'utilise un package WordPress en anglais et c'est très bien.

Maintenant, j'aimerais traduire certains éléments du blog (comme "posté sur", "commentaires"), etc., mais laissez l'interface de tableau de bord intacte en anglais.

Existe-t-il un mécanisme permettant de traduire uniquement les éléments du site?

8
serhio

Vous pouvez faire ce qui suit:

  1. Obtenez le pack de langue (par exemple, de_DE.mo) auprès de wordpress.org . Si le module linguistique n'est pas disponible en téléchargement autonome, vous pouvez également utiliser le fichier .mo fourni avec le fichier ZIP WordPress correspondant à votre langue. Situé sous wp-content/languages.
  2. Déplacez le fichier .mo vers wp-content/languages/ de votre installation WordPress par défaut (anglais).
  3. Remplacez la constante WPLANG dans wp-config.php par la nouvelle localisation (par exemple, de_DE).
  4. Dans votre functions.php, ajoutez le filtre suivant:

functions.php

add_filter('locale', 'wpse27056_setLocale');
function wpse27056_setLocale($locale) {
    if ( is_admin() ) {
        return 'en_US';
    }

    return $locale;
}
18
rofflox
6
zodiac1978

Une réponse mise à jour pour Wordpress 4+

La réponse de @ rofflox est toujours correcte, mais quelques modifications dans Wordpress peuvent avoir un effet lors de l'utilisation de sa fonction 'en l'état' depuis WP 4.0.

La constante wp-config WPLANG est déconseillée en faveur de la définition de la langue du site via une liste déroulante dans Settings->General. Cela signifie que, après avoir changé la langue de votre site en Svenka (par exemple), l'administrateur de votre site will apparaît en anglais ... mais cette liste déroulante Langue du site dans Settings->General sera présélectionnée. as Anglais (États-Unis) . Cela signifie que si vous modifiez ultérieurement vos paramètres généraux en oubliant de choisir Svenka comme langue de votre site, le site entier redeviendra en anglais.

Je recommanderais de créer des fonctions dans votre fichier functions.php comme ceci:

//    Set the locale; original function from @rofflox

function vnmFunctionality_setLocale($locale) {
    if (is_admin()) {
        return 'en_US';
    }

    return $locale;
}

add_filter('locale', 'vnmFunctionality_setLocale');

// Enqueue a script to force-set the Language dropdown on the General Options page, just in case we forget about it later.

function vnmFunctionality_countryReminderScript($hook) {
    if ($hook != 'options-general.php') {
        return;
    }

    wp_enqueue_script('lang-reminder-script', get_template_directory() . '/js/site-language.js', array('jquery'), '1.0.0', true);

    wp_localize_script('lang-reminder-script', 'langObject', array(
        'lang'  => get_option('WPLANG'),
    ));
}

add_action('admin_enqueue_scripts', 'vnmFunctionality_countryReminderScript');

Et puis un fichier Javascript appelé site-language.js (enregistré dans un dossier /js/ de votre thème) comme ceci:

jQuery(document).ready(function($) {
    $('select#WPLANG').val(langObject.lang).change();
});

Cela devrait présélectionner automatiquement la langue d'affichage actuelle du site dans le menu déroulant de la page Options, afin que vous n'ayez pas à vous rappeler de le faire manuellement à chaque fois.

2
indextwo

Depuis WordPress version 4.7 , différent Les utilisateurs du backend peuvent définir leur propre langue d’administration préférée à l’aide du sélecteur de langue natif WordPress. De cette façon, ils voient l'interface WordPress dans leur langue et peuvent gérer plus facilement le contenu.  Different language for Backend users in Wordpress independent of the Frontend language 

2
Serge

Si quelqu'un cherche toujours cela, voici ce que vous devriez faire depuis la 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');

Cela force le tableau de bord à se charger en anglais. Vous pouvez ensuite accéder aux paramètres, définir la langue souhaitée.

1