2009-09-09 8 views
6

ho un'applicazione .NET in C# e ho una struttura di file qualcosa come:programmazione lingua file di cambiamento di risorse (resx) in codice dietro

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

Sto cercando di cambiare programatically la lingua che racconta l'applicazione quale file resx da usare. Voglio farlo nel codice dietro il file (MyPage.aspx.cs).

ho provato entrambe queste negli eventi OnPreRender, Page_Init, e Load:

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

e non funziona. La pagina mostra ancora la lingua inglese. Il file MyPage.aspx ha questo:

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

Nota che non mi interessa la lingua del browser. Deve superare questo. Ho cercato sul web questa soluzione senza alcun risultato. Tutti gli esempi mostrano come cambiare la lingua come ho già provato (sopra), tuttavia ciò non influisce sul file di risorse utilizzato. Qualche idea?

risposta

11

È necessario sovrascrivere il metodo InitializeCulture e inserire il proprio codice. Es:

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

Spero che questo aiuti

+1

MartinB avete il mio grazie di cuore. O stavo cercando con i termini sbagliati o ci sono poche informazioni su questo online. Ha funzionato perfettamente. Sono felice che questo accada su SO per le persone future che cercano la risposta. Grazie! – Sherri

Problemi correlati