【发布时间】:2010-11-08 07:14:48
【问题描述】:
我正在为 Mac OS X 开发应用程序。我想通过应用程序用户的语言区域(英语、西班牙语等)更改指示内容,我如何获取使用哪种语言的信息?
【问题讨论】:
标签: objective-c macos localization
我正在为 Mac OS X 开发应用程序。我想通过应用程序用户的语言区域(英语、西班牙语等)更改指示内容,我如何获取使用哪种语言的信息?
【问题讨论】:
标签: objective-c macos localization
NSLog(@"localeIdentifier: %@", [[NSLocale currentLocale] localeIdentifier]);
【讨论】:
[[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[[NSLocale currentLocale] localeIdentifier]] 可用于获取 localeIdentifier 的纯英文版本
您可以使用 NSLocale API 来获取该信息,但不必做您想做的事情。 OS X 在操作系统中内置了support for localization——您需要做的就是提供适当的语言文件,用户可以选择他想要的语言。
【讨论】:
代码sn-p
NSLocale *locale = [NSLocale currentLocale];
[locale objectForKey:NSLocaleLanguageCode]
【讨论】:
您可以使用以下两种方式中的任何一种方式:
NSString *language = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"Language: %@", language);
输出:语言:en_US
或者这个:
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSLog(@"Language: %@", language);
输出:语言:en
【讨论】:
您希望“本地化”您的应用程序。要开始使用,请在此处查看 Apple 文档:Internationalization - Apple Developer Docs。如果不了解您的特定应用程序的更多信息,很难在这里提出更多建议!
【讨论】:
确切地说,iOS 9 和更高版本有一个变化,现在 [NSLocale preferredLanguages] 返回 - 而不是 only 。所以最好这样做:
NSString *languageOS = [[NSLocale preferredLanguages] objectAtIndex:0];
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {
languageOS = [[languageOS componentsSeparatedByString:@"-"] objectAtIndex:0];
}
【讨论】: