_e関数の翻訳について
-
twentyelevenテーマをもとに作成しています。
search.php内の文言を変更したいのですが、どこかに設定してあるのでしょうか。
<?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentyeleven' ); ?>
英文で記述すれば、勝手に翻訳されるのかと思ったのですが、上記2文のうち1文を削除すると、英文のまま表示されました。
-e関数を使わず、日本語を入力してもよいのですが、ブラウザによっては文字化けなどしてしまうのでしょうか。
-
こんにちは
_e関数を使わず、日本語を入力してもよいのですが、ブラウザによっては文字化けなどしてしまうのでしょうか。
この関数を使ったから、文字化けしたとか、しないということは、多分ないです。
search.php内の文言を変更したいのですが、どこかに設定してあるのでしょうか。
wp-content/languages ホルダの中にある ja.moが翻訳ファイルですが、テキストエディタでは読めません ja.poのほうは、テキストエディタで読めます
Twentyeleven だと、翻訳ファイルが作られていないかもしれないですけど、、、
すみません。説明不足です。
<?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentyeleven' ); ?>
↓
「ご指定の検索条件に合う投稿がありませんでした。他のキーワードでもう一度検索してみてください。」
と翻訳される。<?php _e( 'Sorry, but nothing matched your search criteria. ', 'twentyeleven' ); ?>
↓
「Sorry, but nothing matched your search criteria.」
のまま。表示する文言を変更したい場合は、どこを修正すればよいのでしょうか?
_e関数に拘らず、直接日本語で入力してもよいのでしょうか。ja.poは、WORDPRESS操作時の翻訳ファイルのようです。
こんにちは
例えば、
<?php _e('message','twentyeleven');?>
最初の引数を、echo させてみてください
<?php echo 'message'; ?>
_e関数に拘らず、直接日本語で入力してもよいのでしょうか。
文字コードを間違えたりしなければ、大丈夫です。
すべての日本語表示を使わないなら、
wp-config.phpを開いて、define ('WPLANG', 'en_US');
などとすれば、日本語に翻訳される事はありません。
nobita様
ごめんなさい、よくわかりません。
<?php _e('message','twentyeleven');?> <?php echo 'message'; ?>
massageと表示されるだけです。
日本語表示を使わないのではなく、日本語に翻訳したいのに、翻訳してくれないので困っています。
こんにちは
<?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentyeleven' ); ?>
これを
「Sorry, but nothing matched your search criteria.」
のまま。表示する文言を変更したい場合は、どこを修正すればよいのでしょうか?
<?php echo 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.';?>
と書き換えれば、出来ますよという意味です。
日本語表示を使わないのではなく、日本語に翻訳したいのに、翻訳してくれないので困っています。
自分で翻訳作業をする場合は、windowsだと、PoEdit ( http://www.poedit.net/ ) などの翻訳ソフトを使って行います。
twentyeleven.pot をエディタで開くと、翻訳前のテキストが一覧に表示されるので、これを元に、翻訳を行うことが出来ます。
翻訳済みのものは、
http://ja.wordpress.org/2011/07/20/wordpress-3-2-1-ja/
から手に入ります。( 部分的に、自分流にアレンジしたい時のために、)ごめんなさい、伝わっていないような気がします。
search.phpの中に、
<?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentyeleven' ); ?>
という記述があって、これをブラウザでみると、
「ご指定の検索条件に合う投稿がありませんでした。他のキーワードでもう一度検索してみてください。」
と表示されます。この文言を、たとえば
「みつかりません」
と表示したいとき、<?php _e( 'みつかりません', 'twentyeleven' ); ?>
と記述すれば、うまくはいくのですが、英語で記述した方がよいのではないかと思ったのです。
_eで翻訳されるなら、
<?php _e( 'Sorry, but nothing matched your search criteria.', 'twentyeleven' ); ?>
は「ご指定の検索条件に合う投稿がありませんでした。」になるのかと思ったら、
「Sorry, but nothing matched your search criteria.」のままで翻訳されないのが、わかりません。横からスイマセン。
今までの流れの通り、_e() あるいは __() は翻訳ファイルと組み合わせることで、多言語対応が可能になる関数です。翻訳ファイルがどこにあるかや作り方などは既にnobitaの回答の通りです。
ただし _e() は「自動で」翻訳してくれる関数ではありません。
第1引数で指定された文言が翻訳ファイル内にあり、
かつ define (‘WPLANG’, ‘ja’); でしてしている言語の対訳(翻訳)がある場合のみ
翻訳されたテキストを返します。具体的に言うと
<?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentyeleven' ); ?>
このコードの場合、翻訳ファイル内で
「Sorry, but nothing matched your search criteria. Please try again with some different keywords.」の日本語訳が「ご指定の検索条件に合う投稿がありませんでした。他のキーワードでもう一度検索してみてください。」となります。
途中で区切ったからといって、途中まで翻訳されるものではありません。
(センテンス毎の翻訳ではなく指定した文章のみ翻訳されています)momo-sophia さんが自分でカスタマイズしたテーマをお使いになる上で、
多言語対応の必要が無いのであれば、_e()は無視してお好きな文言を入れていただいてかまいません。そうではなく多言語対応が必要で、英文、日本語訳ともに変更したいのであれば、
nobitaさんの回答を参考に翻訳ファイルをカスタマイズしてください。こんにちは
テンプレート全般で使われている関数を、使わないでしまう事に、「これでいいのか」感があるのは、理解できます
配布を前提とした、Twentyelevenみたいなテーマと、サイト構築のためのテーマは、設計が異なってくる部分もあります。
momo-sophiaさんがどのようなテーマを作ろうとしているかわかりませんが、WordPressにホスティングしてもらうような、配布を前提とした場合は、必須です。
(テンプレートの中で、マルチバイト文字使えないので、日本語に対応するためには、必要です)<?php _e( 'みつかりません', 'twentyeleven' ); ?>
moファイルは、辞書です。
みつかりませんという文字は、辞書にないので、そのまま表示されます。
一部の表現を除いて、完全一致しないと翻訳されません。目的や変換する量などによっては、フィルタも使えない事はありませんので
興味があれば、調べてみるといいかもしれないですねgettext_with_context の メモ書きですが、参考まで
http://tenman.info/labo/snip/?p=1551横から済みませんが、翻訳部分で’_e( ‘abcdefg…’, ‘twentyeleven’ );’となっていることから分かると思いますが、Twenty Elevenの翻訳ファイルは作られています。
functions.phpを見ると分かりますが、次の部分で登録してあり、テーマフォルダの’languages’にあります。
load_theme_textdomain( 'twentyeleven', get_template_directory() . '/languages' );
言語ファイルである.moだけでなく、元になるカタログファイル.poもありますので、テキストエディタで開いて、追加したい文言と翻訳を追加編集してから、編集したカタログファイルをPoeditで開いて保存すると、変更後の言語ファイルが作成されます。
WordPress_の翻訳 – Codex 日本語版
I18n_for_WordPress_Developers – Codex 日本語版みなさま。
ご丁寧にありがとうございます。
理解できました。wp-content\languages\ja.po
をみて、今回の文言がないと思っていましたが、wp-content\themes\twentyeleven\languages\ja.po
にありました。#: search.php:46 msgid "Sorry, but nothing matched your search criteria. Please try again with some different keywords." msgstr "ご指定の検索条件に合う投稿がありませんでした。他のキーワードでもう一度検索してみてください。"
コメントに、使用している場所の行数まで書いてあるんですね?!
テンプレートをカスタマイズしているので、既に狂ってます(汗)
配布用などではなく、個人事業のサイトにWordPressを利用しようということなので、気にしないことにします。とても勉強になりました。
ありがとうございました。
- トピック「_e関数の翻訳について」には新たに返信することはできません。