在我的项目中,有嵌入式和非嵌入式JavaScript代码。我做了如下嵌入式代码的本地化工作。它可以工作。
CN.DEFAULT_CONFIG = {
strings : {
year: '<%=GetGlobalResourceObject("Resource", "YEAR") %>'
... ..
但是,此方法不适用于非嵌入式JavaScript代码。我怎样才能为他们做本地化?
答案 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
即可获得文化所带来的任何内容。
您可以在这些文件中添加整个方法(用于日期计算,格式化或其他)或任何内容。关键是要意识到它们彼此是唯一的,因此它们具有相同的重要性......界面缺少一个更好的词,所以它们可以与消耗它们的任何东西正交。