5

Wyświetlanie komunikatów o błędach Firebase (error.message) w widoku powoduje, że angielskie opisy błędów (np. Dla błędów uwierzytelniania, jeśli użytkownik zawiera błędy).Komunikaty o błędach Firebase w różnych językach?

Jak wyświetlałbyś wiadomości w różnych językach (najlepszy przypadek: w języku telefonu)?

Odpowiedz

2

Komunikat o błędzie Firebase jest kierowany do programistów aplikacji, więc są one dostępne tylko w języku angielskim. Chcielibyśmy je udostępnić w tych samych językach, w których udostępniamy naszą dokumentację, która nigdy nie obejmuje wszystkich języków użytkowników.

Musisz więc wykryć błąd w kodzie, zaloguj błąd do centralnego systemu, w którym możesz sprawdzić problem, a następnie pokazać zlokalizowanemu komunikatowi o błędzie dla użytkownika.

O ile mi wiadomo, nie ma znormalizowanego sposobu robienia tego w Angular. Ale jeśli tak, to nie będzie związane z Firebase.

+1

Najlepszą odpowiedzią może być użycie kodu błędu jako identyfikatora komunikatu i tworzenie tłumaczeń w standardowy sposób lokalizowania identyfikatorów ciągu/frazy. – Kato

+2

@Frank: Oznacza to, że każdy programista wykonuje swoje "tłumaczenie komunikatów o błędach"? Większość błędów powinna być dość powszechna (np. W uwierzytelnianiu: "adres e-mail nie istnieje", "nieprawidłowe hasło" itd.). Czy nie byłoby sensu, aby tłumaczenie zostało wykonane raz i po prostu być w stanie wykorzystać to w kilku projektach? –

+0

@Kato: Obawiam się, że nie mogę za tobą pójść - przepraszam za to. Co rozumiesz przez "tworzenie tłumaczeń w standardowy sposób lokalizowania identyfikatorów ciągów/fraz"? Dziękuję wam obojgu! –

1

Jest to niemożliwe w tej chwili. Polecam używanie kodu erros (error.code), który jest unikalnym kodem błędu, i dzięki któremu możesz stworzyć coś, co zwiąże ten kod błędu z własnym tekstem/językiem. W dokumentacji Firebase znajduje się dostępna strona z listą kodów błędów, które mogą Ci w tym pomóc. Sprawdź te linki: 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

Edit: Aby rozwiązać ten problem, przetłumaczyłem go przez siebie (do PT-BR, mój język) oraz wdrożony (w maszynopisie) z poniższych kroków:

Stworzyłem interfejs do przechowywania indeksowaną tablicę wyrażenie:

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

Wtedy w pewnym UI lub błąd serwisowy, mam ten zadeklarował Zmienna jako interfejs powyżej:

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; 

potem, I utworzeniu funkcji, aby wydrukować go przez danego kodu (od Firebase), należy pamiętać, aby podzielić ponieważ error.code atribute przychodzi jak „auth/błędu-id” i co musimy tylko tutaj jest „error-id”, a jeśli kod błędu nie zostanie znaleziony, można powrócić jakiś „nieznany błąd” i wydrukować error.code, jeśli chcesz:

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

nie najlepszy kod, ale mam nadzieję, że to pomoże!