在視圖中顯示Firebase錯誤消息(error.message)會導致英語錯誤說明(例如,如果用戶憑據中包含錯誤,則爲驗證錯誤)。不同語言的Firebase錯誤消息?
你會如何顯示不同語言的消息(最好的情況下,在手機的語言)?
在視圖中顯示Firebase錯誤消息(error.message)會導致英語錯誤說明(例如,如果用戶憑據中包含錯誤,則爲驗證錯誤)。不同語言的Firebase錯誤消息?
你會如何顯示不同語言的消息(最好的情況下,在手機的語言)?
Firebase的錯誤消息針對的是應用程序開發人員,所以只有英文版。儘管我們很樂意以我們提供文檔的相同語言提供它們,但這絕不會涵蓋用戶的所有語言。
因此,您必須檢測代碼中的錯誤,將錯誤記錄到中央系統,您可以在該系統中檢查問題,然後向用戶顯示本地化的錯誤消息。
據我所知,在Angular中沒有這樣做的標準化方法。但如果有的話,它與Firebase無關。
現在這是不可能的。我推薦的是使用erros代碼(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,我的語言)並實施(以打字稿):
我已經創建了一個接口來保存字符串索引數組:
export interface MessagesIndex {
[index: string]: string;
}
然後在一些用戶界面或服務的錯誤,我已經聲明這變量上面的接口:
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;
在那之後,我創建了一個函數在給定的代碼(從火力地堡)將其打印出來,記得要拆,因爲error.code
屬性附加傷害就這樣產生的「Auth /錯誤ID」而我們只需要在這裏是「錯誤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);
}
}
這不是最好的代碼,但我希望它有幫助!
最佳答案可能是使用錯誤代碼作爲消息ID,並以本地化字符串/短語ID的標準方式創建翻譯。 – Kato
@Frank:這意味着每個開發者都會做他/她自己的「錯誤信息翻譯」?大多數錯誤應該很常見(例如,在身份驗證中:「電子郵件地址不存在」,「密碼錯誤」等)。翻譯完成一次並且能夠在幾個項目中使用它是否有意義? –
@Kato:恐怕我不能跟着你 - 對不起。 「以標準的本地化字符串/短語id創建翻譯」是什麼意思? 謝謝你們兩位! –