ビジネスの顧客アカウントを管理する単純な CRUD システムを構築しています。特にない :)
アプリケーションは 2 つの部分に分かれています。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;
}
}
}
主な問題は、テキストがローカライズされておらず、簡単にローカライズできないことです。書式文字列を単に渡すだけでは、英語の文法の複数形化の問題は解決されず、他の言語では必ずしも機能しません。
考えられる解決策は、モデル ライブラリから概要文字列生成ロジックを削除し、コンシューマ アプリケーション プロジェクトに移動することです (ローカリゼーションはとにかく行われます)。たとえば、システムの一部は、からの概要が入力された列CalendarItem
を持つテーブルにエントリを自動的に生成します。この結び目を解く方法がわかりません。Description
IAccountService