JavaSE的MV模式(国际化)

开发 后端
Java 作为一个跨平台的东西,如果想着自己的产品推向世界, Java 实现国际化,在现在现在编程工程上是必不可少的了。

一、简介

国际化( internationalization )是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素。换言之, 应用程序 的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。

Java 作为一个跨平台的东西,如果想着自己的产品推向世界, Java 实现国际化,在现在现在编程工程上是必不可少的了。

另外:

再说,很多童鞋都说我们缩写的应用软件都基本谈不上国际化,基本能在国内使用已经很了不起了。

我得反驳下这一个说法。

大家都熟知的我们在写 web 项目的时候通常都在使用 MVC 模式的开发,为什么 ~ ,那是具有一个巨大的有点,功能应用,图形显示,逻辑结构都分开了,利于维护,利于分工。

那么我们就应该想到,如果这一个模式也应用的 JavaSE 上面的画,我们之前所学的东西不都具有这些优点了吗?不能说完全的是,也不能说完全的没有。

做过 android 项目开发的童鞋相对都有那么一定的经验。写每一个 activity 的时候,基本都要在 string 中载入他们每一个控件所对应的值。

好,那我们就看看在 JavaSE 上面的具体操作把。大家感受感受。

二、国际化的步骤

1 、实现国际的程序

2 、实现国际化的参数文件 property

3 、装载 properties

4 、装载对应的 key

三、具体实现

1 、实现国际的程序

先写一个简单的 JavaSE 程序,由于这个相对与本文不是重点,这个就不罗嗦了。

2 、实现国际化的参数文件 property

简单说明: property 文件 就是一个数据信息的文件,

具体为格式为: 参数 = 对应值

有点类似我们的 map 对应关系

比如我们已经实现了一个 Properties

En.properties

内容为:

Java代码

  1. title = english     
  2.     
  3. button  = my_button     
  4.     
  5. logo = bin/qq.gif  

 

3 、装载 properties

在我们的程序中载入就可以

Java代码

  1. Properties prop ;//设置文件     
  2.     
  3.     
  4.     
  5. /**    
  6.    
  7.  * 构造方法,载入properties    
  8.    
  9.  */    
  10.     
  11. public international(){     
  12.     
  13.     prop = new Properties();// 属性集合对象      
  14.     
  15.     FileInputStream fis = null;     
  16.     
  17.         
  18.     
  19.    try {     
  20.     
  21.        fis = new FileInputStream("src/en.properties");     
  22.     
  23.        prop.load(fis);//载入     
  24.     
  25.        fis.close();// 关闭流      
  26.     
  27.    } catch (Exception e) {     
  28.     
  29.        e.printStackTrace();     
  30.     
  31.    }     
  32.     
  33. }    

#p#

4 、装载对应的 key

Java代码

  1. /**    
  2.      * 显示界面    
  3.      */    
  4.     public void showUI(){     
  5.     
  6.        //设置大小     
  7.     
  8.        this.setSize(400,300);     
  9.     
  10.        this.setTitle(prop.getProperty("title","中文"));//设置默认值为"中文"     
  11.     
  12.        this.setLayout(new java.awt.FlowLayout());     
  13.  
  14.        javax.swing.JButton jb =  new javax.swing.JButton(prop.getProperty("button","我的按钮"));//设置默认值为"我的按钮"     
  15.     
  16.        this.add(jb);     
  17.  
  18.        javax.swing.JLabel logo  = new javax.swing.JLabel();     
  19.     
  20.        logo.setIcon(new ImageIcon(prop.getProperty("logo","bin/360.png")));     
  21.     
  22.        this.add(logo);     
  23.     
  24.        this.setVisible(true);     
  25.     
  26.     }    

 

好我们看看装载前,装载后的效果。

即,将步骤 1 注释后,和没有注视的效果

注释后:

 

 

没注释:

 

 

当然 , 如果我们载入的是一个鸟语的话 ,

即 :

写好鸟语的 properties 文件

Java代码

  1. title = bird languange     
  2.     
  3. button  = bird_button     
  4.     
  5. logo = bin/bird.jpg  

 

只需将

Java代码

  1. fis = new FileInputStream("src/en.properties");  

 

改为 :

Java代码

  1. fis = new FileInputStream("src/bird.properties");  

 

即可

 

 

四、分析

显然,这么以来,逻辑结构和视图结构基本就能分开了。版本翻译,维护,分工相对以前都比较方便了。同一个模式的来学习 , 现在的主流模式 , 之后学习 web,android 什么的 , 都会相对于比较方便了 .

【编辑推荐】

  1. Java ME没有死 它只是退居二线了
  2. 浅谈Java SE、Java EE、Java ME三者的区别
  3. 过山车式的经历 Windows Mobile未来何去何从
  4. iPhone软件开发完美起步
  5. 月入40万 iPhone中文应用程序开发者访谈
责任编辑:金贺 来源: ITEYE博客
相关推荐

2015-03-13 09:50:46

2011-07-08 11:13:42

Cocoa Touch XCode

2011-08-29 09:48:30

springMVC

2010-03-02 16:44:59

CentOS Mono

2010-07-28 14:52:29

Flex国际化

2024-01-17 10:16:22

前端国际化消息键

2023-01-31 10:29:26

JavaScript国际化国际化库

2009-06-25 16:04:30

2010-01-04 13:09:51

Silverlight

2011-08-19 13:13:14

struts2Java

2009-01-19 09:06:31

gettextPHP国际化编程

2009-06-03 08:30:30

禚佳春法航华为

2024-01-04 08:16:34

Spring国际化标准

2009-02-04 15:04:13

2009-12-29 15:05:29

WPF支持国际化

2017-01-09 16:24:07

滴滴Android 端 App

2022-07-27 10:39:14

Spring代码IDEA

2011-07-20 14:53:28

iPhone NSLocalize 国际化

2011-08-18 15:24:40

iPhone国际化

2018-07-31 09:43:00

数据中心
点赞
收藏

51CTO技术栈公众号