java學習之路----java類庫---程式國際化
國際化是開發中比較常見的一種要求
1.國際化實現思路
比如,一個程式要求可以同時實現英語,法語,漢語的顯示
思路:
可以根據不同的語言配置不同的資原始檔(資原始檔有時也稱屬性檔案,其字尾名.properties),所以資原始檔是以key--value(鍵值對)的形式出現,只要找到了key,就找到了value。
想要實現Java程式的國際化,必須通過以下三個類實現
.java.util.Locale;用於表示一個國家的語言類
.java.util.ResourceBundle;用於訪問資原始檔
.java.txt.MessageFormat;格式化資原始檔的佔位字位符
具體流程如下:
Locale來指定區域碼---->ResourceBundle根據Locale提供的區域碼找到相應的資原始檔--->如果資原始檔中存在動態文字,則用MessageFormat來格式化
2.Locale類
locale的構造方法:
public Locale(String language)//根據語言程式碼來構造一個語言環境
public Locale(String language,)//根據語言和國家來構造一個語言環境
3.ResourceBundle類
程式碼:
在寫程式碼之前首先寫一個資原始檔
Message.properties
public class InterDemo
{
public static void main(String[]
args) {
ResourceBundle rb=ResourceBundle.getBundle( "Message"); //找到資源
System. out .println("資源" +rb.getString( "info"));
}
}
結果:
資源Hello
4.java國際化程式的實現
第一步:配好屬性檔案
中文:Message_zh_CN
內容:info= \u4f60\u597d
這裡的文字需要轉碼:你可以用native2ascii.exe來進行轉碼
英文:Message_en_US
內容:info=Hello
法文:Message_fr_FR
內容: info=Bonjour
public class InterDemo2
{
public static void main(String[]
args) {
Locale zhLoc= new Locale("zh" ,"CN" );//表示中國地區
Locale enLoc= new Locale("en" ,"US" );//表示美國地區
Locale frLoc= new Locale("fr" ,"FR" );//表示法國地區
//找到中文的屬性檔案
ResourceBundle zhrb=ResourceBundle.getBundle( "Message",zhLoc);
//找到英文的屬性檔案
ResourceBundle enrb=ResourceBundle.getBundle( "Message",enLoc);
//找到法文的屬性檔案
ResourceBundle frrb=ResourceBundle.getBundle( "Message",frLoc);
System. out .println("中文:" +zhrb.getString( "info"));
System. out .println("英文:" +enrb.getString( "info"));
System. out .println("法文:" +frrb.getString( "info"));
}
}
結果:
中文:你好
英文:Hello
法文:Bonjour
5.處理動態文字
上面的程式碼都是寫死了,如果想要動態的輸入一些內容,就要用佔位符來表示出動態文字的內容
步驟:
需要改動的地方:
中文:Message_zh_CN
內容:info= \u4f60\u597d{0}
這裡的文字需要轉碼:你可以用native2ascii.exe來進行轉碼
英文:Message_en_US
內容:info=Hello{0}
法文:Message_fr_FR
內容: info=Bonjour{0}
程式碼:
public class InterDemo2 {
public static void main(String[]
args) {
Locale zhLoc= new Locale("zh" ,"CN" );//表示中國地區
Locale enLoc= new Locale("en" ,"US" );//表示美國地區
Locale frLoc= new Locale("fr" ,"FR" );//表示法國地區
//找到中文的屬性檔案
ResourceBundle zhrb=ResourceBundle.getBundle( "Message",zhLoc);
//找到英文的屬性檔案
ResourceBundle enrb=ResourceBundle.getBundle( "Message",enLoc);
//找到法文的屬性檔案
ResourceBundle frrb=ResourceBundle.getBundle( "Message",frLoc);
System. out .println("中文:" +zhrb.getString( "info"));
System. out .println("英文:" +enrb.getString( "info"));
System. out .println("法文:" +frrb.getString( "info"));
String str1=zhrb.getString( "info" );
String str2=enrb.getString( "info" );
String str3=frrb.getString( "info" );
System. out .println("中文-->" +MessageFormat.format (str1, "中國" ));
System. out .println("英文-->" +MessageFormat.format (str2, "China" ));
System. out .println("法語-->" +MessageFormat.format (str3, "China" ));
}
}
結果:
中文:你好{0}
英文:Hello{0}
法文:Bonjour{0}
中文-->你好中國
英文-->HelloChina
法語-->BonjourChina
如果需要跟多的佔位符,則是{1},{2}......
相關文章
- java學習之路Java
- 學習java之路Java
- Java學習之路 -- Java怎麼學?Java
- Java 國際化(一)Java
- |轉| java學習之路Java
- Java中的國際化Java
- Java國際化小小示例Java
- Java學習筆記7(Java常用類庫與工具 )Java筆記
- JAVA的國際化機制Java
- 守護石談學習Java之路Java
- java學習:Java中的其它類Java
- 從AdventureWorks學習資料庫建模——國際化資料庫
- Java的國際化問題 (轉)Java
- Java學習之程式碼優化Java優化
- java學習之路----什麼是java的弱引用Java
- Java模組化的國際化實現- GunnarJava
- Java學習--Java 中的包裝類Java
- Java 學習:物件和類Java物件
- JAVA內部類學習Java
- java學習值Character類Java
- java學習之Math類Java
- java學習之Random類Javarandom
- java學習之System類Java
- java學習之Calender類Java
- OceanBase學習之路8|Java 應用程式連線 OceanBase 資料庫Java資料庫
- 我的Java後端學習之路Java後端
- JAVA學習之路 (七) package包管理JavaPackage
- Hello CSDN 開啟java學習之路Java
- java學習之Date類、DateFormat類JavaORM
- Java學習之程式碼最佳化Java
- Java8學習之路-Java8的發展Java
- 碎片化學習Java(十一)-- Java if案例Java
- Android學習筆記-國際化Android筆記
- java學習的網站,成長之路Java網站
- java學習(七) —— API集合類JavaAPI
- Java集合類學習總結Java
- Java學習之Math類理解Java
- Java學習之File類理解Java