web-dev-qa-db-ja.com

異なる言語のFirebaseエラーメッセージ?

Firebaseエラーメッセージ(error.message)をビューに表示すると、エラーの説明が英語になります(たとえば、ユーザーの資格情報にエラーが含まれている場合、認証エラーの場合)。

さまざまな言語でメッセージをどのように表示しますか(最良のケース:電話の言語で)?

13
Jane Dawson

これは現在不可能です。私がお勧めするのは、一意のエラーコードであるエラーコード(error.code)を使用することです。このコードを使用すると、このエラーコードを独自のテキスト/言語にバインドできます。 Firebaseのドキュメントには、その際に役立つ可能性のあるエラーコードのリストが掲載されたページがあります。次のリンクを確認してください: https://firebase.google.com/docs/reference/js/firebase.auth.Authhttps://firebase.google.com/docs/reference /js/firebase.auth.Errorhttps://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」のようになり、ここで必要なのは「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);
        }
    }

それは最高のコードではありませんが、それが役に立てば幸いです!

10
Frederiko Cesar

Firebaseのエラーメッセージはアプリケーションデベロッパーを対象としているため、英語のみです。ドキュメントを提供するのと同じ言語で提供したいのですが、ユーザーのすべての言語をカバーすることは決してありません。

したがって、コード内のエラーを検出し、問題を検査できる中央システムにエラーを記録してから、ローカライズされたエラーメッセージをユーザーに表示する必要があります。

私の知る限り、Angularで標準化する方法はありません。ただし、存在する場合、Firebaseとは無関係です。

2

エラーを短くする必要があったときに、次のことを行いました。

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,
}
0
Erik Rybalkin