
“Eram tempos em que até as mensagens de erro exigiam elegância.”
Imagine um sistema não como uma simples arquitetura de código, mas como um organismo vivo, pulsando com intenções e interações. Onde cada linha, carrega em si responsabilidade. E quando algo dá errado – porque sempre dá – a máquina precisa responder. Mas como ela deve falar conosco?
É aí que entra o nosso protagonista: a internacionalização (i18n).
Afinal, não adianta mostrar um erro genérico, se existem ocasiões específicas, por que não escalar?
Esse trecho de código representa exatamente o que iremos aprender:
{
"Key": "ProductNotFound",
"LocalizedValues": {
"en-US": "Product \"{0}\" was not found",
"pt-BR": "O produto \"{0}\" não foi encontrado"
}
}
A ideia aqui é simples: ao invés de mostrar diretamente uma string, você mostra um valor com base na chave e no idioma atual do usuário; O {0}
é um placeholder para valores dinâmicos, que podemos formatar com string.Format, que encaixa as peças do quebra-cabeça, substituindo os {0}
, {1}
, na string pela informação que queremos exibir.
Um exemplo de como podemos fazer isso diretamente é:
var nome = "João";
var mensagem = string.Format("Olá, {0}!", nome);
E quando estamos usando o Localizer, podemos fazer a mesma formatação, ficando:
ThrowError(string.Format(_localizer["product:ProductNotFound"], product.Name));
O que esta sendo feito é, uma busca por uma string correspondente à chave, de acordo com o idioma atual, o string.Format substitui o {0}
da mensagem pela nossa variável; Ao final, dispara o erro para que no FrontEnd possa ficar mais claro que o erro, neste exemplo, é naquele produto em específico.
Sempre que o sistema precisar informar que algo deu errado, de forma clara, contextual e no idioma do usuário, este método é bem vindo.
Seja o primeiro a comentar