:::

DSpace新增編輯語系檔功能

5月 26, 2009 2 Comments Edit Post

image

實驗版本:DSpace 1.5

DSpace要修改語系檔的時候步驟繁雜,還要考慮編碼的轉換,十分的麻煩。以前我有寫過一個DSpace中文化專用utf-8轉碼程式,但其實那個轉換的功能很陽春、也有些缺陷,不建議再使用。我修改了一下轉碼程式,設計了更完整的編輯介面,並能夠直接在DSpace系統中使用。

我的作法是把原本DSpace那邊僅允許伺服器管理者必須手動修改設定檔的動作,改成用Java檔案管理的方式去建立、修改,跟原本DSpace設計理念有所差別,但是對於初學者來說卻是比較方便的。只是還是要手動重新啟動Tomcat,這個我之後再來寫一個網頁端程式好了。

以下是安裝步驟與使用方法介紹:


安裝檔案

請下載下列檔案,並擺到指定的位置:

  • messages-edit-jspui.zip
    [dspace-source]/dspace/modules/jspui/src/main/webapp/dspace-admin/messages-edit.jsp
    [dspace-source]/dspace/modules/jspui/src/main/webapp/dspace-admin/messages-main.jsp
  • MessagesEditServlet.java
    [dspace-source]/dspace-jspui/dspace-jspui-api/src/main/java/org/dspace/app/webui/servlet/admin/MessagesEditServlet.java
  • util.zip
    [dspace-source]/dspace-api/src/main/java/org/dspace/app/util/FileUtil.java
    [dspace-source]/dspace-api/src/main/java/org/dspace/app/util/EscapeUnescape.java
  • jquery.js (必需要用1.2.6以上版本)
    [dspace-source]/dspace/modules/jspui/src/main/webapp/extension/jquery.js

修改web.xml,增加「messages-edit」路徑

web.xml原本的位置在[dspace-source]/dspace-jspui/dspace-jspui-webapp/src/main/webapp/WEB-INF/web.xml,但是如果您修改過這個檔案了,那麼應該要另外儲存一份修改過得檔案在[dspace-source]/dspace/modules/jspui/src/main/webapp/WEB-INF/web.xml

請在最後一行結尾標籤</web-app>之前加入以下設定:

  <!-- Plugin Messages Editor  -->
  <servlet>
    <servlet-name>edit-messages</servlet-name>
    <servlet-class>org.dspace.app.webui.servlet.admin.MessagesEditServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>edit-messages</servlet-name>
    <url-pattern>/dspace-admin/messages-edit</url-pattern>
  </servlet-mapping>

然後請把web.xml儲存在[dspace-source]/dspace/modules/jspui/src/main/webapp/WEB-INF/web.xml之中。

修改navbar-admin.jsp,增加編輯語系檔的連結

navbar-admin.jsp預設位置在[dspace-source]/dspace-jspui/dspace-jspui-webapp/src/main/webapp/layout/navbar-admin.jsp,修改之後應該另存一份檔案在[dspace-source]/dspace/modules/jspui/src/main/webapp/layout/navbar-admin.jsp。

請找到以下程式碼:

我們增加一段程式碼在它

  <tr class="navigationBarItem">
    <td>
      <img alt="" src="<%= request.getContextPath() %>/image/<%= (currentPage.endsWith("/statistics") ? "arrow-highlight" : "arrow") %>.gif" width="16" height="16"/>
    </td>
    <td nowrap="nowrap" class="navigationBarItem">
      <a href="<%= request.getContextPath() %>/statistics"><fmt:message key="jsp.layout.navbar-admin.statistics"/></a>
    </td>
  </tr>

之後(不要動到原本的程式碼喔),如下:

  <tr class="navigationBarItem">
    <td>
      <img alt="" src="<%= request.getContextPath() %>/image/<%= (currentPage.endsWith("/dspace-admin/messages-edit") ? "arrow-highlight" : "arrow") %>.gif" width="16" height="16"/>
    </td>
    <td nowrap="nowrap" class="navigationBarItem">
      <a href="<%= request.getContextPath() %>/dspace-admin/messages-edit"><fmt:message key="jsp.layout.navbar-admin.editmessages"/></a>
    </td>
  </tr>

