使用文法性別自訂應用程式的使用者介面

30 億人使用性別化語言:即名詞、動詞、形容詞和介系詞會隨著交談或談論對象或目標的性別,而有不同變化形式的文法類別語言。一般來說,許多性別化語言都會使用陽性文法性別做為預設或通用性別。

若以錯誤的文法性別稱呼使用者,例如:以陽性文法性別稱呼女性,可能會對其表現及態度產生負面影響。相較之下,如果使用者介面的用語正確反映了使用者的文法性別,便可提高使用者參與度,同時提供更個人化且更自然親切的使用者體驗。

為了協助你針對使用文法性別的語言,建構以使用者為中心的 UI,Android 14 介紹文法轉變 API,可讓您新增對 的文法性別,不必重構應用程式

文法性別轉變範例

在使用文法性別的語言中,文法性別的運作方式與 則內容支援英文例如,使用英文撰寫訊息 訂閱您的應用程式服務,您可以使用單一詞組: 「您已訂閱...」。

如要提供法文的類似短句,以下有幾個選項:

  • 陽性變化格式:「Vous êtes abonné à...」(英文:「你會 已訂閱...」)
  • 陰性變化格式:「Vous êtes abonnée à...」(英文:「你會 已訂閱...」)
  • 可避免詞形變化的中性短句:「Abonnement à...activé」(英文: 「已啟用 ... 的訂閱」)

與英文類似,前兩個選項可直接指稱使用者。不過 沒有機制能應用到法國的這種文法特徵 只有第三種選項會改變訊息語氣 可能並非希望在使用者介面中顯示的內容

在這些情況下,文法轉變 API 會減少顯示所需的工作 字串,與該字詞的文法性別相關 而非在談論誰所說的向使用者顯示個人化資訊 如要在應用程式中加入不同翻譯版本, 語法性別,然後使用 GrammaticalInflectionManager API 可調整要顯示的翻譯 提供給每位使用者

在許多語言中,文法性別也適用於一般名詞和 人們。舉例來說,法文的「chaise」(椅子) 為陰性,而 Oiseau (鳥) 是陽性。如果不是要指稱使用者,您 可以使用現有的 ICU SelectFormat API。

實作 API

使用者指出其文法性別後 (例如: 應用程式的設定部分或使用者設定的工作流程),您可以使用 使用 setRequestedApplicationGrammaticalGender(int) 方法儲存 指定值。

例如,如要將使用者偏好的文法性別設為 女性,您應請使用者選取他們偏好的文法性別 然後呼叫 API:

Kotlin

// Set app's grammatical gender to feminine
val gIM = mContext.getSystemService(GrammaticalInflectionManager::class.java)
gIM.setRequestedApplicationGrammaticalGender(
    Configuration.GRAMMATICAL_GENDER_FEMININE)

Java

// Set app's grammatical gender to feminine
GrammaticalInflectionManager gIM =
    mContext.getSystemService(GrammaticalInflectionManager.class);
gIM.setRequestedApplicationGrammaticalGender(
    Configuration.GRAMMATICAL_GENDER_FEMININE);

以下範例說明如何在應用程式的設定變更 資訊清單檔案來瞭解如何自行處理這些檔案:

<activity android:name=".TestActivity"
              android:configChanges="grammaticalGender"
              android:exported="true">
</activity>

如果您的應用程式需要檢查目前資源中的文法性別 您可以使用 getApplicationGrammaticalGender() 方法 擷取該物件:

Kotlin

val gIM = mContext.getSystemService(GrammaticalInflectionManager::class.java)
val grammaticalGender = gIM.getApplicationGrammaticalGender()

Java

GrammaticalInflectionManager gIM =
    mContext.getSystemService(GrammaticalInflectionManager.class);
int grammaticalGender = gIM.getApplicationGrammaticalGender();

為使用文法性別的語言新增翻譯

如要為使用文法性別的語言提供本地化文字,請建立 額外資源檔案並附加文法性別限定詞 緊接在這些語言的語言代碼名稱後面。下表 概述可能的值:

限定詞 字串值 範例 (法文 fr)
陰性 feminine res/values-fr-feminine/strings.xml
陽性 masculine res/values-fr-masculine/strings.xml
中性 neuter res/values-fr-neuter/strings.xml

只能使用支援文法性別變化的字串 這些資源檔案所有字串都必須在預設資源中具有一個值 檔案,這個檔案包含其他本地化字串。預設翻譯為 。

上方提供的法文範例中,中性用語是 預設資源 res/values-fr/strings.xml 中字串的值 檔案。以下程式碼片段顯示每個資源檔案的格式化方式 以配合法文範例中的所有文法變化:

陰性

res/values-fr-feminine/strings.xml 資源檔案中加入陰性變化字串:

<resources>
    ...
    <string name="example_string">Vous êtes abonnée à...</string>
</resources>

陽性

res/values-fr-masculine/strings.xml 資源檔案中加入陽性變化字串:

<resources>
    ...
    <string name="example_string">Vous êtes abonné à...</string>
</resources>

中性

res/values-fr/strings.xml 資源檔案中加入預設字串:

<resources>
    ...
    <string name="example_string">Abonnement à...activé</string>
</resources>