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

如何在Xcode 15中使用String Catalog本地化应用名称?

iOS应用名称本地化的更新实现方式

除了传统的直接在Info.plist中配置CFBundleDisplayName并通过对应语言的InfoPlist.strings本地化的方式,目前还有几种更灵活、易维护的实现方式:

  • 统一键值管理的InfoPlist本地化
    不再直接在InfoPlist.strings中写CFBundleDisplayName的键,而是先在Info.plist里将CFBundleDisplayName的值设为自定义变量(比如$(APP_DISPLAY_NAME)),然后在各语言的InfoPlist.strings中定义这个变量对应的本地化内容:

    // 英文InfoPlist.strings
    "APP_DISPLAY_NAME" = "My App";
    // 中文InfoPlist.strings
    "APP_DISPLAY_NAME" = "我的应用";
    

    这种方式能让本地化键名更语义化,便于团队协作维护。

  • 结合Localizable.strings统一管理多场景名称
    如果你的应用需要在内部UI(比如首页标题、设置页)和系统显示(桌面、设置列表)使用相同的本地化名称,可以将应用名称的键统一放在Localizable.strings中,同时在InfoPlist.strings里引用这个键的值:

    // Localizable.strings(英文)
    "app_display_name" = "My App";
    // InfoPlist.strings(英文)
    "CFBundleDisplayName" = NSLocalizedString("app_display_name", comment: "");
    

    这样只需维护一套键值,就能同步系统和内部UI的应用名称本地化。

  • SwiftUI场景下的简化实现
    对于SwiftUI应用,内部UI显示的应用名称可以直接通过Text组件结合LocalizedStringKey实现,无需额外代码:

    Text("app_display_name")
    

    而系统显示的名称仍需通过InfoPlist.strings配置,但可以和内部UI使用同一个本地化键,实现统一管理。

  • 动态调整内部显示名称(系统名称仍需静态配置)
    如果你需要根据用户设置或场景动态切换App内部显示的名称,可以通过代码读取不同的本地化键,比如:

    func getAppDisplayName(for scenario: AppScenario) -> String {
        switch scenario {
        case .normal:
            return NSLocalizedString("app_display_name", comment: "")
        case .promotion:
            return NSLocalizedString("app_display_name_promo", comment: "")
        }
    }
    

    注意:系统层面的应用名称(桌面、设置列表)无法动态修改,必须通过静态本地化配置,重启App后生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:03:22