3
ローカリゼーションのソリューションは多数あります。 App_GlobalResourcesでGetLocalizedDisplayName機能MVCローカリゼーションでのResourceManagerの問題
を入力する
if (meta.DisplayName != null)
:へ
if (meta.DisplayName == null)
public class LocalizedDataAnnotationsModelMetadataProvider : DataAnnotationsModelMetadataProvider
{
protected override ModelMetadata CreateMetadata(
IEnumerable<Attribute> attributes,
Type containerType,
Func<object> modelAccessor,
Type modelType,
string propertyName)
{
var meta = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
if (string.IsNullOrEmpty(propertyName))
return meta;
if (meta.DisplayName != null)
GetLocalizedDisplayName(meta, propertyName);
if (string.IsNullOrEmpty(meta.DisplayName))
meta.DisplayName = string.Format("[[{0}]]", propertyName);
return meta;
}
private static void GetLocalizedDisplayName(ModelMetadata meta, string propertyName)
{
ResourceManager resourceManager = App_GlobalResources.Strings.ResourceManager;
CultureInfo culture = Thread.CurrentThread.CurrentUICulture;
meta.DisplayName = resourceManager.GetString(propertyName, culture);
}
}
:私はこの1のために決めた 2つのファイルがあります: Strings.resxおよびStrings.pl.resx。 それらの両方公開アクセス修飾子をahaveとアクションを構築するにはサイト全体が翻訳されて
埋め込まれたリソースに設定されていますが、私はでの問題は、私は問題はこの中だと思う
[Required]
[LocalizedDisplayName("UserName", NameResourceType = typeof(App_GlobalResources.Strings))]
public string UserName { get; set; }
属性持っています私が上に投稿したリンクからの行:
meta.DisplayName = resourceManager.GetString(propertyName, culture);
GetString alw aysはStrings.resxからデフォルト値を返します。
培養はPLとpropertyNameのが正しいユーザー名ので、戻り値が文字列であるべきです。 pl .resx、Strings.resxからではありません。
私を助けてください:
それから私は、サーバーが特定の文化やニュートラルカルチャ ソースファイルのためのリソースを見つけることができなかったというエラーがあります:{MyProjectと} \ App_GlobalResources \ Strings.Designer.csライン:365 ライン363:パブリック静的な文字列のユーザー名{ を行364:get { 行365:return ResourceManager.GetString( "UserName"、resourceCulture); 行366:} 行367:} –