2017-08-28 42 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>