信息绑定与国际化
来源:互联网 发布:昌吉有4g网络吗 编辑:程序博客网 时间:2024/05/15 23:49
使用ResourceBundle
在程序中有很多字符串信息会被写在程序中,如果要改变某个字符串信息,则必须修改程序代码然后重新编译。对于日后可能变动的文字信息,可以考虑将信息移至程序之外,方法是使用 java.util.ResourceBundle 来做信息绑定。
第一步,准备一个properties文件 message.properties
onlyfun.caterpillar.welcome=Helloonlyfun.caterpillar.name=World
第二步,使用ResourceBundle来读取信息
package com.xiaofan.demo.localize;import java.util.ResourceBundle;public class ResourceBundleDemo { public static void main(String[] args){ ResourceBundle resource = ResourceBundle.getBundle("com/xiaofan/demo/localize/message"); System.out.println( resource.getString("onlyfun.caterpillar.welcome")); System.out.println( resource.getString("onlyfun.caterpillar.name")); }}
在编写.properties文件内容时,键的名字前通常加上单位、产品、模块等信息,这样在信息增多时可以有效减少重复键名的冲突问题。
国际化信息
国际化的英文是 internationalization ,因为共18个字母,所以简称 I18N 。国际化的目的是让应用程序可以依地区不同而显示不同的信息,最基本的就是让不同语系的用户可以看到属于自己语系的信息。
在java中,用 java.util.Locale 类来表示一个区域,一个Locale实例包括了语系信息和区域信息。如 en 表示英语语系的国家, 而区域信息则如 US 表示美国。
Locale locale = new Locale( "zh", "CN");
当使用java.util.ResourceBundle.getBundle()方法时,默认就会自动取得计算机上的语系与区域信息,而事实上信息文件的名称由 basename 加上语系与地区来组成的。如上述的实例,则
- message.properties
- message_zh.properties
- message_en.properties
当没有提供专用的语系、区域信息文件时,就会寻找默认的资源文件,如上述 ResourceBundleDemo.java 中由于没有提供中文语系文件,所以读取的是默认文件。
由于资源文件必须是 ISO-8859-1 编码,所以对于非西方语系的处理,必须将之转换为 Java Unicode Escape 格式。如果使用Eclipse继承开发工具,则没有这个问题。下面介绍使用jdk的工具 native2ascii 来转换:
第一步,首先创建message_zh.txt文件,注意编码格式(如gb2312,utf-8)
onlyfun.caterpillar.welcome=哈喽onlyfun.caterpillar.name=世界
第二步,使用JDK工具程序 native2ascii 来转换(上面我用的是utf-8编码)
native2ascii -encoding utf-8 message_zh.txt message_zh.properties
转换好的文件内容如下:
第三步,创建message_en.properties文件
onlyfun.caterpillar.welcome=Helloonlyfun.caterpillar.name=World
第四步,使用ResourceBundle来读信息
package com.xiaofan.demo.localize;import java.util.Locale;import java.util.ResourceBundle;public class I18NDemo { public static void main(String[] args){ ResourceBundle resource = null; Locale locale = null; resource = ResourceBundle.getBundle("com/xiaofan/demo/localize/message"); System.out.println( resource.getString("onlyfun.caterpillar.welcome")); System.out.println( resource.getString("onlyfun.caterpillar.name")); locale = new Locale( "zh", "CN" ); resource = ResourceBundle.getBundle("com/xiaofan/demo/localize/message", locale); System.out.println( resource.getString("onlyfun.caterpillar.welcome")); System.out.println( resource.getString("onlyfun.caterpillar.name")); locale = new Locale( "en", "US" ); resource = ResourceBundle.getBundle("com/xiaofan/demo/localize/message", locale); System.out.println( resource.getString("onlyfun.caterpillar.welcome")); System.out.println( resource.getString("onlyfun.caterpillar.name")); }}
经过以上简单步骤,信息绑定与国际化也就完成了,一切显得那么的方便。最后,附上文件目录截图:
- 信息绑定与国际化
- Struts2_国际化、配置全局资源与输入国际化信息
- MFC 自定义控件 ID与信息绑定
- 创建手机信息页面(国际化和样式与主题)
- Struts2的国际化、配置全局资源与输出国际化信息、国际化—JSP中直接访问某个资源文件
- 信息的国际化
- struts2信息国际化
- 国际化信息-->MVC
- 提示信息国际化配置
- Struts2配置国际化信息
- Sping国际化信息
- SpringMVC 国际化信息校验
- Java国际化资源绑定-----示例
- 国际化全局资源文件输出国际化信息
- 国际化与Struts2的国际化
- 如何把树与数据库的信息进行绑定
- ListView的数据绑定与点击事件读取信息
- Spring security异常信息国际化
- iOS7后台机制大解析
- 【Android】app 启动 白屏 黑屏解决方案
- redis学习及实践5---redis相关资料参考文献
- 设计模式
- 小根堆
- 信息绑定与国际化
- Zoho CRM更新—集成Google AdWords、增加社交媒体管理、改进呼叫中心
- Sum Problem -- hdu acm 1001
- va_list简介
- 教学平台功能与子系统
- 8个开发技巧助你薪水更上一层楼
- 64位oracle数据库安装32位plsql解决方法/关于win7 x64 连接oracle 客户端 VS2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
- 微软开放技术热烈祝贺开源社成立!
- Android 自定义Action Button