4

私のMVC3アプリケーションでは、ローカリゼーションを行う必要があります。これを行うための最良の方法は何かアドバイスをお願いしたいと思います。そしてもう1つ質問があります。私は自分のアプリケーションで次のようなモデルを使用しています。

public class MyModel
{          
    [HiddenInput(DisplayValue = false)]
    public Guid? DepartmentId { get; set; }

    [Display(Name = "Caption")]
    public string Caption { get; set; }

    [Display(Name = "Owner")]
    public string Owner { get; set; }

    [Display(Name = "Enabled")]
    public bool Enabled { get; set; }
}

このモデルクラスでローカリゼーションを使用するにはどうすればよいですか?

アップデート

asp.netのResource.resx実装を使用する代わりに、カスタムresource.xmlを作成することにしました。このモデルクラスでローカリゼーションを使用するにはどうすればよいですか?

4

4 に答える 4

5

[Display] 属性で次の設定を使用します。

[Display(Name = "Caption", ResourceType = typeof(SomeResource))]

SomeResource はリソース ファイルのクラス名です。名前空間とクラス名を正しく取得するには、リソース ファイルの追加時に生成されたdesigner.csファイルを開くだけです。リソース ファイルのカスタム ツールがPublicResXFileCodeGeneratorに設定されていることを確認します。これは、リソース ファイルの [プロパティ] ウィンドウで行うことができます。

元の質問の更新後:

resources.xml ファイルを使用する場合、たとえば XPath 式と xml ファイルの場所を使用する場所にオーバーロードまたは新しい属性が配置される可能性があります。

次のような新しいプロバイダーを接続できます。

ModelValidatorProviders.Providers.Add(new CustomMetadataValidationProvider());

どこ

public class CustomMetadataValidationProvider : DataAnnotationsModelValidatorProvider
{

}

また、 Orchard CMSがそれを解決する方法にも興味があるかもしれません。彼らは.po ファイルを利用します。

于 2012-08-28T10:05:53.540 に答える
0

リソース ファイルを使用して、ローカライズされたバージョンの文字列を格納できます。次のガイドをご覧ください。

于 2012-08-28T10:06:08.130 に答える
0

ローカライズされた文字列を RESX ではなくカスタム ファイルに格納する場合は、リソース プロバイダーを実装できます。詳細については、次の記事を参照してください:
http://msdn.microsoft.com/en-us/library/aa905797.aspx#exaspnet20rpm_topic4

于 2012-08-28T10:55:51.350 に答える
0

モデルを変更せずにそれを行うことができます:

public class MyModel
{          
    [HiddenInput(DisplayValue = false)]
    public Guid? DepartmentId { get; set; }

    public string Caption { get; set; }
    public string Owner { get; set; }
    public bool Enabled { get; set; }
}

私の Griffin.MvcContrib でカスタム メタデータ プロバイダーを使用する場合: http://www.codeproject.com/Articles/352583/Localization-in-ASP-NET-MVC-with-Griffin-MvcContri

ソースコード: https://github.com/jgauffin/griffin.mvccontrib

アップデート

XML をデータ ソースとして使用できます。インターフェイスILocalizedStringProviderを実装し、それを使用して XML ファイルから文字列をロードするだけです。

次に、MVC を次のように構成します。

var stringProvider = new MyXmlProvider(@"C:\AppData\MyStrings.xml");
ModelMetadataProviders.Current = new LocalizedModelMetadataProvider(stringProvider);
于 2012-08-28T10:39:30.707 に答える