JavaSE 的MV模式(国际化)

 

JavaSE MV 模式(国际化)

一、简介

国际化( 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

内容为:

 

title = english

button  = my_button

logo = bin/qq.gif
 

 

 

3 、装载 properties

 

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

 

    Properties prop ;//设置文件

   

    /**

     * 构造方法,载入properties

     */

    public international(){

        prop = new Properties();// 属性集合对象 

        FileInputStream fis = null;

       

       try {

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

           prop.load(fis);//载入

           fis.close();// 关闭流 

       } catch (Exception e) {

           e.printStackTrace();

       }

    }
 

 

4 、装载对应的 key

  

/**

     * 显示界面

     */

    public void showUI(){

       //设置大小

       this.setSize(400,300);

       this.setTitle(prop.getProperty("title","中文"));//设置默认值为"中文"

       this.setLayout(new java.awt.FlowLayout());

   

       javax.swing.JButton jb =  new javax.swing.JButton(prop.getProperty("button","我的按钮"));//设置默认值为"我的按钮"

       this.add(jb);

      

       javax.swing.JLabel logo  = new javax.swing.JLabel();

       logo.setIcon(new ImageIcon(prop.getProperty("logo","bin/360.png")));

       this.add(logo);

      

       this.setVisible(true);

    }
 

 

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

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

 

注释后:


JavaSE 的MV模式(国际化)

没注释:
JavaSE 的MV模式(国际化)

 

 

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

:

写好鸟语的 properties 文件

 

title = bird languange

button  = bird_button

logo = bin/bird.jpg
 

 

 

只需将

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

 

改为 :

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

 

即可


JavaSE 的MV模式(国际化)

 

 

四、分析

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

       附件中贴上自己的拙劣代码 .