Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF2.0中的印地语本地化_Jsf_Jsf 2_Localization_Hindi - Fatal编程技术网

JSF2.0中的印地语本地化

JSF2.0中的印地语本地化,jsf,jsf-2,localization,hindi,Jsf,Jsf 2,Localization,Hindi,我正在使用英语到印地语的Unicode转换器。生成的代码放在MessageBundle\u hi\u in.properties文件中 违反约束(如强制文本字段)时。应从此文件中提取相应的错误消息,并以印地语显示,但其显示的Unicode与文件中相同,没有任何转换,如 खालि नहि रख श&a

我正在使用英语到印地语的Unicode转换器。生成的代码放在
MessageBundle\u hi\u in.properties
文件中

违反约束(如强制文本字段)时。应从此文件中提取相应的错误消息,并以印地语显示,但其显示的Unicode与文件中相同,没有任何转换,如

खालि नहि रख शकते.
预计将以类似印地语的文字放映

खालि नहि रख शकते.

它的意思是“不能为空。”


XHTML页面

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html lang="#{localeBean.language}"
      xmlns="http://www.w3.org/1999/xhtml"      
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core">

        <f:view locale="#{localeBean.locale}">

        <h:head>
            <title>Title</title>
        </h:head>

        <h:body>                

            <h:form>
                <h:selectOneMenu id="languages" value="#{localeBean.language}" onchange="submit();" style="position: absolute; right: 0; top: 50px;">
                    <f:selectItem itemValue="en" itemLabel="English" />
                    <f:selectItem itemValue="hi" itemLabel="Hindi" />
                </h:selectOneMenu>
            </h:form>

        </h:body>
    </f:view>
</html>

faces-config.xml文件

<application>
    <message-bundle>
        messages.MessageBundle
    </message-bundle>

    <locale-config>
        <default-locale>en</default-locale>
        <supported-locale>hi_IN</supported-locale>
    </locale-config>

    <resource-bundle>
        <base-name>messages.ResourceBundle</base-name>
        <var>messages</var>
    </resource-bundle>
</application>
?JSF不支持这种语言吗

&#2326;&#2366;&#2354;&#2367; &#2344;&#2361;&#2367; &#2352;&#2326; &#2358;&#2325;&#2340;&#2375;&#46;
是印地语的HTML转义形式。作为的一部分,任何输出文本都隐式地进行HTML转义。因此,实际上,这个HTML转义印地语最终在生成的HTML中双重转义,如下所示(右键单击,查看源代码以查看自己):

这使得它在webbrowser解释后以原始HTML转义形式出现

毕竟,使用HTML转义表单
&#XXXX.properties
文件中的code>不是正确的方法。您应该改用Unicode转义形式
\uxxx
。另见。当您在Java风格的项目中编辑扩展名为
.properties
的文件时,像Eclipse这样有点像样的IDE已经自动完成了这项工作。你可以用通常的方式在那里输入印地语,Eclipse会自动地避开它。但是,如果您使用的是不同的编辑器,或者无法正确配置编辑器,则需要使用JDK提供的
native2ascii
工具。同样,有关详细信息,请参阅前面链接的Javadoc

最终,印地语的正确Unicode转义形式如下所示(我在Eclipse转义后复制粘贴):

将此未经修改的内容放入
.properties
文件中

它在遗留JSP中工作只是因为它是一种相当遗留和低劣的视图技术,没有任何形式的隐式XSS攻击预防,因此HTML不会逃逸任何模板文本


与具体问题无关,对于您不知道的情况,您也可以直接在Facelets文件的源代码中编写印地语。只需确保编辑器配置为使用UTF-8保存文本文件。您发现的转换器对于现代JSF开发来说是绝对无用的

<fmt:setLocale value="hi_IN"/>
<fmt:setBundle basename="bundles.resourceBundle_hi_IN" var="resourceBundle"/> 

<fmt:message key="someKey" bundle="${resourceBundle}"/>
&#2326;&#2366;&#2354;&#2367; &#2344;&#2361;&#2367; &#2352;&#2326; &#2358;&#2325;&#2340;&#2375;&#46;
&amp;#2326;&amp;#2366;&amp;#2354;&amp;#2367; &amp;#2344;&amp;#2361;&amp;#2367; &amp;#2352;&amp;#2326; &amp;#2358;&amp;#2325;&amp;#2340;&amp;#2375;&amp;#46;
\u0916\u093E\u0932\u093F \u0928\u0939\u093F \u0930\u0916 \u0936\u0915\u0924\u0947.