首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多语言站点:基于HTTP接受语言的显示模式

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

Stack Overflow用户
提问于 2017-06-06 21:18:01
回答 1查看 347关注 0票数 0

我正在建设一个主要面向讲普通话的观众的自助网站。但是,有一些用户想用英语浏览网站。我将有两个版本的网站,一个在主域: xyz.net和另一个作为子域在en.xyz.net。默认情况下,用户将查看xyz.net站点,因此我尝试在启动时设置一个模块,用于‘Accept- language ( not )包含以下内容的用户: zh、zh或zh-Hant (中文代码)。这个模式将是一个非常简短的弹出式,它的大意是:“寻找英语站点?在这里重定向:.”然后链接到另一个子域: en.xyz.net。

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

我有意决定不使用IP地址位置来决定哪些用户也要显示这个地址,因为中国和美国都会有用普通话访问该网站的用户。

EN

回答 1

Stack Overflow用户

发布于 2017-06-09 08:46:23

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

  1. 检查网页服务器中的Accept-Language标题,使用模板技术将“是否支持中文”信息保存到HTML响应中。
  2. 在HTML中,将上述信息分配给全局变量(window)。
  3. 加载页面后,从全局变量(window)检查上述信息。如果不支持中文,则弹出Modal。

下面是Node.js中的一个示例(使用Express框架和Nunjucks模板):

步骤1.检查Accept-Language头并将信息保存到响应中。

代码语言:javascript
复制
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.中的isChinese信息分配给window全局变量

代码语言:javascript
复制
<!doctype html>
<html>
<head>
...
<script type="text/javascript">
  window.isChinese = '{{isChinese}}';
</script>
</head>
<body>...</body>
</html>

步骤3.页面加载后的,从window中检查isChinese。如果是“假”就弹出Modal。

代码语言:javascript
复制
$(function() {
  if (window.isChinese === 'false') {
    // Popup Modal using Bootstrap.
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44399989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档