国際化を行うツールクラス
3190 ワード
ツールクラス:AbstractLanguage
テストクラス
プロジェクトルートの下にあるプロファイル:
res.properties
内容:
USD=in default usd
res_ch_zh.properties
内容:
USD=人民元
res_en_us.properties
内容:
USD=dollar
package common.util;
import java.util.Locale;
import java.util.ResourceBundle;
public abstract class AbstractLanguage{
@SuppressWarnings("unused")
private String language;
@SuppressWarnings("unused")
private String region;
private Locale locale;
private ResourceBundle resourceBundle;
@SuppressWarnings("unused")
private String fileName;
//
private static final String FILE_NAME="res";
AbstractLanguage(String language,String region){
this(language,region,FILE_NAME);
}
AbstractLanguage(String language,String region,String fileName){
this.language=language;
this.region=region;
this.fileName=fileName;
locale=new Locale(language,region);
resourceBundle=ResourceBundle.getBundle(fileName, locale);
}
protected ResourceBundle getResourceBundle() {
return resourceBundle;
}
public abstract String getLocalString(String code);
/**
* ,
* @param language
* @param region
* @return
*/
public static AbstractLanguage getLanguage(String language,String region){
return getLanguage(language,region,FILE_NAME);
}
public static AbstractLanguage getLanguage(String language,String region,String fileName){
return new AbstractLanguage(language,region,fileName){
public String getLocalString(String code) {
return super.getResourceBundle().getString(code);
}
};
}
}
テストクラス
package common.util;
public class Test {
public static void main(String[] args) {
/*
* ( )
* res.properties
* res_ch_zh.properties
* res_en_us.properties
*
*/
System.out.println(AbstractLanguage.
getLanguage("ch", "zh").getLocalString("USD"));
System.out.println(AbstractLanguage.
getLanguage("en", "us").getLocalString("USD"));
System.out.println(AbstractLanguage.
getLanguage("een", "us").getLocalString("USD"));
/*
* . /
* res.properties
* res_ch_zh.properties
* res_en_us.properties
*
*/
System.out.println(AbstractLanguage.
getLanguage("ch", "zh","common.util.res").getLocalString("USD"));
System.out.println(AbstractLanguage.
getLanguage("en", "us","common.util.res").getLocalString("USD"));
System.out.println(AbstractLanguage.
getLanguage("een", "us","common.util.res").getLocalString("USD"));
}
}
プロジェクトルートの下にあるプロファイル:
res.properties
内容:
USD=in default usd
res_ch_zh.properties
内容:
USD=人民元
res_en_us.properties
内容:
USD=dollar