📝
C# Windows Formアプリで多言語対応する
事前調査
方法は以下2つがあるようです。
-
Resource.resx ファイルを言語ごとに用意するパターン
-
Form のresx ファイルを言語ごとに用意するパターン
Resource.resx ファイルを言語ごとに用意するパターン
参考
概要
Thread.CurrentThread.CurrentUICultureを対応したい言語に変更する
言語ごとにResource.resxファイルを分け、Resources.<言語コード>.resx と命名する
例)
Resources.resx(デフォルト、言語コードなし)
Resources.en.resx(英語)
Resources.ja.resx(日本語)
メリット
- すべてのローカライズ文字列を一箇所に集められるため、管理が容易
- 複数のフォームやクラスで同じリソースを再利用可能
デメリット
- リソースが多すぎるとファイルが膨大になり、整理が困難
フォームに共通するメッセージやテキストに使用するのがいいのかも
Form のresxファイルを言語ごとに用意するパターン
参考
概要
Thread.CurrentThread.CurrentUICultureを対応したい言語に変更する
各フォームに対応する .resx ファイルを作成し、ローカライズを管理する
言語ごとにファイルを分け、Form1.<言語コード>.resx と命名する
メリット
- 各フォームごとにリソースを分割できるため、大規模なアプリでも管理しやすい
デメリット
- 他のフォームで使いまわせない
- form自体を切り替えるので対象のformが生成される前にThread.CurrentThread.CurrentUICultureの値を変更する必要がある
UIのローカライズに特化したやり方のようです
Discussion