你可以Errors
这样处理:
Auth.auth().fetchSignInMethods(forEmail: email, completion: { (response, error) in
if let error = error, let errCode = AuthErrorCode(rawValue: error._code)
{
switch errCode {
case .emailAlreadyInUse:
GeneralHelper.sharedInstance.displayAlertMessage(titleStr: LocalizeConstant.CommonTitles.Alert.rawValue.localizedStr(), messageStr: LocalizeConstant.CommonTitles.Continue.rawValue.localizedStr())
case .accountExistsWithDifferentCredential:
GeneralHelper.sharedInstance.displayAlertMessage(titleStr: LocalizeConstant.CommonTitles.Alert.rawValue.localizedStr(), messageStr: LocalizeConstant.CommonTitles.Continue.rawValue.localizedStr())
default:
break
}
return
}
}
在这里,我得到了自己提供的errCode
using ,然后,我使用. 所以,现在我可以得到. 使用它我正在制作诸如等之类的案例。您只需键入它就会向您显示所有. 因此,您可以通过这种方式简单地处理错误代码。AuthErrorCode
Firebase
error._code
AuthErrorCode
.emailAlreadyInUser
.accountExistsWithDifferentCredential
.
AuthErrorCodes
现在,进入问题的第二部分,即getting localized string
。您可以将本地化添加到Firebase
,因为您必须选择语言代码。Auth.auth().languageCode = "en" //For English
. 但是,我不认为它会产生本地化错误,因为支持的语言要多得多Firebase
。这主要用于发送localized
电子邮件。
要处理localization
,您必须像我一样创建自己的方法。你可以看到我调用了一个函数displayAlertMessage
,我在其中传递了titleStr: LocalizeConstant.CommonTitles.Alert.rawValue.localizedStr()
,这是本地化的一部分。
struct LocalizeConstant {
enum CommonTitles: String
{
case Alert = "common_alert"
}
}
该值指定key
给我在本地化文件中给出的值。如果您不了解本地化,则必须对其进行 Google 搜索。假设我有两个Localizable.strings
,一个在English
,另一个在French
。在Localizable.strings(English)
中,我Alert
这样写:
"common_alert" = "Alert";
并且,在法语中:
"common_alert" = "Alerte!";
所以,这就是我localization
在我的应用程序中手动添加的方式。但是,要实现这一点,您必须做两件事。1) 你必须设置你的appLanguage
. 2)您必须调用一个方法,该方法将从Localizable.strings
文件中定义的这些键中获取值。
为此,我创建了一个方法localizedStr()
。它是一个扩展String
,您可以按如下方式使用它。
extension String{
func localizedStr() -> String
{
var finalRes = ""
if let path = Bundle.main.path(forResource: Constants.appLang, ofType: "lproj") //Constants.appLang is "en" here for "English", but you can set accordingly.
{
if let bundle = Bundle(path: path)
{
finalRes = NSLocalizedString(self, tableName: nil, bundle: bundle, value: " ", comment: " ")
}
}
return finalRes
}
}
现在,此方法localizedStr()
将根据您的应用语言为您提供本地化字符串。即使Firebase
提供了本地化的错误代码(我认为它没有),也不可能获得每种语言的错误描述。所以这是我想出的最好的方法。它可能不是世界上最好的方法,但它可以完成任务。
PS:要在整个应用程序中优化这一点,您可以创建一个扩展,AuthErrorCode
或者您可以创建一个Helper
函数,您将在其中传递error._code
并返回localized string
. 我已经添加了很长的方法,以便您可以以最好的方式理解所有内容。