在我的项目中,有嵌入式和非嵌入式的javascript代码。我像下面这样做了嵌入式代码的本地化,它工作了。
CN.DEFAULT_CONFIG = {
strings : {
year: '<%=GetGlobalResourceObject("Resource", "YEAR") %>'
... ..。
但是,这种方法不适用于非嵌入式javascript代码。我如何为他们做本地化?
发布于 2010-09-03 16:45:45
有几种方法可以实现这一目标(嵌入式资源、处理程序和ajax方法各有优缺点),但如果需要在本机文件基础上实现这一点,可以使用here中描述的ajax脚本管理器。
简而言之,您可以创建一个基本的本地化脚本,其中包含您需要的任何函数、对象、字符串和foo:
\webresources\scripts\localised\base.js
...then使用资源命名模式添加您喜欢的任何本地化变体:
\webresources\scripts\localised\base.fr.js
\webresources\scripts\localised\base.en-US.js
...then在脚本管理器中添加一个引用,如下:
<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!"
}
然后,...and只需在您的不变代码中使用translations.hello
,就可以获得该文化产生的任何结果。
您可以在这些文件中添加完整的方法(用于日期计算、格式化或其他任何内容)或任何内容。关键是要意识到它们是彼此独占的,因此它们拥有相同的...接口,因为缺少更好的词,所以它们可以与任何消耗它们的东西正交。
https://stackoverflow.com/questions/3634050
复制相似问题