C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 161 を表示中)
■92940 / )  Re[3]: 多言語化
□投稿者/ 魔界の仮面弁士 (2469回)-(2019/11/11(Mon) 13:56:20)
No92938 (じょこびっち さん) に返信
> カルチャを指定するコードはProgram.csに書かないと動作に不具合が出るのでしょうか?

たとえばカルチャー依存の情報が static readonly メンバーで管理されていた場合、
それを実行後に書き換えることは難しいでしょう。また、static readonly で無いにしても、
インスタンス生成時やウィンドウ生成時に確定される情報であった場合、
カルチャーの事後変更を受け付けるには、インスタンスの再作成が必要になってしまいます。

それゆえ『設定するのであれば Application.Run 前に実施しておく』のが望ましいと思います。


たとえば DateTimePiceker クラスの Value プロパティは MinDate プロパティに依存しており、
その MinDate プロパティは、static な MinimumDateTime プロパティに依存しています。

そしてこの static プロパティの実装は、CurrentCulture の影響を受ける可能性があります。
そのため後からカルチャーを変更した場合、日付範囲のチェックに問題を生じるかもしれません。

https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/DateTimePicker.cs,9a181a0974bf9ccb,references



> しかし、Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
> 記載するとToolStripMenuItemenで言語を選択しても英語版のみで起動してしまいます。

ToolStripMenuItem 系の実験はしていないのですが、
検索してみたところ、次のようなやりとりが見つかりました。

https://stackoverflow.com/questions/7648421/switching-language-cultureinfo-globalization-does-not-affect-toolstripmenuitem
https://stackoverflow.com/questions/6980888/localization-at-runtime

試していませんが、上記 RuntimeLocalizer の実装が参考になるかも。
返信 編集キー/


管理者用

- Child Tree -