WinFormアプリの多言語対応(3)

どもです。

前回前々回と、C#/WinFormでの多言語対応について書いてきました。その中で、ふと気になったことがありました。それは、別のバイナリ(アセンブリ)には、言語設定が引き継がれるのか?ということです。もう少し言うと、DLLの言語設定(カルチャの指定)は、呼び出し元(.exe)と一致するのか?ということです。そこで今回のエントリは、呼び出し元の言語設定(カルチャの設定)が別DLLのカルチャに反映されるか否かについて調べてみます。

1. 開発環境

毎度ですが、開発環境です。これは、前回と全く同じです。

開発/実行環境
項目 内容
OS Windows10 Pro(22H2)
CPU i7-8700
メモリ 16GB
IDE Visual Studio Community 2022
Version 17.7.6
.NET .NET Framework 4.8.1

2. 調査方法

WinFormを表示するDLL(C#)を作成し、そのDLLに表示される内容/言語が、呼び出し元(の言語設定(カルチャ))と一致するか確認することで、調査とします。

3. DLLの実装

基本的には、前回前々回で紹介してきたWinFormを流用します。目新しい実装は何一つありません。そのため、詳細は割愛します。

4. 結果

結果を示します。

呼び出し元(.exe)のカルチャにjaを指定した場合、DLLのFormの表示は以下のようになりました。



次に、呼び出し元(.exe)のカルチャをenに指定した場合の結果が、以下です。



見ての通り、全ての画面において言語が統一されていることが確認できます。

5. まとめ

今回は、別のバイナリ(アセンブリ)には、言語設定が引き継がれるのか?について、調査を行いました。その結果、引き継がれるということが確認できました。

本音を言えば、もっと詳細を調査、結果を書きたいですのですが、今回は記事を公開することを優先してみました。詳細の調査は、引き続き継続しようと思います。

ではっ!

ex. 公開しています

今回のコードは、GitHubにて公開しています。適宜参照してみてください。