web-dev-qa-db-ja.com

同じ内容の多言語サイト

私は2つの言語でサイトを作りたいのですが、すべてのコンテンツは完全に同じになります(すべての投稿は翻訳されません)。
唯一の違いはWPLANGに従って翻訳されるテーマメッセージ( '検索'、 'ページが見つかりません'など)のことです。 WPLANGによれば、私はテーマの中でいくつかの条件を作る能力を持たなければなりません。
2つのサイトにすべての投稿と分類をコピーしたくないので、マルチサイトソリューションは私には適していません。
私はURLを介して(www.mysite.com/?lang=enのように)識別を追加し、これに従ってWPLANGを定義し、この変数をsessionに格納し、このようにしてテーマでそれを使用することを考えました。
しかし、もっと良い解決策はあるのでしょうか。

1
s976

セッションに保存することは確かに可能ですが、まったく必要ではありません。
後でアクセスするURLにクエリ文字列を含めない方法を探しているのでなければ。 WPはすでにCookieに依存しており、セッションを使用していないため、ここではセッションよりもCookieを使用します。しかし、それは個人的な好みの問題です、と私は思います。

とにかく:
あなたのwp-config.phpでは、WPLANGを条件付きで定義することができます(wp- config.phpは早くロードされますが、それ以外は通常のphpファイルです)

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

または、クエリパラメータに2文字の識別子を使用する場合や、パラメータが無効な場合にデフォルトで特定の言語(ここでは英語)に設定する場合は、次の手順を実行します。

$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