0

動作しているaspxページのjavascriptに値をハードコーディングしています

PersonalReportLink.innerHTML = '<%=(String)HttpContext.GetGlobalResourceObject(@"languagetext","PersonalReportFrench")%>';

今私が試しているのは動的にやりたいです

sel_lang = "French"//ユーザーから取得していますPerReportStr='<%=(String)HttpContext.GetGlobalResourceObject(@ "languagetext"、 "PersonalReport' + sel_lang +'")%>';

実行後に空の文字列が表示されます。つまり、PerReportStr=""正しいキーワードがリソースファイルに渡されないと思います

理由は、C#を使用して以下の文字列を正しく形成できないためです

(String)HttpContext.GetGlobalResourceObject(@ "languagetext"、 "PersonalReportFrench")

C#を使用して上記の文字列を作成するのを手伝ってください?

4

1 に答える 1

5

このJavascriptがASPXページに直接ある場合は、次の構文を使用してグローバルリソースオブジェクトにアクセスできるはずです。

PersonalReportLink.innerHTML = '<%= GetGlobalResourceObject("languagetext","PersonalReportFrench") %>';

ただし、JavaScriptファイルにネストされた文字列をローカライズしようとすると問題が発生する可能性があります。これが機能しない場合は、少し複雑な方法でJavascriptをローカライズする必要があります。

ScriptManagerのEnableScriptLocalization属性を使用して、Javascriptファイルをリソースとして使用できます。

リソースを必要とするページに以下を追加します。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="true" EnableScriptLocalization="true">
    <Scripts>
        <asp:ScriptReference Path="~/scriptResources.js" ResourceUICultures="fr-FR,de-DE" />
    </Scripts>
</asp:ScriptManager>

ここで注意すべき重要なことは、スクリプトファイルへのパス、ResourceUICultures="fr-FR,de-DE"およびのカルチャのリストですEnableScriptGlobalization="true"

次に、scriptResources.jsという名前のJSファイルをプロジェクトに追加し、デフォルト言語のリソースを入力します。

var PersonalReportFrench = 'My English text';
var resourceTwo = 'More English text';

次に、ローカライズされた文字列用の別のJSファイルを追加しますscriptResources.fr-FR.js

var PersonalReportFrench = 'Mon texte Français';
var resourceTwo = 'Texte plus Français';

これで、それThread.CurrentThread.CurrentCultureが正しいカルチャに設定され、スクリプトファイル名とResourceUICultures属性のロケールと一致する場合、ScriptManagerは正しいJSファイルをロードし、次のようにJSで変数を使用できます。

PersonalReportLink.innerHTML = PersonalReportFrench;
于 2013-02-19T13:38:15.337 に答える