Objective c 解析ISO-639语言代码以显示完整的英语语言名称
我在app store上有一个应用程序,可以让你启动不同语言的应用程序。您可以在此处看到屏幕截图: 你在屏幕截图中看不到它,但应用程序使用NSBundle-localizations作为数组来填充弹出菜单 在Xcode的后续版本中,苹果从“英语”改为“英语”。NSBundle-本地化返回bundle中的任何内容。因此,如果一个应用程序是旧的(如iCal/Pages),那么你会得到“Dutch”、“English”、“pt”、“es”、“it”,也就是说,根据本地化添加的时间不同,它是一种混合 苹果要求我解析这个列表。因此,它是“用户友好的”。我需要它创建某种数组,将ISO-639两个字母的代码再次解析为英文全名Objective c 解析ISO-639语言代码以显示完整的英语语言名称,objective-c,Objective C,我在app store上有一个应用程序,可以让你启动不同语言的应用程序。您可以在此处看到屏幕截图: 你在屏幕截图中看不到它,但应用程序使用NSBundle-localizations作为数组来填充弹出菜单 在Xcode的后续版本中,苹果从“英语”改为“英语”。NSBundle-本地化返回bundle中的任何内容。因此,如果一个应用程序是旧的(如iCal/Pages),那么你会得到“Dutch”、“English”、“pt”、“es”、“it”,也就是说,根据本地化添加的时间不同,它是一种混合 苹
有没有关于我如何处理这个问题的提示?谢谢 这将记录fr语言代码的英文显示名称
NSLocale *enLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en"] autorelease];
NSString *displayNameString = [enLocale displayNameForKey:NSLocaleIdentifier value:@"fr"];
NSLog(displayNameString);
我假设苹果希望您显示
- 英式
- 葡萄牙语
- 法语的
- 英国人
- 葡萄牙
- 法兰西
NSLocale *englishLocale;
NSMutableDictionary *reverseLookupTable;
englishLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];
reverseLookupTable = [NSMutableDictionary dictionaryWithCapacity:
[[NSLocale ISOLanguageCodes] count]
];
for (NSString *languageCode in [NSLocale ISOLanguageCodes]) {
NSString *displayName;
displayName = [[englishLocale
displayNameForKey:NSLocaleLanguageCode
value:languageCode
] lowercaseString];
if (displayName) {
[reverseLookupTable setObject:languageCode forKey:displayName];
}
}
[englishLocale release];
然后
Swift 3.2+:
用法:
让language=LanguageHelper.getLanguageStringFrom(代码:“ar”)
输出:阿拉伯语Swift 4:根据用户设备的当前语言获取代码的语言名称
let language = Locale.current.localizedString(forLanguageCode: "ar")
print(language) // Arabic (if the user's device language is English)
系统不区分黑白简体中文和繁体中文。它只给出了zh作为标识符,diplayName是中文。不管怎样,谢谢你的想法。可能是iso没有区分它们。
import Foundation
struct LanguageHelper {
static func getLanguageStringFrom(code:String) -> String? {
let locale: NSLocale? = NSLocale(localeIdentifier: "en")
return locale?.displayName(forKey: .identifier, value: code)
}
}
let language = Locale.current.localizedString(forLanguageCode: "ar")
print(language) // Arabic (if the user's device language is English)