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

如何本地化UITextView中的菜单选项(如Copy、Look Up等)?

如何本地化UITextView中的菜单选项(如Copy、Look Up等)?

嘿,这个问题我之前也踩过坑,刚好有靠谱的解决方案可以分享给你!

核心思路:让系统帮你搞定原生菜单的本地化

其实iOS系统本身就自带了这些系统级菜单(Copy、Look Up、Learn...)的多语言支持,根本不需要你手动去自定义UIAction覆盖,反而自己写的话容易搞砸,还可能碰到私有API的问题。

要让系统自动本地化这些菜单,只要做好两步配置:

  • 打开项目的Project Settings → Info标签页,在Localizations列表里添加你需要支持的语言(比如简体中文、法语等)。
  • 确保你的Info.plist中包含CFBundleLocalizations键,并且把对应的语言代码(比如zh-Hans、fr)加进去。

完成这两步后,当用户的系统语言切换到对应语言时,UITextView弹出的上下文菜单会自动变成用户的母语,完全不用你写额外的代码。

关于你之前的尝试:别用自定义UIAction覆盖系统原生动作

你之前为了本地化Copy而写自定义UIAction的做法其实没必要,系统的Copy动作本身已经支持多语言,只要项目配置正确就会自动显示对应语言的标题。而Look Up这类动作,绝对不要去碰_define这种私有API——不仅会导致App Store审核被拒,还可能在iOS版本更新时直接崩溃,得不偿失。

如果要加自定义菜单选项,这么处理本地化

要是你需要在菜单里添加自己的自定义动作,那可以用NSLocalizedString来实现本地化:

// 创建自定义动作时用本地化字符串
let customShareAction = UIAction(title: NSLocalizedString("Share_Text", comment: "分享选中的文本")) { _ in
    // 执行分享逻辑
}
textView.addAction(customShareAction, for: .menuActionTriggered)

然后在对应语言的.strings文件里添加翻译,比如zh-Hans.lproj/Localizable.strings中:

"Share_Text" = "分享文本";

这样既保证了自定义菜单的本地化,又不会破坏系统原生菜单的功能。

备注:内容来源于stack exchange,提问作者Seigetsu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 06:59:29