我可以将我的iOS应用程序本地化为西班牙语或德语,而将其余电话保留为英语吗?

时间:2018-07-31 04:08:37

标签: ios swift localization

用户希望将我们的iOS应用语言设置与用户的iPhone语言完全分开。基本上,在应用程序本身内部,用户选择应用程序的语言,然后,应用程序的UI和文本都会更改为所选语言。这比Apple的本地化标准更灵活,并且它们不能解决这种情况。是否有一些关于如何做到这一点的最佳实践?

具体来说,用户可能想要西班牙语的应用程序界面,但手机的其余部分仍为英语。

谢谢!

2 个答案:

答案 0 :(得分:0)

在执行iOS中的默认本地化时创建Localizable.strings。然后使用此代码在应用中实现语言切换。

extension String {

    func localized() -> String {

       let selectedLanguage = UserDefaults.standard.string(forKey:) CURRENT_LANGUAGE) 

            guard let path = Bundle.main.path(forResource: selectedLanguage == "en" ? "Base" : selectedLanguage, ofType: "lproj") else {

                if let basePath = Bundle.main.path(forResource: "Base", ofType: "lproj"){

                    return Bundle(path: basePath)?.localizedString(forKey: self, value: "", table: nil) ?? self
                }

                return self
            }

            return Bundle(path: path)?.localizedString(forKey: self, value: "", table: nil) ?? self


    }
}

您可以通过调用let text = "LOGIN_SCREEN_TITLE".localized()来访问本地化的字符串,其中在本地化文件中添加了 LOGIN_SCREEN_TITLE

enum LanguagesSupported: String {

    case English = "en"
    case French  = "fr"
}

UserDefaults.standard.set(LanguagesSupported.French.rawValue, forKey: CURRENT_LANGUAGE)

答案 1 :(得分:0)

首先创建这样的语言代码和语言名称的字典

let applicationLanguages = ["de":"German","es":"Spanish"]

然后,当用户可以选择特定语言时,然后单击任意按钮后,调用此功能并终止该应用。

func setLanguage(languageCode: String){
        let languageArray = NSArray(objects: languageCode)
        UserDefaults.standard.set(languageArray, forKey: "AppleLanguages")
        UserDefaults.standard.synchronize()
        UserDefaults.standard.set(true, forKey: "changedLanguage")
        UserDefaults.standard.set(languageCode, forKey: "AppLanguage")

    }

然后显示所选语言的警报,然后单击确定以终止应用程序。

 func endBackgroundTask() {
     exit(0)
  }