gpt4 book ai didi

asp.net - 使用 App_GlobalResources 在 ASP.NET MVC 4 中进行本地化

转载 作者:行者123 更新时间:2023-12-02 17:12:05 26 4
gpt4 key购买 nike

我正在努力完成两件事:

  1. 本地化“FieldMustBeDate”和“FieldMustBeNumeric”的“内置”错误消息。
  2. 本地化您可能遇到的一些其他错误消息,例如“PropertyValueRequired”。

通过使用http://forums.asp.net/t/1862672.aspx/1对于问题 1 和 MVC 4 ignores DefaultModelBinder.ResourceClassKey对于问题2,我已经设法让两者在本地工作。

但是,一旦我发布到网站,“内置”错误消息就会默认恢复为英语,而其他错误消息则保持本地化。

我读过一些应该避免使用 App_GlobalResources 的地方,但是如果不使用它,我无法完成问题 1。

我创建了一个名为“WebResources.resx”的 .resx 文件,将“构建操作”设置为“嵌入”,将“复制到输出目录”设置为“不复制”,将自定义工具设置为“PublicResXFileCodeGenerator”,然后将自定义工具命名空间设置为“资源”。项目本身设置为仅发布需要的文件。

我的 Global.asax.cs 包含以下(相关)代码:

  ClientDataTypeModelValidatorProvider.ResourceClassKey = "WebResources";  
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(RequiredAttribute),
typeof(MyRequiredAttributeAdapter));

MyRequiredAttributeAdapter 类包含以下代码:

public class MyRequiredAttributeAdapter : RequiredAttributeAdapter
{
public MyRequiredAttributeAdapter(
ModelMetadata metadata,
ControllerContext context,
RequiredAttribute attribute
)
: base(metadata, context, attribute)
{
if (attribute.ErrorMessageResourceType == null)
{
attribute.ErrorMessageResourceType = typeof(Resources.WebResources);
}
if (attribute.ErrorMessageResourceName == null)
{
attribute.ErrorMessageResourceName = "PropertyValueRequired";
}
}
}

这在本地工作,但是有人知道如何在发布后让“内置”消息发挥作用吗?

感谢您的帮助!

最诚挚的问候,安德烈亚斯

最佳答案

这个问题是我自己想出来的。如果您尝试完成上述任务,则必须将本地化错误消息分开。

为其他错误消息 fx“PropertyValueRequired”创建一个 *.resx 文件,并将“构建操作”设置为“嵌入”,将“复制到输出目录”设置为“不复制”,将自定义工具设置为“PublicResXFileCodeGenerator”,然后将自定义工具命名空间设置为“资源”。

就我而言,我已将“PropertyValueRequired”移至名为 LocalDanish.resx 的文件(仍在 App_GlobalResources 文件夹中),并将“MyRequiredAttributeAdapter”中的行从

attribute.ErrorMessageResourceType = typeof(Resources.WebResources);

attribute.ErrorMessageResourceType = typeof(Resources.LocalDanish);

为了使“内置”错误消息起作用,您必须创建两个 *.resx 文件。我创建了 WebResources.resx 和 WebResources.da.resx。不要更改任何内容,将其设置保留为默认设置(将操作构建为“内容”等)。我猜网站会自动查找我的情况下的 *.da.resx 文件,因为我已经在 WebConfig 中设置了全局化:

<globalization uiCulture="da-DK" culture="da-DK"/>

希望这对任何人都有帮助。

最诚挚的问候,安德烈亚斯

关于asp.net - 使用 App_GlobalResources 在 ASP.NET MVC 4 中进行本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16789961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com