【VB.Net】アプリケーションの多言語化~リソースファイルを使ってみる~

どうも!リョクちゃです。

アプリケーションを様々な言語で扱いたいときってありませんか?

そんなとき、どうすればいいのか今回Windowsフォームアプリケーションを

作成するとともに紹介していきます・

ちなみに前回の記事はこちら

テキストボックスに入力された文字列の長さを受け取る方法を簡単にWindowsアプリケーションを作りながら紹介しています。文字列の長さを扱えることでシリアル通信のバイト配列の送受信に関する処理へ応用を効かせることもできます。



目次

準備編

VisualStudio2019を使って、Windowsフォームアプリケーションを作成していきます。

最初の手順については、下記記事をご参照ください。

VisualStudioを使ってWindowsアプリケーションを開発していく流れを紹介します。 以前に、簡単にざっくりと教える機会があった...

スポンサーリンク




フォームの作成

以下のようなフォームを作成します。

①~⑧のコントロールについては以下の表のとおりです。

Noコントロール名前
1LabelLabel1
2RadioButtonrbnMsg1
3RadioButtonrbnMsg2
4ButtonbtnEng
5ButtonbtnJapan
6ButtonbtnChina
7LabelLabel2
8TextBoxtbxResult

各コントロールのフォントは、メイリオの18ptを設定しています。

実行環境

筆者の実行環境は、

  • VisualStudio2019
  • Windows 10 64bit
  • .Net Framework 4.5.1

になります。

※ Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。

アプリケーションの目的

変換する文字列どちらかを選択し、いずれかの言語ボタンを押すことで、

押した言語に変換する文字列が変換されることを目的とします。

動作

動作としては、

  • 変換する文字列からいずれかのラジオボタンを選択します。
  • 選択したら、変換したい言語のボタンを押します。
  • 押したボタンの言語に変換された文字列がtbxResultに表示されます。

これらができることとします。

プログラム編

シンプルに多言語化してみる

まずはシンプルに多言語化してみます。

今回作成するアプリケーションの変換する文字列にある

ラジオボタンを選択し、各言語ボタンをそれぞれクリックすることで

各言語に変換した情報が表示されるようにします。

例えば、”おはよう”とラジオボタンが選択され、英語ボタンが押されたら

結果は、”Hello”となります。

※Good morningにすればよかったです……

これをコードで書くと、

英語ボタンが押されたときに、ラジオボタンの選択肢によって条件を分岐させ、

結果を表示するテキストボックスに変換する文字列で選択された情報を

英語に変えるようにしています。

情報に対して自動翻訳をするのではなく、

事前に変換後の情報をコードに書いておく方法です。

※自動翻訳とかやってみたいな。

アプリケーション上で扱う言葉が少なければこの方法でも問題はないと思いますが、

コードの修正が大変ですね。

選択肢が、”おはよう”ではなく、”こんばんわ”になったらどうでしょう。

おはように対して、こんばんわと修正しなければなりませんから、

コード上の全てのおはように対して修正が必要ですね。

これは非常に面倒くさいのと全てを修正できず、

見落としが発生するといった事も考えられます。

作成するアプリケーションをシンプルに多言語化する場合のコードがこちらです。

今回のアプリケーションに関しては、扱う情報が2つと少なかったので、

上記のような書き方でも特に問題はありません。

※多言語化に関するさわり程度で、こうすれば言語変換できるんだと思ってもらえれば。

リソースファイルを使って多言語かしてみる

次に、リソースファイルを使って多言語化をしていきます。

リソースファイルとは

リソースファイルは、アプリケーションで使用する文字列データを定義するXMLファイルです。以下のような文字列データを定義するのに使用できます。

リソースファイルを使用すると文字列を外付けのファイルに定義できるため、プログラムを再コンパイルすることなく文字列を変更することができます。また、リソースファイルはロケールごとに作成できるため、多言語化の実現が容易になります。

出典:4.6リソースファイル

https://software.fujitsu.com/jp/manual/manualfiles/M050000/J2X11190/01/guide04/guide038.html

アプリケーションで使う文字列をあらかじめ

書き込んでおくファイルのことリソースファイルって言います。

