web-dev-qa-db-fra.com

Site multilingue avec le même contenu

Je veux créer un site en 2 langues, mais tout le contenu sera absolument identique (tous les messages ne seront pas traduits).
La seule différence concernera des éléments tels que les messages de thème (tels que "Rechercher", "La page non trouvée") qui seront traduits conformément à WPLANG. De plus, je dois avoir la capacité de créer des conditions dans le thème, selon WPLANG.
La solution multite ne me convient pas, car je ne souhaite pas copier toutes les publications et les taxonomies sur deux sites.
J'ai pensé ajouter une identification via une URL (telle que www.mysite.com/?lang=en), définir WPLANG en fonction de cela, et stocker cette variable dans session et l'utiliser de cette manière dans le thème.
Mais peut-être y a-t-il une meilleure solution?

1
s976

Le stocker dans une session serait certainement possible, mais ce n’est pas du tout nécessaire.
À moins que vous ne cherchiez un moyen de ne pas inclure la chaîne de requête dans les URL visitées par la suite. Ici, je préférerais utiliser un cookie plutôt qu'une session, car WP s'appuie déjà sur les cookies et n'utilise pas de session. Mais c'est une question de goût personnel, je suppose.

De toute façon:
Dans votre wp-config.php , vous pouvez définir WPLANG de manière conditionnelle comme si ( wp- config.php est chargé tôt, mais à part cela, un fichier php normal comme tout autre):

if ( isset( $_GET['lang'] ) ) {
    define( 'WPLANG', $_GET['lang'] );
} else {
    define( 'WPLANG', 'en_US' );
}

Ou, si vous souhaitez utiliser des identificateurs à deux caractères pour le paramètre de requête et/ou le définir par défaut dans une langue donnée (ici: anglais) si le paramètre n'est pas valide:

$language = isset( $_GET['lang'] ) ? $_GET['lang'] : 'en';
switch ( $language ) {
    case 'de':
        define( 'WPLANG', 'de_DE' );
    break;

    case 'en':
    default:
        define( 'WPLANG', 'en_US' );
}
2
Johannes Pille