多语言网站中的提醒消息

时间:2011-08-24 07:25:24

标签: asp.net asp.net-mvc-3 javascript

我在我的多语种网站上使用资源文件显示html内容(如标签名称)。不同国家的资源文件不同。网站建立在Asp.Net MVC3上。

我正在显示一条javascript警报,其消息是从资源文件中选取的,如下所示: 警报( '@ Resources.Areas.Admin.Views.Program.Local.Create.msgDate3'); 现在在msgDate3的资源文件中,我有法语文本为“La fecha deiniciodeberásermenor que la fechadepérmino” 网站上的此警报显示为“La fecha deiniciodeberáseruemenor que la fechadepérmino”,其中“á”和“é”未正确显示。 如何显示这些特殊字符?

我也有其他语言的数据,这些字符会出现类似的问题。如何显示它们?

编辑: -

(在我的app中,英文资源文件被命名为“cshtmlfilename.resx”,例如create.resx和其他文化资源文件被命名为“cshtmlfilename.culturename.resx”,例如create.es-MX.resx)

我发现我的网页的javascript代码打破了我以alert('@Html.Raw(Resources.Areas.Admin.Views.Program.Local.Create.msgDate2)');格式放置在页面中的提醒 其中'Create.msgDate2'指的是资源文件Create.resx的密钥msgDate2。 firebug中的break msg出现在`

  

未终止的字符串文字   [在此错误中打破]警报('ควรจะลงวันที่ที่เริ่มก่อนวันสุดท้ายของการสิ้นสุด   (这是我为泰国获得的消息(第th个)   当我修改msgDate2的翻译时,脚本工作正常。我确定一些问题正在发生,这种语言的字符正在使javascript停止。   任何解决方案??

2 个答案:

答案 0 :(得分:1)

使用Html.Raw来避免字符串编码:

alert('@Html.Raw(Resources.Areas.Admin.Views.Program.Local.Create.msgDate3)');

像Html.LabelFor(..)这样的Htmlhelpers返回一个IHtmlString,它在视图中没有像常规字符串那样编码,所以这就是你没有标签问题的原因。

答案 1 :(得分:0)

这会发生什么样的浏览器?您能否发布HTML文件的Head元素。我想你可能会错过编码的元标记。尝试将以下内容添加到头部:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">