web-dev-qa-db-fra.com

Messages d'erreur Firebase dans différentes langues?

L'affichage des messages d'erreur Firebase (error.message) dans la vue entraîne des descriptions d'erreurs en anglais (par exemple pour les erreurs d'authentification, si les informations d'identification utilisateur contiennent des erreurs).

Comment afficheriez-vous les messages dans différentes langues (dans le meilleur des cas: dans la langue du téléphone)?

13
Jane Dawson

C'est impossible en ce moment. Ce que je recommande est d'utiliser le code erros (error.code) qui est un code d'erreur unique et avec lequel vous pouvez créer quelque chose pour lier ce code d'erreur à votre propre texte/langue. Il y a une page disponible dans la documentation de Firebase qui contient une liste de ces codes d'erreur qui pourraient vous aider avec cela. Consultez ces liens: 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

Edit : Pour résoudre ce problème, je l'ai traduit par moi-même (en PT-BR, mon langage) et implémenté (en TypeScript) avec ces étapes:

J'ai créé une interface pour contenir le tableau de chaîne indexé:

export interface MessagesIndex {
    [index: string]: string;
}

Ensuite, dans une interface utilisateur ou un service d'erreur, j'ai déclaré cette variable comme interface ci-dessus:

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;

Après cela, j'ai créé une fonction pour l'imprimer par le code donné (à partir de Firebase), n'oubliez pas de diviser car le error.code l'attribut vient comme "auth/error-id" et ce dont nous avons seulement besoin ici est "error-id", et si le code d'erreur n'est pas trouvé, alors vous pouvez retourner une "erreur inconnue" et imprimer le error.code, si tu veux:

   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);
        }
    }

Ce n'est pas le meilleur code mais j'espère que ça aide!

10
Frederiko Cesar

Les messages d'erreur de Firebase sont destinés aux développeurs d'applications, ils ne sont donc qu'en anglais. Bien que nous aimerions les fournir dans les mêmes langues que celles que nous fournissons dans notre documentation, cela ne couvrira jamais toutes les langues de vos utilisateurs.

Vous devrez donc détecter l'erreur dans votre code, consigner l'erreur dans un système central où vous pourrez inspecter le problème, puis afficher un message d'erreur localisé à votre utilisateur.

Pour autant que je sache, il n'y a pas de moyen standardisé de le faire dans Angular. Mais si c'est le cas, cela ne sera pas lié à Firebase.

2
Frank van Puffelen

Voici ce que j'ai fait lorsque j'ai dû réduire les erreurs:

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

Puis quelque part où tu en as besoin

catch (error) {
      throw firebaseErrors[error.code] || error.message,
}
0
Erik Rybalkin