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

如何本地化Storyboard中的AttributedString?Xcode仅支持纯文本本地化

Attributed类型UILabel本地化内容缺失的解决办法

问题根源

Xcode自带的Storyboard自动本地化工具只会抓取**纯文本(Plain Text)**控件的内容生成strings条目,带格式的Attributed Text因为包含字体、颜色等额外属性,不会被自动识别提取,所以才会出现你遇到的情况。

具体解决步骤

  • 手动添加本地化条目

    1. 选中Storyboard里的Attributed UILabel,打开右侧「身份检查器」,找到「文档」区域的「Object ID」并复制(类似Xyz-12-abC这样的字符串)
    2. 打开对应语言的strings文件(比如en.lproj/Main.strings),手动写入:
      "Xyz-12-abC.text" = "要本地化的富文本内容";
      
      把Xyz-12-abC换成你复制的Object ID,等号右侧填对应语言的文本即可。
  • 确认本地化配置正确
    选中你的Storyboard文件,在右侧「文件检查器」的「本地化」区域,确保对应语言的本地化类型是「Localizable Strings」,而不是「Interface Builder Cocoa Touch Storyboard」——如果是后者,切换成Localizable Strings后,Xcode会重新生成strings文件,你再补全Attributed控件的条目就行。

  • 验证效果
    修改不同语言strings文件里对应Attributed控件的文本,运行App切换系统语言,就能看到文本内容被替换,原有的字体、颜色格式会保留。

额外说明

如果需要给不同语言设置不同的富文本格式(比如英文用粗体,西语用斜体),那strings文件就满足不了了,得改成代码实现:

  1. 去掉Storyboard里该控件的本地化配置
  2. 在代码里根据当前系统语言,加载对应语言的Attributed字符串(可以用NSAttributedString的本地化文件,或者直接在代码里拼接格式和文本)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:42:45