Domanda

Ho un'applicazione .Net in C # e ho una struttura di file simile a:

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

Sto provando a cambiare programmaticamente la lingua che dice all'applicazione quale file resx usare. Voglio farlo nel codice dietro il file (MyPage.aspx.cs).

Ho provato entrambi questi eventi negli eventi OnPreRender, Page_Init e Page_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 risultati. Tutti gli esempi mostrano come cambiare la lingua nel modo in cui ho già provato (sopra), tuttavia ciò non influisce sul file di risorse utilizzato. Qualche idea?

È stato utile?

Soluzione

Devi sovrascrivere il metodo InitializeCulture e inserire il tuo codice lì. 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

Altri suggerimenti

Potresti anche esaminare questo

http://www.west-wind.com/presentations/wwDbResourceProvider/

Non l'ho usato ma ho usato altro codice scritto da Rick ed è stato di prim'ordine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top