MODO 機能紹介・チップスサイト このサイトでは、MODOの基本機能やチップスをご紹介していきます。

キットの作り方 ~最後にローカライズに挑戦~

最後に日本語環境だけでなく、英語環境でもキットを自由にお使いいただけるように、ローカライズの作業を行ってみましょう。

ローカライズとはインターフェイス上の言語を多言語化することです。今回は日本語と英語をサポートしてみます。

ローカライズを行う対象となるファイルは、configs フォルダの中に保存した設定ファイルである mjg_sample01.cfg です。まずはこのファイルを複製して、名称を mjg_sample01_ja.cfg にします。ファイル名に _ja がつくファイルは日本語用のファイル、何もついていないファイルは英語用のファイルです。今回、インターフェイスはもともと日本語のラベルを付けていましたので、英語用のファイルの方を編集します。

テキストエディタで mjg_sample01.cfg を開き、ラベルを編集します:

mjg_sample01_ja.cfg:	<atom type="Label">文字列入力!</atom>
mjg_sample01.cfg:	<atom type="Label">String</atom
mjg_sample01_ja.cfg:	<atom type="Label">適用</atom>
mjg_sample01.cfg:	<atom type="Label">Apply</atom>

これでインターフェイスのローカライズは完成です!日本語インターフェイスで動作させたいときには configs フォルダの中に mjg_sample01_ja.cfg ファイルのみを、英語インターフェイスで動作させたいときには mjg_sample01.cfg ファイルのみを配置するようにしてください。

ただしこの状態だと、メッセージダイアログのタイトルとして表示される文字列自体は日本語のままになってしまっています。スクリプトを確認してみると、メッセージを出すダイアログのタイトルは以下のように設定されています:

lx.eval( 'dialog.title "日本語"' )

このダイアログのタイトル “日本語” をローカライズするには、スクリプトの中からこういったメッセージ文字列をローカライズが可能となるメッセージテーブルのファイルへと書き出す必要があります。

まずはメッセージテーブルのファイルを作ってみましょう。こちらも設定ファイル mjg_sample01.cfg と同じく XML 形式のファイルであり、ファイル名称は任意で構いませんが、日本語のメッセージファイルには _ja をつけてください。今回は mjg_message.cfg / mjg_message_ja.cfg という名称のファイルを作ります。Messages  というタイプに文字列テーブルを書いていきます:

<?xml version="1.0"? encoding="UTF-8"?>
<configuration>
    <atom type="Messages">
         <hash type="Table" key="mjg_sample01_mes.ja">
             <hash type="T" key="DialogTitle">日本語</hash>
         </hash>
    </atom>
</configuration>

対応する英語ファイルの中は、以下のようになります:

<?xml version="1.0"?>
<configuration>
    <atom type="Messages">
         <hash type="Table" key="mjg_sample01_mes.en_US">
             <hash type="T" key="DialogTitle">English</hash>
         </hash>
    </atom>
</configuration>

重要なのはテーブルのタイプを表す .ja.en_US です。.ja にすると日本語、.en_US にすると英語になります。

これでメッセージテーブルは用意できましたが、スクリプトの中でこのメッセージテーブルのメッセージを使用するように設定しなければなりません。スクリプトの該当箇所を書き換えます:

lx.eval( 'dialog.title "日本語"' )
↓
lx.eval( 'dialog.title "@mjg_sample01_mes@DialogTitle@"' )

これは名称 mjg_sample01_mes のメッセージテーブルの中にある DialogTitle というキーで定義された文字列を使用するという意味になります。

これでメッセージのローカライズも完了、キットの出来上がりです!

< インターフェイスで入力した値をスクリプトで受け取る
2018年2月15日