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()
}