【发布时间】:2014-01-18 21:40:10
【问题描述】:
我需要知道给定 CLPlacemark 中使用的语言。 有什么想法吗?
【问题讨论】:
标签: ios core-location reverse-geocoding
我需要知道给定 CLPlacemark 中使用的语言。 有什么想法吗?
【问题讨论】:
标签: ios core-location reverse-geocoding
您可以从地标中获取国家/地区并使用其主要语言 - 这不是 100% 的解决方案,但在 90% 的情况下它应该可以工作
NSString *countryIso = [self countryIsoFromPlacemark:placemark];
NSString *languageIso = [self languageIsoFroPrimaryLanguageOfCountry:countryIso];
在您的应用中放置一个 iso 代码映射的 plist,您就完成了
【讨论】:
我最终得到了以下 100% 自动解决方案,您根本不需要收集任何 ISO 代码。
+ (NSString*)detectBestLanguageBCP47:(CLPlacemark *)placemark {
NSString * countryCode = placemark.ISOcountryCode;
for (AVSpeechSynthesisVoice *voice in AVSpeechSynthesisVoice.speechVoices) {
NSString *langCode = [voice.language substringWithRange:NSMakeRange(0, 2)];
NSString *cc = [voice.language substringWithRange:NSMakeRange(3, 2)];
int c = [cc compare:countryCode];
if (c==0) {
NSString *bcp47 =[ NSString stringWithFormat:@"%@-%@", langCode, cc];
return bcp47;
}
}
return nil; // Not found
}
【讨论】: