2010-01-02 107 views
4

我有一个非常奇怪的问题与基于resx的本地化。首先,请让我解释一下,现在是如何为我完成的。
这是ASP.NET MVC项目。我有两个程序集:web和域。 Web包含所有与MVC相关的东西,以及域,以及contans域类。另外,在域名汇编中,我存储了很多用于本地化的静态资源(我用三种不同的语言编写站点)。本地化使用资源文件

所以我在这个领域组装本地化文件夹,有喜欢的文件:
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

在我的意见,只是输出本地化字符串之前。
它给了我选择的文化,这是正确的,但字符串呈现为一个后备值,而不是本地化。

我真的坚持在这里,希望任何人有一个线索是怎么回事...

回答

3

难道是本地化的文件根本没有发现,你是回落至“默认语言”?你可能在服务器上部署到GAC中,但是在开发机器上使用子文件夹从/ bin文件夹运行它? 您是否尝试过使用fuslogvw.exe来查看代码的来源?

注意,看你有没有做一些注册表“黑客”的卫星组件的负荷 - http://msdn.microsoft.com/en-us/library/e74a18c4(VS.71).aspx

要登录绑定失败卫星 组件的 HKLM\Software\Microsoft\Fusion\LogResourceBinds 注册表值设置为1(该值是一个 DWORD)。

+0

1.它怎么会没有被发现? 2.不,我没有部署到gac 3.从来没有听说过fuslogvw,谢谢你的提示! – user231481 2010-01-02 18:47:34

+0

我已经设置LogResourceBinds为1像你说的那样,之后fuslogvw显示了一些绑定日志,但没有具体到我的应用程序。而我的域名程序集中的其他内容也能够正常工作,所以我想不出任何嵌入式资源无法加载的原因。 真正让我感到震惊的是它在本地机器上运行,并且不在服务器上运行。 – user231481 2010-01-03 11:47:26

+1

我发现,像往常一样,这是我的错误。我们使用svn/export来部署网站,并且svn没有看到新生成的sattelite程序集。所以IIS只加载了没有卫星的域dll。 – user231481 2010-01-10 12:10:08