“如何支持国际化设置”这个标题不知道合适不合适,姑且这么叫吧。
好多网站都提供了语言的选择,如google,觉得比较人性化,就在seam中寻找了一下相关课题,学习了一下。
具体实现方法如下(使用的工程是“JBoss Seam从头学到脚之2---创建工程”中的helloworld工程):
1:把messages_en.properties文件复制一下,把复制的副本改个名字叫messages_zh_CN.properties,这是为了实现中文,这个文件在helloworld/src下面。
2:在messages_zh_CN.properties文件里面添加一个property,Name是ChangeLanguage,对应的value是“多国语言设置”;
3:在messages_en.properties文件里面添加一个property,Name是ChangeLanguage,对应的value是“Change Language”;
4:修改faces-config.xml文件,修改后的内容如下
<?xml version="1.0" encoding="UTF-8"?> <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2"> <application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> <locale-config> <default-locale>en</default-locale> <supported-locale>en</supported-locale> <supported-locale>zh_CN</supported-locale> </locale-config> </application> </faces-config>
5:我把这个功能加到login.xhtml文件中,在这个文件的form里,追加如下内容:
…… …… xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" …… …… <f:loadBundle basename="messages" var="msgs"/> <h:selectOneMenu value="#{localeSelector.localeString}"> <f:selectItems value="#{localeSelector.supportedLocales}"/> </h:selectOneMenu> <h:commandButton action="#{localeSelector.select}" value="#{msgs['ChangeLanguage']}"/> …… ……
---update on 2009/01/14 "#{msgs['ChangeLanguage' ]}"中的msgs是前面定义好的变量, 这里也可以不用事先定义, 而直接用默认的messages也可以,即"#{messages['ChangeLanguage']}"。 |
6:然后启动jboss server,访问地址是http://localhost:8080/helloworld/login.seam,具体图示如下:
END