8

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

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

4

1 回答 1

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");
}

希望这可以帮助

于 2009-09-09T17:02:35.633 回答