4

resx ベースのローカリゼーションに非常に奇妙な問題があります。
最初に、私が今どのようにそれを行っているかを説明させてください。
ASP.NET MVC プロジェクトです。Web とドメインの 2 つのアセンブリがあります。Web には MVC 関連のものがすべて含まれており、ドメインにはドメイン クラスが含まれています。また、ドメイン アセンブリでは、ローカリゼーション用に多くの静的リソースを保存します (3 つの異なる言語を使用してサイトを構築しています)。

したがって、このドメイン アセンブリには Localization フォルダーがあり
、CheckoutStrings.resx、CheckoutStrings.en-US.resx、CheckoutStrings.et-EE.resx などのファイルがあります。

奇妙なことは、VS 開発サーバーと IIS 7.5 の両方を使用して、ローカル マシンでこれがすべてうまく機能していることです。しかし、Windows Server 2008 R2 である Web サーバーにソリューションをアップロードすると、これも IIS 7.5 になり、ローカリゼーションが突然機能しなくなります。

アウトプットしてみた

Thread.CurrentThread.CurrentUICulture

私の見解では、ローカライズされた文字列を出力する直前です。
それは私に選択された文化を与えますが、それは正しいですが、それでも文字列はローカライズされたものではなく、フォールバック値としてレンダリングされます。

私は本当にここで立ち往生しています。誰かが何が起こっているのか手がかりを持っていることを願っています...

4

1 に答える 1

3

ローカリゼーション ファイルが単に見つからず、「既定の言語」に戻っている可能性がありますか? サーバー上の GAC にデプロイしているのに、開発マシン上のサブフォルダーを含む /bin フォルダーから実行している可能性がありますか? fuslogvw.exe を使用して、コードの出所を確認しましたか?

サテライト アセンブリの負荷を確認するには、いくつかのレジストリ "ハッキング" を行う必要があることに注意してください - http://msdn.microsoft.com/en-us/library/e74a18c4(VS.71).aspx :

サテライト アセンブリへのバインド エラーをログに記録するには HKLM\Software\Microsoft\Fusion\LogResourceBinds レジストリ値を 1 に設定します (値は DWORD)。

于 2010-01-02T17:53:36.357 に答える