web-dev-qa-db-fra.com

Changer la langue d'une seule page

J'ai un site wordpress dans une langue qui aligne RTL, mais certaines pages sont en anglais. Cependant, ces pages semblent terribles, car le texte anglais est aligné sur le langage RTL, la ponctuation, etc. apparaît du mauvais côté.

Comment définir la langue d'une seule page ou de plusieurs pages individuelles?

4
Null_Error

Le filtre locale qui vous permet de définir les paramètres régionaux de manière spécifique. Vous pouvez vérifier la page actuelle et modifier la valeur en fonction de cela.

add_filter('locale', 'change_my_locale');
function change_my_locale( $locale ) {
    if ( is_page('slug-here') ) {
        return 'en_US';
    }
    return $locale;
}
2
Jack Johansson

Vous devez utiliser le crochet locale pour résoudre votre tâche.

Remarque importante que vous ne pouvez pas l'ajouter dans le thème et utiliser la fonction is_page, car elle sera définie ultérieurement.

Vous devez donc créer plugin ou devez utiliser le plugin avec l’analyse url de cette façon:

add_filter('locale', function($locale) {
    $path = trim($_SERVER['REQUEST_URI'], "/");

    // get last part as slug
    $arr = explode("/", $path);
    $slug = end($arr);

    if($slug === 'MY_SLUG')
      return 'ru_RU';

    return $locale;
});

Réponse associée: Changer les paramètres régionaux au moment de l'exécution?

2
Anton Lukin

Voici un correctif au problème de synchronisation dans la solution de @ jack-johansson:

add_action('wp', function() {
  if ( is_page('slug-here') ) {
    add_filter('locale', function( $locale ) {
      return 'en_US';
    });
  }
});
0
maxime schoeni