Choregraphe2.5.xの国際化(i18n)対応について

#はじめに
Choregraphe2.5のリリースノートの「New translation workflow」について少し調べてみました。
よく読むとロボアプリの国際化対応(i18n)のようです。これまでも言語ごとに発話内容を変更できましたが、しくみが変わり、それによって新しいタイプが増えていたり、よく使うSay系のボックスが変わっていたりしています。

#環境について
今回使用した環境です。Choregraphe2.5.5は開発者向けのbeta扱いですので、ご注意ください。
なお、まだPepperをNAOqi2.5.5にしていないため、バーチャルロボット上での確認となります。
Choregraphe 2.5.5.5 (beta)
Choregraphe 2.4.3.28

#2.4と2.5のボックスの違い
| ボックス名 |2.5|2.4|  
|:-----------|:-----------|:-----------| 
| Say |Text変数に指定された文字を発話|Localized Textに指定された文字を発話| 
| Animated Say |Text変数に指定された文字を発話|Localized Textに指定された文字を発話|  
| Localized Text |Say, Animated Sayボックスの仕様が変わったためなくなる|Say,Animated Sayボックス内で発話文字列を各言語ごとに設定する |
| Get Localized String |新規|

#新しいタイプ「ローカライズされたストリング」
　Choregraphe2.5から新しいタイプ「ローカライズされたストリング」が追加になりました。新しい Sayボックス、Animated Sayボックスの Text属性はこの「ローカライズされたストリング」のタイプを使用した属性です。

