語言

Locale 類別

定義

物件 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.USLocale 對 美國 的對象。

<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 版本中加入。

java.util.LocaleJava 檔。

本頁部分內容為基於 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

回傳此 Object的執行時類別。

(繼承來源 Object)
Country

回傳該地點的國家/地區代碼,應該是空字串、大寫 ISO 3166 兩字母代碼,或是聯合國 M。

Default

取得此 Java 虛擬機實例預設地點的當前值。 -或- 設定此 Java 虛擬機實例的預設區域。

DisplayCountry

回傳一個適合使用者顯示的地點國家名稱。

DisplayLanguage

回傳一個適合使用者顯示的區域語言名稱。

DisplayName

回傳一個適合使用者顯示的區域名稱。

DisplayScript

回傳一個適合使用者顯示的區域腳本名稱。

DisplayVariant

回傳一個適合使用者顯示的區域變體代碼名稱。

English

對語言來說是有用的常數。

ExtensionKeys

回傳與此區域相關的擴展鍵集合,若無擴充功能則回傳空鍵。

France

這是鄉村音樂的有用常數。

French

對語言來說是有用的常數。

German

對語言來說是有用的常數。

Germany

這是鄉村音樂的有用常數。

Handle

底層 Android 實例的帳號。

(繼承來源 Object)
HasExtensions

如果這段true有 ##def_extensions 的副檔名,則回傳Locale

ISO3Country

回傳一個三字母縮寫,代表該地點的國家。

ISO3Language

回傳該地點語言的三個字母縮寫。

Italian

對語言來說是有用的常數。

Italy

這是鄉村音樂的有用常數。

Japan

這是鄉村音樂的有用常數。

Japanese

對語言來說是有用的常數。

JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
JniPeerMembers

物件 Locale 代表特定的地理、政治或文化區域。

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)

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
Equals(Object)

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
Filter(IList<Locale.LanguageRange>, ICollection<Locale>, Locale+FilteringMode)

回傳使用 RFC 4647 定義的過濾機制所匹配的實例清單 Locale

Filter(IList<Locale.LanguageRange>, ICollection<Locale>)

回傳使用 RFC 4647 定義的過濾機制所匹配的實例清單 Locale

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)

回傳該地點國家名稱,當地化為 locale

GetDisplayLanguage(Locale)

回傳該地點語言名稱,並本地化為 locale

GetDisplayName(Locale)

回傳該地點的語言名稱、國家名稱及變體,並本地化為 locale

GetDisplayScript(Locale)

回傳一個適合使用者顯示的區域腳本名稱。

GetDisplayVariant(Locale)

回傳一個適合使用者顯示的區域變體代碼名稱。

GetExtension(Char)

回傳與指定金鑰相關的擴充(或私人使用)值,若金鑰無相關擴展則為空值。

GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
GetISOCountries()

回傳ISO 3166中定義的所有兩字母國家代碼清單。

GetISOCountries(Locale+IsoCountryCode)

物件 Locale 代表特定的地理、政治或文化區域。

GetISOLanguages()

回傳所有 2 字母語言代碼清單及部分 ISO 639 定義的 3 字母代碼。

GetUnicodeLocaleType(String)

回傳與該區域指定 Unicode 區域鍵相關的 Unicode 區域類型。

JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
Lookup(IList<Locale.LanguageRange>, ICollection<Locale>)

回傳 Locale 使用RFC 4647定義的查找機制,返回最佳匹配語言標籤的實例。

LookupTag(IList<Locale.LanguageRange>, ICollection<String>)

回傳 RFC 4647 中定義的查找機制,回傳最佳匹配的語言標籤。

Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
Of(String, String, String)

物件 Locale 代表特定的地理、政治或文化區域。

Of(String, String)

物件 Locale 代表特定的地理、政治或文化區域。

Of(String)

物件 Locale 代表特定的地理、政治或文化區域。

SetDefault(Locale+Category, Locale)

為本 Java 虛擬機實例設定指定類別的預設地點。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
StripExtensions()

回傳一份沒有擴充功能的副本 Locale

ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToLanguageTag()

回傳一個代表此地點的良好 IETF BCP 47 語言標籤。

ToString()

回傳此 Locale 物件的字串表示,包含語言、國家、變體、文字及擴充,如下: <blockquote> language + “” + 國家 + “” + (變體 + “#” | ”#“) + 腳本 + ”“ + 擴展 </blockquote>

        Language is always lower case, country is always upper case, script is always title
        case, and extensions are always lower case.
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()

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

物件 Locale 代表特定的地理、政治或文化區域。

(繼承來源 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

物件 Locale 代表特定的地理、政治或文化區域。

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

物件 Locale 代表特定的地理、政治或文化區域。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於