2011-05-09 110 views
3

我一直在尝试获取文化特定的资源,以在asp.net mvc 3应用程序上工作。resx资源或全球化资源数据库

如果我有一个LanguageResources.resx和LanguageResources.en-UK.resx在我的App_GlobalResources文件夹,然后我得到一个错误“命名空间的‘资源’已经包含了‘LanguageResources’的定义”

这是我尝试获取文化特定资源的一系列问题已经结束。我必须说,我对Microsoft提供的使用此功能的文档印象不深。

我正在考虑使用数据库表来存储我的文化特定的字符串,然后我可以建立一个字典,将所有可用于我的控制器和视图的值。

是否有其他人做过这样的决定,或者对于使用数据库进行文化特定字符串相关的性能问题有任何直接的知识?

还有其他人放弃了资源吗?

+0

可能不相关,但您应该使用en-GB。英国没有文化的代码。 – 2011-05-10 07:22:58

+0

我可以毫无问题地使用资源。我很感兴趣,你有哪些其他问题? – alfizqu 2011-05-25 13:51:30

+0

我改变了文件来纠正文化代码(我的错误!!),现在当我改变特定线程的文化时,它们不会生效。我遇到了很多问题,其中一个问题是必须使用publicResXFileCodeGenerator自定义工具,以便可以访问这些字符串。这会很好,如果这工作! – Oliver 2011-05-28 22:52:18

回答

1

我必须承认,我试图重现你的缺陷,我很成功。看起来,Visual Studio在添加something.en-UK.resx时会生成额外的类。奇怪。它不应该让你在第一位添加这样的东西,因为没有这样的文化。

如何解决问题?只需添加LanguageResources.en-GB.resx和删除
LanguageResources.en-GB.resx。这有帮助。

我不会使用数据库来存储与语言相关的资源,除非它们非常频繁地更改或者必须由最终用户输入(即存在某种模板)。
使用数据库会伤害Localizability并需要付出很多努力。很难正确设计(我在这方面看到很多错误)。除非你真的需要,否则不要走这条路。

+0

感谢您的帮助,它已经停止了这个错误,但现在.cs文件始终是空的,即使我使用上下文菜单选项运行自定义工具。这只是导致应用程序回退到我认为的默认字符串,因为我试图用fo-FO测试一些奇怪的字符串,我尝试过使用PublicResXFileCodeGenerator和全局默认自定义工具。我想我越来越近了,但我仍然认为这是一个非常尴尬的过程。 – Oliver 2011-05-28 22:56:30

+0

我已经回答了这个问题,因为我的问题是UK而不是GB。对于任何有问题的人阅读,我设置Thread.CurrentCulture没有结果。我需要设置Thread.CurrentUICulture来使用适当的资源。 – Oliver 2011-05-29 00:14:03