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

如何解决iOS 14小组件名称(CFBundleDisplayName)本地化失效问题

iOS 14 小组件名称本地化解决方案

嘿,我太懂这种旧方法突然失效的郁闷了!iOS 14 推出的 WidgetKit 和之前 iOS 8 的 Today 小组件机制完全不一样,所以你用主 App 的 InfoPlist.strings 设置 CFBundleDisplayName 自然就不生效了。下面给你两种靠谱的解决方法,亲测有效:

方法一:通过小组件 Target 的本地化配置文件设置

  1. 首先确保你选中的是小组件的 Target,而非主 App 的 Target
  2. 给小组件 Target 添加对应语言的 InfoPlist.strings 文件(如果还没添加的话)
  3. 在这个 InfoPlist.strings 里添加:
    "CFBundleDisplayName" = "你的小组件本地化名称";
    
  4. 关键检查:在 Xcode 的「Project -> Info -> Localizations」里,确认小组件 Target 已经勾选了你需要的语言,不然本地化文件不会生效

方法二:通过 WidgetKit 代码动态设置(更灵活)

如果你的小组件是用 WidgetKit 开发的,推荐直接在代码里配置本地化名称,这种方式更可控:

  1. 先在小组件 Target 的 Localizable.strings 文件(对应语言版本)里添加本地化字符串:
    "widget_display_name" = "我的专属小组件";
    
  2. 在你的 Widget 结构体的 body 里,用 NSLocalizedString 来设置 configurationDisplayName:
    struct MyWidget: Widget {
        let kind: String = "MyWidget"
    
        var body: some WidgetConfiguration {
            StaticConfiguration(kind: kind, provider: Provider()) { entry in
                MyWidgetEntryView(entry: entry)
            }
            .configurationDisplayName(NSLocalizedString("widget_display_name", comment: "小组件显示名称"))
            .description("这里可以写小组件的描述文本,同样支持本地化")
        }
    }
    

避坑小贴士

  • 做完配置后如果还是没生效,记得先 clean 项目的 Build Folder(快捷键 Cmd+Shift+K),然后重新安装 App 和添加小组件,Xcode 的缓存有时候会捣乱
  • 不要混淆主 App 和小组件的 Target 配置,所有和小组件相关的本地化设置都必须针对小组件 Target 来操作

内容的提问来源于stack exchange,提问作者coolcool1994

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:39:05