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

SwiftUI中List内Localizable.strings本地化不生效问题求助

问题根因

你遇到的问题核心是直接将变量插值后生成的字符串作为本地化key,和Localizable.strings中定义的固定占位符key无法匹配。你写的Text("game-number #\(gameNumber)")会在运行时把gameNumber的实际值(比如20、30)拼接到字符串里,生成game-number #20、game-number #30这类动态key,自然匹配不到你定义的game-number #%d固定key。

解决方案

方案1:使用Foundation格式化方法(兼容性强)

这是最稳妥的写法,代码如下:

Text(String(format: NSLocalizedString("game-number #%d", comment: ""), gameNumber))

需要确认两个配置点:

  • 所有语言的Localizable.strings文件中,都存在"game-number #%d"对应的键值对,不要漏写某一语言的配置
  • 检查Localizable.strings的Target Membership是否勾选了你的运行目标,避免资源没有打包进APP

方案2:使用SwiftUI原生本地化插值语法(写法更简洁)

SwiftUI的LocalizedStringKey原生支持参数插值,不需要手动调用格式化方法:

  1. 先修改Localizable.strings中的占位符,适配Swift Int类型:
"game-number #%lld" = "Spiel #%lld";
  1. 直接保留原来的Text写法即可,SwiftUI会自动匹配对应占位符的key完成替换:
Text("game-number #\(gameNumber)")

异常排查

如果修改后还是不生效,先按以下步骤操作排除缓存问题:

  • 按Command+Shift+K清理Xcode缓存
  • 删除模拟器/真机上的旧APP,重新安装运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:06:04