サポート » 使い方全般 » _e関数の翻訳について

  • 解決済 momo-sophia

    (@momo-sophia)


    twentyelevenテーマをもとに作成しています。

    search.php内の文言を変更したいのですが、どこかに設定してあるのでしょうか。

    <?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentyeleven' ); ?>

    英文で記述すれば、勝手に翻訳されるのかと思ったのですが、上記2文のうち1文を削除すると、英文のまま表示されました。
    -e関数を使わず、日本語を入力してもよいのですが、ブラウザによっては文字化けなどしてしまうのでしょうか。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • こんにちは

    _e関数を使わず、日本語を入力してもよいのですが、ブラウザによっては文字化けなどしてしまうのでしょうか。

    この関数を使ったから、文字化けしたとか、しないということは、多分ないです。

    search.php内の文言を変更したいのですが、どこかに設定してあるのでしょうか。

    wp-content/languages ホルダの中にある ja.moが翻訳ファイルですが、テキストエディタでは読めません ja.poのほうは、テキストエディタで読めます

    Twentyeleven だと、翻訳ファイルが作られていないかもしれないですけど、、、

    トピック投稿者 momo-sophia

    (@momo-sophia)

    すみません。説明不足です。

    <?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');

    などとすれば、日本語に翻訳される事はありません。

    トピック投稿者 momo-sophia

    (@momo-sophia)

    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/
    から手に入ります。( 部分的に、自分流にアレンジしたい時のために、)

    トピック投稿者 momo-sophia

    (@momo-sophia)

    ごめんなさい、伝わっていないような気がします。

    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.」のままで翻訳されないのが、わかりません。

    モデレーター gatespace

    (@gatespace)

    横からスイマセン。
    今までの流れの通り、_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 日本語版

    トピック投稿者 momo-sophia

    (@momo-sophia)

    みなさま。

    ご丁寧にありがとうございます。
    理解できました。

    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を利用しようということなので、気にしないことにします。

    とても勉強になりました。
    ありがとうございました。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「_e関数の翻訳について」には新たに返信することはできません。