我有一个项目,这个项目支持两种语言的英语和西班牙语。
如果用户选择了西班牙语手机,则该应用会打开西班牙语。同样的循环也适用于英语。
其次,我们有一个网站,这个网站提供西班牙语和英语支持。用户可以注册(注册)或登录(登录) 来自英文网站或西班牙文网站。
我的问题,作为用户,如果我选择通过西班牙语网站注册,我应该用西班牙语而不是英语访问该应用程序。
我该怎么做?通用链接或深层链接。以前是否有人建立这个周期?
答案 0 :(得分:0)
您无法在应用内更改设备的语言。
您的用例的解决方案可能是手动处理项目中的本地化:您不必依赖NSLocalizedString
,而是必须使用自己的函数为给定的字符串/键提供本地化。在"正常"使用场景您使用系统的首选语言;通过链接打开应用程序时,您可以将语言添加为URL参数,并将该语言用于应用程序会话。 (请注意,这不适用于Storyboard或Info.plist本地化,仅适用于您在代码中明确设置的文本。)
答案 1 :(得分:0)
使用Branch iOS SDK进行深层链接,以便即使用户未事先安装了应用,也可以确保用户收到该语言。在您的链接中,您应该能够将字段language
设置为english
,epanish
等。当用户打开您的应用时,您可以将该信息从分支回调中拉出来如此。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// listener for Branch Deep Link data
Branch.getInstance().initSession(launchOptions: launchOptions) { (params, error) in
// do stuff with deep link data (nav to page, display content, etc)
print(params as? [String: AnyObject] ?? {})
let language = params?['language']
//Store this in their NSUserDefaults
let defaults = UserDefaults.standard.set(language, forKey: "language")
}
return true
}
UserDefaults中的信息将一直存在,直到用户删除应用程序并重新安装。
let language = UserDefaults.standard.string(forKey: 'language')