Estoy usando jsf-ri 2.0.3 donde se necesita soporte hebreo y ruso. El problema es que veo un galimatías en la pantalla en lugar del texto correcto.i18n con archivos de propiedades codificadas UTF-8 en la aplicación JSF 2.0
Antes que nada, he definido los paquetes (* _locale.properties) para cada idioma. Los archivos están en codificación UTF-8. En segundo lugar, he definido el valor predeterminado y apoyado locales en faces-config.xml
<locale-config>
<default-locale>iw</default-locale>
<supported-locale>en</supported-locale>
<supported-locale>ru</supported-locale>
</locale-config>
de lo que he añadido un filtro personalizado que establecer la codificación charcter respuesta a UTF-8.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Y finalmente cuando creo un XHTML sencilla para depurar la salida Veo muy extraños resultados
<f:loadBundle basename="i18n.frontend.homepage" var="msg"/>
<strong>i18n: </strong><h:outputText value="#{msg.language}"/>
<br/>
<strong>Locale: </strong>
<h:outputText value="#{facesContext.externalContext.response.locale}"/>
<br/>
<strong>Encoding: </strong>
<h:outputText value="#{facesContext.externalContext.response.characterEncoding}"/>
El resultado es:
i18n: ×¢×ר×ת
Locale: en_US
Encoding: UTF-8
Lo que está mal con mi configuración?
Esta es una gran herramienta. ¿Se agregará a OmniFaces algún día? – Med
@Med: He considerado esto, pero decidí que esto está al límite con "Hacky". Más bien use los editores correctos y herramientas de compilación como Eclipse y/o Maven/Ant. Por ejemplo, cuando se utiliza el editor de archivos de propiedades integradas de Eclipse, UTF-8 se guardará de forma transparente como ISO-8859-1 con puntos de código Unicode cuando sea necesario. – BalusC
Ok, ya entendí! Gracias. – Med