會員註冊 / 登入  |  電腦版  |  Jump to bottom of page

JForum中文社群 JForum Chinese Users Community » [v2.1.8][新增功能]語系切換

發表人: andowson, 七段學員
2008-03-01 12:16:16
功能需求:讓匿名訪客不用登入前也可以選擇自己偏好的語言。

設計:
1.在header.htm上新增一個超連結到/user/changeLang.page。
2.按下/user/changeLang.page時JForum內部呼叫UserAction.java的changeLang()來顯示選擇語言畫面(user_lang.htm)。
3.按下送出後JForum呼叫UserAction.java的changeLangDone()來修改UserSession中的語言設定。

參考作法:
1.修改WEB-INF/config/urlPattern.properties,增加兩個keys:
user.changeLang.0 =

user.changeLangDone.0 =


2.修改WEB-INF/config/templatesMapping.properties,增加一個key:
user.changeLang = user_lang.htm


3.修改templates/default/user_forum.htm,將跟語言無關的欄位刪除,另存新檔為user_lang.htm。

4.修改templates/default/header.htm,加上超連結,例如我選擇在原本登入的後面加上。

5.修改net/jforum/view/forum/UserAction.java,加上以下兩個methods:
public void changeLang()

{
int userId = SessionFacade.getUserSession().getUserId();
UserDAO um = DataAccessDriver.getInstance().newUserDAO();
User u = um.selectById(userId);
this.context.put("u", u);
this.context.put("action", "changeLangDone");
this.context.put("pageTitle", I18n.getMessage("UserProfile.profileFor") + " " + u.getUsername());
this.setTemplateName(TemplateKeys.USER_CHANGE_LANG);
}

public void changeLangDone()
{
SessionFacade.getUserSession().setLang(request.getParameter("language"));
this.context.put("editDone", true);
this.changeLang();
}


6.修改net/jforum/util/preferences/TemplateKeys.java,增加一個key:
public static final String USER_CHANGE_LANG = "user.changeLang";


7.編譯程式

8.重新載入JForum,測試是否正常。

大功告成!

檔案名稱 user_lang.htm
描述 語言選擇頁面
檔案大小 5 Kbytes
下載次數 21 次
[Disk] 下載

檔案名稱 header.htm
描述 加上超連結的header.htm
檔案大小 6 Kbytes
下載次數 15 次
[Disk] 下載





會員註冊 / 登入  |  電腦版  |  Jump to top of page