修改語系檔

修改您現有的語系檔之前,要先確認您所使用的語系檔為何。您可以在dspace.cfg裡面找到default.language設定。如果設定為default.lanuage = en_US,那麼您所使用的語系檔名為預設的「Messages.properties」,如果不是en_US而是「zh_TW」,那麼檔名應該是「Messages_zh_TW.properties」。由於我是用中文撰寫的,所以現在要加入的語系設定也是中文,故我們以「Messages_zh_TW.properties」作為範例。

語系檔會在[dspace-source]/dspace/modules/jspui/src/main/resources/Messages_zh_TW.properties,請在最後加入以下設定:

jsp.layout.navbar-admin.editmessages = \u7de8\u8f2f\u8a9e\u7cfb\u6a94

jsp.dspace-admin.messages-main.title = \u7de8\u8f2f\u8a9e\u7cfb\u6a94
jsp.dspace-admin.messages-main.heading = \u7de8\u8f2f\u8a9e\u7cfb\u6a94
jsp.dspace-admin.messages-main.submit_saved = \u5df2\u7d93\u5132\u5b58\uff01\u8acb\u91cd\u65b0\u555f\u52d5Tomcat\u7db2\u9801\u4f3a\u670d\u5668\u4ee5\u770b\u5230\u4fee\u6539\u7684\u6210\u679c\u3002
jsp.dspace-admin.messages-main.submit_cancel = \u53d6\u6d88\u7de8\u8f2f
jsp.dspace-admin.messages-main.default.language = \u76ee\u524d\u9810\u8a2d\u7684\u8a9e\u7cfb\u662f\uff1a
jsp.dspace-admin.messages-main.change-default-language = \u5982\u9700\u8981\u8b8a\u66f4\u7cfb\u7d71\u9810\u8a2d\u8a9e\u7cfb\uff0c\u8acb\u4fee\u6539dspace.cfg\u4e2d\u7684default.language\u8a2d\u5b9a\u3002
jsp.dspace-admin.messages-main.edit = \u7de8\u8f2f\u8a9e\u7cfb\u6a94
jsp.dspace-admin.messages-main.create = \u5efa\u7acb\u65b0\u7684\u8a9e\u7cfb\u6a94
jsp.dspace-admin.messages-main.create.source = \u5f9e\u4f86\u6e90\u6a94\u6848\u8907\u88fd
jsp.dspace-admin.messages-main.create.to-file-name = \u5230\u65b0\u7684\u8a9e\u7cfb\u6a94\u540d\u7a31
jsp.dspace-admin.messages-main.lang-collision = \u4e0d\u80fd\u8ddf\u73fe\u6709\u7684\u8a9e\u7cfb\u6a94\u540d\u7a31\u91cd\u8907\uff01
jsp.dspace-admin.messages-main.lang-empty = \u8a9e\u7cfb\u6a94\u540d\u7a31\u4e0d\u80fd\u662f\u7a7a\u503c\uff01
jsp.dspace-admin.messages-main.lang-active = \u73fe\u5728\u4f7f\u7528

