2017-08-28 2 views
1

J'ai implémenté la culture dans mon application Asp.net. Mais ce que je veux, c'est changer la langue de la page entière mais cela ne change que le langage des éléments du modèle.Modifier la culture uniquement changer la langue des éléments du modèle

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; } 
     } 

Ma classe modèle

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

changement de langue uniquement pour les propriétés de la classe modèle. Mais je veux aussi changer la langue pour les propriétés static/nonmodel. Comme je veux changer le texte du bouton aussi. J'ai ajouté tous les contenus dans le fichier de ressources. Comment puis-je atteindre cet objectif?

+2

Vos boutons utilisent déjà le fichier de ressources similaire à celui-ci? '' –

+0

c'est ce que j'ai écrit '' –

+0

Comment puis-je Référence fichier de ressources dans la vue? –

Répondre

1

Ajoutez un fichier de ressources pour chaque culture que vous souhaitez prendre en charge, par ex. Le cadre résoudra quel fichier utiliser en fonction de l'ensemble CurrentCulture. Resources.resx (sans nom de culture) sera utilisé comme solution de repli si aucun fichier spécifique à la culture ne peut être trouvé.

Utilisez le fichier de ressources pour récupérer vos chaînes traduites, par ex. dans votre View.cshtml:

@using MyProject.Resources 

<button type="submit"> 
    @Resources.Submit @* this retrieves the translation for the key "Submit" *@ 
</button>