2009-09-09 7 views
6

je une application .Net en C# et j'ai une structure de fichier quelque chose comme:Programmatically modifier la langue du fichier de ressources (resx) dans le code derrière

App_LocalResources 
- MyPage.aspx.resx 
- MyPage.aspx.fr.resx 
MyPage.aspx 
MyPage.aspx.cs 

Je suis en train de changer programatically la langue qui indique à l'application quel fichier resx utiliser. Je veux faire cela dans le code derrière le fichier (MyPage.aspx.cs).

J'ai essayé ces deux événements dans les OnPreRender, Page_Init et Page_Load:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA"); 
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA"); 

et il ne fonctionne pas. La page montre toujours la langue anglaise. Le fichier MyPage.aspx a ceci:

<h3><asp:Literal runat="server" Text="<%$ Resources:pageTitle %>" /></h3> 

Notez que je ne me soucie pas de la langue du navigateur. Cela doit surpasser ça. J'ai cherché sur le web pour cette solution en vain. Tous les exemples montrent la commutation de la langue comme j'ai déjà essayé (ci-dessus) mais cela n'affecte pas le fichier de ressources utilisé. Des idées?

Répondre

11

Vous devez remplacer la méthode InitializeCulture et y placer votre code. Ex:

protected override void InitializeCulture() 
{ 
    base.InitializeCulture(); 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA"); 
    System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA"); 
} 

Hope this helps

+1

MartinB vous avez mes remerciements. Soit je cherchais avec les mauvais termes ou il y a très peu d'informations à ce sujet en ligne. Cela a fonctionné parfaitement. Je suis content que ce soit le cas pour les futures personnes à la recherche de la réponse. Je vous remercie! – Sherri

Questions connexes