SiriTipView命令未本地化问题求助
问题详情
- 快捷指令本地化字符串存放在
Ropes/AppShortcuts.strings,在「快捷指令」App中显示正常,但SiriTipView内的命令未实现本地化 - 核心代码:
SiriTipView(intent: AddRopeShortcut()) .frame(width: 100)
- 本地化配置示例(俄文):
"Create a ${applicationName}" = "Создать ${applicationName}";
- 命令定义文本:
"Create a \(.applicationName)"
- 已尝试将
AppShortcuts.strings移至项目根目录,问题未解决;当前环境:iOS 16.3 beta 2、Xcode 14.2、macOS 13.2 beta 2
可行解决方案
检查文件目标成员与本地化配置
选中AppShortcuts.strings文件,在右侧「文件检查器」中,确认对应项目Target已勾选,且所需的本地化语言包(如俄语、中文)已正确添加,没有遗漏。验证字符串键的一致性
SiriTipView读取的是Intent的shortcutTileTitle对应的本地化键,而非直接使用命令文本。要确保AddRopeShortcutIntent的shortcutTileTitle键与AppShortcuts.strings中的键完全匹配,包括参数占位符的格式(比如${applicationName}要和代码中的\(.applicationName)对应正确)。清理缓存并重装应用
- 在Xcode中执行
Product > Clean Build Folder清理构建缓存 - 删除模拟器/测试设备上的应用
- 重启设备后重新编译安装应用
- 在Xcode中执行
适配iOS 16 Beta版本问题
iOS 16部分Beta版本存在SiriTipView本地化的已知Bug,建议升级到最新的iOS 16 Beta版本,或切换到Xcode 14.3 Beta(对应iOS 16.4 Beta)重新测试,看是否修复该问题。手动指定本地化标题
可以在AddRopeShortcutIntent的实现中重写shortcutTileTitle方法,手动获取本地化字符串:override var shortcutTileTitle: String? { let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String ?? "" return String.localizedStringWithFormat(NSLocalizedString("Create a %@", comment: "Siri tip title"), appName) }同时在
Localizable.strings中添加对应本地化条目:"Create a %@" = "Создать %@";
内容的提问来源于stack exchange,提问作者Plutonictoast1
相关产品推荐
相关产品推荐

