mrb*_*lah 8 javascript multilingual jquery
我的Web应用程序使用了大量的javascript,在javascript中我有消息,我向用户报告.
从我的javascript中提取文本并将其外部存储在另一个.js语言文件中的最佳方法是什么,我将如何在我的js代码中引用它?
这方面的最佳做法是什么?
cll*_*pse 17
创建一个对象文字:
var messages = {
welcome: "Welcome",
goodbye: "Goodbye",
error: "Something bad happend. Sowwy!"
};
Run Code Online (Sandbox Code Playgroud)
然后您可以参考,如下所示:
if (error) alert(messages.error);
Run Code Online (Sandbox Code Playgroud)
如果要实现多种语言,这非常有用.我通常做的是包括一个服务器端文件,它根据在应用程序配置中选择的任何语言或根据UI文化(在ASP.NET的情况下)呈现"消息"对象.
以下是您如何使用它,在线:
<head>
<!-- messages.aspx renders out the object literal -->
<script type="text/javascript" src="messages.aspx"></script>
<script type="text/javascript">
/* when messages.aspx is included it provides you with an object literal
as a global variable. The example below would alert "Something bad
happend. Sowwy!" */
if (error) alert(messages.error);
</script>
</head>
Run Code Online (Sandbox Code Playgroud)
使用对象文字的巧妙之处在于代码更加冗长.而不是使用像这样的数组:alert(messages[0])你这样做:alert(messages.error)这是更具说明性.
另请注意:所有消息都在一个对象中定义,而不是由一堆变量定义,从而避免污染全局命名空间.
在JavaScript中,您可以在运行时修改对象.因此,如果您想在对象中添加更多消息,稍后在代码中,您只需执行以下操作:
messages.newMessageAddedLaterOnInTheCode = "This is a new message";
Run Code Online (Sandbox Code Playgroud)
我看到其他人告诉你如何将它存储在JS文件中(如你所知).但我可以建议您将其存储在XML文件中吗?它更容易管理(IMO).
创建一个XML文件,其条目如下:
<text id="welcome_to_site">Welcome to our site!</text>
<text id="come_back_soon">Come back soon!</text>
Run Code Online (Sandbox Code Playgroud)
然后,您可以轻松获取常规JS/jQuery中所需的所有文本:
var text = new Object();
$.ajax({
async: false,
type: 'GET',
url: 'text.xml',
dataType: "xml",
success: function(xml){
$(xml).find('text').each(function(){
text[$(this).attr('id')] = $(this).text();
});
}
});
Run Code Online (Sandbox Code Playgroud)
并且要调用一些文本,它就像这样简单:
alert(text['welcome_to_site']);
您可以随时在XML文件中轻松更改它:添加文本,删除文本,编辑文本.这很简单.它还有助于分离您的设计并为您打开大门,允许其他人编辑文本,如果他们必须通过一堆JavaScript进行排序,则可能无法进行编辑.
| 归档时间: |
|
| 查看次数: |
9422 次 |
| 最近记录: |