localization - 来自域对象( 实体)的本地化本地化验证消息

  显示原文与译文双语对照的内容

我不想在代码所属的地方讨论有关验证的争论,而是关注一种可以能的方法和解决本地化问题。 我在我的一个域对象( 实体) 上有以下行为( 鏂规碜),它表示场景:


public void ClockIn()


{


 if (WasTerminated)


 {


 throw new InvalidOperationException("Cannot clock-in a terminated employee.");


 }



 ClockedInAt = DateTime.Now;


 :


}



可以看到,调用ClockIn方法时,该方法检查对象的状态以确保该雇员未被终止。 如果员工被终止,我们会抛出与"不要让你的实体输入无效状态"方法一致的异常。

我的问题是,我需要本地化异常消息。 通常使用在需要访问它的方法的类中使用MEF导入的应用程序服务来完成这一操作。 但是,如同任何notes框架一样,如果对象被容器实例化,依赖项只注入/导入。 DDD通常不是这种情况。

而且,我对DDD所学的一切都说,我们的域对象不应该拥有依赖关系,这些关注点应该从域对象。 如果是这样,我可以如何去定位如上面所示的消息?

这不是一个新的需求,因为许多业务应用程序需要全球化/本地化。 我希望有一些建议,如何使这项工作,并仍然是一致的,一个。

更新

我最初没有指出本地化是所有数据库驱动的,所以我们有一个本地化服务( 通过可以注射的ILocalizationService接口) 。 因此,使用 static 资源类 Visual Studio 作为项目的一部分不是可行的选择。

更新

也许它将讨论如何将应用程序应用于rest式服务应用程序。 因此,客户端可以是简单的网络浏览器。 在这种情况下,当调用异常发生,异常消息发生时,抛出异常以及异常消息,以及应本地化为调用方( 接受语言)的区域性时,我不能使用任何预期的代码。

时间: 原作者:

不确定这个响应对你有多有用,但是本地化实际上是一个前端问题。 根据你的示例本地化异常消息不是常见的做法,因为最终用户不应该看到技术细节,如在异常消息( 即使不是谁,你的异常也可以能有足够的水平英语,即使它不是他们的本机语言。) 中描述的。

当然,如果必要的话,你可以随时处理异常,并向你的前端用户提供一个本地化的。用户友好的消息。 但保持它作为字体结束关注应该简化你的架构。

原作者:
...