qTranslateの設定(管理画面 > [Languages])の [Advanced Settings][URL Modification Mode]は何に設定されていますか?
[Use Pre-Path Mode]が選択されていて、管理画面 > [パーマリンク設定] で[デフォルト]以外が選択されている場合は、formのactionに正しいURLを指定すると言語を認識します。
検索フォームはget_search_form()で呼び出して、searchform.phpで表示しています。
関数リファレンス/get_search_form – Codex 日本語版
<?php $search_action = qtrans_getLanguage() == 'en' ? qtrans_convertURL(home_url( '/' ), 'en') : esc_url( home_url( '/' ) ); ?>
<form method="get" id="searchform" action="<?php echo $search_action; ?>">
検索結果未発見の時のメッセージが日本語のままであったり、
これについては、デフォルトテーマのsearch.phpを参考にしてください。
検索結果ページのタイトル部分や
<h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'twentyeleven' ), '<span>' . get_search_query() . '</span>' ); ?></h1>
検索で見つからない場合のタイトルとメッセージ部分ですが、
<article id="post-0" class="post no-results not-found">
<header class="entry-header">
<h1 class="entry-title"><?php _e( 'Nothing Found', 'twentyeleven' ); ?></h1>
</header><!-- .entry-header -->
<div class="entry-content">
<p><?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentyeleven' ); ?></p>
それぞれ言語ファイルで表示を切り替えています。
I18n for WordPress Developers – Codex 日本語版
WordPress_の翻訳 » 翻訳ツール – Codex 日本語版
popupさん
ご親切にありがとうございます。
qTranslateの設定(管理画面 > [Languages])の [Advanced Settings][URL Modification Mode]はクエリーモードです。
パーマネリンクはカスタムです。
searchform.php内でqtrans_getLanguageで言語を判断し、それぞれに応じた検索結果メッセージと未発見時のメッセージを表示すればいいのですかね?
ただ、一つ気になるのが、qTranslateは多言語で固定ページや投稿を入力しますが、
これは同じレコードのフィールドに格納されていると思うので、
検索結果に表示される抜粋文はどうしても先頭に格納されている言語になるのは仕方ないような気がしています。であればちょっと使えないかなと。
例) 投稿データ
こんにちは!
Hello!
というデータがあったとして、英語モードで”Hello”と検索した場合、
検索結果画面には”こんにちは!”と表示されています。
上記訂正
searchform.php → search.php
[パーマリンク設定]を[カスタム]にしているのでしたら、[URL Modification Mode]で[Use Pre-Path Mode]を選択して、検索フォームのactionを上で返信したように変更して試してください。
qtrans_getLanguageで言語を判断し、それぞれに応じた検索結果メッセージと未発見時のメッセージを表示すればいいのですかね?
言語ファイルの作成が難しい場合は、その方法が一番簡単に出来ると思います。
検索結果に表示される抜粋文はどうしても先頭に格納されている言語になるのは仕方ないような気がしています。であればちょっと使えないかなと。
検索結果の抜粋をどのように表示しているでしょうか?
検索フォームのactionが正しく指定されていて、qTranslateのエディタでそれぞれの言語で入力してあれば、the_content()でもthe_excerpt()でも、それぞれの言語で表示されるはずです。
qTranslateのエディタで入力していないのでしょうか?
本文はタブを、抜粋は国旗のアイコンをクリックすると言語を切り替えられます。
エディタでの各言語の文章は入力済みなのでしたら、検索のリクエストが原因ですので、上に書いた設定と検索フォームのactionの変更を試してみてください。
popup様
ありがとうございます。
[Use Pre-Path Mode} に変更したらうまく検索結果が言語に対応した記事になりました。
ただ、例えば
英語本文:news
日本語本文:お知らせ
と入力してあった場合に、言語が日本語の時、「news」で検索すると検索がヒットし、
検索結果に日本語本文の「お知らせ」が表示されます。
まあ確かに英語では「news」と入力しているのであながち間違いではないのですが。
これは、こういう仕様なのでしょうかね。
未発見になると予想しておりました。
もちろん、wordpressのエディタで入力しております。
qTranslateの仕様で、すべての言語がWP標準状態と同じ一つのカラムに、次のような形式で保存されます。
<!--:ja-->日本語<!--:--><!--:en-->English<!--:-->
タイトル、本文、抜粋すべて上記のように保存されます。
このため、検索時には他の言語の文字列も検索対象になりますので、仕様通りの正常な動作です。
popupさん
このたびは大変ありがとうございました。
勉強になり為になりました。
上記は仕様ということですね。
(英語の時は英文だけを検索して欲しいところですが)
それを理解した上で対応していきたいです。