iOS:覆盖NSLocale语言

时间:2012-07-28 22:39:04

标签: iphone ios ios5 nslocalizedstring nslocale

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

以下是我试图解决的问题:

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

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

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

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

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

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

任何人都可以确认这在iOS 9中不起作用并提出替代方案吗?如果我不这样做,我宁愿不删除其他的lproj条目。