在视图中显示Firebase错误消息(error.message)会导致出现英文错误说明(例如,对于身份验证错误,如果用户凭据包含错误)。
您将如何以不同语言显示消息(最佳情况:使用手机语言)?
答案 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,
}