根据客户要求,集成论坛系统。ok 开工。
论坛就选开源的mvnForum,我看用的人还不少。
集成的第一件事就是汉化mvnForum.前台没有话说,OOB的就支持中文。关键是管理页面需要汉化。
一 资源文件汉化
在网上找了很久,有网友汉化的资源文件。但都是针对1.0.2版本的。最新的1.1版好像加了不少功能,
资源文件里加了好多条目在1.0.2里没有。没办法只好自立更生了。
二 freemarker模板汉化
mvnForum使用了几个FTL模板,其中viewmemberpermissions.ftl里有hardcode,要改成国际化。
<#assign i = 1 >
<#list Rows as row>
<#if row.RowType == "Header">
<table class="tborder" width="95%" cellspacing="1" cellpadding="3" align="center">
<tr class="portlet-section-header" align="center">
<td nowrap>${bundle("suncms.Forum")}</td>
<td nowrap>${bundle("suncms.Forum.Edit")}</td>
<td nowrap>${bundle("suncms.Forum.Delete")}</td>
<td nowrap>${bundle("suncms.Forum.Assign")}</td>
<td nowrap>${bundle("suncms.Thread")}</td>
<td nowrap>${bundle("suncms.Thread.Add")}</td>
<td nowrap>${bundle("suncms.Thread.Moderate")}</td>
<td nowrap>${bundle("suncms.Post")}</td>
<td nowrap>${bundle("suncms.Post.Read")}</td>
<td nowrap>${bundle("suncms.Post.Add")}</td>
<td nowrap>${bundle("suncms.Post.Edit_Own")}</td>
<td nowrap>${bundle("suncms.Post.Edit_Any")}</td>
<td nowrap>${bundle("suncms.Post.Delete")}</td>
<td nowrap>${bundle("suncms.Attachment")}</td>
<td nowrap>${bundle("suncms.Attachment.Add")}</td>
<td nowrap>${bundle("suncms.Attachment.Get")}</td>
<td nowrap>${bundle("suncms.Poll")}</td>
<td nowrap>${bundle("suncms.Poll.Add")}</td>
<td nowrap>${bundle("suncms.Poll.Edit_Own")}</td>
<td nowrap>${bundle("suncms.Poll.Edit_Any")}</td>
<td nowrap>${bundle("suncms.Poll.Delete")}</td>
</tr>
</#if>
<#if row.RowType == "Category">
<#assign i = 1 >
<tr class="portlet-section-subheader">
<td colspan="21">
<b>${row.CategoryName}</b>
</td>
</tr>
<#if row.Empty >
<tr class="portlet-section-body"><td colspan="21" align="center">${row.no_forum}</td></tr>
</#if>
</#if>
<#if row.RowType == "Forum">
<tr <#if i%2 == 1> class="portlet-section-body" <#else> class="portlet-section-alternate" </#if> align="center">
<td align="left">${row.ForumName}</td>
<td><@check permission=row.EditForum/></td>
<td><@check permission=row.DeleteForum/></td>
<td><@check permission=row.AssignForum/></td>
<td class="messageTextBold">${bundle("suncms.Thread")} »</td>
<td><@check permission=row.AddThread/></td>
<td><@check permission=row.ModerateThread/></td>
<td class="messageTextBold">${bundle("suncms.Post")} »</td>
<td><@check permission=row.ReadPost/></td>
<td><@check permission=row.AddPost/></td>
<td><@check permission=row.EditOwnPost/></td>
<td><@check permission=row.EditAnyPost/></td>
<td><@check permission=row.DeletePost/></td>
<td class="messageTextBold">${bundle("suncms.Attachment")} »</td>
<td><@check permission=row.AddAttachment/></td>
<td><@check permission=row.GetAttachment/></td>
<td class="messageTextBold">${bundle("suncms.Poll")} »</td>
<td><@check permission=row.AddPoll/></td>
<td><@check permission=row.EditOwnPoll/></td>
<td><@check permission=row.EditAnyPoll/></td>
<td><@check permission=row.DeletePoll/></td>
</tr>
<#assign i = i+1>
</#if>
<#if row.RowType == "Footer">
<#if row.checkNoCategory>
<tr class="portlet-section-body">
<td colspan="21" align="center">${row.no_category}</td>
</tr>
</#if>
</table>
</#if>
</#list>
<#macro check permission>
<#if permission>
<font color="#008000">Yes</font>
<#else>
<font color="#FF0080">No</font>
</#if>
</#macro
对应的要修改ftlCategoryTreeListener.java,把国际化信息传到模板中
public void init(Template template) {
this.template = template;
html = new StringWriter();
root = new HashMap();
root.put("Rows", rows);
ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("mvnForum_i18n");
ResourceBundleModel rsbm = new ResourceBundleModel(RESOURCE_BUNDLE,new BeansWrapper());
root.put("bundle", rsbm);
}
三 权限管理的汉化
汉化参照http://www.shorelinesolution.com/forum/viewthread?thread=137 里做的。同样的他也是基于1.0.2 做的,他提供的代码直接在1.1里使用会报错,原因也是条目比1.1里的少。修改很简单,把1.1里的AbstractPermission类里的getDescription方法拷出来修改即可。
这时 权限管理界面都是中文了,但是有几个图片的ALT信息还是英文的,继续:
修改MyUtil。java中的getIndividualPermission方法,把hardcode的英文换成国际化。为了不影响其它代码,把该方法复制 改名一份。
public static StringBuffer getIndividualPermissionFsunCMS(int combinePers, boolean globalPermission,String localeName) throws BadInputException {
StringBuffer indivialPermissions = new StringBuffer();
int[] individualForumPermissionArray = null;
Locale locale = null;
if(localeName.length()>2){
String language = localeName.substring(0,2);
String country = localeName.substring(3);
locale = new Locale(language, country);
} else {
locale = new Locale(localeName);
}
switch (combinePers) {
case MVNForumPermission.PERMISSION_SYSTEM_ADMIN:
//indivialPermissions.append("This permission includes all individual permissions");
String stmp=MVNForumResourceBundle.getString(locale, "suncms.permission.alt_all");
indivialPermissions.append(stmp);
break;
case MVNForumPermission.PERMISSION_FORUM_ADMIN:
if (globalPermission) {
individualForumPermissionArray = MVNForumPermission.individualForumAdminPermissionArray;
} else {
individualForumPermissionArray = MVNForumPermission.individualForumAdminLimitPermissionArray;
}
break;
case MVNForumPermission.PERMISSION_FORUM_MODERATOR:
if (globalPermission) {
individualForumPermissionArray = MVNForumPermission.individualForumModeratorPermissionArray;
} else {
individualForumPermissionArray = MVNForumPermission.individualForumModeratorLimitPermissionArray;
}
break;
case MVNForumPermission.PERMISSION_POWER_USER:
if (globalPermission) {
individualForumPermissionArray = MVNForumPermission.individualPowerUserPermissionArray;
} else {
individualForumPermissionArray = MVNForumPermission.individualPowerUserLimitPermissionArray;
}
break;
case MVNForumPermission.PERMISSION_NORMAL_USER:
if (globalPermission) {
individualForumPermissionArray = MVNForumPermission.individualNormalUserPermissionArray;
} else {
individualForumPermissionArray = MVNForumPermission.individualNormalUserLimitPermissionArray;
}
break;
case MVNForumPermission.PERMISSION_LIMITED_USER:
if (globalPermission) {
individualForumPermissionArray = MVNForumPermission.individualLimitedUserPermissionArray;
} else {
individualForumPermissionArray = MVNForumPermission.individualLimitedUserLimitPermissionArray;
}
break;
default:
throw new BadInputException("This permission is invalid");
} // end switch
if (individualForumPermissionArray != null) {
//indivialPermissions.append("This permission includes the individual permission: <br />");
String stmp=MVNForumResourceBundle.getString(locale, "suncms.permission.alt");
indivialPermissions.append(stmp+" <br />");
indivialPermissions.append("<ul>");
for (int i = 0; i < individualForumPermissionArray.length; i++) {
//indivialPermissions.append("<li>").append(AbstractPermission.getDescription(individualForumPermissionArray[i])).append("</li>");
indivialPermissions.append("<li>").append(LocalizedPermission.getDescription(individualForumPermissionArray[i],localeName)).append("</li>");
}
indivialPermissions.append("</ul>");
}
return indivialPermissions;
}
四 修改JSP页面。
这个很简单,看到hardcode的英文,就用<fmt:message key="mvnforum.common.not_applicable"/> 语句换成国际化即可。
至此汉化完成。下一步集成用户。
相关文件:
分享到:
相关推荐
这个“struts2+spring+iBatis框架包”集成了这三个框架,使得开发者能够快速构建基于MVC(Model-View-Controller)模式的Web应用。 Struts2作为MVC框架,负责处理应用程序的控制逻辑。它通过Action类和配置文件定义...
Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...
"Struts2+Spring+Ibatis+MySQL" 是一个经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。这个组合集成了强大的MVC(Model-View-Controller)框架Struts2、依赖注入与面向切面编程的Spring框架、...
同时,Spring与Struts2可以通过Spring-Struts2插件无缝集成,使得Action可以直接由Spring管理,增强了系统的可测试性。 **MyBatis** 是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提供了更灵活的SQL操作...
Struts2、Spring3和iBATIS是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。在这个“struts2+spring3+ibatis项目整合案例”中,我们将深入探讨这三个框架如何...
Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3 SSH
Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们的集成应用可以构建出高效、灵活的后端系统。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求和展示视图;Spring...
Struts2、Spring和iBatis是Java Web开发中三个非常重要的框架,它们分别负责表现层、业务层和数据访问层。将这三个框架整合在一起,可以实现MVC(Model-View-Controller)架构,提高应用的灵活性和可维护性。 **...
Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。本文将详细介绍这三个框架如何整合,以及在实际项目中如何运用。 首先,Struts2作为表现...
Struts2+Spring+Ibatis整合的简单人事管理系统 没分了,转载过来的,有需要的看看吧,我觉得不错~~
struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+...
struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例
在Java Web开发中,Spring、Struts2和iBatis是三个非常重要的框架,它们各自在不同的层面上提供了强大的功能。Spring是一个全面的后端应用框架,提供了依赖注入(DI)、面向切面编程(AOP)、事务管理等功能;Struts...
开发环境说明 ...本示例完整地结合Struts2+Spring2+iBatis2+MySQL5,演示了一个用户表的增、删、改、查。 想完整学习Struts2+Spring+iBatis的同仁,可以在这个例子中学习或模仿最基本也是最核心的技术要点。
Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3内个框架的集成
Struts2、Spring和iBatis是Java Web开发中经典的三大框架,它们组合起来可以构建出高效、可维护的企业级应用程序。在这个“struts2+spring+ibatis”的小demo中,我们将深入探讨这三个框架的核心功能以及它们如何协同...
通过Struts2处理请求,Spring进行依赖管理和事务控制,以及iBatis处理数据库操作,我们可以构建出高效、模块化且易于维护的系统。在学习这个实例时,应重点理解三者之间的整合方式,以及如何利用它们各自的优势来...
maven3+struts2+spring+ibatis,本来是用maven3+struts2+spring+hibernate但考虑到hibernate在多表级联查询的时候执行效率不高,所以改用性能更好不过sql比较麻烦的的ibatis,本项目只有登录和插入数据,仅供参考: ...
Struts2、Spring和iBatis是Java Web开发中常用的三个开源框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。这个整合项目实例旨在展示如何将这三个框架集成到一起,以实现更强大的功能。 1....
Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层以及数据访问层。将这三个框架整合在一起,可以构建出高效、灵活且易于维护的Web应用程序。下面我们将详细...