天天看點

javaweb國際化問題

java  web 的國際化

概述

軟體的本地化:一個軟體在某個國家或地區使用,采用該國家或地區的語言,數字,貨币,日期等習慣

軟體的國際化:軟體開發時,讓它支援多個國家和地區的本地化應用。使得應用軟體能夠适應多個地區的語言和文化風俗習慣。

随着使用者區域資訊而變化的資料成為本地資訊敏感資料,例如,數字,貨币等資料

應用程式的國際化就是在應用軟體的設計界多胺使軟體能夠支援多個國家和地區的使用習慣

國際化又稱為i18n  :internationaliztion

一個國際化應用軟甲應有哦下面的特性

對于程式中的本地資訊敏感的資料(日期,貨币)能根據當期那所在的國家或地區的文化習慣進行顯示

對于文本元素(錯誤提示資訊,狀态資訊等)不是直接寫到應用程式中,而是存儲在應用程式外部的資源檔案中。在應用程式中

通過程式代碼來動态後去這些資料。

無需修改和重新辨析程式就能支援新的國家或地區的使用者使用。

java國際化解決方法。

本文資訊不能寫死在程式代碼中。而是需要将他們從響應的程式化中分離出來,在軟體運作時根據本地資訊讀取響應的文本内容進行顯示

數值,貨币,時間等本地敏感資料肯呢個在程式運作時動态産生,是以無法象文字一樣簡單将他們從應用程式中分離出來,而需要特殊處理,

java中提供了解決這些問題的API類(位于java.util包和java.text包中。)

Locale類

該類實力對象代表一個特定的地理,政治或文化上的區域

一個Locale對象本身不會驗證它代表的語言和國家地區資訊是否正确。隻是向本地敏感的類提供本地資訊,與國際化相關

的格式化和解析任務由本地敏感類(若jdk中的某個類在運作時需要根據Locale對象來調整其功能,這個類就

稱為本地敏感類)去完成

在java中Locale可以通過導入包直接擷取

package com.i18n.test;

import java.util.Locale;

import org.junit.Test;

public class I18n {

@Test

public void testLocale(){

Locale locale=Locale.CHINA;

System.out.println(locale.getDisplayCountry());

System.out.println(locale.getLanguage());

locale=new Locale("en","us");

System.out.println(locale.getCountry());

}

}

在javaweb中通過<%=request.getLocale()%>來擷取Locale

二、DateFormat類

DateFormat可以将一個日期/時間對象格式化為表示某個國家地區的時間/日期字元串。以惡可以

表示某個本地的日期/時間字元串,也可以将表示某個本地的日期/時間的字元串解析為響應的日期/時間對象。

DateFormat類定義了一些用于描述日期/時間的顯示謀士的int型常量。包括Full,LONG,MEDIUM,

DEFAULT,SHORT這些常量用于描述表示日期/時間字元串的長度。這些常量說明表示的日期/時間的确切格式取決于具體的國家和第七。

如下是集中使用Format調整日期格式的代碼

public class I18n {

@Test

public void testLocale()  {

Locale locale=Locale.CHINA;

System.out.println(locale.getDisplayCountry());

System.out.println(locale.getLanguage());

locale=new Locale("en","us");

System.out.println(locale.getCountry());

}

@Test

//如果隻希望通過DateFormat把一個Date對象轉換成為一個字元串,則可以通過DateFormat的工廠方法擷取DateFormat對象

public void TestFom(){

Locale l=Locale.US;

Date d=new Date(0);

System.out.println(d);

//擷取format對象

DateFormat dateformat=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.MEDIUM,l);

String str=dateformat.format(d);

System.out.println(str);

}

繼續閱讀