【问题标题】:Why is internationalization not working properly? JSF为什么国际化不能正常工作? JSF
【发布时间】:2010-06-18 13:42:51
【问题描述】:

这是我在WEB-INF/classes 文件夹中的messages_en_US.properties 文件:-

Login=Login

然后我创建了messages_fr_FR.properties :-

Login=frenchLogin

然后在我的 JSF 页面中我写了这个:-

 <f:loadBundle basename="messages" var="msg"/>

<h:commandButton id="btnLogin" value="#{msg.Login}" actionListener="#{IndexBean.doLogin}"/>

默认情况下我可以正确看到登录文本。但是当我进入 Firefox 并将我的默认语言更改为 fr-fr 时,我的文本仍然保持不变,即我看不到 frenchLogin。

我的 faces-config.xml 中没有任何内容

我做错了什么?在此先感谢:)

【问题讨论】:

    标签: java jsf internationalization


    【解决方案1】:

    您必须在faces-config.xml 中有这个

        <application>
            <message-bundle>com.mydomain.resources.Messages</message-bundle>
            <locale-config>
                <default-locale>fr_FR</default-locale>
                <supported-locale>en_EN</supported-locale>
            </locale-config>
        </application>
    

    您需要一个 Messages.properties,这将是默认的。

    在您的 jsf 页面中:

    <f:loadBundle basename="com.mydomain.resources.Messages" var="msg" />
    

    消息文件必须在src/main/java/ 中,然后在一个包中。我的是/src/main/java/com/mydomain/resources

    还要注意大写字母。

    【讨论】:

    • 谢谢:)。起初我遇到了 CONFIGURATION FAILED 异常,但是当我删除 &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt; 时它工作正常。再次感谢。
    • 那是因为我猜你没有使用 facelets。抱歉,我忘了删除那行。
    • 另外,你能建议任何简单的方法,我可以在法语中获得所有英语单词的等效文本吗?
    • 感谢 BalusC,正是我所需要的 :)
    • 谷歌翻译对于简单的单词确实可以,但对于完整的段落等,最好聘请真正的人形翻译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2016-07-16
    • 2019-01-04
    • 2020-09-03
    • 2016-10-10
    • 2016-10-24
    相关资源
    最近更新 更多