Java 國際化(一)

迎著太陽走向遠方發表於2017-03-27
1.Java對國際化的支援主要用3個類另外完成
java.util.Locale 對應一個特定的區域和語言環境
  Locale類主要用來構建本地化應用,該類的主要包含,對地理區域的區域性特徵的封裝,Local提供了一些常量,可以使用這些常量為通常使用的語言環境建立Locale物件。例如,為中國應用環境建立一個Locale物件
  Locale.CN.

java.util.ResourceBundle使用者載入資源包
Locale locale=new Locale("zn","CN","WIN");
ResourceBundle myResource=ResourceBundle.getBundle("Resources",locale);

java.test.MessageFormat 用於見訊息格式化。
如果資原始檔中包含動態內容,那麼動態內容就要需要使用佔位符表示,而載入資原始檔是,必須使用MessageFormat類,該類中共有一個靜態方法format(),呼叫方式入校:
MessageFormat.format(String pattern,Object values...);
其中 引數pattern是包含佔位符的字串,後面的多個引數將依次填充字串中的佔位符。
例項:
MessageFormat_zh_CN.properties
MessageFormat_en_US.properties
MessageFormatThree.java


1.使用類實現 國際化

import java.util.Locale;
import java.util.ResourceBundle;


public class Secondi18n {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Locale locale=null;
		if(args.length==2){
			locale=new Locale(args[0],args[1]);
		}
		else{
			locale=Locale.getDefault();
		}
		//資源類 的命名 用Resources開頭
		ResourceBundle bundle=ResourceBundle.getBundle("Resources", locale);
		System.out.println(bundle.getString("userName"));
		System.out.println(bundle.getString("userPassword"));
		System.out.println(bundle.getString("userAge"));

	}

}


注意命名

import java.util.ListResourceBundle;
public class Resources_en_US extends ListResourceBundle {

	static final Object[][] contents=new String[][]{
		{"userName","Name"},
		{"userPassword","Password"},
		{"userAge","age"}};
	
	@Override
	protected Object[][] getContents() {
		// TODO Auto-generated method stub
		return contents;
	}

}


import java.util.ListResourceBundle;
public class Resources_zh_CN extends ListResourceBundle {

	static final Object[][] contents=new String[][]{
		{"userName","姓名"},
		{"userPassword","密碼"},
		{"userAge","年齡"}};
	
	@Override
	protected Object[][] getContents() {
		// TODO Auto-generated method stub
		return contents;
	}

}


2.使用資原始檔 帶佔位符

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


public class MessageFormatThree {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Locale locale=null;
		if(args.length==2){
			locale=new Locale(args[0],args[1]);
		}
		else{
			locale=Locale.getDefault();
		} 
                 //資源屬性檔案 用 MessageFormat 開頭
		ResourceBundle bundle=ResourceBundle.getBundle("MessageFormat", locale);
		String userName=bundle.getString("userName2");
		System.out.println(MessageFormat.format(userName, "xue",new Date()));
	}

}



注意命名
MessageFormat_en_US.properties
userName=Name
userPassword=Password
userName2={0},Today is {1}

MessageFormat_zh_CN.properties

userName=姓名
userPassword=密碼
userName2={0},今天{1}


3.Loacle 中顯示java支援的 地區和語言

import java.util.Locale;

public class locale {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Locale[] list = Locale.getAvailableLocales();
		System.out.println("中文地區————地區簡寫——————語言中文——————語言簡寫");
		for (int i = 0; i < list.length; i++) {
			System.out.println(list[i].getDisplayCountry()+"————"+list[i].getCountry()+"——————"+list[i].getDisplayLanguage()+"——————"+list[i].getLanguage());
		}
	}

}

相關文章