在 iOS/Swift 中第一次启动应用程序之前设置默认语言

Mil*_*ari 3 localization internationalization ios swift

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

首先,设置app语​​言的方法是:

UserDefaults.standard.set(["xx-XX", "yy-YY"], forKey: "AppleLanguages")
Run Code Online (Sandbox Code Playgroud)

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

UserDefaults.standard.register(defaults: ["AppleLanguages": ["xx-XX", "yy-YY"]])
Run Code Online (Sandbox Code Playgroud)

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

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

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

并在info.plist

  1. 设置Localization native development regionxx-XX
  2. 设置Localizationsto的第一个元素xx-XX

顺便说一下,在这个时间点实施自定义本地化不是一个选择。

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

编辑: 我什至删除了默认的英语语言,然后English (World)再次添加,这样Development Language旁边就没有标签了。还是没用。

Vas*_* D. 7

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

在此处输入图片说明