Ale*_*ndr 12 locale localization objective-c ios nslocale
我需要获得当前的语言环境.不是用户区域设置,而是我的应用程序区域
假设我的应用程序有两个本地化(在项目设置中):英语(默认)和法语.如果用户在iPhone上设置法语,那么我的应用程序将显示法语界面.如果用户在iPhone上设置德语,那么我的应用程序将显示英文界面(因为英语是默认的).
那么如何才能获得当前正在显示的当前应用程序区域设置?提前致谢.
Mic*_*ael 30
可能有一个比这更简单的方法(参见其他答案),但这个方法最强大,只要通过strings-file 本地化应用程序的一般原则不会被废弃,这个方法就可以了.
通常,您不需要获取应用程序区域设置(但请继续阅读,这是可能的!)如果您想要本地化文本,则使用NSLocalizedString().如果需要本地化映像,则使用本地化资源,等等.但是,有一些原因可以让我想到哪种方式可以让您更好地获得"应用程序区域设置",就像您所说的那样:例如,对于分析(您想知道您的应用程序使用的语言),或提供如果使用基于服务器的通信,则为用户提供一致的单语言界面(例如,以用户在应用程序内部看到的语言本地化服务器错误消息.)
如果您想获得当前可见的应用程序的本地化,我想您有一个Localizable.strings针对每个受支持的语言环境的文件.因此,在Englisch字符串文件中,您可以添加该行
"lang" = "en";
Run Code Online (Sandbox Code Playgroud)
并在法语字符串文件中添加该行
"lang" = "fr";
Run Code Online (Sandbox Code Playgroud)
然后,您始终可以通过调用NSLocalizedString("lang")(swift)或NSLocalizedString(@"lang")(objective-C)来获取应用程序区域设置.当然,每当您向应用添加新的本地化时,都必须在新的本地化字符串文件中设置"lang"条目.
Vij*_*dav 20
所选答案将返回当前设备语言,但不会返回应用程序中使用的实际语言.如果您未在应用中为首选语言提供本地化:
NSString *language = NSBundle.mainBundle.preferredLocalizations.firstObject;
NSLocale *locale = NSLocale.currentLocale;
NSString *countryCode = [locale objectForKey:NSLocaleCountryCode];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSString *country = [usLocale displayNameForKey:NSLocaleCountryCode
value:countryCode];
NSLog(@"country: %@", country);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24627 次 |
| 最近记录: |