其他语言的firebase身份验证错误

时间:2018-01-14 23:45:46

标签: ios swift firebase firebase-authentication

我目前正在Swift中开发一个应用程序,我已经链接了firebase,以便用户注册和登录。该应用程序应该是西班牙语,但我找不到将身份验证错误转换为西班牙语的方法。 firebase控制台中是否有一个选项可用于启用其他语言或plist。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:4)

以下是一个示例,如何为任何类型的错误类型

制作自定义错误说明
import Foundation 
import Firebase

extension AuthErrorCode {
    var description: String? {
        switch self {
        case .emailAlreadyInUse:
            return "Este correo ya está siendo usado por otro usuario"
        case .userDisabled:
            return "Este usuario ha sido deshabilitado"
        case .operationNotAllowed:
            return "Operación no permitida"
        case .invalidEmail:
            return "Correo electrónico no valido"
        case .wrongPassword:
            return "Contraseña incorrecta"
        case .userNotFound:
            return "No se encontró cuenta del usuario con el correo especificado"
        case .networkError:
            return "Promblema al intentar conectar al servidor"
        case .weakPassword:
            return "Contraseña muy debil o no válida"
        case .missingEmail:
            return "Hace falta registrar un correo electrónico"
        case .internalError:
            return "Error interno"
        case .invalidCustomToken:
            return "Token personalizado invalido"
        case .tooManyRequests:
            return "Ya se han enviado muchas solicitudes al servidor"
        default:
            return nil
        }
    }
}

    extension FirestoreErrorCode {
        var description: String? {
            switch self {
            case .cancelled:
                return "Operación cancelada"
            case .unknown:
                return "Error desconocido"
            case .invalidArgument:
                return "Argumento no valido"
            case .notFound:
                return "No se encotró el documento"
            case .alreadyExists:
                return "El documento que se pretende crear, ya existe"
            case .permissionDenied:
                return "No tienes permisos para realizar esta operación"
            case .aborted:
                return "Operación abortada"
            case .outOfRange:
                return "Rango invalido"
            case .unimplemented:
                return "Esta operación no ha sido implementada o no es soportada aún"
            case .internal:
                return "Error interno"
            case .unavailable:
                return "Por el momento el servicio no está disponible, intenta más tarde"
            case .unauthenticated:
                return "Usuario no autenticado"
            default:
                return nil
            }
        } }

extension StorageErrorCode {
    var description: String? {
        switch self {
        case .unknown:
            return "Error desconocido"
        case .quotaExceeded:
            return "El espacio para guardar archivos ha sido sobrepasado"
        case .unauthenticated:
            return "Usuario no autenticado"
        case .unauthorized:
            return "Usuario no autorizado para realizar esta operación"
        case .retryLimitExceeded:
            return "Tiempo de espera excedido. Favor de intentar de nuevo"
        case .downloadSizeExceeded:
            return "El tamaño de descarga excede el espacio en memoria"
        case .cancelled:
            return "Operación cancelada"
        default:
            return nil
        }
    } }

public extension Error {
    var localizedDescription: String {
        let error = self as NSError
        if error.domain == AuthErrorDomain {
            if let code = AuthErrorCode(rawValue: error.code) {
                if let errorString = code.description {
                    return errorString
                }
            }
        }else if error.domain == FirestoreErrorDomain {
            if let code = FirestoreErrorCode(rawValue: error.code) {
                if let errorString = code.description {
                   return errorString
                }
            }
        }else if error.domain == StorageErrorDomain {
            if let code = StorageErrorCode(rawValue: error.code) {
                if let errorString = code.description {
                    return errorString
                }
            }
        }
        return error.localizedDescription
    } }

答案 1 :(得分:3)

Firebase错误未本地化。你可以request a feature for this via Firebase support

您可以做的是根据提供的错误代码创建自己的本地化消息。这就是FirebaseUI的作用:

或者你可以简单地使用FirebaseUI-ios。它可以为您节省大量的时间和精力。