不同语言的Firebase错误消息?

Jan*_*son 10 error-handling firebase firebase-authentication angularfire2 angular

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

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

Fra*_*len 11

Firebase 的错误消息面向应用程序开发人员,因此只有英文。虽然我们很乐意以与我们提供文档的语言相同的语言提供它们,但这永远不会涵盖您用户的所有语言。

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

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

  • 最好的答案可能是将错误代码用作消息 ID,并以本地化字符串/短语 ID 的标准方式创建翻译。 (3认同)
  • @Frank:这意味着每个开发人员都有自己的“错误消息翻译”吗?大多数错误应该很常见(例如在身份验证中:“电子邮件地址不存在”、“密码错误”等)。翻译一次就可以在几个项目中使用它难道没有意义吗? (2认同)

Fre*_*sar 10

现在这是不可能的。我建议使用错误代码(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=zh-CN

编辑:为解决此问题,我已将其自己翻译成(我的语言为PT-BR)并通过以下步骤实现(在TypeScript中):

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

export interface MessagesIndex {
    [index: string]: string;
}
Run Code Online (Sandbox Code Playgroud)

然后在某些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;
Run Code Online (Sandbox Code Playgroud)

之后,我创建了一个函数,可以通过给定的代码(来自Firebase)打印该函数,请记住进行拆分,因为error.code属性类似于“ auth / error-id”,而我们仅需使用“ 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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

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