判斷地區設定

Flash Player 10.1 以及更新的版本,Adobe AIR 2.0 以及更新的版本

地區設定可識別國家或地區之語言和文化慣例的特定組合。

您可以安全地以字串來管理地區設定識別碼。不過,利用 LocaleID 類別,您可以取得與地區設定相關的其他資訊。

您可以如下建立 LocaleID 物件:

var locale:LocaleID = new LocaleID("es-MX");

建立 LocaleID 物件之後,就可以擷取地區設定 ID 的資料。請使用 getKeysAndValues() getLanguage() getRegion() getScript() getVariant() isRightToLeft() 方法,以及 name 屬性。

從這些方法和屬性擷取的值,可以反映從地區設定識別碼直接取出地區設定的其他資訊。

應用程式在建立區分地區設定的服務 (例如日期格式化程式) 時,必須指定所要的地區設定。所支援地區設定的清單會依作業系統而不同;因此,要求的地區設定可能會無法使用。

Flash Player 會先嘗試比對所要求之地區設定的語言碼。然後,尋找相符的撰寫系統 (Script) 和地區,以嘗試修改地區設定。例如:

var loc:LocaleID = new LocaleID("es"); 
trace(loc.getLanguage()); // es 
trace(loc.getScript()); // Latn 
trace(loc.getRegion()); // ES

在這個範例中, LocaleID() 建構函式擷取的資料是有關最符合該使用者之語言碼 "es" 的地區設定。

設定地區設定 ID

許多方法都可以設定應用程式的目前地區設定,包括下列各項:

  • 將單一地區設定 ID 硬式編碼至應用程式。這是常見的做法,但不支援國際化應用程式。

  • 使用使用者之作業系統 (或瀏覽器) 或其他使用者偏好設定的地區設定 ID 偏好設定。這種技術通常會產生使用者的最佳地區設定,但這個地區設定不一定正確。風險是作業系統設定未反映使用者的實際偏好設定。例如,使用者可以使用共用電腦,但無法變更作業系統的偏好地區設定。

  • 根據使用者的偏好設定設定地區設定 ID 之後,讓使用者從受支援地區設定的清單中進行選取。如果您的應用程式可以支援多個地區設定,則這個策略通常是最佳選項。

您可以如下實作第三個選項:

  1. 從使用者設定檔、瀏覽器設定、作業系統設定或 Cookie,擷取使用者偏好地區設定或語言的清單 (您的應用程式需要自行實作這個邏輯。flash.globalization 元件庫不支援直接讀取這類偏好設定)。

  2. 判斷您的應用程式支援其中哪些地區設定,而且預設會選取最佳地區設定。使用 LocaleID.determinePreferredLocales() 方法,根據使用者的偏好地區設定和作業系統所支援的地區設定,來尋找使用者的最佳地區設定。

  3. 如果不滿意預設地區設定,則提供方法讓使用者變更預設地區設定。

其他地區設定和語言類別限制

fl.lang.Locale 類別可讓您使用含有字串值的資源組合包,來根據地區設定取代文字字串。不過,這個類別不支援其他國際化功能 (例如數字、貨幣或日期格式化、排序和比對等)。此外,只有 Flash Professional 才提供這個類別。

您也可以使用 flash.system.Capabilities.language 屬性,來擷取作業系統的目前語言碼設定。不過,這個屬性只會擷取由兩個字元組成的 ISO 639-1 語言碼 (非完整地區設定 ID),而且只支援特定一組的地區設定。

透過 AIR 1.5,您可以使用 flash.system.Capabilities.languages 屬性。這個屬性會提供使用者偏好的使用者介面語言陣列。因此,沒有 Capabilities.language 中的限制。