5

在視圖中顯示Firebase錯誤消息(error.message)會導致英語錯誤說明(例如,如果用戶憑據中包含錯誤,則爲驗證錯誤)。不同語言的Firebase錯誤消息?

你會如何顯示不同語言的消息(最好的情況下,在手機的語言)?

回答

2

Firebase的錯誤消息針對的是應用程序開發人員,所以只有英文版。儘管我們很樂意以我們提供文檔的相同語言提供它們,但這絕不會涵蓋用戶的所有語言。

因此,您必須檢測代碼中的錯誤,將錯誤記錄到中央系統,您可以在該系統中檢查問題,然後向用戶顯示本地化的錯誤消息。

據我所知,在Angular中沒有這樣做的標準化方法。但如果有的話,它與Firebase無關。

+1

最佳答案可能是使用錯誤代碼作爲消息ID,並以本地化字符串/短語ID的標準方式創建翻譯。 – Kato

+2

@Frank:這意味着每個開發者都會做他/她自己的「錯誤信息翻譯」?大多數錯誤應該很常見(例如,在身份驗證中:「電子郵件地址不存在」,「密碼錯誤」等)。翻譯完成一次並且能夠在幾個項目中使用它是否有意義? –

+0

@Kato:恐怕我不能跟着你 - 對不起。 「以標準的本地化字符串/短語id創建翻譯」是什麼意思? 謝謝你們兩位! –

1

現在這是不可能的。我推薦的是使用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); 
     } 
    } 

這不是最好的代碼,但我希望它有幫助!

相關問題