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

Swift:非SwiftUI场景如何从String Catalog获取带参数本地化字符串

解决思路

核心问题根源

SwiftUI的Text组件会自动触发String Catalog的本地化查找逻辑,但直接调用String(format:)只是普通的字符串格式化操作,并不会读取String Catalog中的翻译内容,因此只会返回原始键名。


具体解决方案

方案1:先获取本地化格式字符串再填充参数

先通过NSLocalizedString拿到对应键的本地化格式文本,再用String(format:)替换占位符:

// 确保键名和String Catalog中配置的完全一致
let localizedFormat = NSLocalizedString("login success subTitle%@", comment: "登录成功副标题")
let translatedString = String(format: localizedFormat, arguments: [appName])

注意:如果你的SwiftUI代码用Text("login success subTitle\(appName)")正常工作,String Catalog中对应的键应该是login success subTitle%@(Xcode会自动将Swift插值转换为%@占位符的键),务必保证代码中的键名和Catalog里的完全匹配(包括空格、占位符)。

方案2:复用SwiftUI的本地化逻辑

利用LocalizedStringKey直接匹配String Catalog的条目,和SwiftUI行为一致,无需手动处理占位符:

let localizedKey = LocalizedStringKey("login success subTitle\(appName)")
let translatedString = String(localizedKey)

额外检查项

  • 确认String Catalog文件已添加到目标Target的Copy Bundle Resources构建阶段,保证本地化资源被正确打包。
  • 验证当前APP的语言设置是否匹配你配置了翻译的语言(比如英文),避免因语言不匹配返回默认键名。
  • 检查String Catalog中对应语言的翻译条目是否已正确填写,没有遗漏占位符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:43:22