【问题标题】:Set default language before the app starts for the first time in iOS/Swift在 iOS/Swift 中首次启动应用程序之前设置默认语言
【发布时间】:2017-12-02 06:56:32
【问题描述】:

我想在应用第一次启动时将另一种语言设置为默认语言。 iOS 没有这种语言作为界面语言,所以我唯一的方法就是手动设置。我在 SO 上找到了数十种解决方案,而那些有效的解决方案只能在模拟器中工作,而不是在真实设备上工作。这是我尝试过的:

首先,设置应用语言的方式是:

UserDefaults.standard.set(["xx-XX", "yy-YY"], forKey: "AppleLanguages")

问题是,这需要重新启动应用程序,而我希望在应用程序第一次启动时设置它。我也试过:

UserDefaults.standard.register(defaults: ["AppleLanguages": ["xx-XX", "yy-YY"]])

甚至调用UserDefaults.standard.synchronize(),在大多数情况下根本不需要。

以及我尝试放置此代码的地方:

  1. 应用程序(:didFinishLaunchingWithOptions:)
  2. 应用程序初始化:|
  3. 子类化UIApplication,创建main.swift 并添加 以上代码作为顶级语句

info.plist:

  1. Localization native development region 设置为xx-XX
  2. Localizations的第一个元素设置为xx-XX

顺便说一句,目前还不能实现自定义本地化。

最让我困惑的是,为什么这样的功能在模拟器而不是真实设备中有效。

编辑: 我什至删除了默认的英语语言,并再次添加了English (World),因此它旁边没有Development Language标签。还是不行。

【问题讨论】:

    标签: ios swift localization internationalization


    【解决方案1】:

    在 Xcode 上,从 Start Stop Buttons 开始,您可以按“projectName” -> Edit Scheme... -> Run -> Options 并更改应用程序语言

    【讨论】:

      【解决方案2】:

      嗯,没有一种合法的方法可以做到这一点。所以我不得不使用一个讨厌的技巧。

      1. 添加了我们不使用的语言(在本例中为 fr
      2. 在创作过程中,选择英文(yy-YY,在我的问题中)作为参考语言(这样我就不必再做任何翻译/本地化了)

      此时,我的开发语言启动了,并且 xx-XX(在本例中为 fa-IR)是我的默认设置。你知道其余的,设置AppleLanguages 用户默认值。

      再次强调,这不是最好的和干净的方法,如果您处于开发过程的早期,请使用本地化应用程序的自定义实现,或使用L10n-Swift。当然,如果您不能坚持使用 iOS 根据用户选择的设备区域设置为您选择的内容。

      【讨论】:

        【解决方案3】:

        为了使默认语言成为一种特定语言,下面的代码就像一个魅力。(Swift 4.2)

        let arr = NSArray(objects: "ja")
        UserDefaults.standard.set(arr, forKey: "AppleLanguages")
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多