Windowsフォームアプリケーションでは、文字列以外にも、

音源や画像もリソースとして取り扱うことができます

リソースファイルの作成

それでは早速リソースファイルの作成をしていきます。

リソースファイルを作成するには、2パターンあって、

1つは、リソースファイルをプロジェクト内に

フォルダを作成してリソースファイルを保存する方法

一方は、プロジェクトのプロパティでリソースファイルを作成する方法

フォルダを作成してリソースファイルを保存する方法

・ソリューションエクスプローラーのプロジェクト上で右クリックを押し、

新しいフォルダ(フォルダ名:Resources)を作成します。

・作成したフォルダにリソースファイルを追加

Resourcesフォルダにリソースファイルが作成されます。

.resxというファイル拡張子がリソースファイルになります。

プロパティでリソースファイルを作成する方法

VisualStudio上のプロジェクトタブのプロパティをクリックします。

プロパティ画面の右側から、リソースを選択します。

選択すると下図のような画面に切り替わります。

リソースファイルに言語情報を書き出していく

下図のように記述します。

図では、MSG_1といった名前で値にはおはようを持たせています。

リソースファイルから、MSG_1を呼び出してあげることで、値である”おはよう”が使えます。

これを呼び出すには、

My.Resources.TestResources.MSG_1
とソースファイル上に書いてあげます。
例えば、メッセージボックスに表示したい場合は、
MessageBox.Show(My.Resources.TestResources.MSG_1)
今回は、下図のような言語情報を書いておきます。
MSG_1 おはよう
MSG_2 ありがとう

各国ごとのリソースファイルを用意する

これだけでは多言語化はできません。

多言語化をするには、国ごとに定められた

言語コード、国コードの組み合わせのリソースファイルを作成する必要があります

日本であれば、

言語コードは、ja

国コードは、jpになります。

国ごとのリソースファイルを作成する場合は、

リソースファイル名.言語コード-国コード.resx

とすることで国ごとのリソースファイルが作成できます。

例えば、日本であれば、

TestResources.ja-JP.resx

とすることで作成できます。

今回用意するのは、英語と中国語なのでそれぞれ

英語

言語コード:en

国コード:us

リソースファイル名:TestResources.en-US.resx

リソースファイルの中身

MSG_1 Hello

MSG_2 Thank you

中国語

言語コード:zh

国コード:cn

リソースファイル名:TestResources.zh-CN.resx

リソースファイルの中身

MSG_1 你早

MSG_2 谢谢

とします。

読込むリソースファイルをボタンに応じて切り替える

言語ごとにボタンが押されたら、選択されたラジオボタンの文字列が、

その言語に切り替わるよう、作成したリソースファイルを使ってコードを書きます。

国ごとのリソースファイルを読み出すには、

流れとしては、

  1. 言語リソースの変更
  2. 使用する言語の設定

といった流れで行います。

言語リソースの変更

例えば、英語なら

使用する言語の設定

この二つのコードを書くだけで、国ごとのリソースファイルを読み出すことができます。

後は、選択されたラジオボタンで条件分岐をさせ、以下のように書きます。

これは各言語ボタンが押されたとき共通の処理になります。

シンプルな場合と比較して、コードが統一されています。

全てのコードはこちらになります。

実行編

実際に実行をしていきます。

プログラム起動時

“おはよう”選択後、日本語ボタンを押したとき

“おはよう”選択後、英語ボタンを押したとき

“おはよう”選択後、中国語ボタンを押したとき

まとめ

リソースファイルの作り方から使い方について紹介しました。

リソースファイルを使うことで、アプリケーションの多言語化をすることができました。

リソースファイルは多言語化する上では便利なので、

多言語化してみたい方は作成してみてはいかがでしょうか。

ソースファイルの表示したい情報などは、ソースファイルのコードを修正せず、

リソースファイルを修正することで表示したい情報が変えられるので、

煩雑にはなりません。

簡単に触れましたが、読者の方の参考になれば嬉しいです。

最後までお読みいただきありがとうございます。

・こちらの書籍を参考にVB.Net勉強しています。

スポンサーリンク