WordPressプラグインの翻訳を準備する方法は?


19

翻訳に対応したプラグインを作成する最良の方法は何ですか?

初めから翻訳する必要はありませんが、異なる文化の仲間の開発者がプラグインのローカライズプロセスに参加できるように、簡単に翻訳できる必要があります。

回答:


38

1.ローカライズを念頭に置いて書く

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番目のパラメーターはテキストドメインです。最初のパラメーターとして提供されたテキストがこのプラグインに属することをWordPressに伝えるために使用します。任意の名前を使用できますが、プラグインに使用したのと同じ名前を使用することを好みますディレクトリのファイル、私はそれをより直感的に見つけます。

「Hello <username>」のようなダイナミックテキストを出力する方法は?

__()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;

2. .pot / .po / .moファイルを準備します

定義

  • .potファイル:プラグイン開発者が自由に使用でき、新しい翻訳を作成するための開始点として使用されますが、WordPressでは使用されません。
  • .poファイル:あなたまたは他の誰かが開始した翻訳ファイルであり、WordPressはそれを使用しません。
  • A.moファイル:.poファイルを保存するたびにPoeditによって自動的に作成されます。これらのファイルでできることは、.poファイルを作成または更新するたびにアップロードまたは再アップロードすることだけです。 WordPressは.moファイルから翻訳を取得します

Poeditを開き、次の設定で新しいカタログ作成します(ファイル›新しいCatallog ...)

  • プロジェクト情報:あなた(またはあなたのチーム)の情報を使用してください。言語と国はプラグインのデフォルト言語と一致する必要があります
  • パス:
    • 基本パス: .
    • パス:すべて削除して追加し..ます(言語と呼ばれるプラグインサブディレクトリに言語ファイルを保存します)
  • キーワード:すべてを削除&追加___e

保存としてカタログをしてスキャンし、更新ボタンを押して、変換可能なテキストのためのプラグインファイルを。そのカタログの近くで更新が終了したら、プラグインに新しい翻訳可能な文字列(またはで囲まれた)を追加しない限り、そのファイルを更新する必要はありません。/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot__()_e()

では、最初の翻訳を作成しましょう(fr_FRを使用します)。

使用PodeitPOTファイルからカタログを作成します (POTファイルからファイル>新規カタログを...)

  • プロジェクト情報:あなた(またはあなたのチーム)の情報を使用し、言語と国を変更します。フランス語とフランスを使用します
  • パス:変更しないでください
  • キーワード:変更しないでください

カタログをとして保存します。文字列の一部またはすべてを翻訳し、.poファイルを再度保存し、.poファイルと.moファイルの両方をアップロードします。/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po

.poファイルを保存するたびに、.moファイルが同じ名前で生成されることに注意してください。.poファイルのファイル名は重要であり、プラグインテキストドメイン(my-plugin)と言語ロケールの連結で構成されます( fr_FR)、プラグインの.poファイルには常に[textdomain]-[locale] .poのような名前を付けます。いくつか例を示します。

  • イタリア語/イタリア: wpcf7-it_IT.po
  • ポルトガル語/ブラジル: wpcf7-pt_BR.po
  • アラビア語:wpcf7-ar.po...はい!

プラグインは新しいテキストで更新されるたびに、更新、poファイルを変換する新しい文字列をとの.poや.moの再アップロードファイルを

3.現在の言語の翻訳されたテキストをロードするようにプラグインに指示します

プラグインのどこかで、.moファイルを使用するようにWordPressに指示する必要があります。プラグインファイルの先頭で次のコードを使用して、これを行うことができます。

function my_plugin_init() {
  load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');

関数のmy-plugin1番目と3番目のパラメーターのプラグイン名に置き換えますload_plugin_textdomain

4.テストとトラブルシューティング

動作しない可能性があるいくつかの理由:

  • 文字列は.potまたは.poファイルにインポートされません
    • →間違ったカタログ設定(パスまたはキーワード、あるいはその両方)
  • WordPressサイトでテキストが翻訳されていません
    • →その言語の.moファイルがないか、ファイル名が間違っている
    • 使用されていない→テキスト・ドメイン(置き換え_e('my text')_e('my text', 'my-plugin')
    • →テキストドメインがロードされていません(上記の例を正しいパラメーターで使用すると、WPは間違いについて警告しません)

3
+1素晴らしい記事:)この記事をご覧ください:WordPress言語ファイルを正しい方法ロードする、「WordPressで言語ファイルをロードする際の苦痛を取り除くための実用的なガイドライン」。:::::: GlotpressPolyglotsグループも言及する価値があります。
ブラソフィロ

この素敵な指示をありがとう!それの価値はあなたが_e()とを使用する場合は、load_plugin_textdomain()は、すべてのメソッドで呼び出される必要があることを言及__()
アンドレアス

2

Nabilの答えはかなり完全ですが、簡単なバリエーションが用意されています。

  1. プラグインはWordPress.orgプラグインリポジトリにあります

  2. プラグインはWordPress 4.6以降でのみ動作することを要求します。

手順は次のとおりです。

  1. プラグインのreadme.txtファイルに、を追加し Requires at least: 4.6ます。https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/ご覧ください

  2. まだの場合は、プラグインをWordPressプラグインリポジトリにアップロードします。https://wordpress.org/plugins/developers/add/を参照してください

  3. プラグインのslug / textドメインを見つけます。そのためには、WordPressプラグインリポジトリのプラグインのページにアクセスします。URLはhttps://wordpress.org/plugins/your-plugin-slug/のようになります。URLの最後の部分「your-plugin-slug」は、プラグインのスラッグです。それが翻訳機能のテキストドメインに使用するものです。

  4. プラグインでWordPressの翻訳機能を使用します(など__e(‘hello’, ‘my-plugin-domain’);)。前の手順で取得した正しいプラグインテキストドメインを必ず使用してください。詳細については、https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/を参照してください

上記の手順を実行すると、WordPressが次の処理を行います。

  • 翻訳可能なすべての文字列についてプラグインを解析します(Poeditなどをインストールして実行する必要はありません)
  • translate.wordpress.orgでプラグインの翻訳を誰でも簡単に投稿できるようにします(プラグインの翻訳専用のサイトや、翻訳者が翻訳を送信するためのカスタムプロセスを用意する必要はありません)
  • 誰かがあなたのプラグインを使用するとき、WordPressはそれが彼らの言語に翻訳されているかどうかをチェックし、そうであれば、彼らの言語でそれを表示します(翻訳ファイルをウェブサイトにロードする必要はありません)

(私のブログ投稿に対する回答:https : //cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/


これがなぜ投票されたのかはわかりません。wordpress.org/plugins/print-my-blogの翻訳準備を整えるために私がやったことです(そしてプラグインは正常に翻訳されました)
thespacecamel

プラグイン/テーマがWordPressプラグインリポジトリにないが、そこにあるプラグインのテキストドメインを使用している場合、wordpressは間違った翻訳ファイルをロードするということですか?
ボードー

良い質問@bodo。プラグインがwp.orgリポジトリにある別のプラグインのテキストドメインを使用することを示している場合、WordPressはwp.orgプラグインの翻訳ファイルを喜んで使用すると思います。しかし、申し訳ありませんが、わかりません。
thespacecamel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.