3

ローカリゼーションのソリューションは多数あります。 App_GlobalResourcesでGetLocalizedDisplayName機能MVCローカリゼーションでのResourceManagerの問題

を入力する

if (meta.DisplayName != null) 

:へ

if (meta.DisplayName == null) 

:私はラインを変更した http://geekswithblogs.net/brians/archive/2010/06/14/asp.net-mvc-localization-displaynameattribute-alternatives-a-better-way.aspx

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からデフォルト値を返します。

培養PLpropertyNameのが正しいユーザー名ので、戻り値が文字列であるべきです。 pl .resx、Strings.resxからではありません。

私を助けてください:

答えて

0

ビルドアクションを[コンテンツ]に設定してみてください。

+0

それから私は、サーバーが特定の文化やニュートラルカルチャ ソースファイルのためのリソースを見つけることができなかったというエラーがあります:{MyProjectと} \ App_GlobalResources \ Strings.Designer.csライン:365 ライン363:パブリック静的な文字列のユーザー名{ を行364:get { 行365:return ResourceManager.GetString( "UserName"、resourceCulture); 行366:} 行367:} –

関連する問題