国际化支持也叫多语言支持,它是通过资源文件来实现的。整个过程包含了创建资源文件、创建模板、编写代码三个步骤。
创建资源文件
资源文件必须满足如下要求:
1)资源文件可以随意命名,但必须放在Classpath所能搜索到的路径下,例如classes/demo/resource.ini。
2)资源文件必须是UTF-8编码的文件。这和java里面的resourcebundle、properites文件不太一样,java里面的文件编码是Ansi编码,对于双字节的字符必须用“/uxxxx”的方式来表示。而Webshap为了方便资源文件的查看和编辑,统一使用UTF-8编码。可以用记事本创建好资源文件,然后另存为UTF-8格式即可。
3)资源文件由多个资源项组成,每个资源项占一行,格式为“Name=Value”,类似Windows 的INI文件。
创建模板
模板文件用到了资源变量,资源变量是以“#”开头的变量,例如 <h3>{%#Title%}</h3>,这个Tilte就是资源项中的“Name”,而最终输出结果就是资源项中的“Value”。
编写代码
模板中虽然定义了各个资源变量,但没有指定使用哪一个资源文件,这需要编码来动态指定。如下代码,只要在Webshap的render(resrouce)函数中指定资源文件的路径,则自动加载此资源文件,并给模板中可以匹配的上的资源变量赋予资源文件里面的内容。
Websharp ws = new Websharp("resource.htm", charset, request, response);
……
ws.render("demo/resource.ini" );
在实际的开发中,我们会创建多个语言的资源文件,例如resource_cn.ini 、resource_en.ini分别代表中文和英文,然后在程序中动态判断当前需要调用哪个资源文件,最终实现一套代码,多种语言界面。
示例
1)用记事本创建资源文件classes/demo/resource.ini,添加如下的两行数据,然后另存为UTF-8编码的文件。
Title=Websharp Resource Test Copyright=Copyright 2005-2008 Coolmasoft |
2)创建模板文件resource.htm,包含如下内容。“Title”和“Copyright”两个资源变量可以在上面的资源文件中找到。
<html>
<body>
<h3>{%#Title%}</h3>
<p>Hello ,welcome to websharp world!</p>
<hr>
{%#Copyright%}
</body>
</html>
3)创建和resource.htm同目录的resource.jsp:
<%@ page language="java" pageEncoding="UTF-8"%> <%@ page import="websharp.core.*,websharp.web.*,websharp.util.*"%> <% Websharp websharp = new Websharp("resource.htm", "UTF-8", request, response); websharp.render( "demo/resource.ini"); %> |
运行结果如下,可以看到资源文件里面的内容已经自动输出了。