NeutralResourcesLanguageAttribute和uiCulture在asp.net mvc项目中的区

本文关键字:项目 mvc net uiCulture asp NeutralResourcesLanguageAttribute | 更新日期: 2023-09-27 18:09:06

我创建了一个asp.net MVC4 web项目,必须以一种以上的语言提供。

我想为这个web项目设置默认语言。经过一些研究,似乎默认语言可以设置在两个地方。

NeutralResourcesLanguageAttribute in AssemblyInfo

[assembly: NeutralResourcesLanguageAttribute("en")]

From msdn:通知资源管理器应用程序的默认区域性。这个类不能被继承。

全球化uicculture in web.config

  <system.web>
    <globalization uiCulture="en"/>

From mdsn:指定处理依赖于语言环境的资源搜索的默认区域性。有关有效的区域性字符串,请参阅System.Globalization.CultureInfo类。

现在我的问题:

在web项目(NeutralResourcesLanguageAttribute或globalization uiCultur)中设置默认语言的正确方法是什么?

NeutralResourcesLanguageAttribute和uiCulture在asp.net mvc项目中的区

资源文件示例

  • 的东西。resx(包含英文,是默认的资源文件)
  • Stuff.de.resx(含德文)
  • Stuff.fr.resx(含法语)

现在在web。配置使用

<globalization 
    enableClientBasedCulture="true" 
    uiCulture="auto:en" 
    culture="auto:en" />

这个("auto")将让浏览器设置决定(德语浏览器获取德语资源,等等)

然而(在上面的例子中)如果瑞典浏览器来了,它将默认为en,因为没有se(瑞典)资源文件,并且将使用备用英语("auto: en ") ui文化。

所以…然后:

[assembly: NeutralResourcesLanguageAttribute("en")]

让应用程序现在将英语请求直接转到默认值。首先查找 resx

还有如果英文浏览器正在请求,它应该直接转到默认的资源文件,而不是先尝试其他东西。所以NeutralResourcesLanguageAttribute设置在这里也起作用。应用程序知道直接进入默认的resx

根据这篇文章的重要设置。Net web应用程序都在web中。在"全球化"元素中配置。本文建议将文化和用户文化作为最佳实践。例如:

<globalization uiCulture="es" culture="es-MX" />

NeutralResourcesLanguageAttribute是让应用程序的资源管理器知道应用程序的默认文化和资源位置的一种方式。该属性可以用于任何类型的。net应用程序:桌面,web, win8, wcf等。

globalization属性是另一种方式,让你的web应用程序知道你的应用程序的默认区域性是什么。

请注意,它们的关键区别在于globalization属性只适用于web应用程序,不允许您为资源指定不同的位置。

建议:对于web项目,我会使用config属性。

NeutralResourcesLanguage属性通知ResourceManager用于显示程序集的中性区域性资源的语言。当ResourceManager查找与中性资源语言具有相同区域性的资源时,它会自动使用位于主程序集中的资源。

它执行此操作,而不是搜索具有当前线程的当前用户界面区域性的附属程序集。NeutralResourcesLanguage属性提高了您加载的第一个资源的查找性能,并且可以减少您的工作集。

从http://technet.microsoft.com/en-us/subscriptions/bb385967.aspx