英語以外の言語でエラー メッセージを表示する単体テスト ケースを作成しましたが、機能していないようで、何が欠けているのかわかりません。
詳細は次のとおりです。
属性を使用しています。
app.config (nhibernate cfg を除外しました):
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
<section name="nhv-configuration" type="NHibernate.Validator.Cfg.ConfigurationSectionHandler, NHibernate.Validator" />
</configSections>
<nhv-configuration xmlns="urn:nhv-configuration-1.0">
<property name='apply_to_ddl'>false</property>
<property name='autoregister_listeners'>true</property>
<property name='default_validator_mode'>OverrideExternalWithAttribute</property>
</nhv-configuration>
バリデーターの初期化:
private void InitializeValidator()
{
var provider = new NHibernateSharedEngineProvider();
provider.GetEngine().Configure();
NHibernate.Validator.Cfg.Environment.SharedEngineProvider = provider;
}
テスト関数 (EntityDescription は私のエンティティ クラスであり、Repository は Repository クラスを使用したシャープなアーキテクチャ設計に従います):
[Test]
public void TestNhValidationSp()
{
CultureInfo ci = CultureInfo.GetCultureInfo("fr");
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
TestNhValidation();
}
private void TestNhValidation()
{
IEntityDescriptionRepository repository = GetObject<IEntityDescriptionRepository>();
ISession session = NHibernateSession.Current;
EntityDescription entityDescription=
(from kpad in session.Query<EntityDescription>()
select kpad).FirstOrDefault();
entityDescription.Title = "012345678901234567890123456789012345678901234567890123456789";
try
{
repository.SaveOrUpdateWithTransaction(entityDescription);
Assert.IsTrue(false);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Assert.IsTrue(ex is InvalidStateException);
InvalidStateException isex = (InvalidStateException) ex;
foreach (InvalidValue invalidValue in isex.GetInvalidValues())
{
Console.WriteLine("PropertyName={0} Message={1}", invalidValue.PropertyName, invalidValue.Message);
}
}
}
設定 entityDescription.Title = "012345678901234567890123456789012345678901234567890123456789";
タイトルには最大 50 文字を使用できるため、検証エラーが発生します。
問題は、メッセージが常に英語で表示されることです。何かご意見は?
追加したいことの 1 つは、テスト プロジェクトが SharpArchitecture プロジェクト (1.9.5) に依存していることです。どういうわけか、これが私の nhibernate バリデーターの設定を台無しにするのではないかと思います。
次のメッセージが見つかりました:同様の問題を報告するS#arp アーキテクチャを使用した NHibernate Validation Localization 。