不同语言的Firebase错误消息?

时间:2017-02-24 13:11:21

标签: angular firebase error-handling firebase-authentication angularfire2

在视图中显示Firebase错误消息(error.message)会导致出现英文错误说明(例如,对于身份验证错误,如果用户凭据包含错误)。

您将如何以不同语言显示消息(最佳情况:使用手机语言)?

3 个答案:

答案 0 :(得分:7)

现在这是不可能的。我建议使用错误代码(error.code),这是一个独特的错误代码,您可以创建一些东西将此错误代码绑定到您自己的文本/语言。 Firebase文档中有一个可用页面,其中包含可能对您有所帮助的错误代码列表。 看看这些链接:https://firebase.google.com/docs/reference/js/firebase.auth.Auth  https://firebase.google.com/docs/reference/js/firebase.auth.Error https://firebase.google.com/docs/auth/admin/errors?hl=en

修改: 为了解决这个问题,我已经自己翻译(到PT-BR,我的语言)并使用以下步骤实现(在TypeScript中):

我创建了一个接口来保存字符串的索引数组:

export interface MessagesIndex {
    [index: string]: string;
}

然后在某些UI或错误服务中,我已将此变量声明为上面的接口:

params = {
        'invalid-argument': 'Erro: Um argumento inválido foi fornecido.',
        'invalid-disabled-field': 'Erro: O valor fornecido para a 
          propriedade de usuário é inválido.',

         /* ADD HERE THE OTHERs IDs AND THE CORRESPONDING MESSAGEs */

    } as MessagesIndex;

之后,我创建了一个按给定代码(来自Firebase)打印它的功能,记得分开,因为error.code属性就像" auth / error-id&#34 ;而我们在这里只需要" error-id",如果找不到错误代码,那么你可以返回一些"未知错误"如果您愿意,可以打印error.code

   public printErrorByCode(code: string): string {
        code = code.split('/')[1];
        if (this.params[code]) {
            return (this.params[code]);
        } else {
            return ('Ocorreu algum erro desconhecido! \n Codigo erro: ' + code);
        }
    }

这不是最好的代码,但我希望它有所帮助!

答案 1 :(得分:3)

Firebase的错误消息是针对应用程序开发人员的,因此仅提供英文版本。虽然我们希望使用与我们提供的文档相同的语言提供它们,但这绝不会覆盖用户的所有语言。

因此,您必须检测代码中的错误,将错误记录到中央系统,您可以在其中检查问题,然后向用户显示本地化的错误消息。

据我所知,在Angular中没有标准化的方法。但如果有,它将与Firebase无关。

答案 2 :(得分:1)

这是我不得不缩短错误时间时所做的事情:

const firebaseErrors = {
  'auth/user-not-found': 'No user corresponding to this email',
  'auth/email-already-in-use': 'The email address is already in use',
}; // list of firebase error codes to alternate error messages

然后在需要的地方

catch (error) {
      throw firebaseErrors[error.code] || error.message,
}