[置顶] Java中使用native2ascii工具处理.properties文件

  今天在学习访问国际化消息时,需要将提供中文的资源文件转化为国际化资源文件,比如中文资源文件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就可以了。

[置顶] Java中使用native2ascii工具处理.properties文件_第1张图片

二:

然后我们开始转换.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>
上面标题,输入框提示访问了国际化资源。

五:

运行结果:

[置顶] Java中使用native2ascii工具处理.properties文件_第2张图片

我们可以看出,标题,输入框提醒已经转化为国际化资源的提示信息。


你可能感兴趣的:(javaee,struts2,properties,native2ascii,国际化资源文件)