Programmatically change resource file language (re

2019-03-16 03:37发布

问题:

I have a .Net application in C# and I have a file structure something like:

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

I am trying to programatically change the language which tells the application which resx file to use. I want to do this in the code behind file (MyPage.aspx.cs).

I have tried both of these in the OnPreRender, Page_Init, and Page_Load events:

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

and it does not work. The page still shows the english language. The MyPage.aspx file has this:

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

Note that I cannot care about the browser language. It must over-ride this. I have been searching the web for this solution to no avail. All examples show switching the language the way I have already tried (above) however this does not affect the resource file used. Any ideas?

回答1:

You must override the InitializeCulture method and put your code there. 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



回答2:

You might also look into this

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

I have not used it but I have used other code that Rick has written and it was top notch.