我对基于 resx 的本地化有一个非常奇怪的问题。
首先,让我解释一下,现在它是如何为我完成的。
它是 ASP.NET MVC 项目。我有两个程序集:Web 和域。 Web 包含所有与 MVC 相关的东西,以及域,嗯,包含域类。此外,在域组装中,我存储了大量用于本地化的静态资源(我正在构建具有 3 种不同语言的站点)。
所以我在这个域程序集中有本地化文件夹,并且有如下文件:
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
在我看来,就在输出本地化字符串之前。
它给了我选择的文化,这是正确的,但字符串被呈现为后备值,而不是本地化的值。
我真的被困在这里,希望有人知道发生了什么......
最佳答案
是不是根本找不到本地化文件而您又回到了“默认语言”?您是否可能在服务器上部署到 GAC 中,但从/bin 文件夹和开发机器上的子文件夹运行它?
您是否尝试过使用 fuslogvw.exe 来查看代码的来源?
请注意,要查看附属程序集的负载,您必须执行一些注册表“黑客”- http://msdn.microsoft.com/en-us/library/e74a18c4(VS.71).aspx :
To log bind failures to satellite assemblies Set the
HKLM\Software\Microsoft\Fusion\LogResourceBinds
registry value to 1 (the value is a DWORD).
关于asp.net-mvc - 坚持使用资源文件进行本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1991289/