【问题标题】:how to create a language file for text in javascript files?如何为javascript文件中的文本创建语言文件?
【发布时间】:2009-10-27 02:10:37
【问题描述】:

我的 Web 应用程序使用了分配的 javascript,并且在 javascript 中我有我向用户报告的消息。

从我的 javascript 中提取文本并将其外部存储在另一个 .js 语言文件中的最佳方法是什么,以及我将如何在我的 js 代码中引用它?

有什么最佳实践吗?

【问题讨论】:

    标签: javascript jquery multilingual


    【解决方案1】:

    创建一个对象字面量:

    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";
    

    【讨论】:

      【解决方案2】:

      我看到其他人已经告诉你如何将它存储在 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 进行排序。

      【讨论】:

        【解决方案3】:

        一种方法是在您的页面中包含一个单独的 js,它实际上指向一个服务器端脚本。然后,此脚本可以像这样回显您需要的字符串:

        var STRINGS = {'greeting': "Hello", 'error': "Something went wrong"};
        

        在你的网页中有这个:

        我们在这里为http://addons.mozilla.org 执行此操作:http://addons.mozilla.org/en-US/firefox/pages/js_constants.js

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-10-20
          • 2011-02-25
          • 1970-01-01
          • 1970-01-01
          • 2016-01-01
          • 2014-07-19
          • 1970-01-01
          相关资源
          最近更新 更多