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

SwiftUI 中拼接的“Every ”字符串无法正常本地化翻译问题求助

问题原因

SwiftUI 的 Text 组件仅在传入静态字符串字面量时会自动触发本地化查找逻辑,你当前的写法是先将 "Every " 和 repeatedDay.day 做运行时字符串拼接,再将拼接后的普通字符串传入 Text,因此不会触发本地化匹配。

解决方案

方案1:使用带参数的本地化词条(推荐)

这种写法适配不同语言的语序差异,兼容性更好:

  1. 修改 Localizable.strings 配置,将固定词条改为带占位符的格式:
"Every %@" = "Every %@";

对应土耳其语的 Localizable.strings 中配置翻译:

"Every %@" = "Her %@";
  1. 调整代码中 Text 的写法:
    如果是 SwiftUI 3.0+ 版本,可以直接用本地化插值:
Text("Every \(repeatedDay.day)")
    .foregroundColor(Color(.label))

更低版本可以显式调用 NSLocalizedString 处理:

Text(String(format: NSLocalizedString("Every %@", comment: ""), repeatedDay.day))
    .foregroundColor(Color(.label))

方案2:单独本地化固定字符串后拼接

如果你需要保留原有拼接逻辑,可以单独对 "Every " 做本地化处理后再拼接:

Text(NSLocalizedString("Every ", comment: "") + repeatedDay.day)
    .foregroundColor(Color(.label))

额外检查点

  • 确认所有语言版本的 Localizable.strings 都已经添加到App目标的 Target Membership 中
  • 确认土耳其语对应的 Localizable.strings 中已经配置了对应词条的翻译,而非仅在基础语言配置文件中保留原文字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:06:01