2017-08-28 11 views
1

私は自分のAsp.netアプリケーションで文化を実装しました。しかし、私が望むのは、ページ全体の言語を変更することですが、モデルアイテムの言語のみを変更しています。モデルアイテムの言語を変更するだけの文化を変更する

CultureHelper.csのみモデルクラスのプロパティの変更

public class CultureHelper 
{ 
     protected HttpSessionState session; 

     public CultureHelper(HttpSessionState httpSessionState) 
     { 
      session = httpSessionState; 
     } 
     public static int CurrentCulture 
     { 
      get 
      { 
       switch (Thread.CurrentThread.CurrentUICulture.Name) 
       { 
        case "en": return 0; 
        case "hi-IN": return 1; 
        default: return 0; 
       } 
      } 
      set 
      { 
       if (value == 0) 
       { 
        Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en"); 
       } 
       else if(value==1) 
       { 
        Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("hi-IN"); 
       } 
       else 
       { 
        Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.InvariantCulture; 
       } 
       Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture; 
      } 
     } 
    } 

BaseController.cs

protected override void ExecuteCore() 
     { 
      int culture = 0; 
      if (this.Session == null || this.Session["CurrentCulture"] == null) 
      { 

       int.TryParse(System.Configuration.ConfigurationManager.AppSettings["Culture"], out culture); 
       this.Session["CurrentCulture"] = culture; 
      } 
      else 
      { 
       culture = (int)this.Session["CurrentCulture"]; 
      } 
      // calling CultureHelper class properties for setting 
      CultureHelper.CurrentCulture = culture; 

      base.ExecuteCore(); 
     } 

     protected override bool DisableAsyncSupport 
     { 
      get { return true; } 
     } 

私のモデルクラス

[Display(Name="Name",ResourceType =typeof(Resource))] 

言語。しかし、静的/非モデルプロパティの言語も変更したいと思います。ボタンのテキストも変更したいのですが。私はすべての内容をリソースファイルに追加しました。どうすればこれを達成できますか?

+2

あなたのボタンはすでにこのようなリソースファイルを使用していますか? '

+0

これは私が書いたものです ' –

+0

どうすればいいですか?参照ビュー内のリソースファイル? –

答えて

1

サポートしたいすべてのカルチャーのリソースファイルを追加します。

Resources.en.resx 
Resources.hi-IN.resx 

フレームワークは、セットCurrentCultureに基づいて使用するファイルを解決します。 Resources.resx(カルチャ名なし)は、カルチャー固有のファイルが見つからない場合のフォールバックとして使用されます。

リソースファイルを使用して、翻訳された文字列を取得します。あなたのView.cshtmlで:

@using MyProject.Resources 

<button type="submit"> 
    @Resources.Submit @* this retrieves the translation for the key "Submit" *@ 
</button> 
関連する問題