如何在String Catalog中手动追踪含插值的自定义键
使用String Catalog自定义键处理带插值的本地化字符串
核心方案
完全不需要用String(format: NSLocalizedString(...))这种老旧写法,利用String Catalog的占位符配置+SwiftUI原生的Text初始化器就能实现简洁、类型安全的自定义键本地化。
具体步骤
1. 在String Catalog中配置自定义键与占位符
打开Localizable.xcstrings:
- 点击"+"新增条目,设置Key为自定义标识(比如
session_count) - 在Base语言的Value字段中,写入带占位符的格式:
- 方式一(兼容Foundation格式符):
%lld Sessions(适用于Int类型参数)或%@ Sessions(适用于String类型) - 方式二(更直观):
\(count) Sessions,然后在右侧「Parameters」面板添加参数count,选择对应的数据类型(比如Int)
- 方式一(兼容Foundation格式符):
- 若需要复数适配,可在对应语言的条目里设置复数规则(比如英文单数
%lld Session、复数%lld Sessions),String Catalog会自动根据参数值匹配正确翻译
2. 代码中调用
直接使用SwiftUI的Text初始化器,传递自定义键和参数即可:
// 假设numSessions是Int类型 Text("session_count", arguments: numSessions)
或者更明确的类型安全写法:
Text(localized: "session_count", defaultValue: "\(numSessions) Sessions", arguments: numSessions)
优势对比
- 比老写法简洁得多,无需多层嵌套调用
- String Catalog可视化管理所有本地化内容,包括参数类型、复数规则
- 原生支持SwiftUI的视图渲染,无需手动转换字符串
内容的提问来源于stack exchange,提问作者Nerdy Bunz
相关产品推荐
相关产品推荐

