首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Dojo 实现站点的跨浏览器本地化支持(3)

使用 Dojo 实现站点的跨浏览器本地化支持(3)

方案一:Server 端根据浏览器设置修改 Dojo 的 locale 属性如果 Web 站点采用的是动态网页技术(如 JSP),那么在 server 端收到客户端发来的请求时,能够通过分析请求的 HTTP 头中的 Accept-language 属性获取浏览器的语言设置,并在动态生成的 HTML 页面中设置 Dojo 的 locale 属性。
此方案的处理流程如图 2 所示:
图 2. Server 端处理流程此方案示例代码如清单 6 所示:
清单 6. zh-cn 目录下的 message.js
1
2
3
4
5
6
7
8
9
...
<%
String actualLocale = ResourceBundle.getBundle("my.app.test",
    request.getLocale()).getLocale().toString().replace('_', '-');
%>
<script type="text/javascript" src="../dojo/dojo.js"
    data-dojo-config="locale: '<%=userLocale%>'">
</script>
...




在上面的代码中,JSP 代码获取 HTTP 请求中的 locale 值(由 Accept-language 决定),然后处理成 Dojo 可识别的格式,并将 dojoConfig.locale 设为此值。这样,在加载页面时,根据 dojoConfig.locale 的值来加载相应的资源文件,显示正确的语言版本。
方案二:利用 url 或 cookie 记录用户的语言选择如果 Web 站点没有采用动态网页技术,而是使用静态页面技术。在这种情况下,Client 端无法正确的获取浏览器的语言设置,Server 端也无法对静态 HTML 内容作出修改,那么便需要开发者在页面中提供语言选择的选项。当用户选择相应的语言后,浏览器通过 url 或者 cookie 记住语言选择,然后重新加载当前页面,并在加载 Dojo 之前使用 JavaScript 根据记住的语言设置修改 locale 属性。这样,在加载 Dojo 时便会使用正确的语言设置。
此方案的处理流程如下图所示:
图 3. 利用 url 或 cookie 记录用户的语言选择处理流程以 cookie 记录浏览器语言设置为例,在页面加载的开始,执行如下 JavaScript 代码来判断 cookie 中是否已经存在语言的设置。如果存在,则设置    dojoConfig.locale 为保存的值,接下来 Dojo 会下载此语言的资源文件;如果不存在,则将 dojoConfig.locale 设置为 en-us,将会默认显示英文界面。代码如清单 7 所示:
清单 7. 根据 cookie 设置 locale 属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script type="text/javascript">
function getCookie(c_name)
{
  if (document.cookie.length>0)
  {
    c_start=document.cookie.indexOf(c_name + "=")
    if (c_start!=-1)
    {
      c_start=c_start + c_name.length+1
      c_end=document.cookie.indexOf(";",c_start)
      if (c_end==-1) c_end=document.cookie.length
        return unescape(document.cookie.substring(c_start,c_end))
    }
  }
  return ""
}

if(getCookie("lang")){
  dojoConfig.locale=getCookie("lang");
}
else{
  dojoConfig.locale="en-us";
}
</script>




在页面中提供了语言选择的选项,用户选择相应的语言,会触发下面的函数。此函数会根据用户的选择设置 cookie,然后刷新页面。刷新后的页面在取出 cookie 值后设置 dojoConfig.locale,并显示正确语言的界面。代码如清单 8 所示:
清单 8. 选择语言后触发此函数设置 cookie 并刷新页面
1
2
3
4
function selectLang(language){
    dojo.cookie("lang", language, {expires: 5});
    window.location.assign("test.html");
}




通过上面的方式便完成了利用 cookie 解决 Dojo 跨浏览器本地化的实现。
利用 url 解决问题的方法与此类似。在用户选择语言设置之后,将语言设置添加到 url 中,如:
1
test.html?lang=zh-cn




这样在加载这个 url 时,先用 JavaScript 从 url 中获取 lang 的值,并将之赋给 dojoConfig.locale,便可以加载正确的语言页面。
返回列表