在iOS/Swift中,首次启动应用前设置默认语言

4

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

首先,设置应用程序语言的方法如下:

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

事实上,这需要重新启动应用程序,而我希望在应用程序第一次启动时设置。我也尝试过:
UserDefaults.standard.register(defaults: ["AppleLanguages": ["xx-XX", "yy-YY"]])

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

我尝试过的放置此代码的位置有:

  1. application(:didFinishLaunchingWithOptions:)
  2. application init :|
  3. 子类化 UIApplication,创建 main.swift 并将上述代码添加为顶级语句

还有在 info.plist 中:

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

顺便说一句,在这个时候实现自定义本地化不是一个选项。

而且最令我困惑的是,为什么这样的特性在模拟器中可以工作,但在真实设备中却不能。

编辑: 我甚至删除了默认的英语语言,并再次添加了 English (World),以便其旁边没有 Development Language 标签。 仍然无法工作。

3个回答

10
在 Xcode 中,从“开始停止”按钮旁边,您可以按“projectName” -> “编辑方案...” -> “运行” -> “选项”,并更改应用程序语言。

enter image description here


2

好的,这个问题没有一个正当的方法来解决。因此,我不得不使用一个卑鄙的技巧。

  1. 添加了一种我们没有使用的语言(在这种情况下是frenter image description here
  2. 在创建过程中,选择英语(如我的问题中的yy-YY)作为参考语言(这样我就不必再进行任何翻译/本地化了) enter image description here

此时,我的开发语言开始运行,xx-XX(在这种情况下是fa-IR)成为了我的默认语言。你知道接下来的步骤,设置AppleLanguages用户默认值。

再次强调,这并不是最佳且干净的方法。如果你还在开发初期,请使用自定义实现本地化应用程序或使用L10n-Swift。当然,如果您不能坚持iOS根据用户选择的设备语言环境为您选择的语言环境,则可以使用该方法。


1
为了将默认语言设置为特定语言,以下代码非常有效。(Swift 4.2)
let arr = NSArray(objects: "ja")
UserDefaults.standard.set(arr, forKey: "AppleLanguages")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接