2010-08-16 5 views
0

Comment puis-je modifier la culture système affectant toutes les pages (par programmation)? J'ai vu this fil. Mais je veux changer de culture dans ma page de connexion avec ces codes.Modifier la culture système

protected void btnChangeLanguage(object sender, EventArgs e) 
{ 
    Thread.CurrentThread.CurrentCulture = new CultureInfo("es"); 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("es"); 
} 

Thread.CurrentThread.CurrentUICulture = new CultureInfo("fa-IR") 
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fa-IR") 

Ma culture Modifié par code supérieur. J'ai vérifié par ce code.

MsgBox("Current Culture is " + CultureInfo.CurrentCulture.EnglishName) 

mais toujours notre texte et les étiquettes sont anglais. (J'ai ressources anglais et ressources Persian.)

Répondre

4

Pour une liste de toutes les cultures, voir the documentation for the CultureInfo class

En ce qui concerne votre autre question, vous pouvez enregistrer un cookie avec le code de langue comme sa valeur, et lu dans la overriden InitializeCulture comme suit:

Définissez le cookie avec le code de langue que sa valeur dès que l'utilisateur clique sur le bouton:

protected void btnChangeLanguage_Click(object sender, EventArgs e) 
{ 
    Response.Cookies.Add(new HttpCookie("language") { 
     Value="es", 
     Expires=DateTime.Now.AddDays(30) /* A sample timestamp */ 
    }); 
} 

(côté petite note: J'ai joint une _Click au nom du gestionnaire, car il peut provoquer un conflit avec le nom du bouton dans la définition)

Lire le cookie dès que la méthode InitializeCulture est invoquée au cours des premières étapes du cycle de vie de la page :

protected override void InitializeCulture() 
{ 
    var cookie = Request.Cookies["language"]; 
    if (cookie != null) 
    { 
     Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cookie.Value); 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo(cookie.Value); 
    } 
    base.InitializeCulture(); 
} 
+0

Merci autre question que diriez-vous? – Shahin

+1

@shaahin De rien. J'ai mis à jour ma réponse avec un exemple de solution à votre première question concernant le réglage de la langue –

+0

Merci beaucoup. s'il vous plaît mettez votre code dans Block :). – Shahin

2

Ajouter ligne suivante à <system.web> section de votre web.config

<globalization culture="es" uiCulture="es"/> 
+0

Merci. Comment puis-je le faire par programme? – Shahin

+2

Vous devez remplacer la méthode InitCulture de votre classe basée sur la page. – Marko

+0

En fait, il s'agit de la méthode InitializeCulture(). Vous pouvez enregistrer le code de culture après la connexion dans une variable de session et utiliser cette valeur pendant InitializeCulture(). De cette manière, différents utilisateurs peuvent avoir une culture différente. – Marko

Questions connexes