0

我在名为 View.ascx 的用户控件中有以下代码:

<label><asp:Label ID="lblProvince" runat="server" ResourceKey="lblProvince"></asp:Label>:</label>
<asp:DropDownList ID="PROVINCE" runat="server">
    <asp:ListItem ResourceKey="liselectprovince"></asp:ListItem>
    <asp:ListItem Value="ab" ResourceKey="liab"></asp:ListItem>
    <asp:ListItem Value="bc" ResourceKey="libc"></asp:ListItem>
    <asp:ListItem Value="mb" ResourceKey="limb"></asp:ListItem>
    <asp:ListItem Value="nb" ResourceKey="linb"></asp:ListItem>
    <asp:ListItem Value="nf" ResourceKey="linf"></asp:ListItem>
    <asp:ListItem Value="ns" ResourceKey="lins"></asp:ListItem>
    <asp:ListItem Value="nt" ResourceKey="lint"></asp:ListItem>
    <asp:ListItem Value="nu" ResourceKey="linu"></asp:ListItem>
    <asp:ListItem Value="on" ResourceKey="lion"></asp:ListItem>
    <asp:ListItem Value="pi" ResourceKey="lipi"></asp:ListItem>
    <asp:ListItem Value="qb" ResourceKey="liqb"></asp:ListItem>
    <asp:ListItem Value="sk" ResourceKey="lisk"></asp:ListItem>
    <asp:ListItem Value="yk" ResourceKey="liyk"></asp:ListItem>
</asp:DropDownList>

ResourceKey 映射到文件 View.ascx.fr-CA.resx 和 View.ascx.resx 中的值。

我无权访问服务器上的任何其他代码。我只能在这个更强大软件的插件中完成我的工作,该插件将嵌入我创建的任何用户控件。

hte 站点的其余部分正在呈现为 en-CA。

我试图以编程方式从我的用户控件中设置文化,如下所示:

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-CA");

但这并不强制我的 view.ascx 使用 view.ascx.fr-CA.resx 中的值。相反,它仍然使用 View.ascx.resx。

如何编写代码来选择适当的 resx 文件?我想在 URL 以 /en 开头的所有页面上使用 view.ascx.resx ,在 URL 以 /fr 开头的所有页面上使用 view.ascx.fr-CA.resx 。

4

2 回答 2

0

这不是您所需要的:

ResourceManager manager = new ResourceManager("Resources.Messages", Assembly.Load("App_GlobalResources"));
string test = manager.GetString("EmailBodyMagazine",new System.Globalization.CultureInfo("fr-CA"););

但也许您也可以使用资源管理器直接访问您的文件

于 2013-09-07T12:34:18.717 回答
0

我想到了。我可以做这个:

Localization.SetThreadCultures(new System.Globalization.CultureInfo("fr-CA"), DotNetNuke.Entities.Portals.PortalSettings.Current);

我可以用任何其他语言替换 fr-CA。

于 2013-09-09T01:19:47.683 回答