web-dev-qa-db-ja.com

ローカリゼーション:バックエンドが欲しい:定義された言語での英語とフロントエンド

Wordpressのバックエンドを英語にして、フロントエンドに別のロケールを使いたいのですが。

これまでのところ、フロントエンドで使用したいロケールをwpconfigに設定してから、functions.phpに次のようなものを追加することでそれを実現できる可能性があります。

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

これは私がやりたいことを達成するためのベストプラクティスですか、それとも別のやり方をするべきですか?

9
unfulvio

プラグインをインストールします WP Native Dashboard 。それであなたはあなたのwp-config.phpでフロントエンドのために1つの言語を設定することができ、各ユーザーはバックエンドのために別の言語を選ぶことができます。
詳細とスクリーンショットについては コメントテンプレートの言語の変更 を参照してください。

2
fuxia

あなたが必要としているかもしれないプラグインがあります。

http://wordpress.org/extend/plugins/fe-be-localization/ /

1
Andy James

今までのところ、私はFulvioの答えが最良のものだと思います。私はたった1行のマルチサイト設定でもそのフィルタを使っています。

add_filter('locale', 'set_admin_locale');
function set_admin_locale($locale) {
  return 'en_US';
}

基本的に時々、そしてこのケースでは、私はプラグインの代わりに多言語サイトのためにマルチサイトを使います。また、私は各言語に1つのテーマを持っています(通常はメイン言語の子テーマ)。したがって、ネットワークのすべてのサイトには独自の言語がありますが、管理者側では、イタリア語のすべてのインターフェイスが必要です。

だから私は何をしています:

  1. 私はwp-config.phpで一般的なWPLANG定数を使いません
  2. 私はネットワークのすべてのサイトでイタリア語を設定します
  3. 各テーマのfunctions.phpでは、フロントエンドの言語/ロケールを制御するために上記のフィルタを使用します。

注:このフィルタは管理言語を変更しないので、is_admin()かどうかを確認する必要はありません。

1
Luca Reghellin

まだ誰かがそれを探しているのであれば、これがバージョン4.7以降にすべきことです。

function wp_noshor_redefine_locale($locale) {
    if( is_admin() ):
        switch_to_locale('en_US');
    endif;
}
add_filter('init','wp_noshor_redefine_locale');

これはダッシュボードに英語でロードすることを強制します、そしてあなたは設定に行き、あなたが望む言語を設定することができます。

0