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

自定义Sign in with Apple按钮accessibilityLabel未本地化问题咨询

关于自定义Sign in with Apple按钮本地化文本的问题解答

嘿,这个问题我之前也帮不少开发者排查过,其实这不是bug,而是Apple对ASAuthorizationAppleIDButton的accessibilityLabel属性的设计逻辑和你预期的不一样,咱们一步步说清楚:

为什么accessibilityLabel不自动本地化?

ASAuthorizationAppleIDButton的accessibilityLabel本质是给辅助技术(比如VoiceOver)提供的描述文本,但Apple并没有设计让这个属性跟随系统语言自动切换——不管你切换什么语言,它都会返回默认的英文标签(比如你遇到的“Continue with Apple”)。这个属性的核心作用是辅助无障碍访问,而非提供按钮显示文本的本地化版本。

正确获取本地化按钮文本的方法

如果你需要获取对应语言的按钮文本来自定义按钮,有个靠谱的方式:直接读取Apple框架内置的本地化字符串表。这里给你一段示例代码:

func getAppleAuthLocalizedTitle(for buttonType: ASAuthorizationAppleIDButton.ButtonType) -> String {
    // 获取Apple授权按钮所在的框架bundle
    let appleAuthBundle = Bundle(for: ASAuthorizationAppleIDButton.self)
    // 根据按钮类型匹配对应的字符串key
    let titleKey: String
    switch buttonType {
    case .signIn:
        titleKey = "Sign in with Apple"
    case .continue:
        titleKey = "Continue with Apple"
    case .signUp:
        titleKey = "Sign up with Apple"
    @unknown default:
        titleKey = "Continue with Apple"
    }
    // 从Apple的本地化表中获取对应语言的文本
    return NSLocalizedString(titleKey, tableName: "ASAuthorizationAppleIDButton", bundle: appleAuthBundle, value: "", comment: "")
}

只要你的App已经在Xcode项目设置中添加了对应的语言本地化支持,这段代码就能返回对应语言的正确文本——毕竟Apple的框架已经内置了多种语言的本地化资源。

另外补充一点:如果你只是用官方的ASAuthorizationAppleIDButton而不是完全自定义,其实按钮的显示文本会自动跟随系统语言切换,不需要额外处理,只有当你要自己做按钮的时候才需要手动获取这些本地化文本。

额外提醒

自定义按钮的时候,记得遵循Apple的《Human Interface Guidelines》中关于Sign in with Apple的设计规范,比如要保留官方的Apple图标,文本和图标的布局也要符合要求哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:02:28