Jquery 多语言站点:基于HTTP接受语言的显示模式

Jquery 多语言站点:基于HTTP接受语言的显示模式,jquery,twitter-bootstrap,http,multilingual,Jquery,Twitter Bootstrap,Http,Multilingual,我正在建设一个自助网站,主要面向讲普通话的观众。然而,有百分之几的用户希望用英语浏览网站。我将有两个版本的网站,一个在主域名:xyz.net,另一个作为子域名在en.xyz.net。默认情况下,用户将查看xyz.net站点,因此我试图为HTTP“Accept Language”(接受语言)不包含以下内容的用户设置一个模式:zh、zh-Hans或zh-Hant(中文代码)。此模式将是一个非常简短的弹出窗口,它大致说明以下内容: “正在查找英文站点?重定向到此处:…”然后将链接到另一个子域:en.x

我正在建设一个自助网站,主要面向讲普通话的观众。然而,有百分之几的用户希望用英语浏览网站。我将有两个版本的网站,一个在主域名:xyz.net,另一个作为子域名在en.xyz.net。默认情况下,用户将查看xyz.net站点,因此我试图为HTTP“Accept Language”(接受语言)不包含以下内容的用户设置一个模式:zh、zh-Hans或zh-Hant(中文代码)。此模式将是一个非常简短的弹出窗口,它大致说明以下内容: “正在查找英文站点?重定向到此处:…”然后将链接到另一个子域:en.xyz.net

动态显示此模式的最佳方法是什么


我特意决定不使用IP地址位置作为决定哪些用户显示此信息的手段,因为在中国和美国都会有用户使用普通话访问该网站

要动态显示模式,可以检查以下步骤:

  • 检查web服务器中的
    Accept Language
    标题,使用模板技术将“是否支持中文”信息保存到HTML响应中
  • 在HTML中,将上述信息分配给全局变量(
    window
  • 加载页面后,从全局变量(
    窗口
    )检查上述信息。如果不支持中文,则弹出模式
  • 下面是Node.js中的一个示例(使用Express framework和Nunjucks模板):

    步骤1。检查
    接受语言
    标题并将信息保存到响应

    function isChineseAccepted(acceptLanguages) {
      // check whether zh, zh-CN or zh-Hans etc is accepted, return true or false accordingly.
    }
    
    router.get('/sample-page', function(req, res) {
      var acceptLanguages = req.get('Accept-Language');
      var isChinese = isChineseAccepted(acceptLanguages);
      res.render('views/sample-page', {
        isChinese: isChinese
      });
    });
    
    步骤2。在HTML中,将
    isChinese
    信息分配给
    窗口
    全局变量

    <!doctype html>
    <html>
    <head>
    ...
    <script type="text/javascript">
      window.isChinese = '{{isChinese}}';
    </script>
    </head>
    <body>...</body>
    </html>
    
    $(function() {
      if (window.isChinese === 'false') {
        // Popup Modal using Bootstrap.
      }
    });