我在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>
请注意,我不关心浏览器语言。它必须超越这个。我一直在网上搜索这个解决方案无济于事。所有示例都显示了我已经尝试过的方式切换语言(上图)但是这不会影响所使用的资源文件。有什么想法吗?
答案 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编写的其他代码并且它是顶级的。