WWDC Quick Look 💓 By SwiftGGTeam
Unlock the power of grammatical agreement

Unlock the power of grammatical agreement

元の動画を見る

ハイライト

Foundation フレームワークには、次のような新しい依存関係合意 API が追加されます。agreeWithConceptそしてagreeWithArgumentプロパティ、およびTermOfAddressタイプとreferentConceptアプリがクロスワード文法の一貫性とパーソナライズされた代名詞の選択を自動的に処理できるようにする属性。

主な内容

構文の一貫性の価値

ソフトウェア内の言語は、ユーザーの日常的なやり取りに影響を与えます。言語を処理することは、特にその言語を話せない場合には困難です。

(00:34) Apple は 2021 年に Foundation に Grammar Consistency API を導入し、ユーザーの呼び方に基づいてアプリが言葉遣いを自動的に調整できるようにしました。今年、このシステムには、依存関係の一貫性、包括的な言語、新しい言語のサポートという 3 つの重要なアップグレードがあります。

一貫性に依存する

(01:17) 多くの言語では、形容詞の性と数が名詞と一致していなければなりません。スペイン語では「ensalada pequeña」が正しく、「ensalada pequeño」は間違いです。形容詞の語尾は名詞に応じて変えなければなりません。

この種の単語間の文法的な関連性は、これまで対処するのが困難でした。今年は 2 つの新しいプロパティ ソリューションが導入されました。

agreeWithConcept文字列の外側の単語に同意するために使用されます。たとえば、食品のサイズの説明は、食品の名前と一致している必要があります。

var options = AttributedString.LocalizationOptions()
options.concepts = [.localizedPhrase(food.localizedName)]

let size = AttributedString(localized: "small", options: options)

キーポイント:

  • concepts構文の変更に影響を与えるが、文字列を直接挿入しないオブジェクトを渡します。
  • .localizedPhraseパッケージングには合意された文言が必要です
  • 文字列内^[small](agreeWithConcept: 1)注釈は、その単語が最初の概念と一致している必要があることを示します。

agreeWithArgument同じ文字列内の単語に同意するために使用されます。

"^[Our](inflect: true) ^[pizza](arg1) is ^[made](agreeWithArgument: 1) fresh"

キーポイント:

  • inflect: trueブロック内の単語を一致させる
  • agreeWithArgument: 1単語を文字列の最初のパラメータと一致させる
  • 維持しようとするinflectブロックを短くして曖昧さを減らす

包括的な言語

08:12TermOfAddressこのタイプは、男性、女性、中性の 3 つの呼び出し方法をサポートします。協力するreferentConcept属性を選択すると、システムは自動的に正しい代名詞を選択します。

struct DeliveryPerson {
    var name: String
    var avatar: Image
    var preferredTermsOfAddress: [TermOfAddress]
}

var options = AttributedString.LocalizationOptions()
options.concepts = [.termsOfAddress(person.preferredTermsOfAddress)]

let message = AttributedString(
    localized: "\(person.name) is on ^[their](referentConcept: 1) way.",
    options: options
)

キーポイント:

  • TermOfAddressできる.masculine.feminine.neutral
  • referentConcept: 1代名詞が最初の概念を指すことを示します
  • このシステムはに基づいていますTermOfAddress自動的に正しい代名詞形式に置き換えます
  • カスタム代名詞もサポートしています。Morphology.Pronoun特定のフォームを指定する

言語サポートを追加しました

(02:29) スペイン語のサポートは 2021 年に予定されています。フランス語、イタリア語、ブラジル系ポルトガル語は 2022 年に予定されています。今年新たにヨーロッパ系ポルトガル語とドイツ語が追加されました。

##詳細

文字列カタログの文法注釈

(11:40) Xcode の文字列カタログでは、ローカライズされた文字列に構文属性を直接追加できます。

// 西班牙语:让 "nuestro" 和 "pizza" 达成一致
"^[Our](inflect: true) ^[pizza](arg1)"

// 让 "made" 跟第一个参数 "pizza" 达成一致
"^[made](agreeWithArgument: 1) fresh"

キーポイント:

  • 文字列カタログエディターにプロパティを直接追加します。
  • inflect: true同じブロック内の単語に適用されます
  • agreeWithArgument遠い言葉にぴったり
  • 価値1第一パラメータと同じことを示します

食品サイズの一貫性

(12:48) 食品のサイズは、特定の食品名に応じて変更する必要があります。

// 定义食物尺寸,支持本地化名称
enum FoodSize: String {
    case small, medium, large

    func localizedName(for food: Food) -> String {
        // 返回与食物性别一致的尺寸名称
    }
}

// 格式化尺寸按钮
var options = AttributedString.LocalizationOptions()
options.concepts = [.localizedPhrase(food.localizedName)]

let sizeButton = AttributedString(
    localized: "\(size.localizedName(for: food))",
    options: options
)

キーポイント:

  • localizedPhraseコンセプトとして食べ物名を渡します
  • 渡されたサイズ名agreeWithConcept食べ物の名前に同意
  • スペイン語では、ピザ(女性的)は「ペケーニャ」、サンドイッチ(男性的)は「ペケーニョ」に相当します。

カスタム代名詞

(10:19) デフォルトの男性的/女性的/中立的では不十分な場合は、次のようにすることができます。LocalizedTermOfAddress特定の代名詞を指定します。

let customPronouns = LocalizedTermOfAddress(
    language: "en",
    pronouns: [
        Morphology.Pronoun(
            pronoun: "they",
            morphology: Morphology(grammaticalCase: .nominative)
        ),
        Morphology.Pronoun(
            pronoun: "them",
            morphology: Morphology(grammaticalCase: .accusative)
        ),
        // ... 其他格
    ]
)

キーポイント:

  • ターゲット言語を指定する
  • 必要な代名詞の形式をすべてリストします。
  • 各代名詞には形態学的および文法的な格情報が含まれています
  • 英語には代名詞の形式が 5 つ必要です

重要ポイント

  1. 多言語アプリケーションに構文の一貫性を追加
  • アプリがスペイン語、フランス語、ドイツ語などをサポートしている場合は、次を使用します。inflect: trueそしてagreeWithArgument形容詞と名詞の一致を自動的に処理します
  • 言語ごとに特別なロジックを記述する必要はありません
  • エントリ: 文字列カタログに属性注釈を追加
  1. パーソナライズされた代名詞サポートを実装する
  • ユーザープロフィールに追加preferredTermsOfAddress分野
  • 使用TermOfAddressそしてreferentConcept正しい代名詞を自動的に選択します
  • 入り口:TermOfAddress.masculine / .feminine / .neutral
  1. 既存のローカリゼーションの構文エラーを修正
  • スペイン語やフランス語などのローカライズされた文字列の形容詞と名詞が一貫しているかどうかを確認します
  • 使用agreeWithConcept文字列全体の語形変化の処理
  • エントリ: 文字列カタログ内agreeWithConceptそしてagreeWithArgument財産

関連セッション

コメント

GitHub Issues · utterances