jsp.dspace-admin.messages-edit.title = \u7de8\u8f2f\u8a9e\u7cfb\u6a94
jsp.dspace-admin.messages-edit.editing-position = \u60a8\u6b63\u5728\u7de8\u8f2f {0} \u8a9e\u7cfb\u6a94
jsp.dspace-admin.messages-edit.filter.key = \u7d22\u5f15\u540d\u7a31\u5305\u542b
jsp.dspace-admin.messages-edit.filter.or = \u6216
jsp.dspace-admin.messages-edit.filter.and = \u4e26
jsp.dspace-admin.messages-edit.filter.key = \u986f\u793a\u5167\u6587\u5305\u542b
jsp.dspace-admin.messages-edit.filter.do = \u641c\u5c0b
jsp.dspace-admin.messages-edit.filter.reset = \u986f\u793a\u5168\u90e8
jsp.dspace-admin.messages-edit.function.create = \u65b0\u589e\u9805\u76ee
jsp.dspace-admin.messages-edit.function.scroll-to-button = \u79fb\u81f3\u9801\u5c3e
jsp.dspace-admin.messages-edit.function.scroll-to-top = \u56de\u5230\u9801\u9996
jsp.dspace-admin.messages-edit.table.key = \u7d22\u5f15\u540d\u7a31
jsp.dspace-admin.messages-edit.table.value = \u986f\u793a\u5167\u6587
jsp.dspace-admin.messages-edit.js.nowLoading = \u8b80\u53d6\u4e2d\u2026\u2026\u8acb\u7a0d\u5019\u2026\u2026
jsp.dspace-admin.messages-edit.js.deleteButton = \u522a\u9664
jsp.dspace-admin.messages-edit.js.deleteConfirm = \u78ba\u5b9a\u662f\u5426\u8981\u522a\u9664\uff1f
jsp.dspace-admin.messages-edit.js.insertButton = \u63d2\u5165
jsp.dspace-admin.messages-edit.js.moveUpButton = \u2191
jsp.dspace-admin.messages-edit.js.moveDownButton = \u2193
jsp.dspace-admin.messages-edit.js.error.heading = \u767c\u751f\u932f\u8aa4
jsp.dspace-admin.messages-edit.js.error.name = \u932f\u8aa4\u540d\u7a31
jsp.dspace-admin.messages-edit.js.error.message = \u932f\u8aa4\u8a0a\u606f
jsp.dspace-admin.messages-edit.js.error.ValueEmpty = \u4e0d\u80fd\u662f\u7a7a\u767d\uff01
jsp.dspace-admin.messages-edit.js.error.WithSlash = \u4e0d\u80fd\u5305\u542b\uff1a
jsp.dspace-admin.messages-edit.js.error.WithNewLine = \u4e0d\u80fd\u63db\u884c\uff01
jsp.dspace-admin.messages-edit.js.error.CharsetError = \u4e0d\u80fd\u5305\u542b\u975e\u82f1\u6578\u5b57\u7684\u6587\u5b57
jsp.dspace-admin.messages-edit.js.save.KeyEmptyError = \u986f\u793a\u5167\u6587\u300c[0]\u300d\u7f3a\u5c11\u7d22\u5f15\u540d\u7a31\uff01
jsp.dspace-admin.messages-edit.js.save.ValueEncodeError = \u89e3\u78bc\u5230\u300c[0]\u300d\u6642\u767c\u751f\u932f\u8aa4\uff01
jsp.dspace-admin.messages-edit.js.filter.processing = \u641c\u5c0b\u4e2d\uff0c\u8acb\u7a0d\u5019\u3002
jsp.dspace-admin.messages-edit.js.sortConfirm = \u6392\u5e8f\u9700\u8981\u4e00\u6bb5\u6642\u9593\u904b\u7b97\uff0c\u800c\u4e14\u6392\u5e8f\u4e4b\u5f8c\u7684\u7d50\u679c\u7121\u6cd5\u5fa9\u539f\uff0c\u8acb\u554f\u662f\u5426\u8981\u7e7c\u7e8c\uff1f
jsp.dspace-admin.messages-edit.js.filter.not-found = \u641c\u5c0b\u6c92\u6709\u7d50\u679c\u3002
jsp.dspace-admin.messages-edit.encode-demo.heading = \u6e2c\u8a66\u8f49\u78bc\u5668
jsp.dspace-admin.messages-edit.encode-demo.text-to-dspace = \u2190
jsp.dspace-admin.messages-edit.encode-demo.dspace-to-text = \u2192

修改dspace.cfg檔案

dspace.cfg位於[dspace]/config/dspace.cfg

請加入以下設定:

#---------------------------------------------------------------#
#---------------Other Plugin Configuration----------------------#

tomcat.dir = /opt/apache-tomcat-6.0.16/webapps/jspui
dspace.source.dir = /opt/dspace-1.5.0-src-release

上面的tomcat.dir跟dspace.source.dir請更換成您實際上Tomcat伺服器當中擺放DSpace的位置,以及DSpace原始碼的位置。如果您之前照我寫的DSpace安裝法的話,那目錄位置就是這樣沒錯。

重新編譯DSpace

