WPMLのストリング翻訳はテーマとプラグインのテキストを翻訳します。

しかしこれらの翻訳をサイトに表示するためには幾つか条件があります:

  • テキストはGetText 呼び出しによりラップされること。
  • textdomain引数があること。 

PHP内にハードコード化されたテキストやtextdomainによりラップされないGetText呼び出しはWPMLにより翻訳されません。

GetTextにラップされなかったスタテイックテキスト

<h2>Links</h2>

問題: ‘Links’ という語がGet Text呼び出しにラップされませんでした。これは翻訳されません。

ソリューション: GetText Echo 呼び出しでテキストをラップする:

<h2><?php _e('Links','theme-text-domain'); ?></h2>

gettext call _e() (翻訳できるエコー)で’Links’ をラップしました。 これでWPMLにより翻訳されます。

GetTextでラップされない機能内のテキスト

by <?php echo(the_author('', false)); ?>

問題: フレーズが翻訳できない。

ソリューション: フレーズにスタティックテキストとダイナミックテキストが含まれています。 一つの GetText呼び出しにすべてラップし、引数を使います。

<?php printf( __( 'by %s', 'theme-text-domain' ), the_author('', false) ); ?>

翻訳者に渡されるテキストが ‘by %s’です。 これにより翻訳者は言語の必要性によって、単語の順番を並び替えることができます。

この場合、 __() GetText 呼び出しが使用されていることにご注意ください。 この コールは _e(),に似ていますが、アウトプットには書きません( echoのように)。 printf 呼び出しがアウトプットに書きます。

Text-domain引数がない

<?php _e('Roadmap') ?>

問題: textdomain 引数がGetText 呼び出しにない。

ソリューション: text-domainを追加する。

<?php _e('Roadmap','theme-text-domain') ?>

text-domain はGetText (とWPML) にテキストが何に属するか教えます。 あなた以外には何の意味もないストリングです。 どんなストリングでも選べますが、一貫性がなければなりません。 text-domain 値は関係ストリングをグループにまとめます。

明らかに、‘theme-text-domain’ はユニークでも良い名前でもありません。 例えばあなたが自分のテーマを ‘star-geeks’ と呼べば、これの方がtext-domainに良い値でしょう。