技術資料

Movable Typeプラグイン開発入門:第六回 ローカライゼーションの実装方法

作成日:2025.03.13
更新日:2025.03.19

第六回では、Movable Typeプラグインのローカライゼーションに焦点を当て、多言語対応の具体的な手法を紹介します。多言語対応の実装方法を学び、プラグインの利用者層を広げましょう。

Movable Type のプラグインの作り方の解説記事、第六回です。

過去の記事は、

今回は、プラグインのローカライゼーションについて解説します。

ローカライゼーションとは

ローカライゼーションとは、ソフトウェアやプログラムのメッセージやテキストを異なる言語に対応させるプロセスです。これにより、ユーザーは自分の母国語でプログラムを利用できるようになります。たとえば、英語で書かれたプラグインを日本語に翻訳することで、日本のユーザーにとってより親しみやすく、使いやすいものになります。

config.yaml でのローカライゼーションの実装

Movable Type のプラグインで、ローカライゼーションを実装するためには、config.yaml に以下のような辞書設定を追加します。

l10n_lexicon:
    ja:
      This plugin is just for adding a mode to show the settings.: 設定を表示するモードを追加するだけのプラグインです。
      Tatsuya Abe: 阿部辰也
      SamplePlugin: サンプルプラグイン
      SamplePlugin Settings: サンプルプラグインの設定
      API Key: APIキー
      API Enable Setting: API有効化
      Enable API: APIを有効化する
      Disable API: APIを無効化する
      SamplePlugin Settings Confirmation: サンプルプラグイン 設定確認

この設定は、プラグインのメッセージやテキストを日本語に対応させるためのものです。

辞書設定に合わせて、前回までで作成した config.yaml 全体を以下のように変更します。

id: SamplePlugin
    name: SamplePlugin
    version: 0.6
    description: <__trans phrase="This plugin is just for adding a mode to show the settings.">
    author_name: <__trans phrase="Tatsuya Abe">
    author_link: https://www.abe-tatsuya.com/
    doc_link: https://www.abe-tatsuya.com/document_url/
    
    l10n_lexicon:
      ja:
        This plugin is just for adding a mode to show the settings.: 設定を表示するモードを追加するだけのプラグインです。
        Tatsuya Abe: 阿部辰也
        SamplePlugin: サンプルプラグイン
        SamplePlugin Settings: サンプルプラグインの設定
        API Key: APIキー
        API Enable Setting: API有効化
        Enable API: APIを有効化する
        Disable API: APIを無効化する
        SamplePlugin Settings Confirmation: サンプルプラグイン 設定確認
        Failed to retrieve plugin settings.: プラグインの設定の取得に失敗しました。
    
    system_config_template: sampleplugin_setting.tmpl
    settings:
        sample_api_key:
            default:
            scope: system
        sample_api_enable:
            default: 0
            scope: system
    
    applications:
        cms:
            menus:
                sampleplugin:
                    label: SamplePlugin
                    icon: ic_tool
                    order: 1550
                    system_permission: administer
                sampleplugin:setting:
                    label: SamplePlugin Settings
                    order: 10
                    mode: sampleplugin_setting
                    view: system
                    condition: sub { return 1;}
            methods:
                sampleplugin_setting: $SamplePlugin::SamplePlugin::PluginSetting::show_setting

多言語対応したいテキストを <__trans phrase="テキスト"> で囲むことで、プラグインのメッセージやテキストが日本語に対応します。

ただし、サイドメニュー部分のラベルなどは、MTのコアが自動で多言語対応しているため、<__trans phrase="テキスト"> で囲む必要はありません。

テンプレートでのローカライゼーションの実装

前回までで作成したテンプレートファイルについて、ローカライゼーションを実装します。

まずは、sampleplugin_setting.tmpl を以下のように<__trans phrase="テキスト">を使って変更します。

<mtapp:setting id="sample_api_key" label="<__trans phrase="API Key">">
    <input type="text" name="sample_api_key" id="sample_api_key" class="form-control w-100"
        value="<mt:GetVar name="sample_api_key" escape="html">">
</mtapp:setting>


<mtapp:setting id="sample_api_enable" label="<__trans phrase="API Enable Setting">">
    <br>
    <label>
        <input type="radio" name="sample_api_enable" id="sample_api_enable_yes" class="custom-control-input"
         value="1"<mt:if name="sample_api_enable" eq="1"> checked="checked"</mt:if> >
         <__trans phrase="Enable API">
    </label>
    <br>
    <label>
        <input type="radio" name="sample_api_enable" id="sample_api_enable_no" class="custom-control-input"
         value="0"<mt:if name="sample_api_enable" ne="1"> checked="checked"</mt:if> >
         <__trans phrase="Disable API">
    </label>
