Usamos o método req.error() do API de mensagem na classe de implementação para o AdminService de nosso cenário e na classe de implementação para nosso CatalogService. Utilizamos este método para emitir mensagens de erro se as validações falharem. Até agora, codificamos as mensagens reportadas como literais de texto.
Nesta lição, aprenderemos a internacionalizar mensagens. Em vez de incorporá-los com programação incondicional, eles são atualizados em arquivos separados - os chamados pacotes de texto - como pares chave-valor. Em seguida, as chaves são utilizadas pelo código de aplicação para acessar os textos correspondentes. Isso significa que os valores para as chaves são os textos reais específicos do idioma. Para suportar idiomas diferentes, são atualizados diferentes arquivos que fornecem textos traduzidos para as mesmas chaves (consulte a figura a seguir).

Criando arquivos de agrupamento para internacionalizar mensagens de erro
O procedimento detalhado é o seguinte: Crie um arquivo com o nome messages.properties em uma pasta chamada _i18n, i18n ou assets/i18n. A pasta para o arquivo messages.properties deve estar localizada diretamente abaixo do diretório do projeto ou em um diretório que contenha arquivos que são usados para definir modelos de serviço (como o diretório srv em nosso projeto).
Nota
Os textos necessários são atualizados como pares chave-valor no arquivo messages.properties. Normalmente, os textos são atualizados aí em inglês. Caracteres de preenchimento podem ser usados, que são anotados na forma "{n} ". n percorre os números naturais começando com 0.
Para suportar idiomas adicionais, arquivos adicionais são criados na mesma pasta que o arquivo messages.properties de acordo com a seguinte convenção de nomes: messages<_languageCode><_countryCode>.properties. O código do país é opcional. Exemplos desses nomes de arquivo são messages_de.properties, messages_fr_CA.properties ou messages_es_MX.properties.
Os arquivos adicionais usam as mesmas chaves que o arquivo messages.properties. No entanto, os valores para as chaves são traduzidos de acordo com o código de idioma e, se aplicável, o código do país do nome do arquivo.
No exemplo mostrado, dois arquivos .properties foram criados: messages.properties com textos em inglês e messages_de.properties com as traduções correspondentes em alemão.
Cadeia fallback
Pressuponha que um texto é consultado por meio de uma chave ao processar uma solicitação, em que o alemão foi determinado para o idioma. Se for atualizado um texto para a chave no file messages_de.properties, este texto é utilizado pela aplicação. No entanto, se não houver um arquivo messages_de.properties ou a chave usada não for mantida no arquivo messages_de.properties existente, CAP voltará para o arquivo messages.properties e tentará determinar um valor para a chave por meio desse arquivo. Se isso for possível, o texto correspondente é utilizado pela aplicação. Se messages.properties também não contiver uma entrada correspondente, o aplicativo usará o nome da chave como texto.
Nota

