在代码编程方式更改资源文件的语言(RESX)的背后(Programmatically change

2019-08-04 13:47发布

我在C#.Net应用程序,我有一个文件结构是这样的:

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

我想通过编程修改它告诉它的RESX文件来使用应用程序的语言。 我想这样做的隐藏文件(MyPage.aspx.cs)的代码。

我在的OnPreRender,Page_Init和Page_Load中的事件都尝试这些:

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

而这是行不通的。 该页面仍显示英文。 该MyPage.aspx文件中有这样的:

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

请注意,我不关心浏览器的语言。 它必须覆盖此。 我一直在寻找这种解决方案无济于事网络。 所有的例子显示切换语言,我已经尝试过(上图)的方式但是这并不影响使用的资源文件。 有任何想法吗?

Answer 1:

你必须重写InitializeCulture方法,把你的代码中有。 例如:

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

希望这可以帮助



Answer 2:

你也可以看看这个

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

我没有用它,但我用的是里克写其他代码,它是一流的。



文章来源: Programmatically change resource file language (resx) in Code Behind