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 回答