Интернационализация Struts 2 не работает в Intellij IDEA - PullRequest
0 голосов
/ 18 ноября 2018

Я изучаю интернационализацию и локали Struts 2.

На странице всегда отображаются login.user, login.password и login.submit в браузере.

Я хочу отображать тексты на английском или упрощенном китайском, например, User, Password, Login, а не login.user и т. Д.

index.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Internationalization</title>
    </head>
    <body>
    <%--user select language page--%>
        <s:url var="loginCN" action="changeLocale" namespace="/">
            <s:param name="language">cn</s:param>
        </s:url>
        <s:url var="loginEN" action="changeLocale" namespace="/">
            <s:param name="language">en</s:param>
        </s:url>
        <a href="<s:property value="#loginCN" />">简体中文</a>
        <a href="<s:property value="#loginEN" /> ">English</a>

    <%--input form data--%>
        <form action="login" method="post">
            <s:text name="login.user" />
            <input type="text" name="username"/><br/>
            <s:text name="login.password" />
            <input type="text" name="password" /><br/>
            <input type="submit" value="<s:text name="login.submit" />" />
            <!--output validation information-->
            <p><s:fielderror fieldName="username" /></p>
        </form>


    </body>
</html>

struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <constant name="struts.custom.i18n.resources" value="viewResources.global" />

    <package name="default" namespace="/" extends="struts-default">

        <action name="changeLocale" class="web.struts.action.ChangeLocaleAction">
            <result name="success">/index.jsp</result>
        </action>
    </package>
</struts>

global.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="global.success">Success</entry>
    <entry key="login.password">Password</entry>
    <entry key="login.submit">Login</entry>
    <entry key="login.user">User</entry>
</properties>

global_en_US.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="global.success">Success</entry>
    <entry key="login.password">Password</entry>
    <entry key="login.submit">Login</entry>
    <entry key="login.user">User</entry>
</properties>

global_zh_CN.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="global.success">成功</entry>
    <entry key="login.password">密码</entry>
    <entry key="login.submit">登录</entry>
    <entry key="login.user">用户</entry>
</properties>

Структура проекта

Результат выполнения

1 Ответ

0 голосов
/ 22 ноября 2018

ОК, я решил проблему.

Во-первых, ошибка зависит от файлов «global.xml», «global_zh_CN.xml» и «global_en_US.xml».

Во-вторых, расположение файлов Resource Bundle является ошибкой.

Я использую глобальные ресурсы интернационализации, связанные файлы (xxx.properties) должны быть помещены в src, такие как src / xxx.properties.

Самая значимая вещь - это ".xml". Когда я создаю Resource Bundle в IntelliJ IDEA, мы не должны устанавливать флажок «Использовать файлы свойств на основе XML». Это ключ к решению проблемы.

...