知识大全 Java程序的国际化和本地化介绍
Posted 资源
篇首语:有志者自有千计万计,无志者只感千难万难。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java程序的国际化和本地化介绍相关的知识,希望对你有一定的参考价值。
Java程序的国际化和本地化介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
本文尝试用一个简单的例子来演示在书写Java应用程序时候 怎样使之符合国际化标准 然后对其进行本地化有多么简单 当一个软件产品需要在全球范围应用的时候 得考虑在不同的地域和语言环境下面的使用情况 最简单的要求就是UI上的信息上能用本地化语言来显示 当然一个优秀的全球化软件产品关于国际化和本地化的要求远远不止于此 本文只是涉及了国际化和本地化的关于界面显示语言的一小部分 Java语言内核基于Unicode 提供了对不同国家和不同语言文字的内部支持 由于先天的原因 Java对于国际化的支持远远要比C/C++来的优越 在开始具体介绍之前 需要先介绍几个术语 i n: 就是internationalization 国际化 由于首字母 i 和末尾字母 n 间有 个字符 所以简称i n internationalization指为了使应用程序能适应不同的语言和地区间的变化而不作系统性的变化所采取的设计措施 l n: 就是localization 本地化 由于首字母 l 和末尾字母 n 间有 个字母 所以简称l n localization指为了使应用软件能够在某一特定语言环境或地区使用而加入本地特殊化部件和翻译后文本的过程 locale: 简单来说是指语言和区域进行特殊组合的一个标志 我们的例子 显示一个有一个按钮和一个菜单的Dialog窗 在不改动程序的前提下使应用程能够显示英文文字的或者中文文字的界面 注:因为仅仅作为演示用 我们的菜单栏也作为一个部件加入对话框 好象是一个Button一样 而不是通常意义上的菜单条 通常我们的程序是这样的: /** * File name: i nDemo java * Author ID: Jack at Java discuss board * Description: Shows a Dialog with a OK button and File / Exit menu */ import javax swing *; import java awt *; import java util *; public class i nDemo public static void main(String args[]) throws Exception JDialog dialog=new JDialog(); JButton btOK=new JButton(); JMenuBar menuBar=new JMenuBar(); JMenu menuFile=new JMenu(); JMenuItem menuExit=new JMenuItem(); btOK setText( OK ); menuFile setText( File ); menuExit setText( Exit ); dialog setTitle( i n Demo ); menuBar add(menuFile); menuFile add(menuExit); dialog getContentPane() setLayout(new FlowLayout()); dialog getContentPane() add(btOK); dialog getContentPane() add(menuBar); dialog setSize( ); dialog setModal(true); dialog show(); System exit( ); 我们通过修改程序来达到i n的要求 将那些和界面显示有关系的资源单独提取出来到资源文件里面 Java里面的资源文件叫做ResourceBundle 它分成两种 一种是ListResourceBundle 另一种是PropertyResourceBundle 我们这里使用ListResourceBundle 关于PropertyREsourceBundle请参阅文后的推荐阅读 当一个程序需要一些Locale相关的资源 例如字符串资源的时候 它可以从resource bundle里面将需要的本地化资源装入 需要注意的是:为了能够正确显示中文字符 程序里的部件需要选择指定字体 例如在显示中文的时候使用 MS Song 不然界面有中文字符的时候会出现没有意义的方框 请看修改过的程序和资源文件 /** * File name: i nDemo java * Author: Jack at Java discuss board * Email: * Description: Shows a Dialog with a OK button and File / Exit menu * This program made some modifications to fit the requestion of i n */ import javax swing *; import java awt *; import java util *; public class i nDemo public static void main(String args[]) throws Exception ResourceBundle res; if (args length< ) //use current locale at machine to get the resource bundle res = ResourceBundle getBundle( Res ); else res = ResourceBundle getBundle( Res new Locale(args[ ] args[ ])); JDialog dialog=new JDialog(); JButton btOK=new JButton(); JMenuBar menuBar=new JMenuBar(); JMenu menuFile=new JMenu(); JMenuItem menuExit=new JMenuItem(); Font font = new Font(res getString( FontName ) Font PLAIN ); btOK setText(res getString( OKText )); menuFile setText(res getString( FileMenuText )); menuExit setText(res getString( FileExitMenuText )); dialog setTitle(res getString( DialogTitle )); btOK setFont(font); menuFile setFont(font); menuExit setFont(font); menuBar add(menuFile); menuFile add(menuExit); dialog getContentPane() setLayout(new FlowLayout()); dialog getContentPane() add(btOK); dialog getContentPane() add(menuBar); dialog setSize( ); dialog setModal(true); dialog show(); System exit( ); /** * File name: Res_en_US java * Author: Jack at Java discuss board * Email: * Description: Resource file for i nDemo java */ import java util *; public class Res_en_US extends java util ListResourceBundle static final Object[][] contents = new String[][] OKText OK FontName Dialoginput FileMenuText File FileExitMenuText Exit DialogTitle Demo Dialog ; public Object[][] getContents() return contents; 在运行前 我们再做一个包含中文资源的资源文件 /** * File name: Res_zh_CN java * Author: Jack at Java discuss board * Email: * Description: Resource file for i nDemo java */ import java util *; public class Res_zh_CN extends java util ListResourceBundle static final Object[][] contents = new String[][] OKText 确定 FontName MS Song FileMenuText 文件 FileExitMenuText 退出 DialogTitle 演示对话框 ; public Object[][] getContents() return contents; 先运行来看看结果: //Run next mand step by step javac * java java i nDemo java i nDemo zh CN java i nDemo en US 可以看到出现了中文界面和英文界面的对话框 具体的看一下程序: 主程序i nDemo java 多了一个ResourceBundle对象 它包含了一个资源文件的信息 然后需要使用本地化资源的时候 都通过res getString(KEY)来得到相应的Locale的值 通过命令行 我们传入关于语言和国家的代码 这样在生成ResourceBundle对象的时候 可以指向相应的资源文件 如果没有指定Locale 那么在生成ResourceBundle使用的Locale是当前机器上缺省的区域和语言 在我的机器上(English WindowsNT ) 打开Richwin中文平台的时候 缺省的locale是中国 关闭RichWin的时候 Locale是U S 资源文件Res_en_US java里面包含了英文的界面资源 文件名里的 en 指英语语言 US 指国家是美国 Res_zh_CN java是中文的资源文件 zh 说明语言是中文 CN 说明国家是中国 关于语言和国家的完整对照表可以在参考资源里找到链接 Res_xx_XX类是从ListResourceBundle继承而 cha138/Article/program/Java/hx/201311/26670相关参考
知识大全 Java 国际化和本地化 Toolkit 2.0(上)
Java国际化和本地化Toolkit2.0(上) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
如何将Java应用程序本地编译为EXE 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 从获得一个
将Java应用程序本地编译为EXE的几种方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 从获
struts是一个MVC框架像Java和其他Java框架一样struts可以轻松实现国际化于是根据网上的资料做了一个尝试因为第一次做多语言程序还是拐了很多弯路但所幸经过不断的尝试终于成功的实现多语
Java技巧:使用Runtime.exec重定向本地程序调用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
Java ThereareoversionsoftheJavaDevelopmentKit(JDK)installed ThefirstisthestandardJavaxversio
Java动态程序设计——反射介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java动态程序
使用Eclipse调试Java程序的代码介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
Java调度器为Java程序提供了一个命令行调试环境它既可在本地也可在与远程的解释器的一次对话中执行 jdb于本地机器中可用如下的命令启动 C:\\>jdbclassname
Java本身就支持多国语言编码不需要写任何程序可以很简单的实现秘诀就是两点 所有HTML/JSP页面全部采用UTF编码 客户端浏览器完全支持UTF编码 步骤 首先把所有的HTM