4

我对基于 resx 的本地化有一个非常奇怪的问题。
首先,让我解释一下,它现在是如何为我完成的。
它是 ASP.NET MVC 项目。我有两个程序集:网络和域。Web 包含所有与 MVC 相关的东西,并且域,嗯,包含域类。此外,在域组装中,我存储了大量用于本地化的静态资源(我正在构建具有 3 种不同语言的站点)。

所以我在这个域程序集中有 Localization 文件夹,并且有如下文件:
CheckoutStrings.resx、CheckoutStrings.en-US.resx、CheckoutStrings.et-EE.resx 等等。

现在奇怪的是,这一切在我的本地机器上运行得非常好,同时使用 VS 开发服务器和 IIS 7.5。但是当我将解决方案上传到我的 Web 服务器,即 Windows Server 2008 R2,所以它也是 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 回答