</mtapp:setting>

同様に、sample_plugin_showsetting.tmpl も以下のように変更します。

<mt:include name="include/header.tmpl" page_title="<__trans phrase="SamplePlugin Settings Confirmation">">
    <p><__trans phrase="API Key">: <mt:var name="api_key" encode_html="1"></p>
    <p><__trans phrase="API Enable Setting">:
        <mt:if name="api_enable" eq="1">
            <__trans phrase="Enable">
        <mt:else>
            <__trans phrase="Disable">
        </mt:if>
    </p>
<mt:include name="include/old_footer.tmpl">

これで、テンプレートのローカライゼーションも完了です。

Perlコード内でのローカライゼーションの実装

Perlコード内でのローカライゼーションの実装は、translate メソッドを使用します。

前回までで作成した SamplePlugin::PluginSetting::show_setting を以下のように変更します。

sub show_setting {
    my $app = shift;
    my $plugin = MT->component('SamplePlugin');

    my %param;
    eval{
	    # プラグイン設定を取得
	    $param{api_key} = $plugin->get_config_value('sample_api_key', 'system');
	    $param{api_enable} = $plugin->get_config_value('sample_api_enable', 'system');
    };
    if($@){
        # エラーメッセージを日本語に変換
        my $err_msg = $plugin->translate('Failed to retrieve plugin settings.');
        print "Content-Type: text/html;charset=UTF-8\n\n";
        print "$err_msg: $@";
        exit;
    }

    $app->load_tmpl('sampleplugin_showsetting.tmpl', \%param);
}

これで、Perlコード内でのローカライゼーションも完了です。

まとめ

この記事では、以下のポイントを中心に解説しました。

config.yaml でのローカライゼーションの実装
辞書設定を追加することで、プラグイン内のメッセージを簡単に翻訳できます。
テンプレートでのローカライゼーションの実装
テンプレートファイル内では<__trans phrase="テキスト">を使うことで、メッセージを翻訳できます。
Perlコード内でのローカライゼーションの実装
Perlコード内ではtranslateメソッドを使うことで、メッセージを翻訳できます。

第七回 Transformerプラグインで管理画面UIをカスタマイズする

2025.03.19追記

次の記事は、Movable Typeプラグイン開発入門:第七回 Transformerプラグインで管理画面UIをカスタマイズするです。

この記事を書いた人

※上が私です。

奈良市を拠点に、25年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。

これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。

【制作会社・企業様向けサポート】
  • 専任エンジニアのいない企業様に対するシステム面の不安を解消
  • 柔軟な契約形態や短納期での対応により、急なニーズにも迅速にサポート
  • システムの企画段階から運用まで、ワンストップでのサービスを提供

Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。

ぜひ、プロフィールWeb制作会社様向け業務案内一般企業様向け業務案内もご覧くださいね。

Movable Typeプラグイン入門:MT::Author で実現するロール付与の手法

2025.03.26

本記事では、Movable Type のプラグイン開発において、MT::Author オブジェクトを利用したユーザーへのロール付与手法を詳しく解説します。具体的なコード例とともに、ユーザー、ブログ、ロールの各オブジェクトの取得方法や、add_role メソッドを活用したロール付与処理の流れを紹介。実務に直結する実装ポイントを分かりやすく解説しています。

Movable Type Perl

Movable Typeプラグイン入門:MT::Authorを活用した新規ユーザー作成の実例解説

2025.03.21

本記事では、Movable Typeプラグインの実装において、MT::Authorオブジェクトを活用したユーザーの新規作成処理の具体例を解説します。コードサンプルを通して、ユーザーの存在確認から新規作成、各種プロパティの設定手順やログ出力まで、実践的なポイントを詳述しています。

Movable Type Perl

Movable Typeプラグイン開発入門:第七回 Transformerプラグインで管理画面UIをカスタマイズする

2025.03.19

この記事では、Movable Type 管理画面の見た目を変更するために、Transformerプラグインで設定フォームをカスタマイズする方法を解説しています。具体的な文字列置換の実装例と、実運用時に考慮すべきポイントをわかりやすくまとめています。

Movable Type Perl

Movable Typeプラグイン開発入門:第五回 独立CGIスクリプトで設定表示機能を実装

2025.03.08

第五回の記事では、前回までの連載内容を踏まえて、設定表示機能を別CGIスクリプトとして実装する方法を詳しく解説します。Perlモジュールの修正手順やCGIスクリプトの構成、動作確認のポイントを具体例とともに紹介します。

Movable Type Perl

阿部辰也へのお仕事の依頼・お問い合わせ

軽いご相談もお気軽にどうぞ!

個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP