You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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对应的本地化键,而非直接使用命令文本。要确保AddRopeShortcut Intent的shortcutTileTitle键与AppShortcuts.strings中的键完全匹配,包括参数占位符的格式(比如${applicationName}要和代码中的\(.applicationName)对应正确)。

  • 清理缓存并重装应用

    1. 在Xcode中执行Product > Clean Build Folder清理构建缓存
    2. 删除模拟器/测试设备上的应用
    3. 重启设备后重新编译安装应用
  • 适配iOS 16 Beta版本问题
    iOS 16部分Beta版本存在SiriTipView本地化的已知Bug,建议升级到最新的iOS 16 Beta版本,或切换到Xcode 14.3 Beta(对应iOS 16.4 Beta)重新测试,看是否修复该问题。

  • 手动指定本地化标题
    可以在AddRopeShortcut Intent的实现中重写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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:50:23