web-dev-qa-db-ja.com

2つの言語を取得する簡単な方法WP site

私は2つの言語でサイトを作ろうとしています。私は解決策を探していましたが、簡単なハウツーアンサーを見つけることができませんでした。また、可能であればプラグインを使用しないことをお勧めします。

私がやろうとしていること:

1)デフォルトのリダイレクトがdomain.com/enのときにdomain.com/ruおよびdomain.com/enを使用する。

2)1つのWPエンジンのインストール、同じ言語の同じ管理パネル - 英語。

3)スタイルを自由に設定する方法(これにはCSSだけでなくHTMLも含まれます)。これはもちろん最も問題のある部分です。

私はどうやってこれを作るかわからない。異なるヘッダーとフッターを呼び出す方法があることはわかっていますが、2つの言語のサイトでこれを効果的に管理する方法がわかりません。たとえば、言語ごとに異なるカテゴリを使用することはできますが、これは良い習慣であり、これは適切に機能するのでしょうか。

1
piot3rs

あなたは文字列を翻訳するために以下のコードを使うことができます:

add_filter('gettext', 'translate_text');
add_filter('ngettext', 'translate_text');

function translate_text($translated) { 
    $translated = str_ireplace('Choose an option', 'Select', $translated); 
    $translated = str_ireplace('Original Text', 'Your Replacment Text', $translated); 
return $translated; 
}

しかし、私は複雑なコンテンツを翻訳することは考えていません。私はあなたがプラグインを使用したくないことを知っていますが、私の研究として、私達は働くためにプラグインとして非常に重いPHPコードを書かなければなりません。私はあなたがあなたのアイコンをクリックしている間私はお勧めします WPGLOBUS あなたが設定で前に設定した言語の数に制限なくあなたの翻訳を入力することができます、プラグインは生成せずにyoursite.com/ruアドレスを生成しますまたは、新しいスタイルシート、js、またはページを追加するか、追加のファイルを読み込む必要があります。

1
Irandoust

ここに簡単な(だから、網羅的ではない)方法は:

  1. 「en」と「ru」という2つのカスタム投稿タイプを作成します。これにより、すべての投稿にwww.example.com/en/post-slugwww.example.com/ru/post-slugのURLが含まれるようになります。

  2. 両方の言語用の.poファイルと.moファイルを作成します(英語がすでにテーマのデフォルト言語になっている場合はロシア語のみ)。

  3. あなたのfunctions.phpでは、投稿タイプに基づいて ロケールフィルタ を使って正しいtextdomainがロードされていることを確認してください:

    add_filter( 'locale', 'wpse210218_set_locale' ); function wpse210218_set_locale ($lang) { if ( 'ru' == get_post_type() ) { return 'ru_RU'; } else { return 'en_EN'; } }

Htmlとcssについては、投稿タイプごとに異なるテンプレートを使用できるため、簡単に解決できます。

1
cjbj