OutSystemsの複数言語対応機能を確認してみます。
少なくともPersonalEnvironmentのデフォルトのロケールは、en-USだと思います。
ドキュメントは見つかりませんでしたが、GetCurrentLocaleで確認しました。
Locale変更方法については以前書きました:Personal Environmentのロケールを変える
複数言語対応機能の公式ドキュメント:Multilingual UI
ここでの対象はWebアプリケーションです。モバイルアプリケーションについては別途対応が必要と上のリンクに書いてありますね。Forgeのコンポーネントを使うようです。そちらは別の記事で確認します。
Table of Contents
作ろうとするもの
日本語で画面を作成し、その後、他の国に展開したという状況を想定します。
OutSystemsで直接定義するテキスト類はすべて日本語とします。なお、デフォルトロケールは、「Personal Environmentのロケールを変える」に書いた方法でja-JPにしておきます。
国を選択するUIを提供し、英語/仏語を選択すると、日本語のテキストが自動で対応する言語で表示されるアプリケーションを作成。
画面定義
①Expressionで「テスト1」
②Linkで「テスト2」
③Buttonで「Feedback表示」。クリックするとScreen ActionでFeedbackメッセージを表示します
④Escape Content=Noに設定したExpression。alertを表示するJavaScriptを配置してあります
⑤現在のロケールを示すExpression(Value:”CurrentLocale: ” + GetCurrentLocale())
多言語定義
Locale定義
モジュールで対応する言語を増やすには、Data>Multilingual Localesを右クリックし、Add Locale…を選択します。
表示されたダイアログで適切なロケールを追加してください。
デフォルトの日本語のほかに、英語・仏語を追加するので、「en-US(英語-アメリカ)」・「fr-FR(仏語-フランス)」を選択しました。
ダイアログで翻訳設定
再びMultilingual Localesを右クリックし、Edit Translations…を選択すると、Translationsダイアログが表示されます。
以下の色をつけた部分を変更してDONEをクリック。
Translation in に翻訳先のロケールを選択(この場合、en-USかfr-FRです)。
翻訳対象のテキストをText列で探し、そのBehavior列をTranslateに、Translation in列に訳語を設定してください。
動作確認
SetCurrentLocale Actionでロケールをen-USに変更して画面を再表示したところ。
JavaScriptのスクリプト内のテキストや、Action内で渡した文言もきちんと翻訳されています。