今天在学习访问国际化消息时,需要将提供中文的资源文件转化为国际化资源文件,比如中文资源文件jubu.properties转化为国际化资源文件jubu_zh_CN.properties,书上仅说了一句用,使用native2ascii处理(忍不住吐槽,我压根就不知道这是什么鬼,更别提怎么转换。)而且网上查了一天,很是郁闷,因此。在这里说一下。
一:
首先,可能有部分人,遇到新建的xxx.properties文件无法写入中文属性:
比如我们在jubu.properties 中写入
loginPage=登录界面 他会显示:loginPage=\u767b\u5f55\u754c\u9762
解决方案:
这是因为eclipse的.properties文件,默认的编码方式是iso-8859-1.所以中文显示有问题。按照下面的方式,把Default Encoding修改成UTF-8就可以了。
二:
然后我们开始转换.properties文件.
我们的jubu.properties内容如下
loginPage=登录界面
username=用户名
首先我们确定我们的.properties文件所在位置:
F:\JavaEE\workspace\OGNLDemo1\WebContent\WEB-INF\src
然后打开cmd以管理员身份运行,找到相应的src文件夹下:
这样就可以将我们提供的中文资源文件转换为国际化资源文件(编码方式为UTF-8)并且命名为jubu_zh_CN.properties.
这里说一下:
native2ascii的命令行的命名格式:
native2ascii -[options] [inputfile [outputfile]]
说明:
-[options]:表示命令开关,有两个选项可供选择
-reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。
-encoding encoding_name:转换为指定编码,encoding_name为编码名称。
[inputfile [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台。
再看我们的src文件夹下,文件已经生成:
三:
然后通过struts.xml配置文件加载国际化文件:
<constant name="struts.custom.i18n.resources" value="jubu"></constant>value指定国际化文件的baseName。
四:
Struts2访问国际化资源文件的三种方式:
表单通过<s:text name=""/>访问全局化文件,name对应文件中的key。
Action中可以通过ActionSupport的getText()方法,方法接受一个name属性,对应国际化文件的key。
Label标签 可以指定key属性 对应文件的key属性。
然后我们通过表单的<s:text name=""/>访问全局化文件:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title><s:text name="loginPage"></s:text></title> </head> <body> <s:fielderror/> <h2>局部类型转换器</h2> <s:form action="jubuLogin"> <s:text name="username"/><s:textfield name="user"/> <s:submit value="转换"></s:submit> </s:form> </body> </html>上面标题,输入框提示访问了国际化资源。
五:
运行结果:
我们可以看出,标题,输入框提醒已经转化为国际化资源的提示信息。