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

如何在Xcode中用自定义名称自动生成String Catalog并兼容旧本地化文件

String Catalog与旧本地化文件并行的问题解决方案

问题背景

我计划逐步把项目迁移到Xcode的全新String Catalog,但目前还保留着Localizable.strings文件,不想一次性全量迁移,希望两者能并行使用。根据WWDC 2023的视频内容,苹果说String Catalog可以和旧格式共存,但添加默认名称的Localizable.xcstrings时,Xcode会抛出编译错误:

Localizable.xcstrings cannot co-exist with other .strings or .stringsdict tables with the same name

这和官方说明矛盾。把String Catalog重命名为WidgetLocalizable.xcstrings后项目能正常构建,但Xcode没法自动生成条目。手动加条目有三个麻烦:

  • 工作量大
  • Xcode没法追踪翻译进度
  • 每次创建LocalizedStringResource都得额外加table名称

想咨询两个问题:

  1. 用自定义名称的String Catalog时,能不能让Xcode自动生成条目?怎么操作?
  2. 能不能指定Xcode里整个文件或文件夹用特定的非标准String Catalog,不用每次给字符串加table名称?

问题1:自定义名称String Catalog自动生成条目

可以实现,操作步骤如下:

  1. 打开项目的Build Settings,找到Localization分类下的String Catalog Compiler Options
  2. 添加新的编译选项:--auto-generate-table WidgetLocalizable(把WidgetLocalizable换成你的自定义Catalog名称)
  3. 确认你的自定义WidgetLocalizable.xcstrings已经添加到项目的本地化目标里
  4. 重新编译项目,Xcode会自动识别代码里指定了该table的LocalizedStringResource或NSLocalizedString,并把对应条目生成到自定义Catalog中

如果用的是SwiftUI的LocalizedStringResource,先在代码里统一指定table为自定义名称,比如:

LocalizedStringResource("greeting", table: "WidgetLocalizable")

编译后Xcode就会自动把这些字符串抓取到对应的Catalog里。


问题2:指定文件/文件夹默认使用自定义String Catalog

可以通过Xcode的文件级别配置实现,不用每次手动写table参数:

  1. 在项目导航器里选中目标文件或文件夹
  2. 打开右侧的File Inspector(文件检查器)
  3. 在Localization区域,找到Default String Catalog选项,选择你的自定义WidgetLocalizable.xcstrings
  4. 如果是文件夹,勾选Apply to all contents,让文件夹下的所有文件都继承这个设置

配置完成后,该文件/文件夹里的LocalizedStringResource会默认用指定的自定义Catalog,不用每次加table:参数。如果有个别字符串需要用旧的Localizable.strings,再手动指定table就行。

注意:这个功能需要Xcode 15及以上版本支持,确保你的Xcode版本达标。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:58:16