我们有一个使用基本 JSP/servlet 的应用程序,当前所有英文文本都硬编码在 JSP 页面中。我们正在考虑应用程序的国际化,因此我们需要某种方法将文本提取到属性文件中。
这是我到目前为止所做的:
1)创建一个名为的文件XXXXX-messages_en.properties
,将键/值对添加到属性文件中,例如AAAAA = Hello World
2)将JSTL相关的taglibs加载到JSP页面中
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
3) 将前面的文字替换为
<fmt:message key="AAAAA" bundle="${XXXXX}"/>
4)在JSP页面中添加setBundle标签:
<fmt:setBundle basename="XXXXX-messages" var="XXXXX"/>
并重新启动服务器,一切都正确显示。
但是,关于 JSTL 国际化库的使用,我的问题是:
问题 1) 看来我必须在<fmt:setBundle>
每个 JSP 页面中添加标签,这有点难看,如果将来需要更改(更改名称?)这将使生活更加困难。
我考虑过也许我可以创建一个单独的页面并将其放入<fmt:setBundle>
其中,然后使用<jsp:include>
. 或者我可以通过 servlet 过滤器注入它?我会说我对这两种选择都不太满意。
有什么推荐的方法吗?
问题2)如果那里没有匹配的属性文件,如何指定默认语言?我在我的情况下进行了测试,如果我<fmt:setLocale>
用法语放入JSP页面,页面仍然可以正确加载。这是否意味着英文版本始终是默认版本,或者仅仅是因为我的操作系统/浏览器是英文的?
如果一个中文/日文用户打开我的页面并且我有英文和法文属性文件,会发生什么?