![スクリーンショット 2017-03-29 13.48.37.png](https://qiita-image-store.s3.amazonaws.com/0/131693/c1b50fef-0cd5-c361-5d86-c49d05fe8d1d.png)

#翻訳ファイル(.ts)
Chregraphe2.5のプロジェクトには、translationsのフォルダとその配下に翻訳ファイル(.ts)が新たに追加されています。
起動直後のプロジェクトでは、ロボアプリの対応言語の初期値が「English(UnitedStates)」のため、英語用の翻訳ファイル（translation_en_US.ts）となっています。
Sayボックス、Animated Sayボックス、Get Localized Stringなど「ローカライズされたストリング」のタイプで指定したテキストは、このファイルに記録されます。
ただし、自動で記録されるのは１つの翻訳ファイルのみです。プロジェクトのプロパティの「次の項目への翻訳自動登録」で指定した言語に対応する翻訳ファイルに記録されます。（ロボアプリの対応言語が「English(UnitedStates)」のまま、SayボックスのTextに日本語を入れると、英語用の翻訳ファイル（translation_en_US.ts）に記録されてしまうので、注意してください。）

![スクリーンショット 2017-03-29 13.50.03.png](https://qiita-image-store.s3.amazonaws.com/0/131693/e7d78bc5-3a94-8f3f-2bd5-0620aee094a9.png)

#実際に試してみよう
ここからは実際に試してみます。翻訳自動登録は「Japanese」とし、ロボアプリの対応言語は、「English(UnitedStates)」と「Japanese」の２つにします。

![スクリーンショット 2017-03-29 15.05.51.png](https://qiita-image-store.s3.amazonaws.com/0/131693/9ac43139-1d32-a07a-a986-c5cad237bc39.png)

複数の言語を選択した状態で、「OK」ボタンを押すと「translation workflow」についてのドキュメントを見てねというお知らせが表示されます。
![スクリーンショット 2017-03-29 15.06.51.png](https://qiita-image-store.s3.amazonaws.com/0/131693/11370ea1-fd17-4c03-0c51-54bb5934df80.png)

一度保存します
![スクリーンショット 2017-03-29 15.13.55.png](https://qiita-image-store.s3.amazonaws.com/0/131693/48dd4b76-7aac-f97d-4d22-af2f3898e0b7.png)

翻訳ファイル(.ts)が英語と日本語それぞれ作成されています。
![スクリーンショット 2017-03-29 15.23.49.png](https://qiita-image-store.s3.amazonaws.com/0/131693/eed272b3-3960-2e2e-8286-ef572cd654a6.png)

次に Set　languageボックスと、Sayボックスをフローダイアグラムに配置して、次のように結線してください。
![スクリーンショット 2017-03-29 15.17.47.png](https://qiita-image-store.s3.amazonaws.com/0/131693/2b3a71fc-27c5-4097-b3b6-85f3479d0b94.png)

Set LanguageボックスのLanguageパラメータを「Japanese」にします。
![スクリーンショット 2017-03-29 15.26.28.png](https://qiita-image-store.s3.amazonaws.com/0/131693/b7286020-261f-ac96-b8d7-2914072fa742.png)

SayボックスのTextパラメータに日本語の発話メッセージを設定します。
![スクリーンショット 2017-03-29 15.29.17.png](https://qiita-image-store.s3.amazonaws.com/0/131693/f006d573-b786-4040-eece-2fe47af62287.png)

実行してみます。
![スクリーンショット 2017-03-29 15.33.54.png](https://qiita-image-store.s3.amazonaws.com/0/131693/c873549f-cb9f-5048-6745-8760428f77c6.png)
![スクリーンショット 2017-03-29 15.30.43.png](https://qiita-image-store.s3.amazonaws.com/0/131693/8027412c-f34b-84ac-62bd-d8c80d1c08b0.png)

次に英語の発話メッセージを編集します。先ほどの日本語の場合は、自動で翻訳ファイルに記録されていたため、これまでの作り方と変わりませんでしたが、ここからは翻訳ファイルに対して対応する発話内容を編集していくことになります。
編集方法は２種類あり、ファイルメニューの「翻訳を更新する」を実行した後で、翻訳ファイルを直接編集する方法と、同じくファイルメニューの「アプリをローカライズする」を実行して「Qt Linguist」ツールで、編集する方法があります。
![スクリーンショット 2017-03-29 15.36.27.png](https://qiita-image-store.s3.amazonaws.com/0/131693/fe3b5467-6401-1b13-e281-1d5ffcda5d94.png)

ここでは「Qt Linguist」で編集する方法で試してみます。
ファイルメニューの「アプリをローカライズする」を実行すると「Qt Linguist」が起動します。
![スクリーンショット 2017-03-29 15.46.10.png](https://qiita-image-store.s3.amazonaws.com/0/131693/8fed44c8-41f9-60f1-e7c5-b79b0594a317.png)

先ほどSayボックスのTextパラメータに設定した発話のメッセージが「日本語　訳」欄に記載されていますので、「English 訳」欄に対応する英語のメッセージを設定します。
半角スペースを入れると.が入りますが、気にしないでください。
![スクリーンショット 2017-03-29 15.49.32.png](https://qiita-image-store.s3.amazonaws.com/0/131693/3fcb0586-f410-f81a-53ca-30b185066f64.png)

次に翻訳状況が！と？になっていますので、両方ともチェック状態にします。
![スクリーンショット 2017-03-29 15.50.44.png](https://qiita-image-store.s3.amazonaws.com/0/131693/61ee92e2-4954-7537-2fe3-8b710d469c4f.png)

クリックするとチェック状態になります。あとは全て保存後、このツールを閉じてください。
![スクリーンショット 2017-03-29 15.51.54.png](https://qiita-image-store.s3.amazonaws.com/0/131693/ea49f331-45c7-e9cd-386b-4fcb798f4959.png)

Set LanguageボックスのLanguageパラメータを「English」にして、実行してみましょう。
![スクリーンショット 2017-03-29 15.56.17.png](https://qiita-image-store.s3.amazonaws.com/0/131693/f49a3aa6-38b0-48eb-3ffb-63f7cbda351d.png)
![スクリーンショット 2017-03-29 15.56.52.png](https://qiita-image-store.s3.amazonaws.com/0/131693/a16f7796-ded2-3cdd-454d-fb9bbae0075d.png)
日本語で指定した発話メッセージに対応する英語の発話メッセージに変換されました。

#おまけ
Get Localized Text ボックスと　 Say Text ボックスでも先ほどと同様のことができます。
Get Localized Text ボックスも「ローカライズされたストリング」のタイプを使用しているため、翻訳ファイルの対象となります。
![スクリーンショット 2017-03-29 16.03.33.png](https://qiita-image-store.s3.amazonaws.com/0/131693/e0a9483f-bb06-8831-a7c9-7d4c28ea9b50.png)

#最後に
これまでボックス内に埋もれていた文字列が外部ファイルになったことで、翻訳作業が分担できるといったメリットがありそうです。また、Text Editボックスではなく、Get Localized Textボックスを使っていくことで、文字列が翻訳ファイルに記録されるので、文字列の管理と一括変更が楽になりそうです。