• 環境:WP4.2.2
    プラグイン:Bogo(https://wordpress.org/plugins/bogo/)

    Bogoにて多言語環境を実現しています。
    今回デフォルトの言語環境をコントロールしたいと考えており、Bogoの言語切替を任意で行えないか思案中です。
    ご教授いただけますと助かります。

    行いたいことは以下のとおりです。

    ●サイトにアクセスしているユーザーの国環境を取得します(今回はIPで判断しています)
    もし「アメリカ」(en_US)からのアクセスの場合は、サイトのBogoデフォルト(表示直後)を英語にしたいと考えています(この場合、管理画面は影響を受けない方が望ましいです)

    ●デフォルト設定後、ユーザーがBogoの切り替え機能で、言語を切り替えた場合は、それを有効にさせたいです

    上記のことから、「Bogoの言語切替(またはデフォルト設定)をPHP内でおこなえれば」と考えています。
    また可能であれば、その設定をアクセス直後のみでできればと思います。

    一応、定番の「define(‘WPLANG’, ‘en_US’);」を試してみましたが、やはりうまく切り替わりませんでした。

    なにか情報がありましたら、よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック投稿者 suzuyan

    (@suzuyan)

    調査を進めたところ、あまりパッとしない結果なので、記事を削除することも考えましたが、念の為記載を残します。

    「Bogoの言語切替(またはデフォルト設定)をPHP内でおこなえれば」という記載ですが、Bogoの言語切替はリンクを動的に表示しているので、”PHPから行う”との質問はあまり意味がありませんでした。

    また表示サイトにおける「Bogoのデフォルト表示」は、管理画面の一般>サイトの言語、に依存しているようでした。
    現在、こちらの設定をコントロールする方法を模索中です。

    トピック投稿者 suzuyan

    (@suzuyan)

    経過を記載します。

    管理画面の一般>サイトの言語の設定はDBに保存されており、これをユーザーがアクセスするごとに変えさせるわけにはいきませんので、サイト表示時にその設定が反映される部分を修正することにしました。
    以下のフィルターでその設定をコントロールできるようです。

    add_filter( ‘locale’, ‘my_locale’ );
    function my_locale( $locale ) {

    例えばこれを’en_US’を設定することで、Bogoの表示言語を英語にすることができました(仮にこれを「強制設定」と呼称します)

    ただ「強制設定」を実行する場所、方法が難しく、いくつかの方法で試しましたが、常に英語になってしまいます(つまり「強制設定」を行った状態で、ユーザーがBogoの切り替え機能から、言語を切り替えた場合、それは有効にならず、常に英語になる)

    少々力技で実現したところ、切り替えは動作するようになったのですが、標準のURLへ切り替える時のみ、「強制設定」の内容が優先されます。
    つまり、

    「http://www.example.com/」 →強制設定→ 「http://www.example.com/en/」(英語)

    とした場合、

    「http://www.example.com/en/」 →Bogo切り替え→ 「http://www.example.com/zh/」(中国語)

    は問題有りませんが、

    「http://www.example.com/en/」 →Bogo切り替え→ 「http://www.example.com/」(デフォルト、日本語)

    とした場合は、強制設定の内容が反映してしまい、「http://www.example.com/en/」に変わってしまいます。
    「強制設定」は最初のアクセス時のみで良く、以降はBogoにコントロールさせたいのですが、うまくいっていません。

    また判明しましたら記載します。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「Bogoの言語切替をPHPで行う場合」には新たに返信することはできません。