博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【学习笔记20】国际化
阅读量:7038 次
发布时间:2019-06-28

本文共 2222 字,大约阅读时间需要 7 分钟。

hot3.png

一、国际化

准备资源文件,资源文件的命名格式如下:
  baseName_language_country.properties
  baseName_language.properties
  baseName.properties
其中baseName是资源文件的基本名,我们可以自定义,但language和country必须是java支持的语言和国家。如:
中国大陆: baseName_zh_CN.properties
美国: baseName_en_US.properties
现在为应用添加两个资源文件:
第一个存放中文:itcast_zh_CN.properties
内容为:welcome=欢迎来到传智播客
第二个存放英语(美国): itcast_en_US.properties
内容为: welcome=welcome to itcast
对于中文的属性文件,我们编写好后,应该使用jdk提供的native2ascii命令把文件转换为unicode编码的文件。命令的使用方式如下:
native2ascii  源文件.properties  目标文件.properties

二、配置全局资源与输出国际化信息

当准备好资源文件之后,我们可以在struts.xml中通过struts.custom.i18n.resources常量把资源文件定义为全局资源文件,如下:
<constant name="struts.custom.i18n.resources" value="itcast" />
itcast为资源文件的基本名。
后面我们就可以在页面或在action中访问国际化信息:
在JSP页面中使用<s:text name="" />标签输出国际化信息:<s:text name="user" />,name为资源文件中的key
在Action类中,可以继承ActionSupport,使用getText()方法得到国际化信息,该方法的第一个参数用于指定资源文件中的key。
在表单标签中,通过key属性指定资源文件中的key,如:<s:textfield name="realname" key="user"/>

三、输出带占位符的国际化信息

资源文件中的内容如下:
welcome= {0},欢迎来到传智播客{1}
在jsp页面中输出带占位符的国际化信息
<s:text name="welcome">
  <s:param>
    <s:property value="realname"/>
  </s:param>
  <s:param>学习</s:param>
</s:text>
在Action类中获取带占位符的国际化信息,可以使用getText(String key, String[] args)或getText(String aTextName, List args)方法。

四、包范围资源文件

在一个大型应用中,整个应用有大量的内容需要实现国际化,如果我们把国际化的内容都放置在全局资源属性文件中,显然会导致资源文件变的过于庞大、臃肿,不便于维护,这个时候我们可以针对不同模块,使用包范围来组织国际化文件。
方法如下:
在java的包下放置package_language_country.properties资源文件,package为固定写法,处于该包及子包下的action都可以访问该资源。当查找指定key的消息时,系统会先从package资源文件查找,当找不到对应的key时,才会从常量struts.custom.i18n.resources指定的资源文件中寻找。

五、Action范围资源文件

我们也可以为某个action单独指定资源文件,方法如下:
在Action类所在的路径,放置ActionClassName_language_country.properties资源文件,ActionClassName为action类的简单名称。
当查找指定key的消息时,系统会先从ActionClassName_language_country.properties资源文件查找,如果没有找到对应的key,然后沿着当前包往上查找基本名为package 的资源文件,一直找到最顶层包。如果还没有找到对应的key,最后会从常量struts.custom.i18n.resources指定的资源文件中寻找。

六、JSP中直接访问某个资源文件

struts2为我们提供了<s:i18n>标签,使用<s:i18n>标签我们可以在类路径下直接从某个资源文件中获取国际化数据,而无需任何配置:
<s:i18n name="itcast">
    <s:text name=“welcome”/>
</s:i18n>
itcast为类路径下资源文件的基本名。
如果要访问的资源文件在类路径的某个包下,可以这样访问:
<s:i18n name=“cn/itcast/action/package">
  <s:text name="welcome">
  <s:param>小张</s:param>
  </s:text>
</s:i18n>
上面访问cn.itcast.action包下基本名为package的资源文件。
(本学习笔记是根据传智播客的视频教程整理而来)

转载于:https://my.oschina.net/zc741520/blog/143520

你可能感兴趣的文章
Android开发学习笔记-SharedPreferences的用法
查看>>
Thread message loop for a thread with a hidden window? Make AllocateHwnd safe
查看>>
几家SIEM
查看>>
25个超简约风格的国外酷站设计案例
查看>>
宁做创业狼,不做打工狗
查看>>
今儿开通博客咯...嘎嘎
查看>>
java在linux上始终无法用jdbc跟myql连接
查看>>
Atitit.故障排除系列-----apache 不能启动的排除
查看>>
怎样对ListView的项进行排序
查看>>
最常用的DOS命令
查看>>
如何理解并学习javascript中的面向对象(OOP) [转]
查看>>
ADB command
查看>>
IOS6屏幕旋转详解(自动旋转、手动旋转、兼容IOS6之前系统)
查看>>
你知道吗?主导2015年的网页设计趋势
查看>>
FPS游戏服务器设计的问题 【转】
查看>>
分组配置
查看>>
Objective-C 内存管理之dealloc方法中变量释放处理
查看>>
无法加载协定为“JavaWebService.UserInfoDelegate”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。...
查看>>
Java的递归算法
查看>>
JS魔法堂:元素克隆、剪切技术研究
查看>>