サポート » プラグイン » Bogo: 言語別に異なるタグクラウドグループを表示したい。

  • 解決済 YutaYuta

    (@uta_san)


    プラグインのBogoを使っています。
    言語別に異なるタグクラウドグループを表示したいと思っているのですが、例えば、

    if文を使い、
    英語のページならば、
    このタグクラウドグループを表示する、
    ようなことを考えています。

    上のような場合、どのように書けばよいのでしょうか?

    もしくは、別の良い書き方はありますでしょうか?

    ご存知の方いましたら、どうぞよろしくお願い致します。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • @uta_san さん

    こんにちは。

    タグクラウドグループの出し方は the_tags(); とかだと思いますが、
    条件分岐の方法でいえば、事前に
    functions.php

    /**
     * ブラウザーの言語設定を取得する
     * 英語か日本語のみを取得
     * @return string 言語設定()
     */
    function get_browser_locale(){
    	$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
    	if(isset($languages) ){ //languagesが空ではないとき
    		if($languages[0] === "en-US" || is_include_en_slug()) {
    			return 'en_US';
    		}
    	}
    	return 'ja';
    }
    /**
     * スラッシュで区切ったURL内に「en」があればtrue
     *
     * @return string URL末尾
     */
     function is_include_en_slug()
    {
    	$url = $_SERVER['REQUEST_URI'];
    	$array_slug = explode("/", $url);
    	if(in_array("en", $array_slug, true)){
    		return true;
    	}
    	return false;
    }

    のような関数で言語設定を行っておいて、

    $locale = get_browser_locale();
    if($locale === 'en_US'){
    	//英語処理
    }else{
    	//それ以外の処理
    }

    のような記述になるかと思います。

    • この返信は5ヶ月、 3週前にchildsviewが編集しました。
    トピック投稿者 YutaYuta

    (@uta_san)

    Kenji Yanagiya様
    この度はご回答頂き誠にありがとうございます!
    また返信が遅くなり申し訳ありません。

    上のコードを試してみました。
    コードを読んでみてこれで行けると思うのですが、一点だけ、「* スラッシュで区切ったURL内に「en」があればtrue」の箇所ですが、ベース言語を英語にしているため、BOGOではURLに「en-US」が表示されません。そのためか、すべて日本語条件の処理しか行われないようになってしまいました。

    この場合、どうしたらよいのでしょうか?
    もしよければ、お願い致します。

    @uta_san さん

    こんにちは。
    すみません、以前実案件で利用したコードから転用したため、不要な記述が入っていました。ので削除した以下記述で分岐出来るはずです。

    * 英語か日本語のみを取得
     * @return string 言語設定()
     */
    function get_browser_locale(){
    	$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
    	if(isset($languages) ){ //languagesが空ではないとき
    		if($languages[0] === "en-US") {
    			return 'en_US';
    		}
    	}
    	return 'ja';

    ブラウザの出力する言語設定で、一番最初に出てくるもものが優先度高いので、英語を判定する方法となります。

    https://pulogu.net/blog/020-computer/php/php-server-variable-http_accept_language-value-web-browser-language-settings/
    こちらの記事内での検証にて分かるように、優先言語を英語にしていれば最初の出力がen_USになるかと思います。

    トピック投稿者 YutaYuta

    (@uta_san)

    Kneji Yanagiyaさん

    ご回答ありがとうございます!!
    上の回答大変参考になりました。

    その上で色々試したり、探したりした結果、私のやりたかったことだけなら以下の方法でできることができました。

    <?php
    $locale = get_locale();
    if($locale == ‘en_US’){
    //英語処理
    }else{
    //日本語処理
    }
    ?>

    ありがとうございました。またどうぞお願い致します!!

    トピック投稿者 YutaYuta

    (@uta_san)

    解決済み

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。