如何使用资源本地化非嵌入式javascript文件?

时间:2010-09-03 08:17:48

标签: javascript asp.net

在我的项目中,有嵌入式和非嵌入式JavaScript代码。我做了如下嵌入式代码的本地化工作。它可以工作。

CN.DEFAULT_CONFIG = {
    strings : {
        year: '<%=GetGlobalResourceObject("Resource", "YEAR") %>'

... ..

但是,此方法不适用于非嵌入式JavaScript代码。我怎样才能为他们做本地化?

1 个答案:

答案 0 :(得分:1)

有几种方法可以实现目标(嵌入式资源,处理程序和ajax方法存在各种优点/缺点),但如果您需要在本机文件的基础上执行此操作,则可以使用所述的ajax脚本管理器{{3 }}

简而言之,您创建了一个基本本地化脚本,其中包含您需要的任何函数,对象,字符串,foo:

\webresources\scripts\localised\base.js

...然后使用资源命名模式添加您喜欢的任何本地化变体:

\webresources\scripts\localised\base.fr.js
\webresources\scripts\localised\base.en-US.js

...然后在脚本管理器中添加引用:

<asp:ScriptManager ID="YourScriptManager" runat="server" EnableScriptLocalization="true">
  <Scripts>
    <asp:ScriptReference Path="\webresources\scripts\localised\base.js" ResourceUICultures="fr,en-US"/>
  </Scripts>
</asp:ScriptManager>

(我不是百分之百确定那里的CSV文化列表,但我认为这是正确的)

编辑:用法

所以你可以用

填充base.js
// Default culture version
var translations = {
  hello : "Hello!"
}

... base.fr.js with:

// En Français
var translations = {
  hello : "Bonjour!"
}

.. base.en-US.js with:

// Americanified
var translations = {
  hello : "Howdy!"
}

...然后只需在您的不变代码中使用translations.hello即可获得文化所带来的任何内容。

您可以在这些文件中添加整个方法(用于日期计算,格式化或其他)或任何内容。关键是要意识到它们彼此是唯一的,因此它们具有相同的重要性......界面缺少一个更好的词,所以它们可以与消耗它们的任何东西正交。