Проблема интернационализации с Sirikit Custom Intents & iOS 13.4.1 - PullRequest
2 голосов
/ 19 апреля 2020

В моем приложении iOS я реализовал два Custom Intents с Sirikit. Когда я их разрабатывал, в моем iphone было установлено iOS 13.3, и в одном из моих намерений есть приглашение Siri Dialog, запрашивающее значение одного параметра. Все приложение переведено на английский sh и испанский sh, и пользовательское намерение хорошо работало на обоих языках.

Когда я обновил свой iphone до iOS 13.4.1, мое пользовательское намерение начало возникают следующие проблемы (я видел обе проблемы в зависимости от установки / теста / устройства):

  • Сири запрашивает значение параметра, как будто я не ставлю какой-либо пользовательский диалог со стандартной фразой «Что значение вы хотите для param? " (более или менее)
  • Siri запрашивает диалоговое окно Siri на английском языке sh, а не на испанском sh, даже если остальные фразы и ответы Siri остальной части Intent и приложения верны переведено на испанский sh. Единственный перевод, который не работает, это приглашение Siri Dialog.

Я нахожу эту проблему очень странной и раздражающей. Я попытался воссоздать файлы перевода для Intent.intentdefinition: Intent.strings (Base), Intent.strings (English), Intent.strings (Spanish), и я даже попытался воссоздать полное определение настраиваемого намерения, но у меня все еще есть проблема.

I также пытался изменить язык iOS и язык Siri на моем телефоне, перезапустить, переустановить приложение, намерения и т. д. c ...

Это Info.plist моего расширения Sirikit:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
<plist version="1.0">  
<dict>  
  <key>CFBundleDevelopmentRegion</key>  
  <string>$(DEVELOPMENT_LANGUAGE)</string>  
  <key>CFBundleDisplayName</key>  
  <string>InventorySearchIntent</string>  
  <key>CFBundleExecutable</key>  
  <string>$(EXECUTABLE_NAME)</string>  
  <key>CFBundleIdentifier</key>  
  <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>  
  <key>CFBundleInfoDictionaryVersion</key>  
  <string>6.0</string>  
  <key>CFBundleName</key>  
  <string>$(PRODUCT_NAME)</string>  
  <key>CFBundlePackageType</key>  
  <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>  
  <key>CFBundleShortVersionString</key>  
  <string>$(MARKETING_VERSION)</string>  
  <key>CFBundleVersion</key>  
  <string>$(CURRENT_PROJECT_VERSION)</string>  
  <key>NSExtension</key>  
  <dict>  
  <key>NSExtensionAttributes</key>  
  <dict>  
  <key>IntentsRestrictedWhileLocked</key>  
  <array/>  
  <key>IntentsRestrictedWhileProtectedDataUnavailable</key>  
  <array/>  
  <key>IntentsSupported</key>  
  <array>  
  <string>NumTotalItemsIntent</string>  
  <string>SearchItemIntent</string>  
  </array>  
  </dict>  
  <key>NSExtensionPointIdentifier</key>  
  <string>com.apple.intents-service</string>  
  <key>NSExtensionPrincipalClass</key>  
  <string>$(PRODUCT_MODULE_NAME).IntentHandler</string>  
  </dict>  
</dict>  
</plist>  

Есть решение для этого? Это ошибка с iOS 13.4? Интеграция Siri очень важна для приложения, которое я разрабатываю, и это блокирует меня.

Заранее спасибо!

1 Ответ

0 голосов
/ 22 апреля 2020
  1. Локализуйте ваш файл определения намерений на все языки, которые поддерживает ваше приложение
  2. Убедитесь, что ваш проект XCode идентифицирует локализации по схеме идентификатора языка ISO 639-1 (дополнительная информация о схемах). В старых проектах Xcode может использоваться другая схема идентификации языка, и ее следует обновить.
  3. Если ваше приложение еще не было локализовано, убедитесь, что выбранный язык Siri в настройках соответствует CFBundleDevelopmentRegion вашего проекта Xcode, и значение этот ключ в формате ISO 639-1

Надеюсь, это работает для вас

...