Asp.net 本地化javascript消息和验证文本
我正在做一个多语言的网络项目。例如,项目的一部分涉及一些定制的google映射,该映射利用客户端交互,使用jquery/.net向映射添加点并将其保存到数据库 将有一些验证和其他信息消息(例如“请在地图上至少添加一个点”)必须本地化 我现在能想到的唯一选择是:Asp.net 本地化javascript消息和验证文本,asp.net,javascript,jquery,localization,Asp.net,Javascript,Jquery,Localization,我正在做一个多语言的网络项目。例如,项目的一部分涉及一些定制的google映射,该映射利用客户端交互,使用jquery/.net向映射添加点并将其保存到数据库 将有一些验证和其他信息消息(例如“请在地图上至少添加一个点”)必须本地化 我现在能想到的唯一选择是: 使用javascript中的代码呈现块从资源文件中提取本地化消息 将隐藏字段与meta:resourcekey一起使用,可以使用当前区域性自动从资源文件中获取适当的本地化消息,并在必要时在jquery中获取.val() 每次需要消息时,通
我更喜欢使用.net资源文件来保持与应用程序其余部分的一致性。我以前做过这样的工作,其中有隐藏字段,它们的值在Page_Init()和Page_Load()上设置,并具有全局和本地资源文件中的适当值。然后javascript代码将处理这些隐藏的值 代码隐藏
this.hfInvalidCheckDateMessage.Value = this.GetLocalResourceObject("DatesRequired").ToString();
$('#<%= btnSearch.ClientID %>').click(function(e) {
if (!RequiredFieldCheck()) {
var message = $("#<%= hfInvalidCheckDateMessage.ClientID %>").val();
alert(message);
e.preventDefault();
$("#<%= txtAuthDateFrom.ClientID %>").focus();
}
});
Page.aspxthis.hfInvalidCheckDateMessage.Value = this.GetLocalResourceObject("DatesRequired").ToString();
$('#<%= btnSearch.ClientID %>').click(function(e) {
if (!RequiredFieldCheck()) {
var message = $("#<%= hfInvalidCheckDateMessage.ClientID %>").val();
alert(message);
e.preventDefault();
$("#<%= txtAuthDateFrom.ClientID %>").focus();
}
});
$('#')。单击(函数(e){
如果(!RequiredFieldCheck()){
var message=$(“#”)val();
警报(信息);
e、 预防默认值();
$(“#”)焦点();
}
});
免责声明。。。不确定这是否是最好的路线,但它似乎确实很有效。我使用这种技术。这使得几乎没有编码经验的任何人都可以轻松地编辑短语JavaScript文件
var lang = 0 // 0 = english, 1 = french
var phrases=[]
phrases["plans"] = "Rate Plans and Features|Forfaits et options").split("|")
然后将其输出为:
phrases["plans"][lang]
…根据需要添加更多列。好的,我构建了一个通用的web服务,允许我获取资源并将其返回到字典中(这可能是转换为字典的更好方法) 然后,您可以从局部变量中获取值,如下所示: 本地化。关键1 这里唯一需要注意的是,如果要将本地化分配给全局变量,必须运行async=false,否则在需要时将无法提供翻译。我试图使用“get”来缓存响应,但它对我不起作用。见这个问题:
我已经实现了此处所述解决方案的修改版本:
如果需要的话,我通过更改正则表达式和使用
HttpContext.GetGlobalResourceObject
方法来检索资源字符串,从而允许使用多个资源文件名。是的,我不太喜欢将代码呈现块混合到javascript中。我想到的另一个选择是将web服务中的资源文件键/值作为json加载,然后根据需要查找这些值。这对我来说不太合适,因为我想使用共享的.net资源文件。使用这种与数组位置相关的方法不是很好的做法。这导致代码不太清晰。好主意。我想是不是太大了。这比将所有本地化写入隐藏字段要好。代码呈现块也会有同样的问题——无论如何都会写入js。其目的更多的是界面/验证消息,而不是大块的内容或html。您可以设置一些脚本来调查JavaScript文件,以找出哪些本地化消息在那里真正被使用。然后,您只能将那些仅在那里使用的消息发送到JavaScript。这将使尺寸减小。我正在使用这种方法将GNUgetText引入JavaScript,如下所述:非常有趣的方法。再说一次,由于我依赖于共享的.net资源文件,所以我不认为我可以使用它。尽管ajax调用必须同步运行,但速度相当快,因此阻塞是不可察觉的。很好用!