Utilizamos el método req.error() de la API de mensaje tanto en la clase de implementación para AdminService de nuestro escenario como en la clase de implementación para nuestro CatalogService. Utilizamos este método para emitir mensajes de error si fallan las validaciones. Hasta ahora, hemos codificado los mensajes notificados como literales de texto.
En esta lección, aprenderemos a internacionalizar mensajes. En lugar de incrustarlos de codificación fija, se mantienen en archivos separados -llamados paquetes de textos- como pares clave-valor. A continuación, el código de aplicación utiliza las claves para acceder a los textos correspondientes. Esto significa que los valores para las claves son los textos específicos de idioma reales. Para admitir diferentes idiomas, se actualizan diferentes archivos que proporcionan textos traducidos para las mismas claves (véase la siguiente figura).

Creación de archivos de paquete para mensajes de error de internacionalización
El procedimiento detallado es el siguiente: Crear un archivo con el nombre messages.properties en una carpeta llamada _i18n, i18n o asset/i18n. La carpeta del archivo messages.properties debe estar ubicada directamente debajo del directorio del proyecto o en un directorio que contenga archivos que se utilicen para definir modelos de servicio (como el directorio srv de nuestro proyecto).
Nota
Los textos necesarios se actualizan como pares clave-valor en el archivo messages.properties. Normalmente, los textos se actualizan allí en inglés. Se pueden utilizar marcadores de posición, que se anotan en la forma "{n} ". n recorre los números naturales empezando por 0.
Para admitir idiomas adicionales, se crean archivos adicionales en la misma carpeta que el archivo messages.properties de acuerdo con la siguiente convención para fijar nombres: messages<_languageCode><_countryCode>.properties. El código de país es opcional. Algunos ejemplos de estos nombres de fichero son messages_de.properties, messages_fr_CA.properties o messages_es_MX.properties.
Los archivos adicionales utilizan las mismas claves que el archivo messages.properties. Sin embargo, los valores de las claves se traducen según el código de idioma y, si procede, el código de país del nombre de archivo.
En el ejemplo que se muestra, se han creado dos archivos .properties: messages.properties con textos en inglés y messages_de.properties con las correspondientes traducciones al alemán.
Cadena de reserva
Supongamos que un texto se consulta mediante una clave al procesar una solicitud, determinándose el alemán para el idioma. Si se actualiza un texto para la clave en el fichero messages_de.properties, la aplicación utilizará este texto. Sin embargo, si no hay ningún archivo messages_de.properties o la clave utilizada no se actualiza en el archivo messages_de.properties existente, CAP vuelve al archivo messages.properties e intenta determinar un valor para la clave mediante este archivo. Si es posible, la aplicación utiliza el texto correspondiente. Si messages.properties tampoco contiene una entrada coincidente, la aplicación utiliza el nombre clave como texto.
Nota

