Skip to content

Instantly share code, notes, and snippets.

@kenchung
Forked from mattt/BCP47LanguageCodeForString.m
Last active April 8, 2018 01:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save kenchung/b427e3d149396cb917b3 to your computer and use it in GitHub Desktop.
Save kenchung/b427e3d149396cb917b3 to your computer and use it in GitHub Desktop.
static NSString * BCP47LanguageCodeFromISO681LanguageCode(NSString *ISO681LanguageCode) {
if ([ISO681LanguageCode isEqualToString:@"ar"]) {
return @"ar-SA";
} else if ([ISO681LanguageCode hasPrefix:@"cs"]) {
return @"cs-CZ";
} else if ([ISO681LanguageCode hasPrefix:@"da"]) {
return @"da-DK";
} else if ([ISO681LanguageCode hasPrefix:@"de"]) {
return @"de-DE";
} else if ([ISO681LanguageCode hasPrefix:@"el"]) {
return @"el-GR";
} else if ([ISO681LanguageCode hasPrefix:@"en"]) {
return @"en-US"; // en-AU, en-GB, en-IE, en-ZA
} else if ([ISO681LanguageCode hasPrefix:@"es"]) {
return @"es-ES"; // es-MX
} else if ([ISO681LanguageCode hasPrefix:@"fi"]) {
return @"fi-FI";
} else if ([ISO681LanguageCode hasPrefix:@"fr"]) {
return @"fr-FR"; // fr-CA
} else if ([ISO681LanguageCode hasPrefix:@"hi"]) {
return @"hi-IN";
} else if ([ISO681LanguageCode hasPrefix:@"hu"]) {
return @"hu-HU";
} else if ([ISO681LanguageCode hasPrefix:@"id"]) {
return @"id-ID";
} else if ([ISO681LanguageCode hasPrefix:@"it"]) {
return @"it-IT";
} else if ([ISO681LanguageCode hasPrefix:@"ja"]) {
return @"ja-JP";
} else if ([ISO681LanguageCode hasPrefix:@"ko"]) {
return @"ko-KR";
} else if ([ISO681LanguageCode hasPrefix:@"nl"]) {
return @"nl-NL"; // nl-BE
} else if ([ISO681LanguageCode hasPrefix:@"no"]) {
return @"no-NO";
} else if ([ISO681LanguageCode hasPrefix:@"pl"]) {
return @"pl-PL";
} else if ([ISO681LanguageCode hasPrefix:@"pt"]) {
return @"pt-BR"; // pt-PT
} else if ([ISO681LanguageCode hasPrefix:@"ro"]) {
return @"ro-RO";
} else if ([ISO681LanguageCode hasPrefix:@"ru"]) {
return @"ru-RU";
} else if ([ISO681LanguageCode hasPrefix:@"sk"]) {
return @"sk-SK";
} else if ([ISO681LanguageCode hasPrefix:@"sv"]) {
return @"sv-SE";
} else if ([ISO681LanguageCode hasPrefix:@"th"]) {
return @"th-TH";
} else if ([ISO681LanguageCode hasPrefix:@"tr"]) {
return @"tr-TR";
} else if ([ISO681LanguageCode hasPrefix:@"zh"]) {
return @"zh-CN"; // zh-HK, zh-TW
} else {
return nil;
}
}
static NSString * BCP47LanguageCodeForString(NSString *string) {
NSString *ISO681LanguageCode = (__bridge NSString *)CFStringTokenizerCopyBestStringLanguage((__bridge CFStringRef)string, CFRangeMake(0, [string length]));
return BCP47LanguageCodeFromISO681LanguageCode(ISO681LanguageCode);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment