実行時に適切な言語バージョンの文字列バージョンがロードされるようにするにはどうすればよいですか。

StackOverflow https://stackoverflow.com/questions/4968990

質問

私は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"を返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top