Javaの国際化(i 18 n)

3065 ワード

転載:http://blog.csdn.net/csuliky/article/details/4225800
1.Java国際化の紹介
Javaはプラットフォームにまたがる言語として必ずさまざまな言語環境で使わなければならないので、この問題を解決するためにJavaは私達にツール種類のResource Bundeleを提供してくれました.Javaの国際化を実現してくれます.
2.Java国際化のステップ
(1)もちろん国際化を実現するためのメインプログラムです.
(2)リソースファイルを定義し、リソースファイルの定義が一定の規範に合致するように注意してください.規範は以下の通りです.もしデフォルトのリソースファイルのファイル名をmessage.propertiesと名付ければ、他の言語のリソースファイル名はmessage auとなります.言語コード_国家コード.properties.例えば:私達の言語の中国語の言語コードはzhで、国家コードはCNですので、簡体字中国語の資源ファイル名はmessage_です.zhCN.properties、英語の言語コードはenで、米国の国家コードはUSで、だから米国の英語の資源のファイルは:message_です.enUS.properties.
(3)ソフトウェアの使用環境に応じて該当するリソースファイルを取得する
(4)取得したリソースファイルでKey対応の値を取得する.
 3.例(ここのリソースファイルは、classipathのルートパスの下に置かなければならないことに注意してください.)
(1)メインプログラムParam Format.java
package test.abu.csdn.tmp;

import java.text.MessageFormat;
import java.util.Date;
import java.util.Locale;
import java.util.ResourceBundle;

/**
 *   Java    
 * @author Abu
 *
 */
public class ParamFormat {

    /**
     * @param args
     */
    public static void main(String[] args) {
       
        //            
        testCustom();
        //          
        testDefault();
    }
   
    public static void testDefault() {
        //          
        Locale locale = Locale.getDefault();
        //       
        ResourceBundle rb = ResourceBundle.getBundle("message", locale);
       
        //      key        
        String greeting = rb.getString("greeting");
        String userInfo = rb.getString("userinfo");
       
       
        String name= "liky";
        int age = 18;
        Date birth = new Date();
       
        //      ,     Object   ,                    .
        Object[] params = {name,age,birth};
       
        //      ,         
        String result = MessageFormat.format(userInfo, params);
       
        System.err.println(greeting + result);   
    }
   
    public static void testCustom() {
        //            
        Locale locale = new Locale("en_US");
        //       
        ResourceBundle rb = ResourceBundle.getBundle("message", locale);
        //      key 
       
        String greeting = rb.getString("greeting");
        String userInfo = rb.getString("userinfo");
       
       
        String name= "liky";
        int age = 18;
        Date birth = new Date();
       
        //      ,     Object   ,                    .
        Object[] params = {name,age,birth};
       
        //      ,         
        String result = MessageFormat.format(userInfo, params);
       
        System.err.println(greeting + result);   
    }   
}
(2)デフォルトのリソースファイルmessage.properties(ここではnative 2 asciiを使って中国語をISO-859-1符号化に変換しました.)
greeting\u 6 B 22\u 8 FCE\u 60 A 8\u 7684\u 5230\u 6765,userinfo=\u 59D 3\u 540 D\:{0}、\u 5 E 74\u 9 F 84\:{1}、\u 751 F\u 65\:{2}
(3)米国英語の資源ファイルmessage_enUS.properties
greeting Welcome my boy、userinfo=name:{0}、age:{1}、bithday:{2}
 4.まとめ
実はこれはJavaのi 18 nの本質です.他のいくつかの枠組みはstruts、webworkなどの国際化の核心は全部このようです.