国際化を行うツールクラス

3190 ワード

ツールクラス:AbstractLanguage
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