步驟如下:

  1. 移至DSpace原始檔目錄中的dspace目錄。注意底下的[dspace-source]要替換成您DSpace原始碼的目錄。
    [dspace@dspace ~]# cd [dspace-source]/dspace/
  2. 執行mvn package指令
    [dspace@dspace dspace]# mvn package

    如果最後出現BUILD SUCCESSFUL,表示編譯成功。
  3. 移至底下的target/dspace-{您DSpace的版本號}-build.dir/目錄。注意,底下的1.5.0要替換成您DSpace的版本號,或是查查看target砥下的目錄即可。
    [dspace@dspace dspace]# cd target/dspace-1.5.0-build.dir/
  4. 執行ant指令:
    [dspace@dspace dspace-1.5.0-build.dir]# ant -Dconfig=[dspace:]/config/dspace.cfg update
  5. 複製DSpace安裝目錄底下的資料夾到Tomcat的webapps目錄之中。注意,底下的[dspace]要替換成您DSpace的安裝目錄,[tomcat]則是要替換成您Tomcat的安裝目錄。
    [dspace@dspace dspace-1.5.0-build.dir]# cd [dspace]
    [dspace@dspace dspace]# \cp -rf [dspace]/webapps/* [tomcat-6.0.16]/webapps/
  6. 重新啟動Tomcat。
    [dspace@dspace dspace]# cd [tomcat]/bin
    [dspace@dspace bin]# shutdown.sh
    [dspace@dspace bin]# startup.sh

功能說明:首頁

要使用編輯語系檔的功能,使用者必須要是管理者權限(Administrator)登入才行,一般的使用者是沒辦法使用的。

image

  1. 從左邊的導覽列可以進入「編輯語系檔」
  2. 偵測目前使用的語系:系統會取得dspace.cfg裡面的default.language設定,這就是您目前DSpace所使用的語系。
  3. 編輯語系檔:下拉式選單可以選擇您要編輯的語系檔。針對目前使用的語系檔,系統會特別在語系檔名稱後標明「現在使用」。
  4. 建立新的語系檔:您可以選擇一個來源檔案,然後將他複製到新的語系檔當中,再進行編輯動作。

功能說明:編輯頁

image

語系檔通常會高達一千多筆資料,進入編輯頁面的時候需要花一段時間讀取,請耐心等候。

  1. 顯示您現在編輯的語系檔名稱。
  2. 搜尋語系檔功能,當您要修改特定語系設定的時候非常好用。讀取完成之後,就可以按下後面的按鈕。
  3. 測試轉碼器:類似原來DSpace中文化專用utf-8轉碼程式的功能,這邊測試的資料並不會寫入語系檔。
  4. 功能列,包括更新、新增項目(在最後面新增一筆語系設定)、移至頁尾、取消(然後返回首頁)。讀取完成之後,就可以按下更新、新增項目的按鈕。
  5. 讀取中的訊息。有時候因為資料量過大,會導致網頁像是當機一樣,請稍後。
  6. 語系編輯器:
    1. 第一欄是索引名稱,請依照DSpace的設計方式,只輸入英文字(盡量小寫)、用「.」分隔索引名稱的層次,用「-」連接多字元片語。
      如果語系檔開頭使用#,則表示是註解,供系統人員閱讀用。編輯器會自動偵測並改變表現形式,如下圖:
      image
    2. 第二欄是顯示內文,也就是真正顯示在網頁上的資料。雖然可以使用一些簡單的HTML,但是不建議用太過複雜的內容,不然很容易導致語系檔錯誤,無法讀取。
    3. 刪除:刪除此設定,無法復原。
    4. 插入:在此設定之後加入一行設定。
    5. 上移與下移。

終於寫完了。

這樣要編輯DSpace語系檔就簡單多了吧。

接下來來作一個Tomcat重新啟動的功能,省得還要到伺服器端重新啟動DSpace吧。<-- Post Catalog -->

總共2 則留言, (我要發問)

  1. 您好 照您的方法安裝完後
    出現這個訊息
    org.apache.jasper.JasperException: /dspace-admin/messages-main.jsp(68,31) Attribute value LocaleSupport.getLocalizedMessage(pageContext, "help.site-admin") + "#editmessages" is quoted with " which must be escaped when used within the value

    麻煩解救

    回覆刪除
  2. 應該是雙引號(")沒有正確閉合或是脫逸(" -> \")吧,請再檢查看看

    回覆刪除

留言工具: