Ios 如何将CLPlacemark与语言关联(最好是bcp47)

Ios 如何将CLPlacemark与语言关联(最好是bcp47),ios,core-location,reverse-geocoding,Ios,Core Location,Reverse Geocoding,我需要知道在给定的CLPlacemark中说什么语言。 有什么想法吗?你可以从地名中找到这个国家,并使用它的主要语言——这不是100%的解决方案,但在90%的情况下它应该有效 NSString *countryIso = [self countryIsoFromPlacemark:placemark]; NSString *languageIso = [self languageIsoFroPrimaryLanguageOfCountry:countryIso]; 在你的应用程序中放置一个i

我需要知道在给定的CLPlacemark中说什么语言。
有什么想法吗?

你可以从地名中找到这个国家,并使用它的主要语言——这不是100%的解决方案,但在90%的情况下它应该有效

NSString *countryIso = [self countryIsoFromPlacemark:placemark]; 
NSString *languageIso = [self languageIsoFroPrimaryLanguageOfCountry:countryIso];

在你的应用程序中放置一个iso代码映射列表,你就完成了

我得到了以下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
}

关键是要从地名国家代码中找到给定的语言代码。编辑答案。。顺便说一句,等码在维基百科上,不太可能改变