top
Loading...
Java多國語言問題解決方案
天極IT資訊短信服務 電腦小技巧
介紹:細處著手,巧處用功。高手和菜鳥之間的差別就是:高手什么都知道,菜鳥知道一些。電腦小技巧收集最新奇招高招,讓你輕松踏上高手之路。(首月免費)

摘要:本文主要論述了在Web環境下如何用Java語言編程解決程序的多國語言問題。

關鍵字:java 多國語言 解決方案

隨著經濟全球化的發展,產生了眾多的跨國公司,而Java語言的出現以及網絡通訊技術的飛速發展,使企業僅購買一套基于web的企業級應用軟件(比如說:OA系統,ERP系統、CRM等),通過網絡就能滿足整個集團共同使用該軟件成為可能。既減少了軟件費用,又縮短了信息延遲,提高了企業運作效率。但因為應用系統是面向多個國家,多種語言的,所以在設計軟件時就不得不解決國際化(internationalization)問題,國際化的程序應支持多國語言,不同格式的日期、時間、貨幣和其它值,還有操作界面的風格、界面個性化定制等問題.,本文著重論述多國語言的解決方案:

Java語言是一種面向對象的語言,所以可以生成一個國際化的軟件包,使由系統自動根據區域及語言設置的屬性進行判斷成為可能。

解決方案主要有兩種:

一是利用Java本身提供用于解決國際化問題的軟件包當中的ResourceBundle及其子類,處理在Java類中或是property文件中定義的參數;二是自定義一個類進行存取,把相應參數放在數據庫或是屬性文件中。

一、 利用Java類包:

1、根據系統默認的語言設置讀取參數值的類Resource:

package i18n.article;
import java.io.*;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Locale;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;

/**
* <p>Title:多國語言的后臺實現類 </p>
* <p>Description: 根據屬性文件及區域與語言設置,得到對應的語言</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: Timer Corporation</p>
* @author:宋兆輝
* @version 1.0
*/

public class Resource {

private static final String HEAD_FILE = "ATTR"; //屬性文件名的前綴
private static final String LAST_FILE=".properties"; //屬性文件名的后綴
private static final String FILE_PATH="c://"; //定義屬性文件存放的目錄

public Resource() {
}
/*以下是根據傳入的屬性文件中的"鍵",而得到與區域與語言設置相對應的"值"*/

public synchronized String srcStr(String disStr) {
String ret = "";
try {

Locale locale = Locale.getDefault(); //獲取系統的區域與語言默認設置
System.out.println("");
String baseName = new StringBuffer()
.append(HEAD_FILE).append("_").append(locale.toString())
.append(LAST_FILE).toString(); //根據local屬性,前綴以及后綴生成文件名

String fileName = new StringBuffer(FILE_PATH).append(baseName)
.toString(); //獲取文件的完整路徑

InputStream is = new FileInputStream(fileName); //生成文件輸入流
PropertyResourceBundle pr = new PropertyResourceBundle(is); //根據輸入流構造PropertyResourceBundle的實例
ret = pr.getString(disStr);
if(locale.equals(Locale.CHINA)){
ret = new String(ret.getBytes("ISO-8859-1"),"GB2312");
} //如果是要顯示中文,則要進行內碼的轉換
is.close();
return ret;
}
catch (Exception e) {
e.printStackTrace();
return disStr;
}
}
}

2、對應的properties文件:ATTR.properties和ATTR_zh_CN.properties

(1)ATTR_en_US.properties:

LoginName=login name
Password=password
Login=login
LoginTime=loginTime
LogOff=logout
ChineseVersion=English Version
MainPage=home
SoftWare=softWare
Hardware=Hardware
YourLocationMainPage=YourLocationMainPage
MyCalendar=MyCalendar
MyMails=MyMails
R&D=R&D
Forum=Forum
DeveloperProcess=DeveloperProcess
TechnologyCommunion=TechnologyCommunion

(2)ATTR_zh_CN.properties:

LoginName=用戶
Password=密碼
Login=登陸
LoginTime=登陸時間
LogOff=注銷登陸
ChineseVersion=中文版
MainPage=首頁
SoftWare=軟件
Hardware=硬件
YourLocationMainPage=當前位置:首頁
MyCalendar=我的日程
MyMails=我的郵件
R&D=研發區
Forum=討論區
DeveloperProcess=開發進程
TechnologyCommunion=技術交流
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