web-dev-qa-db-ja.com

カスタムSiriKitインテントのローカライズ

私のXcodeはv10で、iOS 12をターゲットにしたSiriKitのカスタムインテントを開発しています。

Xcode 10では、カスタムインテントは.intentdefinitionファイルで設計されており、インテントフレーズの独自のパラメーター、インテントのタイトル、およびSiriそのインテントのショートカット)を定義できます。プロジェクトのビルド.intentdefinitionファイルを使用すると、XcodeはそのインテントのINIntent派生クラスを自動的に生成します。

私の問題は、インテントのタイトルがシステムの言語で一般的に表示されるように英語以外の言語をサポートするために> Siri&ユーザーがカスタムインテントのショートカットを操作できるときに検索することです。 .intentdefinitionファイルにローカライズされたインテントタイトルを提供する必要があります。

ファイルインスペクターで.intentdefinitionファイルに別の言語を追加して、プロジェクトをビルドしようとすると、次のようになります。

duplicate output file '/Users/.../IntentDefinitionGenerated/Intents/MyCustomIntent.Swift' on task: IntentDefinitionCodegen /Users/.../ru.lproj/Intents.intentdefinition

これはXcodeが.lprojフォルダー内の複数の.intentdefinitionファイルを参照し、それぞれに同じ名前のクラスを生成しようとするために発生している可能性があります。

IOS 12用に.intentdefinitionファイルをローカライズするにはどうすればよいですか?

12
Desmond Hume

intentdefinitionファイルに移動-> File Inspector-> Select Localize-> intentdefinitionファイルの現在の言語を選択します。これにより、既存のintentdefinitionファイルが現在の言語に変換されます。

今度は同じintentdefinitionfileを再度選択し、他の言語を追加します->他のロケール用にテキストをカスタマイズできる新しいIntents.stringsファイルが作成されます。

Localized Intents.intentdefinition file

Intents.intentdefinition file after localization

11
Noor

インテント定義ファイルはすでにローカライズされているようです(Xcodeがru.lprojフォルダー)なので、「ソースのコンパイル」ビルドフェーズでファイルのコピーが2つあることが問題である可能性があります。

ここに行く:

Project -> App target -> Build Phases -> Compile Sources

重複するエントリを探します。重複が見つかった場合は、コピーの1つを削除します

Editor > Validate Settings…重複を見つける

ビルドをクリーンアップすることもできます

3
nevan king

@ desmond-humeと同じ問題がありました。私の場合、「Base」が利用可能になる前にローカライズがすでに含まれている古いxcodeプロジェクトがあります。最初の.intentdefinitionファイルは、ベースローカリゼーションとして追加する必要があります。そこから、さらにローカリゼーションを追加できます。Xcodeは、ローカリゼーションごとに.stringsファイルのみを追加します。

ベースのローカリゼーションがない場合、Xcodeはローカリゼーションごとに新しい.intentdefinitionを追加し、「複数のコマンドが生成する...」エラーを引き起こします。

チェックボックスを使用して、メインプロジェクト設定の下にベースローカリゼーションを追加できます。一部の古いプロジェクト(私のような)もこの問題に遭遇する可能性があります: iOS-ベースのローカリゼーションペインの使用は常に空です

1
Eric Shieh

私は最近アプリのインテントをローカライズしましたが、元のローカライズ後に、別のインテントを追加しました。

Xcode 10.2.1では、少なくとも確認しましたが、プロジェクトの最上位を選択すると、「ローカライズ用にエクスポート」オプションがあります。出力を保存するように求められます。出力を調査すると、サポートする言語ごとに.xclocフォルダーが表示されます。 「ローカライズされたコンテンツ」の下の.xliffを掘り下げて開きます。

enter image description here

そこにあなたはアイテムの宝庫を見つけ、あなたは探しています、そしてあなたは「ターゲット」を持っていないアイテムを探しています

enter image description here

Appleのエンジニアがこれを示しましたが、編集してから再インポートする必要があるため、私はこのプロセスに不満がありました。ファイルを翻訳者に送信し、.xliffを取り戻します。

Intentsの煩わしさは、任意のIDを使用し、読みやすいものではないという事実です。

欠けている翻訳を見つけるための簡単な方法は(まだ)見つかりません。お役に立てれば!

0
Alex Y