2013-02-26 30 views
6

如何获取所有可用本地化列表?xcode iOS获取所有本地化列表

我有一个有5个本地化的应用程序。我需要知道当前的语言环境是否在该列表中,如果不是,则创建一个回退。 但是,如何找出当前区域设置是否在该列表中?

+0

[NSLocale currentLocale]; – 2013-02-26 15:46:27

+0

然后与所有本地化的数组 – 2013-02-26 15:46:48

+0

进行比较 - 虽然这样 - 但这有点麻烦,不是吗? 难道没有办法找出哪些语言是以编程方式本地化的,而不是保留列表吗? – Swissdude 2013-02-26 15:48:45

回答

2

查明当前语言环境是否受支持的最简单方法是向您支持的所有五个本地化添加一个特殊的“测试”字符串(例如,@"IsSupported" = @"Yes")。然后,一个简单的检查将工作:

BOOL supported = [NSLocalizedString(@"IsSupported", nil) isEqualToString:@"Yes"]; 
+1

不应该回退到开发语言并且如果语言环境未定义则返回“是”? – 2015-06-29 12:10:42

7

对于我接受的解决方案没有奏效,如果语言不支持 - 应用简单地回落到英语,英语字符串文件包含“则isSupported”字符串 - 它返回“是”。

我不得不使用该溶液

NSString* currentLanguage = [NSLocale preferredLanguages][0]; 
NSArray* supportedLocalizations = [[NSBundle mainBundle] localizations]; 

if ([supportedLocalizations containsObject:currentLanguage]) { 
    isLocalizedToCurrentLanguage = YES; 
} 
else { 
    isLocalizedToCurrentLanguage = NO; 
} 
+0

我不认为这会起作用 - 'preferredLanguages'返回像'pt-BR','en-US'这样的字符串,但是本地化返回像'pt','en'这样的字符串。 – Bill 2015-10-15 02:18:05

+0

阅读'[[NSBundle mainBundle] preferredLocalizations]'而不是'[NSLocale preferredLanguages]''。这将返回“EN”,“CS”等... – 2016-01-19 09:33:33