– Form Builder Addon の日本語化

はじめに

WordPressで会員制サイトを作成する際に有効的なプラグインSimple Membership。会員のレベルの設定やレベル別にコンテンツの表示制限を設定できる点が用途に応じてプラグインを選択する際に注目するポイントだと思います。
そんなSimple Membershipですがデフォルトでは会員登録時の登録の項目が限定されているのでフィールドのカスタマイズをするにはアドオンの Form Builder を購入する必要があります。そしてプラグイン内の言語およびエラー文等が英語表記になっているので、日本向けのサービスの場合はプラグインに日本語化が必要になると思うので、今回はSimple Membership – Form Builder Addonの日本語化について紹介します。

日本語化する際のポイント

form builderを翻訳するにあたってポイントが大きく分けて2点あります。まず1点目は翻訳ファイルを所定の場所に設置しても翻訳が反映されない点です。対象とする翻訳ファイルを指定する場所で'simple-membershp'が指定されているのでこれを'swpm-form-builder'に指定し直す必要があります。これについてはプラグインディレクトリ以下の/plugins/classes/ディレクトリ以下の設定箇所を修正する必要があります。2点目はフォームの入力・編集フローで表示されるエラーメッセージは翻訳ファイルでは制御できない点です。エラーメッセージはjavascriptで出力されているので翻訳ファイルとは別になります。しかし実はすでに翻訳用のjavascriptファイルは用意されていますが、どのjsファイルを使用するかを判定している場所で日本語が引っかからないようになっている点です。なのでこちらも特定のファイルの編集が必要になっていきます。

Form Builder Addonの翻訳

では上記セクションのポイントに沿って順番にプラグインを翻訳していきます。まずは翻訳ファイルを取得、ファイル編集、ファイルの設置を行っていきましょう。

翻訳ファイル(po, pot)の取得・編集

プラグインの翻訳ファイルはこちらの場所においてあります。大抵のプラグインでも同じ場所に設置してあると思います。

/wp-content/plugins/swpm-form-builder/languages/

この中のswpm-form-builder-ja.poファイルをダウンロードして翻訳します。翻訳はメモ帳などでもできますが、Poeditという翻訳ファイル編集ソフトが便利なので使用してみてください。

翻訳ファイル(mo)の設置

次に翻訳ファイルを設置します。先程の手順で編集した翻訳ファイルを保存した時点で.moファイルが作成されると思うので、ファイル名をswpm-form-builder-ja.moに変更します。そして下記の場所に設置します。

/wp-content/languages/plugins/

これで翻訳ファイルの設置は完了です。本来ならばこれでプラグインが翻訳されるのですが、このプラグインでは追加で編集が必要なファイルがあります。

翻訳ファイルを適用するためのファイル編集

プラグインファイルの設置場所(/wp-content/pliugins/swpm-form-builder/classes/)以下で文字列検索をかければわかりやすいのですが、wordpressでは翻訳ファイル適用するための関数で__('Street Address', 'simple-membership')が使用されています。しかし、この翻訳用関数の第2引数で指定されている翻訳ファイル名で'simple-membership'が指定されているのが原因で、せっかく設置したファイルが適用されません。なので複数箇所ありますが、使用するファイル名を先程変更したファイル名swpm-form-builderを指定します。これで先程設置した翻訳ファイルが適用されると思います。ここでファイル名に-jaを含める必要はありません。

エラーメッセージの変更

ではここからはエラーメッセージの翻訳を行っていきます。本記事冒頭でも記述しましたが、エラーメッセージは翻訳ファイルの適用範囲外なので別のファイルの編集が必要になります。変更が必要な箇所は2箇所で、/wp-content/plugins/swpm-form-builder/classes/class.swpm-form-builder.phpファイル内の編集と、/wp-content/plugins/swpm-form-builder/js/i18n/validate/messages-ja_JP.jsファイルのファイル名の変更です。

class.swpm-form-builder.phpファイルの編集

まずは変更箇所を見てみます。ファイルの700行目あたりに$translations変数に何やら言語と関係がありそうな文字列が配列で格納されているのが確認できると思います。


$locale       = get_locale();
$translations = array(
    'cs_CS', // Czech
    'de_DE', // German
    'el_GR', // Greek
    'en_US', // English (US)
    'en_AU', // English (AU)
    'en_GB', // English (GB)
    'es_ES', // Spanish
    'fr_FR', // French
    'he_IL', // Hebrew
    'hu_HU', // Hungarian
    'id_ID', // Indonseian
    'it_IT', // Italian
    'ja_JP', // Japanese
    'ko_KR', // Korean
    'nl_NL', // Dutch
    'pl_PL', // Polish
    'pt_BR', // Portuguese (Brazilian)
    'pt_PT', // Portuguese (European)
    'ro_RO', // Romanian
    'ru_RU', // Russian
    'sv_SE', // Swedish
    'tr_TR', // Turkish
    'zh_CN', // Chinese
    'zh_TW', // Chinese (Taiwan)
);

// Load localized vaidation and datepicker text, if translation files exist
if (in_array($locale, $translations)) {
    wp_register_script('swpm-validation-i18n', SWPM_FORM_BUILDER_URL . "/js/i18n/validate/messages-$locale.js", array('jquery-form-validation'), '1.9.0', true);
    wp_register_script('swpm-datepicker-i18n', SWPM_FORM_BUILDER_URL . "/js/i18n/datepicker/datepicker-$locale.js", array('jquery-ui-datepicker'), '1.0', true);

    wp_enqueue_script('swpm-validation-i18n');
}

そしてそのすぐ上では$locale = get_locale();と、ロケールが取得されているのがわかります。さらに上記の引用コード最下部あたりでin_array( $locale, $translations )取得したロケールが配列内に見つかるかどうかを判定している場所があります。ここがエラー文が翻訳されていない原因箇所です。

get_locale()で取得できるロケール文字列は、日本の場合'ja'になりますが、こちらでは'ja_JP'が指定されているのでこの箇所を修正する必要があります。そしてその値はそのままファイル名を判定するのに使用されるので、/wp-content/plugins/swpm-form-builder/js/i18n/validate/以下に設置されているmessages-ja_JP.jsファイルをmessages-ja.jsに変更して一連の作業が完了します。

終わりに

便利なプラグインで公式の解説サイトも存在するので良いプラグインではありますが、日本語に対応させるのに少しの工夫が必要なので注意が必要ですね。ちなみにSimple Membershipで登録されるメンバーの情報はwp_usersではなく新しいテーブル上に保存されることになるので、ユーザーのログイン判定などはSimple Membershipが用意しているクラスメソッドを使用することになるのでこれにも注意が必要です。Form Builderは有料ですが、無料のアドオンも沢山用意されているので使えそうなものを活用してみるのもいいかもしれません。

参考

wordpressカテゴリの最新記事

%d人のブロガーが「いいね」をつけました。