Java的Struts框架支持使用国际化(i18n)来为不同语言的用户提供不同的用户界面。在Struts中配置国际化的资源存储主要包括三个要点,分别是资源文件的命名规则、资源文件的组织结构以及使用资源文件的方法。
- 资源文件的命名规则
Struts框架支持使用.properties文件来存储国际化资源信息,文件的名称要遵循一定的命名规则。文件名由以下三部分组成:
- 基础名称:通常是对应于Action、Form或JSP页面的文件名,不包含任何语言或地区的信息。
- 语言/国家:语言和国家是用下划线分隔开的,如_zh_CN表示中文(中国)。如果只有语言没有国家,则只需使用语言名称,如_fr表示法文。
- 文件扩展名:通常使用.properties作为文件扩展名。
因此,一个资源文件的完整名称可能是如下形式:messages_zh_CN.properties
- 资源文件的组织结构
Struts框架要求将不同语言/国家的资源文件放在对应的目录下。目录的命名是以语言代码(不含国家和文件扩展名)命名的,如messages_fr表示法文资源文件目录。应用程序的根目录通常是“/WEB-INF/classes”,因此存放资源文件的路径可能是:“/WEB-INF/classes/messages_zh_CN.properties”或“/WEB-INF/classes/messages_fr.properties”。
- 使用资源文件的方法
在Struts框架中,使用国际化资源信息的方法是通过ResourceBundle类实现的。ResourceBundle类是Java I18N API的核心类之一,它通过动态加载不同的资源文件来支持不同的语言/国家。
在Struts框架中,通常将用于存储国际化资源信息的.properties文件放置在一个目录中(一般是/resources目录),以便每个Action或JSP页面都可以使用它们。然后,在Action或JSP页面中,我们可以使用以下代码获取对应的资源信息:
ResourceBundle rb = ResourceBundle.getBundle("messages", Locale.getDefault());
String userNameLabel = rb.getString("username.label");
上述代码中,“messages”代表资源文件的基础名称,“Locale.getDefault()”获取当前用户的语言和国家信息。此外,在.properties文件中,可以通过键-值对的形式来存储对应的资源信息,如下面的示例:
username.label=用户名
password.label=密码
signin.button=登录
这样,我们就可以通过rb.getString()方法来获取.properties文件中对应键所对应的值。
示例1:在Struts中使用国际化资源信息来配置表单字段的标签
在Action中配置如下代码:
public void reset(ActionMapping mapping, HttpServletRequest request) {
super.reset(mapping, request);
ResourceBundle rb = ResourceBundle.getBundle("messages", Locale.getDefault());
mapping.findFormBean(mapping.getParameter()).getDynaClass().getDynaProperties();
FormPropertyConfig[] fields =
mapping.findFormBean(mapping.getParameter()).getDynaClass().getDynaProperties();
for (int i = 0; i < fields.length; i++) {
String labelKey = fields[i].getLabel();
if (labelKey != null) {
String label = rb.getString(labelKey);
fields[i].setLabel(label);
}
}
}
示例2:在Struts中使用国际化资源信息来配置页面标题
在JSP页面中配置如下代码:
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<tiles:put name="title" value="<bean:message key='page.title'/>" />
在.properties文件中,增加如下配置:
page.title=我的页面
这样,我们就可以通过配置.tiles文件,来将页面名称和title匹配,并最终动态生成HTML文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java的Struts框架中配置国际化的资源存储的要点解析 - Python技术站