2009-09-09 14 views
6

tengo una aplicación .NET en C# y tengo una estructura de archivos algo como:programación lenguaje de archivo de recursos de cambio (resx) en el código subyacente de

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

Estoy tratando de cambiar mediante programación el lenguaje que le dice a la aplicación qué archivo resx usar Quiero hacer esto en el código detrás del archivo (MyPage.aspx.cs).

me han tratado ambos en los eventos OnPreRender, Page_Init y Page_Load:

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

y no funciona. La página aún muestra el idioma inglés. El archivo MyPage.aspx tiene esto:

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

Tenga en cuenta que no me importa el idioma del navegador. Debe anular esto. He estado buscando en la web esta solución en vano. Todos los ejemplos muestran cómo cambiar el idioma de la forma en que ya lo he intentado (arriba), sin embargo, esto no afecta el archivo de recursos utilizado. ¿Algunas ideas?

Respuesta

11

Debe anular el método InitializeCulture y poner allí su código. Ej:

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

Esperanza esto ayuda

+1

MartinB tiene mis agradecimientos impresos. O busqué con los términos incorrectos o hay muy poca información sobre esto en línea. Eso funcionó perfectamente. Me alegro de que esto estará en SO para las personas futuras que buscan la respuesta. ¡Gracias! – Sherri

Cuestiones relacionadas