【发布时间】:2013-04-21 01:00:01
【问题描述】:
我正在构建一个简单的 CRUD 系统,用于管理企业的客户帐户。没什么特别的:)
该应用程序分为两部分:一个与文化无关的模型层,它是保存 EF 实体类的位置。前端是一个执行所有本地化任务的 ASP.NET MVC 项目。
我有一系列类似的EF实体,代表每个账户的附加服务,它们都实现了接口IAccountService,例如:
public interface IAccountService {
String DisplayName { get; set; }
String Overview { get; set; }
}
public partial class IntenseAuditService : IAccountService {
// Example database columns:
public DateTime DateTimeOfAudit { get; set; }
public Boolean ThreatenToReportThemToTheIrs { get; set; }
public Int32 Iterations { get; set; }
public String DisplayName { get { return "Intense audit"; } }
public String Overview {
get {
String ret = "Audit on ";
ret += this.DateTimeOfAudit.ToString();
if( ThreatenToReportThemToTheIrs ) {
ret += ", and report them to the feds"
}
if( Iterations == 1 ) ret += " and 1 iteration";
else if( Iterations > 1 ) ret += " and " + Iterations + " iterations.";
return ret;
}
}
}
主要问题是文本没有本地化,也不容易本地化:简单地传入一个格式字符串并不能解决英语语法的复数问题,并且不需要与其他语言一起使用.
一个可能的解决方案是从模型库中删除 Overview 字符串生成逻辑并将其移动到消费者应用程序项目(无论如何都完成本地化),但是模型库还负责生成可能具有 Overview 消息的其他实体例如,其中包含的部分系统会自动在CalendarItem 表中生成条目,该表的Description 列填充有来自IAccountService 的概述。我不知道如何解开这个结。
【问题讨论】: