翻訳対応のプラグインを作成するための最善の方法は何ですか?
最初から翻訳する必要はありませんが、簡単に翻訳できるようにする必要があるため、さまざまな文化の開発者がプラグインのローカライズプロセスに参加できます。
echo
またはprint()
を使用してテキスト出力を生成せず、代わりにWordPress関数__()
および_e()
を使用します。
/** Not localization friendly */
echo "Welcome to my plugin";
// OR
print("Welcome to my plugin");
/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;
_e()
および__()
は、最初のパラメーターとして提供されるテキストの翻訳を(現在の言語で)提供します。 _e()
はテキストを出力しますが、__()
はテキストを返します。
2番目のパラメーターはtext domainです。最初のパラメーターとして提供されたテキストがこのプラグインに属することをWordPressに伝えるために使用します。任意の名前を使用できますが、ディレクトリのプラグインファイルに使用した名前と同じ名前を使用することを好みます。より直感的にわかります。
__()
およびsprintf()
の場合:
/** Get the username */
$username = 'Magictrick';
/** Not localization friendly */
echo "Hello $username";
/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;
定義
Poedit および新しいカタログを作成(File› New Catallog ...)で開くこれらの設定:
.
..
を追加します(言語ファイルは、languagesというプラグインサブディレクトリに保存します)__
および_e
を追加保存カタログを/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot
として、およびスキャン更新ボタンを押して翻訳可能なテキストのプラグインファイルを作成します。そのカタログの近くで更新が終了したら、プラグインに新しい翻訳可能な文字列(__()
または_e()
で囲まれた)を追加しない限り、そのファイルを更新する必要はありません。
では、最初の翻訳を作成しましょう(fr_FRを使用します)。
Podeit 、POTファイルからカタログを作成(ファイル› POTファイルから新しいカタログ...) :
保存/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po
としてのカタログ。文字列の一部またはすべてを変換しますsave .poファイル、pload .poおよび.moファイルの両方。
.poファイルを保存すると、。poファイルのファイル名が重要という同じ名前の.moファイルが生成されることに注意してください。これは、プラグインテキストドメインの連結で構成されます(my-プラグイン)および言語ロケール(fr_FR)、プラグインの.poファイルには常に[textdomain]-[locale] .poのような名前を付けます。ここにいくつかの例を示します。
wpcf7-it_IT.po
wpcf7-pt_BR.po
wpcf7-ar.po
...はい!プラグインが新しいテキストで更新されるたびに、pdate poファイル、translate新しい文字列、および。poおよび.moを再アップロードファイル
プラグインのどこかで、WordPressに.moファイルを使用するように指示する必要があります。プラグインファイルの先頭で次のコードを使用して実行できます。
function my_plugin_init() {
load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');
my-plugin
関数の1番目と3番目のパラメーターで、load_plugin_textdomain
をプラグイン名に置き換えます。
動作しない可能性があるいくつかの理由:
_e('my text')
を_e('my text', 'my-plugin')
に置き換えてください)Nabilの答えはかなり完成していますが、簡単なバリエーションがあります。
あなたのプラグインはWordPress.orgプラグインリポジトリにあります
あなたのプラグインがWordPress 4.6以上でのみ動作することを要求しても構わないと思っています。
手順は次のとおりです。
プラグインのreadme.txtファイルに、Requires at least: 4.6
を追加します。 https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/ を参照してください。
まだない場合は、プラグインをWordPressプラグインリポジトリにアップロードします。 https://wordpress.org/plugins/developers/add/ を参照してください。
プラグインのスラッグ/テキストドメインを探します。それには、WordPressプラグインレポジトリのプラグインのページにアクセスしてください。 URLは https://wordpress.org/plugins/your-plugin-slug/ のようになります。 URLの最後の部分「your-plugin-slug」は、プラグインのスラッグです。それが翻訳機能のテキストドメインに使用するものです。
プラグインでWordPressの翻訳機能を使用します(__e(‘hello’, ‘my-plugin-domain’);
のように)。前の手順で取得した正しいプラグインテキストドメインを必ず使用してください。詳細については https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/ を参照してください。
上記の手順を実行すると、WordPressは以下の処理を行います。
(私のブログ記事からの回答はここにあります: https://cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/ )