列挙型


AttributeScopes.FoundationAttributes
.AgreementArgumentAttribute


ローカライズされた文字列内の引数との文法上の一致を表す属性。


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+

@frozen
enum
AgreementArgumentAttribute






概観


多くの言語では、それらの文中で文法的一致が必要です。たとえば、スペイン語では、形容詞と動詞は、文中で参照する主語の性別と一致する必要があります。たとえば、次の文をスペイン語に翻訳する必要があるとします。「Your small salad is ready(小さなサラダができました。)」 正しい翻訳は「Tu ensalada pequeña está lista. 」です。


課題は、ほとんどの場合、ローカリゼーションファイルには翻訳された単語の男性形のみが含まれていることです。したがって、この文では、small で ready という男性形の単語の pequeñolisto が、文の女性主語 (ensalada) と一致するように単語変形して pequeñalista になる必要があります。( アメリカでは、スペイン語が第一外国語として教えられており、すなわち殆どのアメリカ人にとって、スペイン語は我々日本人にとっての英語と同じような意味を持つ。)


inflect 属性を使用して単語 ensaladapequeño を一緒に活用することで、文の最初の部分を文法的に一致させることができます。ensalada は文の女性主語であるため、男性形の pequeño は女性形の pequeña に変化します。


ただし、文の 2 番目の部分には、agreeWithArgument 属性が必要です。listo は文の終わりにありますが、先頭にある主語の ensalada で活用する必要があります。listoacceptWithArgument 属性で包み込み、女性形の単語 ensalada を指すようにすると、男性形 listo が女性形 lista に活用し、文全体が一致します。


このように acceptWithArgument を使用すると、ローカリゼーションファイルに各単語の男性形と女性形の両方を含める必要がなくなります。語尾変化が必要な単語を包み込み、一致する必要がある単語を指し示すことにより、システムはローカライズされたテキストで一致を実現します。


以下の手順により、翻訳時に適切な性別の一致が得られます。


  1. 翻訳に必要なすべての単語を含む型を作成します。たとえば、itemsize の 2 つのローカライズ可能な文字列プロパティを含む Order 構造体を作成します。

  2. 食品の itemsize に必要な翻訳をスペイン語ローカリゼーションファイルに追加します。

  3. 翻訳すべきスペイン語ローカリゼーションファイルからの英語のキーフレーズと、活用すべき単語 (sizeitem) を表すプレースホルダー変数を含む LocalizedStringResource を作成します。

  4. スペイン語ローカリゼーションファイル内で、翻訳の一部として置換すべき単語の %@ プレースホルダーを追加します。inflec 属性の値を true にして、サイズと項目を表すスペイン語を文法的に一致させます。次に、listoacceptWithArgument 属性で包み込み、文中の 2 番目の置換 (ensalada) を指すことで、スペイン語の男性単語 ready (listo) がサラダを表す女性単語 (ensalada) と一致するようにします。以下のコード例では、英語からスペイン語に翻訳するときに、small salad %1@%2@ のプレースホルダー属性が逆順序になるかに注目してください。

  5. LocalizedStringResource インスタンスを AttributedString の新しいインスタンスに渡すことで、文全体を語形変化させます。

  1. struct Order {
  2. let item: String
  3. let size: String
  4. }
  5. let order = Order(item: String(localized: "salad"), size: String(localized: "small"))
  6. // ____________
  7. // In the Spanish localization file:
  8. // "salad" = "ensalada"
  9. // "small" = "pequeño"
  10. // ____________
  11. // Define the resource you want to apply grammatical agreement to.
  12. let resource = LocalizedStringResource("Your \(order.size) \(order.item) is ready.")
  13. // ____________
  14. // In the Spanish localization file:
  15. // "Your %1@ %2@ is ready." = "Tu ^[%2$@ %1$@](inflect: true) está ^[listo](agreeWithArgument: 2)."
  16. // ____________
  17. // Make a new string imposing grammatical agreement on the resource from the localized phrase.
  18. let result = AttributedString(localized: resource)
  19. // result == "Tu ensalada pequeña está lista."





型エイリアス


typealias AttributeScopes.FoundationAttributes.AgreementArgumentAttribute.Value



インスタンスプロパティ


var description: String



型プロパティ


static var inheritedByAddedText: Bool


static var invalidationConditions: Set<AttributedString.AttributeInvalidationCondition>?


static let markdownName: String


static var markdownName: String


static let name: String


static var runBoundaries: AttributedString.AttributeRunBoundaries?



型メソッド


static func decode(from: Decoder) -> Int


static func decodeMarkdown(from: Decoder) -> Int


static func encode(Int, to: Encoder)






関連


以下に準拠


DecodableAttributedStringKey


EncodableAttributedStringKey


MarkdownDecodableAttributedStringKey






以下も見よ


自動文法一致属性の使用


let inflect: AttributeScopes.FoundationAttributes.InflectionRuleAttribute

語形変化ルール属性にアクセスするためのスコープ。


enum AttributeScopes.FoundationAttributes.InflectionRuleAttribute

語形変化ルールを属性として使用するための型。


let agreementArgument: AttributeScopes.FoundationAttributes.AgreementArgumentAttribute

一致引数属性にアクセスするためのスコープ。


let agreementConcept: AttributeScopes.FoundationAttributes.AgreementConceptAttribute

契約概念属性にアクセスするためのスコープ。


enum AttributeScopes.FoundationAttributes.AgreementConceptAttribute

語形変化したテキストの一部ではないオブジェクトの文法上の一致を表す属性。


let morphology: AttributeScopes.FoundationAttributes.MorphologyAttribute

形態属性にアクセスするためのスコープ。


enum AttributeScopes.FoundationAttributes.MorphologyAttribute

形態を属性として使用するための型。


let referentConcept: AttributeScopes.FoundationAttributes.ReferentConceptAttribute

参照先の概念属性にアクセスするためのスコープ。


enum AttributeScopes.FoundationAttributes.ReferentConceptAttribute

ローカライズされたテキスト内で代名詞を置換するための文法上の一致概念を指定する属性。


let inflectionAlternative: AttributeScopes.FoundationAttributes.InflectionAlternativeAttribute

語形変化の代替属性にアクセスするためのスコープ。


enum AttributeScopes.FoundationAttributes.InflectionAlternativeAttribute

システムが文法上の一致を達成できない場合に、代替の語形変化を提供する属性。


















トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