read loadbundle jsf localization internationalization

loadbundle - Internacionalización en JSF, ¿cuándo usar el paquete de mensajes y el paquete de recursos?



message properties jsf (1)

<message-bundle>

El <message-bundle> se utilizará siempre que desee anular los mensajes de advertencia / error predeterminados de JSF, que han sido utilizados por las funciones de validación / conversión de JSF. Puede encontrar las claves de los mensajes de advertencia / error predeterminados en el capítulo 2.5.2.4 de la especificación JSF .

Por ejemplo, los archivos Messages_xx_XX.properties en el paquete com.example.i18n como se muestra a continuación reemplazan el mensaje required="true" defecto required="true" :

com/example/i18n/Messages_en.properties

javax.faces.component.UIInput.REQUIRED = {0}: This field is required

com/example/i18n/Messages_nl.properties

javax.faces.component.UIInput.REQUIRED = {0}: Dit veld is vereist

se puede configurar de la siguiente manera (sin el especificador de configuración regional _xx_XX y la extensión de archivo):

<message-bundle>com.example.i18n.Messages</message-bundle>

<resource-bundle>

El <resource-bundle> se utilizará siempre que desee registrar un paquete de recursos localizado que esté disponible en toda la aplicación JSF sin la necesidad de especificar <f:loadBundle> en cada vista.

Por ejemplo, los archivos com.example.i18n en el paquete com.example.i18n siguiente manera:

com/example/i18n/Text_en.properties

main.title = Title of main page main.head1 = Top heading of main page main.form1.input1.label = Label of input1 of form1 of main page

com/example/i18n/Text_nl.properties

main.title = Titel van hoofd pagina main.head1 = Bovenste kop van hoofd pagina main.form1.input1.label = Label van input1 van form1 van hoofd pagina

se puede configurar de la siguiente manera (sin el especificador de configuración regional _xx_XX y la extensión de archivo):

<resource-bundle> <base-name>com.example.i18n.Text</base-name> <var>text</var> </resource-bundle>

y se usará en main.xhtml siguiente manera:

<h:head> <title>#{text[''main.title'']}</title> </h:head> <h:body> <h1 id="head1">#{text[''main.head1'']}</h1> <h:form id="form1"> <h:outputLabel for="input1" value="#{text[''main.form1.input1.label'']}" /> <h:inputText id="input1" label="#{text[''main.form1.input1.label'']}" /> </h:form> </h:body>

ValidationMessages (JSR303 Bean Validation)

Desde Java EE 6 / JSF 2, también existe la nueva API JSR303 Bean Validation que está representada por las @NotNull , Size , @Max , etc. del paquete javax.validation.constraints . Debe comprender que esta API no tiene relación con JSF. No es parte de JSF, pero JSF tiene soporte para él durante la fase de validación. Es decir, determina y reconoce la presencia de una implementación JSR303 (por ejemplo, Hibernate Validator) y luego le delega la validación (que puede ser desactivada usando <f:validateBean disabled="true"/> , por cierto).

Según el capítulo 4.3.1.1 de la especificación JSR303 , el archivo personalizado de mensajes de validación JSR303 debe tener exactamente el nombre ValidationMessages_xx_XX.properties y debe colocarse en la raíz del classpath (¡por lo tanto, no en un paquete!).

Localización

En los ejemplos anteriores, _xx_XX en el nombre de archivo representa el idioma (opcional) y los códigos de país. Si esto está ausente del todo, entonces se convierte en el paquete predeterminado (de respaldo). Si el idioma está presente, por ejemplo, _en , se usará cuando el cliente haya solicitado explícitamente este idioma en el encabezado de solicitud HTTP Accept-Language . Lo mismo se aplica al país, por ejemplo, _en_US o _en_GB .

Puede especificar las configuraciones regionales admitidas para el paquete de mensajes y recursos genéricamente en el elemento <locale-config> de faces-config.xml .

<locale-config> <default-locale>en</default-locale> <supported-locale>nl</supported-locale> <supported-locale>de</supported-locale> <supported-locale>es</supported-locale> <supported-locale>fr</supported-locale> </locale-config>

La configuración regional deseada debe configurarse a través de <f:view locale> . Consulte también Localización en JSF, cómo recordar la configuración regional seleccionada por sesión en lugar de por solicitud / vista .

¿Cuándo y cómo debo usar las etiquetas <resource-bundle> y <message-bundle> para la localización en faces-config.xml ? Las diferencias entre esos dos no son muy claras para mí.