【问题标题】:resx resources or database for globalization resourcesresx 资源或全球化资源数据库
【发布时间】:2011-05-09 23:20:01
【问题描述】:

我一直在尝试获取特定于文化的资源来处理 asp.net mvc 3 应用程序。

如果我的 App_GlobalResources 文件夹中有 LanguageResources.resx 和 LanguageResources.en-UK.resx,则会收到错误消息“命名空间 'Resources' 已包含 'LanguageResources' 的定义”

这是我在尝试使特定于文化的资源发挥作用​​时遇到的一长串问题的终结。我必须说,我对 Microsoft 为使用此功能提供的文档印象不深。

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

是否有其他人做出过这样的决定,或者对与使用数据库处理特定文化字符串相关的性能问题有任何直接的了解?

其他人也放弃了资源吗?

【问题讨论】:

  • 可能不相关,但您应该使用 en-GB。没有 en-UK 文化代码。
  • 我可以毫无问题地使用资源。我有兴趣,请问您还有哪些问题?
  • 我已更改文件以更正文化代码(我的错误!!),现在当我更改特定线程的文化时它们不会生效。我遇到了很多问题,其中之一是必须使用 publicResXFileCodeGenerator 自定义工具才能访问字符串。如果这能奏效就好了!!

标签: asp.net asp.net-mvc globalization resx


【解决方案1】:

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

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

我不会使用数据库来存储与语言相关的资源,除非它们变化非常频繁或必须由最终用户输入(即有某种模板)。
使用数据库会损害 Localizability 并且需要付出很多努力。很难正确设计(我在该领域看到了很多错误)。除非你真的必须这样做,否则不要走那条路。

【讨论】:

  • 感谢您的帮助,这已停止错误,但现在 .cs 文件始终为空,即使我使用上下文菜单选项运行自定义工具也是如此。这只是导致应用程序回退到我认为的默认字符串,因为我正在尝试使用 fo-FO 测试一些奇怪的字符串,我尝试使用 PublicResXFileCodeGenerator 和全局默认自定义工具。我想我越来越接近了,但我仍然认为这是一个非常尴尬的过程。
  • 我的回答是正确的,因为我的问题是英国而不是英国。对于其他阅读有问题的人,我设置 Thread.CurrentCulture 没有结果。我需要为要使用的适当资源设置 Thread.CurrentUICulture。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多