構造体
TermOfAddress
ローカライズされたテキストで文法上の性別を表す型。
iOS 17.0+
iPadOS 17.0+
macOS 14.0+
Mac Catalyst 17.0+
tvOS 17.0+
watchOS 10.0+
visionOS 1.0+
Xcode 15.0+
概観
多くの言語は文法を性別に依存しています。対象の性別や代名詞の好みがわからないと、一部のローカライズされた文字列に文法上のエラーが含まれる可能性があり、その結果、ユーザ体験が低下します。
TermOfAddress は、システムが性別に基づいてローカライズされたテキストで代名詞を置換できるようにする型です。この型のインスタンスをあなたは直接作成しません。代わりに、事前定義された型を使用して、翻訳されたテキスト内で人物に言及するときに使用する性別を指定します。または、事前定義された型では不十分な場合は、特定の言語に対して独自の代名詞語句を定義します。
注意
すべての言語にすべての呼び名の語句が存在するわけではありません。
たとえば、男性代名詞 He を中性代名詞 They に置き換えるには、以下のようにします。
- // Define the resource you want to apply grammatical agreement to.
- let resource = LocalizedStringResource("^[They](referentConcept: 1) liked your post.")
- // Set the inflection concept to use a term of address.
- var options = AttributedString.LocalizationOptions()
- options.concepts = [.termsOfAddress([.masculine])]
- // Make a new string imposing grammatical agreement on the resource from the term of address.
- let result = AttributedString(localized: resource, options: options)
- // result == "He liked your post."
masculine, feminine, および neutral の呼び名の語が不十分な場合は、代名詞と言語を指定してあなた独自の呼び名を作成して下さい。
- // Define the various morphologies.
- var nominativeMorphology = Morphology()
- var accusativeMorphology = Morphology()
- var genitiveMorphology = Morphology()
- var genetiveIndependent = Morphology()
- var reflexive = Morphology()
- nominativeMorphology.grammaticalCase = .nominative
- accusativeMorphology.grammaticalCase = .accusative
- genitiveMorphology.grammaticalCase = .genitive
- genitiveMorphology.determination = .dependent
- genetiveIndependent.grammaticalCase = .genitive
- genetiveIndependent.determination = .independent
- reflexive.pronounType = .reflexive
- // Define the pronouns.
- let xey = Morphology.Pronoun(pronoun:"xey", morphology: nominativeMorphology)
- let xem = Morphology.Pronoun(pronoun:"xem", morphology: accusativeMorphology)
- let xeir = Morphology.Pronoun(pronoun:"xeir", morphology: genitiveMorphology)
- let xeirs = Morphology.Pronoun(pronoun: "xeirs", morphology: genetiveIndependent)
- let xemself = Morphology.Pronoun(pronoun: "xemself", morphology: reflexive)
- // Create the localized term of address.
- let xemTermOfAddress = TermOfAddress.localized(language: .init(identifier: "en"), pronouns: [xey, xem, xeir, xeirs, xemself])
- // Define the resources you want to apply gender agreement to.
- let resources = [
LocalizedStringResource("^[They](referentConcept: 1) liked your post."),
LocalizedStringResource("Anne read the post to ^[them](referentConcept: 1)."),
LocalizedStringResource("You liked ^[their](referentConcept: 1) post."),
LocalizedStringResource("The post was ^[theirs](referentConcept: 1)."),
LocalizedStringResource("^[They](referentConcept: 1) posted it ^[themselves](referentConcept: 1)."),
- ]
- var options = AttributedString.LocalizationOptions()
- // Set the inflection concept to use the new term of address.
- options.concepts = [.termsOfAddress([xemTermOfAddress])]
- let results = [
AttributedString(localized: resources[0], options: options), // "Xey liked your post."
AttributedString(localized: resources[1], options: options), // "Anne read the post to xem."
AttributedString(localized: resources[2], options: options), // "You liked xeir post."
AttributedString(localized: resources[3], options: options), // "The post was xeirs."
AttributedString(localized: resources[4], options: options), // "Xey posted it xemself."
- ]
呼び名の語句の使用例については、以下を参照してください。
AttributeScopes.FoundationAttributes.ReferentConceptAttribute
AttributeScopes.FoundationAttributes.AgreementConceptAttribute
トピックス
事前に定義された呼び名の語句の使用
static let feminine: TermOfAddress
女性代名詞と文法上の性別を表すための呼び名の語句。
static let masculine: TermOfAddress
男性代名詞と文法上の性別を表す呼び名の語句。
static let neutral: TermOfAddress
性別に依存しない代名詞および文法上の性別を表す呼び名の語句。
あなた独自の呼び名の語句を定義
static func localized(language: Locale.Language, pronouns: [Morphology.Pronoun]) -> TermOfAddress
代名詞のグループに対して特定の言語に限定された呼び名の語句を返します。
var language: Locale.Language?
呼び名の語句に関連した特定の言語。
var pronouns: [Morphology.Pronoun]
呼び名の語句に関連した代名詞。
呼び名の語句の比較
static func == (TermOfAddress, TermOfAddress) -> Bool
呼び名の 2 つの語句が等しいかどうかを示すブール値。
static func != (TermOfAddress, TermOfAddress) -> Bool
呼び名の 2 つの語句が等しくないかどうかを示すブール値。
var hashValue: Int
呼び名の語句ののハッシュ値。
func hash(into: inout Hasher)
呼び名の語句の不可欠なコンポーネントを、与えられたハッシュ関数に渡すことによってハッシュします。
呼び名の語句のコード化と復号化
func encode(to: Encoder)
与えられたエンコーダに値をコード化します。
init(from: Decoder)
与えられた復号器から復号して新しいインスタンスを作成します。
関連
以下に準拠
Decodable
Encodable
Equatable
Hashable
Sendable
以下も見よ
自動文法一致
enum InflectionRule
属性付き文字列が自動的に文法一致を実行する方法に影響を与える規則。
struct Morphology
文字列の文法的特性の説明。
enum InflectionConcept
テキストをローカライズするときに使用する語形変化メソッド。
struct Morphology.Pronoun
第三者を指すカスタム代名詞。
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