【发布时间】:2009-10-27 02:10:37
【问题描述】:
我的 Web 应用程序使用了分配的 javascript,并且在 javascript 中我有我向用户报告的消息。
从我的 javascript 中提取文本并将其外部存储在另一个 .js 语言文件中的最佳方法是什么,以及我将如何在我的 js 代码中引用它?
有什么最佳实践吗?
【问题讨论】:
标签: javascript jquery multilingual
我的 Web 应用程序使用了分配的 javascript,并且在 javascript 中我有我向用户报告的消息。
从我的 javascript 中提取文本并将其外部存储在另一个 .js 语言文件中的最佳方法是什么,以及我将如何在我的 js 代码中引用它?
有什么最佳实践吗?
【问题讨论】:
标签: javascript jquery multilingual
创建一个对象字面量:
var messages = {
welcome: "Welcome",
goodbye: "Goodbye",
error: "Something bad happend. Sowwy!"
};
然后您可以参考,如下所示:
if (error) alert(messages.error);
如果您想实现多种语言,这非常有用。我通常做的是包含一个服务器端文件,该文件根据应用程序配置中选择的任何语言或根据 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>
使用对象字面量的好处是代码更加冗长。而不是使用数组,像这样:alert(messages[0]) 你这样做:alert(messages.error) 这更容易解释。
附带说明:您的所有消息都定义在一个对象中,而不是由一堆变量定义,从而避免污染全局命名空间。
在 JavaScript 中,您可以在运行时修改对象。因此,如果您想向对象添加更多消息,稍后在您的代码中,您只需这样做:
messages.newMessageAddedLaterOnInTheCode = "This is a new message";
【讨论】:
我看到其他人已经告诉你如何将它存储在 JS 文件中(如你所问)。但是我可以建议您将其存储在 XML 文件中吗?它更容易管理(IMO)。
创建一个 XML 文件,其条目如下:
<text id="welcome_to_site">Welcome to our site!</text>
<text id="come_back_soon">Come back soon!</text>
然后您可以轻松地在常规 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();
});
}
});
要调用一些文本,就这么简单:
alert(text['welcome_to_site']);
您可以随时在 XML 文件中轻松更改它:添加文本、删除文本、编辑文本。这很简单。它还有助于分离您的设计,并为您打开大门以允许其他人编辑文本,否则他们可能无法通过一堆 JavaScript 进行排序。
【讨论】:
一种方法是在您的页面中包含一个单独的 js,它实际上指向一个服务器端脚本。然后,此脚本可以像这样回显您需要的字符串:
var STRINGS = {'greeting': "Hello", 'error': "Something went wrong"};
在你的网页中有这个:
我们在这里为http://addons.mozilla.org 执行此操作:http://addons.mozilla.org/en-US/firefox/pages/js_constants.js
【讨论】: