#はじめに
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属性はこの「ローカライズされたストリング」のタイプを使用した属性です。
#翻訳ファイル(.ts)
Chregraphe2.5のプロジェクトには、translationsのフォルダとその配下に翻訳ファイル(.ts)が新たに追加されています。
起動直後のプロジェクトでは、ロボアプリの対応言語の初期値が「English(UnitedStates)」のため、英語用の翻訳ファイル(translation_en_US.ts)となっています。
Sayボックス、Animated Sayボックス、Get Localized Stringなど「ローカライズされたストリング」のタイプで指定したテキストは、このファイルに記録されます。
ただし、自動で記録されるのは1つの翻訳ファイルのみです。プロジェクトのプロパティの「次の項目への翻訳自動登録」で指定した言語に対応する翻訳ファイルに記録されます。(ロボアプリの対応言語が「English(UnitedStates)」のまま、SayボックスのTextに日本語を入れると、英語用の翻訳ファイル(translation_en_US.ts)に記録されてしまうので、注意してください。)
#実際に試してみよう
ここからは実際に試してみます。翻訳自動登録は「Japanese」とし、ロボアプリの対応言語は、「English(UnitedStates)」と「Japanese」の2つにします。
複数の言語を選択した状態で、「OK」ボタンを押すと「translation workflow」についてのドキュメントを見てねというお知らせが表示されます。
翻訳ファイル(.ts)が英語と日本語それぞれ作成されています。
次に Set languageボックスと、Sayボックスをフローダイアグラムに配置して、次のように結線してください。
Set LanguageボックスのLanguageパラメータを「Japanese」にします。
SayボックスのTextパラメータに日本語の発話メッセージを設定します。
次に英語の発話メッセージを編集します。先ほどの日本語の場合は、自動で翻訳ファイルに記録されていたため、これまでの作り方と変わりませんでしたが、ここからは翻訳ファイルに対して対応する発話内容を編集していくことになります。
編集方法は2種類あり、ファイルメニューの「翻訳を更新する」を実行した後で、翻訳ファイルを直接編集する方法と、同じくファイルメニューの「アプリをローカライズする」を実行して「Qt Linguist」ツールで、編集する方法があります。
ここでは「Qt Linguist」で編集する方法で試してみます。
ファイルメニューの「アプリをローカライズする」を実行すると「Qt Linguist」が起動します。
先ほどSayボックスのTextパラメータに設定した発話のメッセージが「日本語 訳」欄に記載されていますので、「English 訳」欄に対応する英語のメッセージを設定します。
半角スペースを入れると.が入りますが、気にしないでください。
次に翻訳状況が!と?になっていますので、両方ともチェック状態にします。
クリックするとチェック状態になります。あとは全て保存後、このツールを閉じてください。
Set LanguageボックスのLanguageパラメータを「English」にして、実行してみましょう。
日本語で指定した発話メッセージに対応する英語の発話メッセージに変換されました。
#おまけ
Get Localized Text ボックスと Say Text ボックスでも先ほどと同様のことができます。
Get Localized Text ボックスも「ローカライズされたストリング」のタイプを使用しているため、翻訳ファイルの対象となります。
#最後に
これまでボックス内に埋もれていた文字列が外部ファイルになったことで、翻訳作業が分担できるといったメリットがありそうです。また、Text Editボックスではなく、Get Localized Textボックスを使っていくことで、文字列が翻訳ファイルに記録されるので、文字列の管理と一括変更が楽になりそうです。