【问题标题】:How to localize a non-embedded javascript file with resource?如何使用资源本地化非嵌入式 javascript 文件?
【发布时间】:2010-09-03 08:17:47
【问题描述】:

在我的项目中,有嵌入的和非嵌入的 javascript 代码。我对嵌入式代码进行了本地化,如下所示,它可以工作。

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

... .. .

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

【问题讨论】:

标签: javascript asp.net


【解决方案1】:

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

简而言之,您可以创建一个基本的本地化脚本,其中包含您需要的任何函数、对象、字符串、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>

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

编辑:用法

所以你可以用

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

...base.fr.js 与:

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

..base.en-US.js 与:

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

...然后在您的不变代码中简单地使用translations.hello 并获取文化提出的任何内容。

您可以在这些文件中添加整个方法(用于日期计算、格式化或其他)或任何东西。关键是要意识到它们是相互排斥的,因此重要的是它们具有相同的...接口,因为没有更好的词,因此它们可以与消耗它们的任何东西正交。

【讨论】:

  • 感谢您的回复。做了你上面说的之后,我该如何运行它?像嵌入式代码一样,我应该使用这个 还是另一个?
  • 不,您可以像使用任何其他 JS 构造一样使用它们。希望编辑澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多