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 にある値にマップされます。

サーバー上の他のコードにはアクセスできません。私は、この優れたソフトウェアのプラグイン内でのみ作業を行うことができます。プラグインは、私が作成したユーザー コントロールを埋め込みます。

サイトの残りの部分は、en-CA としてレンダリングされています。

次のように、ユーザー コントロールからプログラムでカルチャを設定しようとしました。

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

しかし、それは私のview.ascxがview.ascx.fr-CA.resxからの値を使用することを強制しません。代わりに、引き続き View.ascx.resx を使用します。

適切な resx ファイルを選択するコードを作成するにはどうすればよいですか? /en で始まる URL を持つすべてのページで view.ascx.resx を使用し、 /fr で始まる URL を持つすべてのページで view.ascx.fr-CA.resx を使用したいと考えています。

4

2 に答える 2

0

私はそれを考え出した。私がすることができます:

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

fr-CA を他の言語に置き換えることができます。

于 2013-09-09T01:19:47.683 に答える
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 に答える