0

ビジネスの顧客アカウントを管理する単純な 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を持つテーブルにエントリを自動的に生成します。この結び目を解く方法がわかりません。DescriptionIAccountService

4

1 に答える 1