【问题标题】:Validation messages no longer localized after publish发布后验证消息不再本地化
【发布时间】:2015-09-29 21:35:57
【问题描述】:

假设我有一个具有属性的模型。

[Required]
public string XXX { get; set; }

如您所见,我有验证属性 [必需]。让我们尝试在表单中将其留空,然后出现错误消息。该应用程序在 VS 开发服务器上运行。

Pole XXX jest wymagane.

到目前为止一切正常。出现本地化消息。但发布后本地化丢失。

字段 XXX 为必填项。

首先认为我们应该检查已发布应用程序的文化(我将其记录到文件并显示在视图中):

文化:pl-PL CultureUI: pl-PL

看起来不错,那么问题出在哪里?

已发布的应用程序安装在 Windows Server 区域设置为 en-GB 的不同机器上,但只要我的应用程序文化不同,这并不重要,对吧?

【问题讨论】:

  • 你为什么不通过提供像[Required( ErrorMessage = "Wymagana wartość")]这样的显式消息来覆盖内置错误消息
  • @WiktorZychla 因为我有数百个模型,我想最终弄清楚为什么它不能正常工作。
  • @GSerg 您提供的解决方案正是我不想做的,也没有回答我的问题 - “为什么本地化在发布后停止工作”。
  • 本地化在发布后停止,因为您发布的应用程序不包含文字本地化字符串。相反,它包含 .NET 框架在运行时从其资源中获取所述字符串的指令。您的计算机有波兰语资源,因此它会为您显示波兰语。服务器没有波​​兰语资源,因此它回退到英语资源。要修复它,您可以通过安装波兰语语言包为服务器提供波兰语资源。这怎么不能回答你的问题?

标签: c# asp.net-mvc asp.net-mvc-4


【解决方案1】:

事实上,仅仅改变web.config中的配置是不足以应用文化的。在我的测试场景中起作用的是下载“Microsoft .NET Framework 4 Full Language Pack”。

安装this package(波兰语)后,只改变我的web.config中的全球化

<system.web>
  <globalization uiCulture="pl-PL" culture="pl-PL" />

足以用波兰语显示所有验证消息。

【讨论】:

    【解决方案2】:

    我发现了一个类似的问题。发布我的应用程序后,验证不再显示。

    在我的例子中,为了解决这个问题,我必须在我的 web.config 中包含这个属性:

    <configuration>
       <appSettings>    
          <add key="ClientValidationEnabled" value="true" />
    

    然后显示验证。

    【讨论】:

    • 它不回答 OP,错误消息显示在他的案例中,但语言不正确
    猜你喜欢
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多