Tôi đang sử dụng jsf-ri 2.0.3, nơi cần hỗ trợ tiếng Hebrew và tiếng Nga. Vấn đề là tôi thấy vô nghĩa trên màn hình thay vì văn bản chính xác.i18n với các tệp thuộc tính được mã hóa UTF-8 trong ứng dụng JSF 2.0
Trước hết, tôi đã xác định các gói (* _locale.properties) cho từng ngôn ngữ. Các tập tin được mã hóa UTF-8. Thứ hai, tôi đã xác định các mặc định và hỗ trợ miền địa phương trong faces-config.xml
<locale-config>
<default-locale>iw</default-locale>
<supported-locale>en</supported-locale>
<supported-locale>ru</supported-locale>
</locale-config>
Thần I đã thêm một bộ lọc tùy chỉnh mà sẽ thiết lập mã hóa đáp ứng charcter sang 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>
Và cuối cùng khi tôi tạo một xhtml đơn giản để gỡ lỗi đầu ra tôi nhìn thấy một kết quả rất lạ
<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}"/>
Kết quả là:
i18n: ×¢×ר×ת
Locale: en_US
Encoding: UTF-8
Điều gì là sai với cấu hình của tôi?
Đây là một công cụ tuyệt vời. Nó sẽ được thêm vào OmniFaces một ngày nào đó? – Med
@Med: Tôi đã xem xét điều này, nhưng tôi đã quyết định rằng điều này là trên cạnh với "Hacky". Thay vào đó, hãy sử dụng các trình soạn thảo thích hợp và các công cụ xây dựng như Eclipse và/hoặc Maven/Ant. Ví dụ, khi sử dụng trình soạn thảo tệp thuộc tính dựng sẵn của Eclipse, UTF-8 sẽ được lưu trong suốt theo ISO-8859-1 với các điểm mã hóa unicode khi cần thiết. – BalusC
Ok, tôi hiểu rõ vấn đề của bạn! Cảm ơn. – Med