以编程方式更改Code Behind中的资源文件语言(resx)

时间:2009-09-09 16:48:14

标签: c# asp.net localization resource-file

我在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>

请注意,我不关心浏览器语言。它必须超越这个。我一直在网上搜索这个解决方案无济于事。所有示例都显示了我已经尝试过的方式切换语言(上图)但是这不会影响所使用的资源文件。有什么想法吗?

2 个答案:

答案 0 :(得分:13)

您必须覆盖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");
}

希望这有帮助

答案 1 :(得分:0)

您也可以查看此内容

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

我没有使用它,但是我已经使用了Rick编写的其他代码并且它是顶级的。