我正在开发的应用程序支持3种语言:英语、法语和德语。
如何获取当前应用程序语言(而不是设备语言)?
问题是,我必须获取应用程序的当前语言,以便将其与请求一起发送到服务器,并且响应应该使用正确的语言。设备语言是无用的,因为如果用户将操作系统语言切换为意大利语,应用程序将以英语运行,而我需要将英语发送到服务器。
谢谢
发布于 2012-04-07 00:40:27
我一直在做的事情:
在Localizable.strings文件中添加一个字符串条目。我总是使用密钥"lang"="de";
(或"lang"="en"
等)。
然后,您可以通过在NSLocalizedString(@"lang", @"")
上添加该语言来在NSURLRequest中使用它
使用该方法,您可以完全控制将发送给您的后端的内容。
发布于 2014-07-23 22:18:49
公认的答案是一种变通方法。
关于设备本身的语言首选项,您可以使用
[NSLocale preferredLanguages]
这将为您提供系统的常规设置中定义的首选语言的有序数组。
Cocoa Touch框架将在加载应用程序的本地化资源时考虑此首选语言列表,并根据捆绑包中提供的翻译对其进行过滤。
这个经过筛选和排序的本地化语言列表可以通过以下命令获得
[[NSBundle mainBundle] preferredLocalizations]
您的服务器请求应与此数组中的第一个值匹配,否则您的应用程序和服务器数据之间将出现语言不匹配。
发布于 2013-03-17 23:06:09
您可以使用NSBundle类的preferredLocalizations方法:
NSString *currentLocalization = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];
https://stackoverflow.com/questions/10046076
复制相似问题