当参与者点击iOS中的西班牙语网站时,应用程序以西班牙语打开

时间:2018-01-24 18:28:36

标签: swift localization ios-universal-links

我有一个项目,这个项目支持两种语言的英语和西班牙语。

如果用户选择了西班牙语手机,则该应用会打开西班牙语。同样的循环也适用于英语。

其次,我们有一个网站,这个网站提供西班牙语和英语支持。用户可以注册(注册)或登录(登录) 来自英文网站或西班牙文网站。

我的问题,作为用户,如果我选择通过西班牙语网站注册,我应该用西班牙语而不是英语访问该应用程序。

我该怎么做?通用链接或深层链接。以前是否有人建立这个周期?

2 个答案:

答案 0 :(得分:0)

您无法在应用内更改设备的语言。

您的用例的解决方案可能是手动处理项目中的本地化:您不必依赖NSLocalizedString,而是必须使用自己的函数为给定的字符串/键提供本地化。在"正常"使用场景您使用系统的首选语言;通过链接打开应用程序时,您可以将语言添加为URL参数,并将该语言用于应用程序会话。 (请注意,这不适用于Storyboard或Info.plist本地化,仅适用于您在代码中明确设置的文本。)

答案 1 :(得分:0)

使用Branch iOS SDK进行深层链接,以便即使用户未事先安装了应用,也可以确保用户收到该语言。在您的链接中,您应该能够将字段language设置为englishepanish等。当用户打开您的应用时,您可以将该信息从分支回调中拉出来如此。

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')