Locale 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
物件 Locale 代表特定的地理、政治或文化區域。
[Android.Runtime.Register("java/util/Locale", DoNotGenerateAcw=true)]
public sealed class Locale : Java.Lang.Object, IDisposable, Java.IO.ISerializable, Java.Lang.ICloneable
[<Android.Runtime.Register("java/util/Locale", DoNotGenerateAcw=true)>]
type Locale = class
inherit Object
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ICloneable
- 繼承
- 屬性
- 實作
備註
物件 Locale 代表特定的地理、政治或文化區域。 需要 執行 Locale 任務的操作稱為 <em>locale-senitive</em> ,並利用 來 Locale 為使用者量身打造資訊。 例如,顯示一個數字是一種區域敏感操作;號碼格式應依使用者原居國家、地區或文化的習俗與慣例進行。
該 Locale 類別實作 IETF BCP 47,包含 RFC 4647「語言標籤匹配」 與 RFC 5646「識別語言標籤」 ,並支援 LDML(UTS#35,「Unicode 區域資料標記語言」)BCP 47 相容的區域資料交換擴充。
Locale物件在邏輯上由以下描述的欄位組成。
<DL>dt“def_language”<b>language></b>/dt<><>
<dd>ISO 639 alpha-2 或 alpha-3 語言代碼,或註冊語言子標籤最多 8 個字母字母(供未來增強)。 當語言同時擁有 alpha-2 和 alpha-3 編碼時,必須使用 alpha-2 編碼。 您可以在 IANA 語言子標籤登錄處(搜尋「Type: language」)找到完整有效的語言代碼清單。 語言欄位不區分大小寫,但 Locale 總是標準化為小寫。</dd>
<dd>良構語言值的形式為 [a-zA-Z]{2,8}。 請注意,這並非完整的 BCP47 語言產出,因為它排除了 extlang。 由於現代三字母語言代碼取代了它們,因此不需要它們。</dd>
<dd>範例:「en」(英文)、「ja」(日文)、「kok」(孔卡尼語)</dd>
<DT>“def_script”><B>script</B></dt>
<dd>ISO 15924 alpha-4 腳本代碼。 你可以在 IANA 語言子標籤登錄系統中找到有效腳本代碼的完整清單(搜尋「Type: script」)。 文字欄位不區分大小寫,但 Locale 總是標準化為標題大寫(第一個字母為大寫,其餘字母為小寫)。</dd>
<dd>良好格式的文字值形式為 [a-zA-Z]{4}</dd>
<dd>範例:「Latn」(拉丁文)、「Cyrl」(西里爾字母)</dd>
<DT>“def_region”><B>鄉村(地區)</B></dt>
<dd>ISO 3166 alpha-2 國家代碼或聯合國 M.49 數字-3 區碼。 您可以在 IANA 語言子標籤登記處(搜尋「Type: region」)找到有效國家和地區代碼的完整清單。 國家(地區)欄位不區分大小寫,但 Locale 總是標準化為大寫。</dd>
<dd>良好格式的國家/地區值形式為 [a-zA-Z]{2} | [0-9]{3}</dd>
<dd>範例:「US」(美國)、「FR」(法國)、「029」(加勒比海)</dd>
<DT>“def_variant”><B>變體</B></DT>
<dd>任何用來表示 變體的 Locale任意值。 若有兩個或以上變體值各自代表語意,這些值應依重要性排序,最重要者排在前,並以底線('_')分隔。 變體欄位以大小寫區分。</dd>
<dd>註:IETF BCP 47 對變體子標籤施加語法限制。 此外,BCP 47子標籤嚴格用於表示定義語言或其方言的額外變體,這些變體未被任何語言、文字系統及地區子標籤組合涵蓋。 你可以在 IANA 語言子標籤登錄處找到有效變異碼的完整清單(搜尋「Type: variant」)。
然而,變體欄位 在 Locale 歷史上用於任何形式的變異,而不僅僅是語言的變異。 例如,Java SE 執行環境中支援的一些變體顯示出其他文化行為,如日曆型別或數字文字。 在 BCP 47 中,這類不識別語言的資訊由擴充子標籤或私人使用子標籤支援。</dd>
<dd>良構變體值的形式為 SUBTAG (('_'|'-') SUBTAG)* ,其中 SUBTAG = [0-9][0-9a-zA-Z]{3} | [0-9a-zA-Z]{5,8}。 (註:BCP 47 僅使用連字號 ('-') 作為分隔符,這較為寬鬆。)</dd>
<dd>範例:「polyton」(多調希臘語),「POSIX」</dd>
<DT>“def_extensions”><B>擴展/<B></dt>
<dd>從單一字元鍵到字串值的映射,表示除語言識別外的擴展。 擴充 中的 Locale 擴充實作了 BCP 47 擴充子標籤與私有使用子標籤的語意與語法。 這些擴充不區分大小寫,但 Locale 會將所有擴展鍵與值標準化為小寫。 請注意,擴展值不能為空。</dd>
<dd>良構鍵是集合 [0-9a-zA-Z]中的單一字元。 良構值的形式為 SUBTAG ('-' SUBTAG)* ,其中對於鍵 'x' SUBTAG = [0-9a-zA-Z]{1,8} ,對其他鍵 SUBTAG = [0-9a-zA-Z]{2,8} (即 'x' 允許單字元子標籤)。</dd>
<dd>範例:key=“u”/value=“ca-japanese”(日本曆),key=“x”/value=“java-1-7”</dd></dl>
<b>注意:</b> 雖然 BCP 47 要求欄位值必須在 IANA 語言子標籤登錄站註冊,但該 Locale 類別並未提供任何驗證功能。
Builder唯一檢查單一欄位是否符合語法要求(為良構),但不會驗證該值本身。 如需詳細資訊,請參閱 Builder。
<h2>“def_locale_extension”Unicode> locale/language extension</h2>
UTS#35,「Unicode Locale Data Markup Language」定義了可選屬性與關鍵字,用以覆蓋或細化與區域相關的預設行為。 關鍵字由一對鍵與類型表示。 例如,「nu-thai」表示應使用泰文本地數字(value:「thai」)來格式化數字(關鍵字:「nu」)。
關鍵字透過副檔名鍵 'u'#UNICODE_LOCALE_EXTENSION() 映射到 BCP 47 的擴展值。 上述例子「nu-thai」會變成「u-nu-thai」的外延。
因此,當物件 Locale 包含 Unicode locale 屬性與關鍵字時, getExtension(UNICODE_LOCALE_EXTENSION) 會回傳一個代表此資訊的字串,例如「nu-thai」。 這個 Locale 類別還提供 #getUnicodeLocaleAttributes、 #getUnicodeLocaleKeys和 #getUnicodeLocaleType ,讓你能直接存取 Unicode 的 locale 屬性和鍵/型別對。 當以字串表示時,Unicode Locale Extension 會依字母順序列出屬性,接著是按字母順序排列的鍵/類型序列(定義型別後,子標籤的順序固定)
一個良構的局部鍵具有 的形式。[0-9a-zA-Z]{2} 良好形成的地點類型有 的形式 "" | [0-9a-zA-Z]{3,8} ('-' [0-9a-zA-Z]{3,8})* (它可以是空的,或是長度為 3-8 字母數字的一系列子標籤)。 良好形成的 locale 屬性具有 的形式 [0-9a-zA-Z]{3,8} (它是與 locale 類型子標籤形式相同的單一子標籤)。
Unicode 區域擴充功能規定了區域敏感服務中的可選行為。 雖然 LDML 規範定義了各種鍵與值,但在 Java 執行環境中,實際的區域敏感服務實作可能不支援任何特定的 Unicode 區域屬性或鍵/型別對。
<h3>“GuntainingLocale”>Getting a Locatione</h3>
取得 Locale 物品有多種方式。
<h4>建造者</h4>
你可以 Builder 用它建構 Locale 一個符合 BCP 47 語法的物件。
<h4>工廠方法< / h4>
此方法 #forLanguageTag 取得 Locale 一個良構 BCP 47 語言標籤的物件。 該方法#of(String, String, String)及其過載從給定Locale的 、 language和/或country上述定義中取得variant物件。
<h4>區域常數</h4>
這個 Locale 類別提供了許多方便的常數,可以用來取得 Locale 常用位置的物件。 例如,Locale.US是 Locale 對 美國 的對象。
<h3>“LocaleMatching”>Locale Matching</h3>
如果一個應用程式或系統是國際化的,並且為多個地區提供在地資源,有時需要找到一個或多個符合每位使用者特定偏好的區域(或語言標籤)。 請注意,在這份地點匹配文件中,「語言標籤」與「locale」可互換使用。
為了將使用者偏好的地點與一組語言標籤匹配, RFC 4647 語言標籤 匹配定義了兩種機制:過濾與查找。 <em>篩選/em< 用於取得所有匹配的地點,而 >em<查找>/em< 則是選擇>最佳匹配的位置。 匹配方式不區分大小寫。 這些配對機制將在以下章節中說明。
使用者的偏好稱為 <em>語言優先列表</em> ,並以語言範圍清單表示。 語法上有兩種語言範圍:基本語言與擴展語言範圍。 如需詳細資訊,請參閱 Locale.LanguageRange Locale.LanguageRange。
<h4>濾波</h4>
過濾操作會回傳所有匹配的語言標籤。 在 RFC 4647 中定義如下:「在篩選中,每個語言範圍代表最不具體的語言標籤(即子標籤數量最少的語言標籤),且可接受匹配。 匹配標籤集合中的所有語言標籤數量都會與語言範圍相等或更多。 語言範圍內的所有非萬用字元子標籤都會出現在所有匹配的語言標籤中。」
過濾有兩種類型:針對基本語言範圍的過濾(稱為「基本過濾」),以及針對擴展語言範圍的過濾(稱為「擴展過濾」)。 它們可能會根據所包含的語言範圍而產生不同結果。
Locale.FilteringMode 是用來指定如何進行過濾的參數。
<h4>查詢/<h4>
查找操作會回傳最匹配的語言標籤。 RFC 4647 中定義如下:「與過濾不同,每個語言範圍代表最具體且可接受的標籤。 根據使用者的優先順序,第一個找到的匹配標籤被視為最接近的,並成為退回的物品。」
例如,若語言優先清單包含兩個語言範圍, "zh-Hant-TW" 且 "en-US"依優先順序,查找方法會逐步搜尋以下語言標籤,以尋找最佳匹配的語言標籤。
<引用>
1. zh-Hant-TW
2. zh-Hant
3. zh
4. en-US
5. en
</blockquote> 如果有一個語言標籤完全符合上述語言範圍,該語言標籤會被回傳。
"*" 是特殊語言範圍,且在查找時會忽略它。
若多個語言標籤因子標籤'*'而匹配,則由語言標籤中Iterator第一個匹配Collection的語言標籤視為最佳匹配。
<h3>地點</h3 的使用>
一旦你擁有一個 Locale ,就可以查詢它關於自身的資訊。 用來 getCountry 取得國家(或地區)代碼和 getLanguage 語言代碼。 你可以用 getDisplayCountry 來取得適合顯示給使用者的國家名稱。 同樣地,你也可以用 getDisplayLanguage 來取得適合使用者顯示的語言名稱。 有趣的是,這些 getDisplayXXX 方法本身是區域敏感的,並有兩個版本:一個使用預設 Locale.Category#DISPLAY DISPLAY 位置,另一個使用參數指定的位置。
Java 平台提供多個執行區域敏感操作的類別。 例如,類別 NumberFormat 會以區域敏感的方式格式化數字、貨幣和百分比。 像 這 NumberFormat 類類別有多種方便的方法來建立該類型的預設物件。 例如,該 NumberFormat 類別提供了三種方便的方法來建立預設 NumberFormat 物件:{
在 1.1 版本中加入。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| Locale(String, String, String) |
從語言、國家和變體中構建一個地區。 |
| Locale(String, String) |
用語言和國家來建構一個地方。 |
| Locale(String) |
從語言程式碼構建一個區域。 |
欄位
| 名稱 | Description |
|---|---|
| PrivateUseExtension |
私人使用擴充功能('x')的金鑰。 |
| UnicodeLocaleExtension |
Unicode 區域擴展('u')的金鑰。 |
屬性
| 名稱 | Description |
|---|---|
| Canada |
這是鄉村音樂的有用常數。 |
| CanadaFrench |
這是鄉村音樂的有用常數。 |
| China |
這是鄉村音樂的有用常數。 |
| Chinese |
對語言來說是有用的常數。 |
| Class |
回傳此 |
| Country |
回傳該地點的國家/地區代碼,應該是空字串、大寫 ISO 3166 兩字母代碼,或是聯合國 M。 |
| Default |
取得此 Java 虛擬機實例預設地點的當前值。 -或- 設定此 Java 虛擬機實例的預設區域。 |
| DisplayCountry |
回傳一個適合使用者顯示的地點國家名稱。 |
| DisplayLanguage |
回傳一個適合使用者顯示的區域語言名稱。 |
| DisplayName |
回傳一個適合使用者顯示的區域名稱。 |
| DisplayScript |
回傳一個適合使用者顯示的區域腳本名稱。 |
| DisplayVariant |
回傳一個適合使用者顯示的區域變體代碼名稱。 |
| English |
對語言來說是有用的常數。 |
| ExtensionKeys |
回傳與此區域相關的擴展鍵集合,若無擴充功能則回傳空鍵。 |
| France |
這是鄉村音樂的有用常數。 |
| French |
對語言來說是有用的常數。 |
| German |
對語言來說是有用的常數。 |
| Germany |
這是鄉村音樂的有用常數。 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| HasExtensions |
如果這段 |
| ISO3Country |
回傳一個三字母縮寫,代表該地點的國家。 |
| ISO3Language |
回傳該地點語言的三個字母縮寫。 |
| Italian |
對語言來說是有用的常數。 |
| Italy |
這是鄉村音樂的有用常數。 |
| Japan |
這是鄉村音樂的有用常數。 |
| Japanese |
對語言來說是有用的常數。 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
物件 |
| JniPeerMembers |
物件 |
| Korea |
這是鄉村音樂的有用常數。 |
| Korean |
對語言來說是有用的常數。 |
| Language |
回傳此地點的語言代碼。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| Prc |
這是鄉村音樂的有用常數。 |
| Root |
對於根位置來說,這是有用的常數。 |
| Script |
回傳該地點的腳本,應該是空字串或 ISO 15924 四字母腳本代碼。 |
| SimplifiedChinese |
對語言來說是有用的常數。 |
| Taiwan |
這是鄉村音樂的有用常數。 |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
| TraditionalChinese |
對語言來說是有用的常數。 |
| Uk |
這是鄉村音樂的有用常數。 |
| UnicodeLocaleAttributes |
回傳與該區域相關的 Unicode locale 屬性集合,或若無屬性則回傳空集合。 |
| UnicodeLocaleKeys |
回傳由該區域定義的 Unicode 區域鍵集合,若該區域沒有則回傳空鍵。 |
| Us |
這是鄉村音樂的有用常數。 |
| Variant |
回傳此地點的變體代碼。 |
方法
| 名稱 | Description |
|---|---|
| Clone() |
覆蓋可複製。 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
物件 |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
物件 |
| Equals(Object) |
物件 |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| Filter(IList<Locale.LanguageRange>, ICollection<Locale>, Locale+FilteringMode) |
回傳使用 RFC 4647 定義的過濾機制所匹配的實例清單 |
| Filter(IList<Locale.LanguageRange>, ICollection<Locale>) |
回傳使用 RFC 4647 定義的過濾機制所匹配的實例清單 |
| FilterTags(IList<Locale.LanguageRange>, ICollection<String>, Locale+FilteringMode) |
回傳一份符合語言標籤的清單,使用RFC 4647定義的基本過濾機制。 |
| FilterTags(IList<Locale.LanguageRange>, ICollection<String>) |
回傳一份符合語言標籤的清單,使用RFC 4647定義的基本過濾機制。 |
| ForLanguageTag(String) |
回傳指定的 IETF BCP 47 語言標籤字串的區域。 |
| GetAvailableLocales() |
回傳所有已安裝地點的陣列。 |
| GetDefault(Locale+Category) |
取得此 Java 虛擬機實例預設地點的當前值。 |
| GetDisplayCountry(Locale) |
回傳該地點國家名稱,當地化為 |
| GetDisplayLanguage(Locale) |
回傳該地點語言名稱,並本地化為 |
| GetDisplayName(Locale) |
回傳該地點的語言名稱、國家名稱及變體,並本地化為 |
| GetDisplayScript(Locale) |
回傳一個適合使用者顯示的區域腳本名稱。 |
| GetDisplayVariant(Locale) |
回傳一個適合使用者顯示的區域變體代碼名稱。 |
| GetExtension(Char) |
回傳與指定金鑰相關的擴充(或私人使用)值,若金鑰無相關擴展則為空值。 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| GetISOCountries() |
回傳ISO 3166中定義的所有兩字母國家代碼清單。 |
| GetISOCountries(Locale+IsoCountryCode) |
物件 |
| GetISOLanguages() |
回傳所有 2 字母語言代碼清單及部分 ISO 639 定義的 3 字母代碼。 |
| GetUnicodeLocaleType(String) |
回傳與該區域指定 Unicode 區域鍵相關的 Unicode 區域類型。 |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Lookup(IList<Locale.LanguageRange>, ICollection<Locale>) |
回傳 |
| LookupTag(IList<Locale.LanguageRange>, ICollection<String>) |
回傳 RFC 4647 中定義的查找機制,回傳最佳匹配的語言標籤。 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| Of(String, String, String) |
物件 |
| Of(String, String) |
物件 |
| Of(String) |
物件 |
| SetDefault(Locale+Category, Locale) |
為本 Java 虛擬機實例設定指定類別的預設地點。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
物件 |
| StripExtensions() |
回傳一份沒有擴充功能的副本 |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToLanguageTag() |
回傳一個代表此地點的良好 IETF BCP 47 語言標籤。 |
| ToString() |
回傳此
|
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
物件 |
| IJavaPeerable.Finalized() |
物件 |
| IJavaPeerable.JniObjectReferenceControlBlock |
物件 |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
物件 |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
物件 |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
物件 |
| IJavaPeerable.UnregisterFromRuntime() |
物件 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
物件 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |