Локализация пользовательских намерений SiriKit - PullRequest
0 голосов
/ 18 сентября 2018

Мой Xcode v10, и я разрабатываю настраиваемое намерение для SiriKit, ориентированное на iOS 12.

В Xcode 10 настраиваемые намерения создаются в файлах .intentdefinition, где вы можете определить свои собственные параметры для намерения.фразы, а также название намерения и ярлык Siri для этого намерения.Создание проекта с помощью файла .intentdefinition позволяет Xcode автоматически генерировать производный класс INIntent для этого намерения.

Моя проблема заключается в том, чтобы поддерживать другие языки, кроме английского, чтобы заголовок намерения отображался на языке системы вОбщие> Siri & Search, когда пользователь может манипулировать ярлыками для пользовательских намерений, мне нужно предоставить заголовок локализованного намерения для моего файла .intentdefinition.

Когда я пытаюсь добавить другой язык для моего файла .intentdefinition вИнспектор файлов, а затем создать проект, который я получаю:

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

Это, вероятно, происходит, потому что Xcode видит несколько файлов .intentdefinition в папках .lproj и пытается сгенерировать один и тот жеименованный класс для каждого из них.

Как локализовать мой файл .intentdefinition для iOS 12?

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

Похоже, вы уже локализовали свой файл определения намерений (поскольку XCode поместил его в папку ru.lproj), поэтому проблема может заключаться в том, что у вас есть две копии файла на этапе сборки «Исходники компиляции» ,

Иди сюда:

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

и ищите дубликаты записей. Если вы найдете дубликат, удалите одну из копий

Вы также можете попробовать Editor > Validate Settings…, чтобы найти дубликаты

Вы также можете попробовать очистить сборку

0 голосов
/ 18 декабря 2018

У меня была та же проблема, что и у @ desmond-hume.В моем случае у меня есть старый проект xcode, который уже содержал некоторые локализации до того, как «Base» был доступен.Исходный файл .intentdefinition должен быть добавлен в качестве базовой локализации.Оттуда, дальнейшая локализация может быть добавлена, и XCode добавит только файл .strings для каждой локализации.

Без базовой локализации Xcode добавляет новое определение .intent для каждой локализации, которое вызывает ошибку «несколько команд создают ....».

Вы можете добавить базовую локализацию в основной проектНастройки через чекбокс.Некоторые старые проекты (например, мой) также могут столкнуться с этой проблемой: iOS - при использовании базовой панели локализации всегда пусто

0 голосов
/ 24 сентября 2018

Перейдите к файлу intentdefinition -> File Inspector -> Select Localize -> Теперь выберите текущий язык для файла intentdefinition.Это преобразует существующий файл intentdefinition для текущего языка.

Теперь снова выберите тот же файл intentdefinition, добавьте другой язык -> он создаст новый файл Intents.strings, в котором вы можете настроить текст длядругие локали.

Localized Intents.intentdefinition file

Intents.intentdefinition file after localization

...