リソースファイルを利用してアプリのUIを多言語化する方法(Xamarin.Forms)

文書番号 : 81927     文書種別 : 使用方法     登録日 : 2016/12/22     最終更新日 : 2016/12/22
文書を印刷する
対象製品
Xuni
詳細
.NET Frameworkでユーザーインタフェース(UI)を多言語化するためには、表示する各国語用のリソースファイル(.RESX)を用意して、ロケールに応じて切り替えることで実現します。
Xamarin.Formsでも、.NET Frameworkと同様の方法が利用可能です。

UIに設定する用語をコード上でリテラルとして設定するのではなく、リソースから取得する方法で開発していけば、複数の言語に対応する場合にもリソースを追加作成するだけで表示切り替えが可能です。

サンプルコード
C#(Xamarin.Forms)
// 直接文字列を指定せず
// Title = "ローカライズサンプル";
// button.Text = "タッチ";

// リソースから取得して設定
Title = AppResources.Title;
button.Text = AppResources.buttonText;


以下はリソースファイルの例です。表示文字列を設定している部分のみ抜粋しています。
name要素に指定した文字列が共通のキーとなり、それぞれのリソースから文字列を取得します。

英語リソース例
<data name="buttonText" xml:space="preserve">
  <value>Touch</value>
  <comment>ボタンに表示</comment>
</data>
<data name="Title" xml:space="preserve">
  <value>L10n Sample</value>
  <comment>タイトル</comment>
</data>
<data name="TouchMSG" xml:space="preserve">
  <value>Tapped {0} times.</value>
  <comment>メッセージ</comment>
</data>

日本語リソース例
<data name="buttonText" xml:space="preserve">
  <value>タッチ</value>
  <comment>ボタンに表示</comment>
</data>
<data name="Title" xml:space="preserve">
  <value>ローカライズサンプル</value>
  <comment>タイトル</comment>
</data>
<data name="TouchMSG" xml:space="preserve">
  <value>{0} 回タッチされました。</value>
  <comment>メッセージ</comment>
</data>


表示するためのリソースファイルも、Visual Studioのリソースエディタを利用して作成や編集が可能です。



サンプルが実際に動作するプロジェクトを解説を含めて技術記事として公開していますので、詳細はこちらを参照ください。

Xuni > 技術情報 > ComponentOne Information 
「Xamarin.FormsアプリのUIを日本語以外でも表示する」
関連情報