1

如果您的应用程序有多种语言的本地化版本,但如果用户未使用任何语言,则应用程序已本地化。
如何设置默认语言?或者在这种情况下定义默认语言的最佳实践是什么?

以下是我试图解决的场景:

  • 该应用程序已在 en/fr/es 中本地化,但如果语言区域设置不是 en/fr/es,您如何定义默认值?

  • 如果语言区域设置是此 en/fr/es 之一,并且用户想在 NSUserDefaults 上使用不同的语言定义。假设使用英语作为 NSUserDefaults 但想使用应用程序的 fr 本地化版本。有一种方法可以覆盖 NSUserDefaults 上的语言吗?

4

2 回答 2

1

在应用程序启动之前编写 NSUserDefaults

问题1:您可以设置您喜欢的顺序如下。

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", @"en", @"fr", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

问题2:强制使用fr

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
于 2012-10-11T03:59:49.477 回答
0

我发现这不再适用于 iOS 9(可能是 10)。我们的代码库中有几个目标。对于其中一些人,我总是希望它以英语出现,即使包中可能存在本地化字符串。

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

我在 main() 中添加了上面的代码。应用程序第一次运行时,它会以用户选择的语言出现。在随后的运行中,它将根据需要以英语显示。

谁能确认这在 iOS 9 中不起作用并提出替代方案?如果没有必要,我宁愿不删除其他 lproj 条目。

于 2016-11-01T19:10:08.733 回答