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

Apple ID登录按钮在法语、阿拉伯语下无法本地化的问题求助

解决ASAuthorizationAppleIDButton法语/阿拉伯语本地化失效问题

针对你遇到的Sign in with Apple按钮在法语、阿拉伯语环境下不显示对应本地化文本的问题,可以从以下几个方向排查解决:

1. 确认项目已添加对应语言的本地化配置

Apple的系统控件本地化依赖项目的语言设置,如果项目未包含法语或阿拉伯语,按钮可能无法触发对应语言的文本切换:

  • 打开项目设置 → Info → Localizations,点击+号添加French(法语)和Arabic(阿拉伯语),勾选必要的资源文件完成添加
  • 检查Info.plist中的CFBundleLocalizations数组,确保包含fr(法语)和ar(阿拉伯语)条目,若缺失手动添加:
    <key>CFBundleLocalizations</key>
    <array>
        <string>en</string>
        <string>de</string>
        <string>ru</string>
        <string>fr</string>
        <string>ar</string>
    </array>
    

2. 延迟按钮初始化,保证TraitCollection同步

在viewDidLoad阶段初始化按钮时,当前的TraitCollection可能还未完全同步App的语言/布局方向(尤其是阿拉伯语这类RTL语言),导致按钮无法正确获取本地化信息:

  • 将按钮初始化逻辑移至viewDidAppear中执行:
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        setUpSignInAppleButton()
    }
    
  • 或者监听TraitCollection变化,动态更新按钮:
    override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        super.traitCollectionDidChange(previousTraitCollection)
        // 当locale或界面风格变化时,重新创建按钮
        if previousTraitCollection?.locale != traitCollection.locale || 
           previousTraitCollection?.userInterfaceStyle != traitCollection.userInterfaceStyle {
            setUpSignInAppleButton()
        }
    }
    

3. 显式指定按钮的Locale(兜底方案)

如果上述方法无效,可以手动将按钮的Locale设置为App当前的语言环境,强制触发本地化:

func setUpSignInAppleButton() {
    self.loginOrRegisterStackView.removeAllSubviews(type: ASAuthorizationAppleIDButton.self)
    let buttonStyle = UITraitCollection.current.userInterfaceStyle == .dark ? .white : .black
    let authorizationButton = ASAuthorizationAppleIDButton(authorizationButtonType: .default, authorizationButtonStyle: buttonStyle)
    // 强制设置按钮Locale为当前App的Locale
    authorizationButton.locale = Locale.current
    authorizationButton.addTarget(self, action: #selector(handleAppleIdRequest), for: .touchUpInside)
    authorizationButton.cornerRadius = 15
    self.loginOrRegisterStackView.insertArrangedSubview(authorizationButton, at: 0)
}

4. 检查系统版本与RTL支持

  • 确保测试设备运行iOS 13及以上版本(Sign in with Apple从iOS 13开始支持)
  • 阿拉伯语属于RTL(从右到左)语言,需确保App支持RTL布局:在Info.plist中添加UIApplicationSupportsIndirectInputEvents并设为YES,同时布局时使用leading/trailing约束替代left/right

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:57:19