実行時に適切な言語バージョンの文字列バージョンがロードされるようにするにはどうすればよいですか。
-
12-11-2019 - |
質問
私はvb.netプロジェクトに "strings.resx"という文字列リソースファイルを組み込みリソースとして定義しています。私は、スペイン語で同じ文字列をすべて含むstrings.es.resx
という名前のファイルがあります。次のコードを使用して実行時にリソースをロードしています。
MyStrings = New ResourceManager("myprog.strings", GetType(MainForm).Assembly)
.
WindowsのLanguage LocaleをEspanolに設定し、ログインしていますが、上記の実行時に英語の文字列リソースを読み込んでいます。WindowsロケールがESの場合は、スペイン語リソースを読み込む方法がありますか?私はそれが自動的に処理されることを期待していました。
解決
System.Threading.Thread.CurrentThread.CurrentUICulture
プロパティを見てください - それはen-usに固定されている習慣を持っています。
その場合は、CurrentCulture
と同じに設定してみてください。
更新
それ以来、アプリケーションの出力フォルダにはes
フォルダがあることを確認し、内部はstrings.resources.dllというDLLです。そうでなければ、基本的には、リソースマネージャは、そこではなく、その場合はそれらをコピーする必要があるため、文化固有の文字列リソースを見つけません。
他のヒント
免責事項 - これはすべてメモリからのもので、100%正確ではないかもしれません: - )
.NETリソースは、Thread.CurrentUICulture
を使用してロードされます(コード内のリソースのロード時に明示的に上書きしない限り)。Thread.CurrentUICulture
は、Windowsのインストールで使用されているUI言語によって設定され、変更できません。これは、Control Panelに設定されているThread.CurrentCulture
と同じではなく、いつでも変更できます。
例えば、CurrentCulture
は"en-GB"
を返します。