我在名为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中找到的值。
我无法访问服务器上的任何其他代码。我只能在这个更大的软件的插件中完成我的工作,这将嵌入我创建的任何用户控件。
其余的网站正在呈现为en-CA。
我尝试以编程方式从我的用户控件设置文化,如下所示:
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-CA");
但这并不会强制我的view.ascx使用view.ascx.fr-CA.resx中的值。相反,它仍然使用View.ascx.resx。
如何编写能够选择合适的resx文件的代码?我想在所有页面上使用view.ascx.resx,其中url以/ en开头,view.ascx.fr-CA.resx使用以/ fr开头的所有页面。
答案 0 :(得分:0)
这不是您所需要的:
ResourceManager manager = new ResourceManager("Resources.Messages", Assembly.Load("App_GlobalResources"));
string test = manager.GetString("EmailBodyMagazine",new System.Globalization.CultureInfo("fr-CA"););
但也许您也可以使用资源管理器直接访问您的文件
答案 1 :(得分:0)
我明白了。我可以这样做:
Localization.SetThreadCultures(new System.Globalization.CultureInfo("fr-CA"), DotNetNuke.Entities.Portals.PortalSettings.Current);
我可以用其他任何语言替换fr-CA。