7

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

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

AssemblyInfo 中的 NeutralResourcesLanguageAttribute

[assembly: NeutralResourcesLanguageAttribute("en")]

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

web.config 中的全球化 uiCultur

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

From mdsn:指定用于处理与区域设置相关的资源搜索的默认区域性。有关有效的文化字符串,请参阅 System.Globalization.CultureInfo 类。

现在我的问题:

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

4

4 回答 4

2

示例资源文件

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

现在在 web.config 中使用

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

这(“自动”)将让浏览器设置决定(德国浏览器获取德国资源等)

但是(在上面的例子中)如果瑞典语浏览器出现,它将默认为en,因为没有se(瑞典语)资源文件,并且将使用后备英语(“auto: en ”)uiCulture。

所以......然后:

[assembly: NeutralResourcesLanguageAttribute("en")]

现在让应用程序将英语请求直接转到 default.resx,而无需首先查找en resx。

此外,如果英文浏览器请求它应该直接转到默认资源文件,而无需先尝试其他内容。所以 NeutralResourcesLanguageAttribute 设置也在这里发挥作用。该应用程序知道直接转到默认 resx。

于 2013-04-23T14:04:02.613 回答
0

NeutralResourcesLanguageAttribute是让应用程序的资源管理器了解应用程序的默认文化和资源位置的一种方法。此属性可用于任何类型的 .NET 应用程序:桌面、Web、win8、wcf 等。

globalization属性是让您的 Web 应用程序了解您的应用程序的默认文化的另一种方式。

请注意,它们的主要区别在于该globalization属性仅适用于 Web 应用程序,并且不允许您为资源指定不同的位置。

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

于 2013-04-18T04:29:51.927 回答
0

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

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

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

于 2013-04-23T13:23:31.197 回答
0

根据这篇文章,Asp.Net Web 应用程序的重要设置位于 web.config 的“全球化”元素中。文章建议将文化和 uiCulture 设置为最佳实践。例如:

<globalization uiCulture="es" culture="es-MX" />
于 2013-04-18T04:19:40.373 回答