gpo*_*pov 20 iphone locale localization ios
我正在开发的应用程序支持3种语言:英语,法语和德语.
我如何获得当前的应用程序语言(不是设备语言)?
问题是我必须获取应用程序的当前语言,以便向服务器发送请求,并且响应应该使用正确的语言.设备语言没用,因为如果用户将os语言切换为意大利语,则应用程序以英语运行,我需要将英语发送到服务器.
谢谢
Jon*_*lli 38
我一直在做什么:
将字符串条目添加到Localizable.strings文件中.我总是使用密钥"lang"="de";(或"lang"="en"等).
然后,您可以通过添加语言在NSURLRequest中使用它 NSLocalizedString(@"lang", @"")
使用该方法,您可以绝对控制将要发送给您的后端.
小智 36
接受的答案是一种解决方法.
关于设备本身的语言偏好,你有
[NSLocale preferredLanguages]
Run Code Online (Sandbox Code Playgroud)
它将为您提供系统常规设置中定义的首选语言的有序数组.
Cocoa Touch框架将在加载应用程序的本地化资源时将此首选语言列表考虑在内,并根据您在捆绑中提供的翻译对其进行过滤.
可以使用此过滤和有序的本地化语言列表
[[NSBundle mainBundle] preferredLocalizations]
Run Code Online (Sandbox Code Playgroud)
您的服务器请求应与此数组中的第一个值匹配,否则应用程序和服务器数据之间的语言将不匹配.
小智 14
您可以使用NSBundle类的preferredLocalizations方法:
NSString *currentLocalization = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
从 iOS 13 开始,可以单独为每个应用程序设置语言。
在 WWDC19 的“使用 Xcode 11 创建出色的本地化体验”会议中,他们展示了两个用于确定应用程序用户设置的选项。
获取当前运行的应用程序语言:
Bundle.main.preferredLocalizations.first
Run Code Online (Sandbox Code Playgroud)
获取最佳语言,给定外部语言代码列表:
let availableLanguages = Server.requestLanguages()
Bundle.preferredLocalizations(from: availableLanguages).first
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7394 次 |
| 最近记录: |