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

如何在iOS Swift的localizable.strings文件中添加超链接文本

iOS Swift 中在localizable.strings添加超链接文本的实现方案

以下提供两种常用实现方案,可根据业务场景选择:

方案1:占位符+属性文本实现(推荐,可控性更高)

步骤1:配置localizable.strings条目

提前把固定文本和链接文本分别做本地化:

// localizable.strings 中添加对应键值对
"agreement_tip" = "请查看我们的%@和%@";
"user_agreement" = "用户协议";
"privacy_policy" = "隐私政策";

如果需要适配语序不同的语言,可以使用带位置的占位符:

"agreement_tip" = "请查看我们的%1$@和%2$@";

步骤2:Swift代码中渲染带链接的属性文本

推荐使用UITextView承载内容,UILabel默认不支持链接点击交互:

// 读取本地化内容
let baseTip = NSLocalizedString("agreement_tip", comment: "")
let userAgreementTxt = NSLocalizedString("user_agreement", comment: "")
let privacyTxt = NSLocalizedString("privacy_policy", comment: "")
let fullContent = String(format: baseTip, userAgreementTxt, privacyTxt)

// 生成属性文本
let attributedContent = NSMutableAttributedString(string: fullContent)

// 给指定文本添加链接属性
if let userAgreementRange = fullContent.range(of: userAgreementTxt) {
    let nsRange = NSRange(userAgreementRange, in: fullContent)
    attributedContent.addAttribute(.link, value: "你的用户协议链接地址", range: nsRange)
}
if let privacyRange = fullContent.range(of: privacyTxt) {
    let nsRange = NSRange(privacyRange, in: fullContent)
    attributedContent.addAttribute(.link, value: "你的隐私政策链接地址", range: nsRange)
}

// 可选配置:自定义链接外观
attributedContent.addAttribute(.foregroundColor, value: UIColor.systemBlue, range: NSRange(location: 0, length: fullContent.count))
attributedContent.addAttribute(.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: nsRange)

// 赋值给UITextView
textView.attributedText = attributedContent
textView.isEditable = false
textView.isSelectable = true

方案2:本地化存储带HTML标签的内容

如果超链接位置不固定,或者需要更灵活的样式,也可以直接在localizable.strings里存带<a>标签的文本:

步骤1:配置localizable.strings条目

"link_tip" = "更多帮助可查看<a href='你的帮助中心链接'>帮助中心</a>获取相关指引";

步骤2:解析HTML生成属性文本

let htmlContent = NSLocalizedString("link_tip", comment: "")
guard let data = htmlContent.data(using: .utf8) else { return }
do {
    let attributedContent = try NSAttributedString(
        data: data,
        options: [
            .documentType: NSAttributedString.DocumentType.html,
            .characterEncoding: String.Encoding.utf8.rawValue
        ],
        documentAttributes: nil
    )
    textView.attributedText = attributedContent
} catch {
    print("HTML内容解析失败:\(error.localizedDescription)")
}

注意事项

  • 如果必须使用UILabel承载超链接,需要额外添加点击手势,识别文本点击区间实现跳转
  • 链接地址建议统一存在全局配置文件中,不要硬编码在多语言文件里,避免多语言迭代时误改链接
  • 多语言适配时要注意不同语言的文本长度,提前预留足够的控件显示空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:21:01