AppIntent: как представить локализованный заголовок в приложении «Ярлыки»?

Используя MacOS, я обнаружил, что заголовки в приложении «Ярлыки» не отображаются динамически.

Приведенный ниже код всегда показывает значение по умолчанию для этого действия в приложении «Ярлыки», например. «Снова не найдено».

      
@available(macOS 13.0, *)
struct EnterValueIntent: AppIntent {
    
    static let title: LocalizedStringResource = LocalizedStringResource("entervalue", defaultValue: "Not Found again", table: "AppIntentLocalizable.strings", locale: Locale.current)
        
    @MainActor
    func perform() async throws -> some IntentResult {
        return.result(
            value: "result")
    }
}

У меня есть пара значений ключа в таблице строк (AppIntentLocalizable.strings):

      "entervalue" = "Enter Value";

У меня есть этот файл таблицы строк, локализованный для моей текущей локали.

Я также пытался использовать основной файл локализации в приложении (Localizable.strings) с тем же результатом (приложение использует эту таблицу строк для локализации в приложении).

Файлы локализации имеют правильные цели и правильную локализацию. Я могу читать из этого файла, используя NSLocalizedString в приложении.

Я также попробовал получить {} для заголовка, который в приложении «Ярлыки» затем показывает имя структуры для действия. Даже не показывает значение по умолчанию.

Приложение Shortcut будет отображать значение по умолчанию, но, похоже, не попадет в таблицу строк при предоставлении списка заголовков для действий.

Пожалуйста помоги.

1 ответ

Я также испытываю ту же проблему. Я пытаюсь прочитать строки из моегоLocalizable.stringsфайл для создания локализованногоAppIntentназвание наiOS

Документации не так много, но я предполагаю, что делаю это правильно, основываясь на документации Apple.

https://developer.apple.com/documentation/foundation/localizedstringresource/3988421-init?changes=_6

      static var title: LocalizedStringResource = .init(
    "shortcut.watch.channel.title",
    table: "Localizable.strings",
    locale: .current,
    bundle: .main,
    comment: ""
)

Пользовательский ярлык просто заканчиваетсяStructимя в ярлыке приложения.

      struct WatchTVChannelIntent: AppIntent {

static var title: LocalizedStringResource = .init(
    "shortcut.watch.channel.title",
    table: "Localizable.strings",
    locale: .current,
    bundle: .main
    comment: ""
)

static var openAppWhenRun: Bool = true

@MainActor
func perform() async throws -> some ProvidesDialog {
    try await executeIntentAction()
}
Другие вопросы по тегам