複数言語対応(3)モバイル

2018年に行われた開発者向けのOutSystemsイベント、ODC(OutSystems Developer Conference)にモバイルアプリケーションで多言語対応をする方法の解説が出ていました。

Multiple Languages and Mobile Apps

この動画に紹介されていた方法を試して見たので、メモをしておきます。

動作確認環境

Platform Version:11.0.212.0

Service Studio Version:11.0.537.0

Multilingual Mobile Component:2.0.1

Mobile Translations:1.0.1

Webでの多言語との違い

Webアプリケーションにおける多言語対応については、OutSystemsのプラットフォームに機能が組み込まれています。

(実現方法は、このシリーズの以前の記事を参照してください)

それに対して、モバイルアプリケーションでは、プラットフォーム組み込みの方法では多言語対応ができず、Forgeのコンポーネントを利用することになります。

また、多言語対応できる要素も限られていて、Text Widgetと、ExpressionにおけるTextリテラルのみです。

さらに、多言語対応したい要素については、自分でAttributesやFunction呼び出しによって明示的に指定する必要があります

設定方法の概要

テスト対象として、Screen TemplateのAccount Portalで作成した画面を利用します。

Forgeコンポーネントのインストールと参照追加

Multilingual Mobile Component:部品本体です

Mobile Translations:Multilingual Mobile Componentが必要とする設定を便利に行うためのアプリケーション。必須ではありません

テスト対象モバイルアプリケーションに、MultiLingual Mobile Componentへの参照を追加します(Manage DependenciesのダイアログはショートカットキーCtrl+Qで開きます)。

Mobile Translationsの準備

Mobile Translationsアプリケーションを使った方が設定が楽です。

初期設定をしておきます。

①多言語対応をするモバイルアプリケーションを、ダイアログから選択しておきます(選択済みのアプリケーションは下に一覧表示される)

②モバイルアプリケーションで対応させる言語を選択する画面へのリンク。ja-JP(日本語)を設定しておきます。

③Resource一覧へのリンク。下の設定はこの画面で行うので事前に開いておきます。

多言語対応する要素に設定を行う

Text Widgetに設定する場合

以下の「Available」というText Widgetを多言語対応させます。

多言語対応させるには、Text WidgetsのAttributesにdata-transというPropertyをValueが一意となるように設定する必要があります。一意にするにはGUIDの利用が考えられますが、Mobile Translationsにはこのための支援機能があります。

Resource一覧画面(「Mobile Translationsの準備」③の手順で開きます)を開いたら、Show translations forのコンボボックスが翻訳対象のロケールになっていることを確認。

続いて画面右上の「+」アイコンで新しい変換対象を追加するダイアログを開きます。Keyに自動で新しいGUIDが設定されています。

Add as Text Widgetをクリックすると、クリップボードにKeyに表示されているGUIDがコピーされるため、Text Widgetに以下のようにdata-transプロパティとして設定してください(開き直してからスクリーンショットとったのでGUIDは変わってしまっています)。

Expressionに設定する場合

以下のようなExpression WidgetのValue部分を多言語対応にしてみます。

(“Welcome back, “の部分を日本語に変換する設定)

まずは、Mobile Translationsアプリケーションで、Resource追加ダイアログを再び開き、今度はDefault Valueに、変換対象文字列を設定します。この状態でAdd As Expressionをクリックすると、対象文字列を多言語変換した結果を取得するFunction呼び出しがクリップボードにコピーされます。

対象のExpressionのValueに以下のように設定します(+の前の部分がクリップボードから設定したもの)。

GetTranslation("772d243a-1ec8-4d30-8ed5-c30a1a05c0e7", "Welcome back, ") + GetAccountById.List.Current.Sample_Employee.FirstName

翻訳文言を設定する

Add as …で追加したResourceは一覧で管理されているため、この一覧をExcel形式でダウンロードし、翻訳担当者に渡し、結果をExcel結果でアップロードします。

ここでは、数が少ないので開発者が自分で翻訳することにします。

Resource一覧画面右上のアイコンの左から2番目がExcelとしてダウンロード、1番左が結果をアップロードするボタンになっています。

Excelファイルは以下のような形式。該当GUIDがKey列に設定されている行の、変換対象ロケール(ja-JP)列に、日本語の文字列を設定してアップロードしてください。

設定完了後JSONファイルをダウンロードします。上の3つのアイコンの左から3番目です。

このJSONファイルをService StudioのData>Resourcesを右クリック→Import Resourceで指定してください。これでアプリケーションに設定のJSONファイルが保持されます。デフォルトではサーバにファイルが配置されないため、ParameterのDeploy ActionをDeploy To Target Directoryに設定する必要があります。

JSONファイルをアプリケーション開始時にロードし、ユーザごとにロケールを設定する機能を実装すれば準備完了です。

アプリケーション開始時に処理を行うためには、Logic>Client Actionsを右クリックし、Add System Event→On Application Readyでイベントハンドラを用意してください。

イベントハンドラ内には、Multilingual/AddTranslationsFromResource Client Actionを配置。Input Parameterには、Resourcesに配置したJSONファイルのRuntime Pathの値を文字列として設定します。

動作確認

テスト用にロケール変更ボタン(SetLocale Actionで変更できます。日本語に変更するときは、パラメータに”ja-JP”を設定してください)を配置してあります。左がデフォルト表示、右が日本語に変更したときの表示。

なお、今回の手順ではResourcesを使っているために、オンラインであることが必要です。

オフラインで動く方法のサポートもあるので別の機会にまとめてみます。

シリーズ一覧

シェアする

  • このエントリーをはてなブックマークに追加

フォローする