• 解決済 muro

    (@muromuro)


    言語切り替えのプラグインについてです。
    以前はmqTranslateを使用していたのですが、いつの間にかサポートが終了しており、古いプラグインを使い続けるわけにはいかないので、後継のTranslateXに乗り換えました。
    現在作成中のサイトは日本語と英語で切り替え可能で、日本語をデフォルトにしています。
    サイト上に言語切り替えのリンクを設置しており、URLは以下の関数で出力させています。

    日本語に変える: qtranxf_convertURL(”, ‘ja’)
    英語に変える: qtranxf_convertURL(”, ‘en’)

    出力結果は例として以下のようになります。

    日本語に変える: http://example.com
    英語に変える: http://example.com/en/

    日本語に変えるリンクをクリックしたとき、mqTranslateだったときは英語から日本語のページへ、正常に戻ることができました。
    しかし、TranslateXに変えてからは、上記のリンクでは英語から日本語のページへ戻ることができず、英語のページがまた表示されてしまいます。

    URLにenと入っている部分をjaに変えてアクセスすると一応、デフォルトであるja抜きの日本語ページへ戻ることはできるので、現在は英語から日本語に戻るときだけ、TranslateXの関数を使わず、以下のコードで代用しています。

    $jpn = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; // 現在のページのURL取得
    $jpn = str_replace("/en/", "/ja/", $jpn); // enをjaに変換

    そこで、上記のようなコードをわざわざ作らずとも、mqTranslateだった頃のように、TranslateXの関数で正常に英語から日本語へ戻す方法はないでしょうか?
    日本語へ戻れないのは何が原因でしょうか?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • mocomoco

    (@silent_dandy)

    こちらで同様の質問がされているようです。
    https://github.com/qTranslate-Team/qtranslate-x/issues/161

    回答は以下の通り。

    This function has additional argument $showDefaultLanguage, which when set to true will always encode URL with a language, otherwise it senses option “Hide URL language information for default language” to keep URL consistent with the currently chosen language.

    If you need a URL to switch the language, set $showDefaultLanguage=true, if you need a URL to keep the current language, set it to false.

    I am closing this issue for now, we can still write into a closed issue, or we can re-open it, if needed.

    https://github.com/qTranslate-Team/qtranslate-x/blob/master/qtranslate_core.php
    1072行目より

    /**
     * Encode URL $url with language $lang.
     * @param (string) $url URL to be converted.
     * @param (string) $lang two-letter language code of the language to convert $url to.
     * @param (bool) $forceadmin $url is not converted on admin side, unless $forceadmin is set to true.
     * @param (bool) $showDefaultLanguage When set to true, $url is always encoded with a language, otherwise it senses option "Hide URL language information for default language" to keep $url consistent with the currently active language.
     *
     * If you need a URL to switch the language, set $showDefaultLanguage=true, if you need a URL to keep the current language, set it to false.
     */
    function qtranxf_convertURL($url='', $lang='', $forceadmin = false, $showDefaultLanguage = false) {
    ...省略...
    }

    上記のようにqtranxf_convertURLには第3第4引数を受け付けるようになっており、$showDefaultLanguage=trueにするとのことなので、第4引数をtrueに設定すれば、もしかしたら上手く動くかもしれません。
    ※テスト環境を構築していない推測なので、ご期待の状態になるかどうかはわかりません。

    トピック投稿者 muro

    (@muromuro)

    関数を下記のように書き換えたところ、ja付きのURLで出力できました。

    qtranxf_convertURL(”, ‘ja’, ”, true)

    しかし、ja無しもとい言語指定なしのURLだと、デフォルトに戻らない原因はわからずじまいです。
    言語指定なしだと、デフォルトの言語ではなく、現在使用されている言語のページを出すように、仕様が変更になったのでしょうか?

    リンクに関しては問題なく使用できるようになりましたので、今回は解決済みといたします。
    回答ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「qTranslateXでデフォルトの言語へ戻せない」には新たに返信することはできません。