ting.yin 5 năm trước cách đây
mục cha
commit
a66339748a
19 tập tin đã thay đổi với 393 bổ sung259 xóa
  1. 82 46
      stmms-web/src/main/webapp/static/i18n/messages.properties
  2. 78 47
      stmms-web/src/main/webapp/static/i18n/messages_en.properties
  3. 78 47
      stmms-web/src/main/webapp/static/i18n/messages_zh.properties
  4. 23 11
      stmms-web/src/main/webapp/static/mark-json/js/mark-control.js
  5. 24 12
      stmms-web/src/main/webapp/static/mark-new/js/mark-control.js
  6. 11 11
      stmms-web/src/main/webapp/static/mark-new/js/modules/change-name.js
  7. 22 22
      stmms-web/src/main/webapp/static/mark-new/js/modules/mark-board.js
  8. 3 3
      stmms-web/src/main/webapp/static/mark-new/js/modules/mark-history.js
  9. 12 12
      stmms-web/src/main/webapp/static/mark-new/js/modules/mark-status.js
  10. 2 2
      stmms-web/src/main/webapp/static/mark-new/js/modules/problem-process.js
  11. 2 2
      stmms-web/src/main/webapp/static/mark-new/js/modules/sheet-view.js
  12. 3 3
      stmms-web/src/main/webapp/static/mark-new/js/modules/single-image-view.js
  13. 4 4
      stmms-web/src/main/webapp/static/mark-new/js/modules/specialTag.js
  14. 1 1
      stmms-web/src/main/webapp/static/mark-new/js/modules/thumbnail.js
  15. 9 9
      stmms-web/src/main/webapp/static/mark-new/js/modules/warning-info.js
  16. 24 12
      stmms-web/src/main/webapp/static/mark-track/js/mark-control.js
  17. 10 10
      stmms-web/src/main/webapp/static/mark-track/js/modules/mark-board.js
  18. 1 1
      stmms-web/src/main/webapp/static/mark-track/js/modules/sheet-view.js
  19. 4 4
      stmms-web/src/main/webapp/static/mark-track/js/modules/single-image-view.js

+ 82 - 46
stmms-web/src/main/webapp/static/i18n/messages.properties

@@ -5,74 +5,110 @@ user.login.marker=\u8bc4\u5377\u5458\u767b\u5f55
 user.login.name=\u7528\u6237\u540d
 user.login.password=\u5bc6\u7801
 user.login.submit=\u767b\u5f55
-user.logout=\u9000\u51fa
 #mark-control
-mark.assistant=<i class="icon-wrench"></i> \u5c0f\u52a9\u624b
-mark.mode.track=\u5207\u6362\u5230\u8f68\u8ff9\u6a21\u5f0f
-mark.mode.common=\u5207\u6362\u5230\u666e\u901a\u6a21\u5f0f
-mark.function=\u8bc4\u5377\u529f\u80fd
+mark.control.assistant=\u5c0f\u52a9\u624b
+mark.control.mode.track=\u5207\u6362\u5230\u8f68\u8ff9\u6a21\u5f0f
+mark.control.mode.common=\u5207\u6362\u5230\u666e\u901a\u6a21\u5f0f
+mark.control.function=\u8bc4\u5377\u529f\u80fd
+mark.control.logout=\u9000\u51fa
 #status
-mark.student.number=\u8003\u751f\u7f16\u53f7<em id="student-number"></em>
-mark.library.number=\u4efb\u52a1\u7f16\u53f7<em id="library-number"></em>
-mark.objective.score=\u5ba2\u89c2\u5f97\u5206<em id="objective-score"></em>
-mark.marked.count=\u5df2\u8bc4<em id="person-count"></em>
-mark.unmark.count=\u672a\u8bc4<em id="todo-count"></em>
-mark.top.count=\u5206\u914d<em id="top-count"></em>
-mark.progress=\u8fdb\u5ea6<em id="marked-percent"></em>
-mark.continue=\u7ee7\u7eed
-mark.top.count.finish=\u5206\u914d\u4efb\u52a1\u5df2\u8bc4\u5b8c\uff0c\u662f\u5426\u7ee7\u7eed\uff1f
-mark.loading=\u6b63\u5728\u52a0\u8f7d...
+mark.status.student.number=\u8003\u751f\u7f16\u53f7
+mark.status.library.number=\u4efb\u52a1\u7f16\u53f7
+mark.status.objective.score=\u5ba2\u89c2\u5f97\u5206
+mark.status.marked.count=\u5df2\u8bc4
+mark.status.unmark.count=\u672a\u8bc4
+mark.status.top.count=\u5206\u914d
+mark.status.progress=\u8fdb\u5ea6
+mark.status.continue=\u7ee7\u7eed
+mark.status.top.count.finish=\u5206\u914d\u4efb\u52a1\u5df2\u8bc4\u5b8c\uff0c\u662f\u5426\u7ee7\u7eed\uff1f
+mark.status.loading=\u6b63\u5728\u52a0\u8f7d...
+mark.status.logout=\u9000\u51fa
 #single-image-view
-mark.zoom.in=\u653e\u5927
-mark.zoom.out=\u7f29\u5c0f
-mark.zoom.fit=\u9002\u5e94
-mark.student.answer=\u7b54\u5377
+mark.single.zoom.in=\u653e\u5927
+mark.single.zoom.out=\u7f29\u5c0f
+mark.single.zoom.fit=\u9002\u5e94
+mark.single.student.answer=\u7b54\u5377
 #chang name
 mark.change.name=\u4fee\u6539\u4e2a\u4eba\u4fe1\u606f
-mark.name=\u8f93\u5165\u7528\u6237\u540d
-mark.password=\u8f93\u5165\u65b0\u5bc6\u7801
-mark.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.press.name=\u8f93\u5165\u7528\u6237\u540d
+mark.change.press.password=\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.press.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.confirm=\u786e\u5b9a
+mark.change.name.null=\u540d\u5b57\u4e0d\u80fd\u4e3a\u7a7a
+mark.change.name.length=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc78\u4e2a\u5b57
+mark.change.password.same=\u4e24\u6b21\u5bc6\u7801\u8bf7\u4fdd\u6301\u4e00\u81f4
+mark.change.password.length=\u5bc6\u7801\u7684\u957f\u5ea6\u81f3\u5c114\u4f4d
+mark.change.network.error=\u7f51\u7edc\u901a\u4fe1\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
+mark.change.error=\u4fee\u6539\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
 #specialTag
 mark.special.tag=\u7279\u6b8a\u6807\u8bb0
-mark.back=\u56de\u9000
-mark.clear=\u5168\u90e8\u6e05\u9664
-mark.underline=\u4e0b\u5212\u7ebf
-mark.open=\u6253\u5f00
-mark.close=\u5173\u95ed
+mark.special.back=\u56de\u9000
+mark.special.clear=\u5168\u90e8\u6e05\u9664
+mark.special.underline=\u4e0b\u5212\u7ebf
+mark.special.open=\u6253\u5f00
+mark.special.close=\u5173\u95ed
 #problem-process
 mark.problem=\u95ee\u9898\u5377
 mark.problem.type=\u9009\u62e9\u95ee\u9898\u7c7b\u578b
-mark.confirm=\u786e\u5b9a
-mark.cancel=\u53d6\u6d88
+mark.problem.confirm=\u786e\u5b9a
+mark.problem.cancel=\u53d6\u6d88
 #thumbnail
 mark.thumbnail=\u7f29\u7565\u56fe
+mark.thumbnail.open=\u6253\u5f00
+mark.thumbnail.close=\u5173\u95ed
 #view-sidebar
 mark.sidebar=\u4fa7\u8fb9\u680f
 #mark-history
-mark.history=\u56de\u8bc4
-mark.history.time=\u65f6\u95f4<em class="up" id="time-sort"></em>
-mark.history.number=\u7f16\u53f7<em class="up" id="studentId-sort">
-mark.history.score=\u603b\u5206<em class="up" id="score-sort">
+mark.history.title=\u56de\u8bc4
+mark.history.time=\u65f6\u95f4
+mark.history.number=\u7f16\u53f7
+mark.history.score=\u603b\u5206
 mark.history.search=\u67e5\u627e\u8bd5\u5377
-mark.history.pre=\u524d<i class="yellow" id="history-start"></i>-\u524d<i class="yellow" id="history-end"></i>
+mark.history.pre=\u524d
 mark.history.success=\u56de\u8bc4\u6210\u529f\uff0c\u603b\u5206\uff1a
 mark.history.problem=\u56de\u8bc4\u6210\u529f\uff0c\u5df2\u63d0\u4ea4\u95ee\u9898\u5377
+mark.history.loading=\u6b63\u5728\u52a0\u8f7d\u8bf7\u7a0d\u5019
 #mark-board
-mark.submit=\u63d0\u4ea4
-mark.total.score.board=\u603b\u5206\uff1a<i class="yellow" id="score-board-total-score"></i>
-mark.total.score=\u603b\u5206 <i id="total-score">5</i>
-mark.score.zero=\u5168\u96f6\u5206
-mark.pass=\u8df3 \u8fc7
-mark.choose.result=\u9009\u505a\u7ed3\u679c
-mark.keyboard=\u952e\u76d8\u7ed9\u5206 >>
-mark.mouse=<< \u9f20\u6807\u7ed9\u5206
-mark.interval=\u95f4\u9694
-mark.score=\u5206
-mark.clear.question=\u6e05\u9664\u672c\u9898
+mark.board.submit=\u63d0\u4ea4
+mark.board.total.score=\u603b\u5206
+mark.board.score.zero=\u5168\u96f6\u5206
+mark.board.pass=\u8df3 \u8fc7
+mark.board.choose.result=\u9009\u505a\u7ed3\u679c
+mark.board.keyboard=\u952e\u76d8\u7ed9\u5206 >>
+mark.board.mouse=<< \u9f20\u6807\u7ed9\u5206
+mark.board.interval=\u95f4\u9694
+mark.board.score=\u5206
+mark.board.back=\u56de\u9000
+mark.board.clear.question=\u6e05\u9664\u672c\u9898
+mark.board.clear.question=\u6e05\u9664\u5168\u5377
+mark.board.question.not.mark=\u5f53\u524d\u4efb\u52a1\u8fd8\u6709\u672a\u7ed9\u5206\u7684\u9898\uff0c\u8bf7\u7ee7\u7eed\u7ed9\u5206
+mark.board.confirm=,\u786e\u8ba4\u63d0\u4ea4\u5417\uff1f
+mark.board.zero.confirm=\u786e\u8ba4\u8981\u63d0\u4ea4\u5168\u96f6\u5206\u5417\uff1f
+mark.board.null=\u65e0
+mark.board.interval.error=\u4e0d\u7b26\u5408\u5206\u503c\u95f4\u9694\u8981\u6c42
+mark.board.gt=\u4e0d\u80fd\u5927\u4e8e
+mark.board.lt=\u4e0d\u80fd\u5c0f\u4e8e
+mark.board.number.error=\u4e0d\u662f\u5408\u6cd5\u6570\u5b57
+mark.board.step.error=\u5fc5\u987b\u9009\u62e9\u4e00\u9898\u5206\u53d1\uff01
+mark.board.step.same=\u4e0d\u80fd\u91cd\u65b0\u5206\u53d1\u5230\u540c\u4e00\u9898\uff01
 #sheet-view
 mark.sheet=\u539f\u56fe
 mark.sheet.check=\u539f\u56fe\u5207\u6362
+mark.sheet.open=\u6253\u5f00
+mark.sheet.close=\u5173\u95ed
 #answer-view
 mark.answer=\u6807\u7b54
 #warning-info
-mark.try.again=\u8bf7\u70b9\u51fb\u91cd\u8bd5
+mark.warning.try.again=\u8bf7\u70b9\u51fb\u91cd\u8bd5
+mark.warning.force.special.tag=\u5f3a\u5236\u7279\u6b8a\u6807\u8bb0\u5df2\u5f00\u542f\uff0c\u81f3\u5c11\u4f7f\u7528\u4e00\u4e2a\u7279\u6b8a\u6807\u8bb0
+mark.warning.network.error=\u7f51\u7edc\u5f02\u5e38\uff0c\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25
+mark.warning.task.error=\u9886\u53d6\u8bc4\u5377\u4efb\u52a1\u51fa\u9519
+mark.warning.task.finish=\u8bc4\u5377\u4efb\u52a1\u5df2\u5b8c\u6210
+mark.warning.task.loading=\u8bc4\u5377\u4efb\u52a1\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.warning.close=\u5173\u95ed
+#json-view
+mark.json.loading=\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.json.student.answer=\u8003\u751f\u7b54\u6848\uff1a
+mark.json.answer=\u6807\u7b54\uff1a
+mark.json.body=\u9898\u5e72\uff1a
+mark.json.question.number=\u9898\u53f7\uff1a

+ 78 - 47
stmms-web/src/main/webapp/static/i18n/messages_en.properties

@@ -5,51 +5,61 @@ user.login.marker=Marker
 user.login.name=username
 user.login.password=password
 user.login.submit=Login
-user.logout=logout
 #mark-control
-mark.assistant=Assistant
-mark.mode.track=Track Mode
-mark.mode.common=Common Mode
-mark.function=Marking function
+mark.control.assistant=Assistant
+mark.control.mode.track=Track Mode
+mark.control.mode.common=Common Mode
+mark.control.function=Marking function
+mark.control.logout=logout
 #status
-mark.student.number=student number
-mark.library.number=task number
-mark.objective.score=objective score
-mark.marked.count=marked
-mark.unmark.count=unmark
-mark.top.count=assigned
-mark.progress=progress
-mark.continue=continue
-mark.top.count.finish=The assigned task has been completed. Do you want to continue?
-mark.loading=loading...
+mark.status.student.number=student number
+mark.status.library.number=task number
+mark.status.objective.score=objective score
+mark.status.marked.count=marked
+mark.status.unmark.count=unmark
+mark.status.top.count=assigned
+mark.status.progress=progress
+mark.status.continue=continue
+mark.status.top.count.finish=The assigned task has been completed. Do you want to continue?
+mark.status.loading=loading...
+mark.status.logout=logout
 #single-image-view
-mark.zoom.in=Zoom in
-mark.zoom.out=Zoom out
-mark.zoom.fit=Zoom fit
-mark.student.answer=student answer
+mark.single.zoom.in=Zoom in
+mark.single.zoom.out=Zoom out
+mark.single.zoom.fit=Zoom fit
+mark.single.student.answer=student answer
 #chang name
 mark.change.name=change userInfo
-mark.name=press your name
-mark.password=press new password
-mark.password.again=press new password again
+mark.change.press.name=press your name
+mark.change.press.password=press new password
+mark.change.press.password.again=press new password again
+mark.change.confirm=ok
+mark.change.name.null=name cannot be empty
+mark.change.name.length=length cannot exceed 8 words
+mark.change.password.same=please keep the same password twice
+mark.change.password.length=password must be at least 4 word
+mark.change.network.error=network error.please try again later
+mark.change.error=change error.please try again later
 #specialTag
 mark.special.tag=Special tag
-mark.back=back
-mark.clear=clear all
-mark.underline=underline
-mark.open=open
-mark.close=close
+mark.special.back=back
+mark.special.clear=clear all
+mark.special.underline=underline
+mark.special.open=open
+mark.special.close=close
 #problem-process
 mark.problem=Problem
 mark.problem.type=check problem type
-mark.confirm=ok
-mark.cancel=cancel
+mark.problem.confirm=ok
+mark.problem.cancel=cancel
 #thumbnail
 mark.thumbnail=thumbnail
+mark.thumbnail.open=open
+mark.thumbnail.close=close
 #view-sidebar
 mark.sidebar=sidebar
 #mark-history
-mark.history=history
+mark.history.title=history
 mark.history.time=time
 mark.history.number=number
 mark.history.score=score
@@ -57,27 +67,48 @@ mark.history.search=search
 mark.history.pre=pre
 mark.history.success=successful,score: 
 mark.history.problem=submit problem successful 
+mark.history.loading=loading..
 #mark-board
-mark.submit=submit
-mark.total.score.board=Score\uff1a
-mark.total.score=Score
-mark.score.zero=all zero
-mark.pass=pass
-mark.choose.result=choose result
-mark.keyboard=mark by keyboard >>
-mark.mouse=<< mark by mouse
-mark.interval=interval:
-mark.score=
-mark.clear.question=clear
+mark.board.submit=submit
+mark.board.total.score=Score\uff1a
+mark.board.score.zero=all zero
+mark.board.pass=pass
+mark.board.choose.result=choose result
+mark.board.keyboard=mark by keyboard >>
+mark.board.mouse=<< mark by mouse
+mark.board.interval=interval:
+mark.board.score=
+mark.board.back=back
+mark.board.clear.question=clear
+mark.board.clear=clear all
+mark.board.question.not.mark=There are still questions not mark, please continue
+mark.board.confirm=,Are you sure to submit?
+mark.board.zero.confirm=Are you sure to submit all zero?
+mark.board.null=blank
+mark.board.interval.error=score interval error
+mark.board.gt=cannot be greater than
+mark.board.lt=cannot be less than
+mark.board.number.error=not a number
+mark.board.step.error=must be choose a question\uff01
+mark.board.step.same=Can't redistribute to the same question!
 #sheet-view
 mark.sheet=sheet
 mark.sheet.check=check sheet
+mark.sheet.open=open
+mark.sheet.close=close
 #answer-view
 mark.answer=answer
 #warning-info
-mark.try.again=please click try again
-mark.force.special.tag=Force special tag is onen, please use at least one special tag
-mark.network.error=network error,get task failed
-mark.task.error=get task failed
-mark.task.finish=marking task finished
-mark.task.loading=task loading
+mark.warning.try.again=please click try again
+mark.warning.force.special.tag=Force special tag is onen, please use at least one special tag
+mark.warning.network.error=network error,get task failed
+mark.warning.task.error=get task failed
+mark.warning.task.finish=marking task finished
+mark.warning.task.loading=task loading
+mark.warning.close=close
+#json-view
+mark.json.loading=loading...
+mark.json.student.answer=student answer:
+mark.json.answer=answer:
+mark.json.body=question:
+mark.json.question.number=question number:

+ 78 - 47
stmms-web/src/main/webapp/static/i18n/messages_zh.properties

@@ -5,51 +5,61 @@ user.login.marker=\u8bc4\u5377\u5458\u767b\u5f55
 user.login.name=\u7528\u6237\u540d
 user.login.password=\u5bc6\u7801
 user.login.submit=\u767b\u5f55
-user.logout=\u9000\u51fa
 #mark-control
-mark.assistant=\u5c0f\u52a9\u624b
-mark.mode.track=\u5207\u6362\u5230\u8f68\u8ff9\u6a21\u5f0f
-mark.mode.common=\u5207\u6362\u5230\u666e\u901a\u6a21\u5f0f
-mark.function=\u8bc4\u5377\u529f\u80fd
+mark.control.assistant=\u5c0f\u52a9\u624b
+mark.control.mode.track=\u5207\u6362\u5230\u8f68\u8ff9\u6a21\u5f0f
+mark.control.mode.common=\u5207\u6362\u5230\u666e\u901a\u6a21\u5f0f
+mark.control.function=\u8bc4\u5377\u529f\u80fd
+mark.control.logout=\u9000\u51fa
 #status
-mark.student.number=\u8003\u751f\u7f16\u53f7
-mark.library.number=\u4efb\u52a1\u7f16\u53f7
-mark.objective.score=\u5ba2\u89c2\u5f97\u5206
-mark.marked.count=\u5df2\u8bc4
-mark.unmark.count=\u672a\u8bc4
-mark.top.count=\u5206\u914d
-mark.progress=\u8fdb\u5ea6
-mark.continue=\u7ee7\u7eed
-mark.top.count.finish=\u5206\u914d\u4efb\u52a1\u5df2\u8bc4\u5b8c\uff0c\u662f\u5426\u7ee7\u7eed\uff1f
-mark.loading=\u6b63\u5728\u52a0\u8f7d...
+mark.status.student.number=\u8003\u751f\u7f16\u53f7
+mark.status.library.number=\u4efb\u52a1\u7f16\u53f7
+mark.status.objective.score=\u5ba2\u89c2\u5f97\u5206
+mark.status.marked.count=\u5df2\u8bc4
+mark.status.unmark.count=\u672a\u8bc4
+mark.status.top.count=\u5206\u914d
+mark.status.progress=\u8fdb\u5ea6
+mark.status.continue=\u7ee7\u7eed
+mark.status.top.count.finish=\u5206\u914d\u4efb\u52a1\u5df2\u8bc4\u5b8c\uff0c\u662f\u5426\u7ee7\u7eed\uff1f
+mark.status.loading=\u6b63\u5728\u52a0\u8f7d...
+mark.status.logout=\u9000\u51fa
 #single-image-view
-mark.zoom.in=\u653e\u5927
-mark.zoom.out=\u7f29\u5c0f
-mark.zoom.fit=\u9002\u5e94
-mark.student.answer=\u7b54\u5377
+mark.single.zoom.in=\u653e\u5927
+mark.single.zoom.out=\u7f29\u5c0f
+mark.single.zoom.fit=\u9002\u5e94
+mark.single.student.answer=\u7b54\u5377
 #chang name
 mark.change.name=\u4fee\u6539\u4e2a\u4eba\u4fe1\u606f
-mark.name=\u8f93\u5165\u7528\u6237\u540d
-mark.password=\u8f93\u5165\u65b0\u5bc6\u7801
-mark.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.press.name=\u8f93\u5165\u7528\u6237\u540d
+mark.change.press.password=\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.press.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.confirm=\u786e\u5b9a
+mark.change.name.null=\u540d\u5b57\u4e0d\u80fd\u4e3a\u7a7a
+mark.change.name.length=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc78\u4e2a\u5b57
+mark.change.password.same=\u4e24\u6b21\u5bc6\u7801\u8bf7\u4fdd\u6301\u4e00\u81f4
+mark.change.password.length=\u5bc6\u7801\u7684\u957f\u5ea6\u81f3\u5c114\u4f4d
+mark.change.network.error=\u7f51\u7edc\u901a\u4fe1\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
+mark.change.error=\u4fee\u6539\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
 #specialTag
 mark.special.tag=\u7279\u6b8a\u6807\u8bb0
-mark.back=\u56de\u9000
-mark.clear=\u5168\u90e8\u6e05\u9664
-mark.underline=\u4e0b\u5212\u7ebf
-mark.open=\u6253\u5f00
-mark.close=\u5173\u95ed
+mark.special.back=\u56de\u9000
+mark.special.clear=\u5168\u90e8\u6e05\u9664
+mark.special.underline=\u4e0b\u5212\u7ebf
+mark.special.open=\u6253\u5f00
+mark.special.close=\u5173\u95ed
 #problem-process
 mark.problem=\u95ee\u9898\u5377
 mark.problem.type=\u9009\u62e9\u95ee\u9898\u7c7b\u578b
-mark.confirm=\u786e\u5b9a
-mark.cancel=\u53d6\u6d88
+mark.problem.confirm=\u786e\u5b9a
+mark.problem.cancel=\u53d6\u6d88
 #thumbnail
 mark.thumbnail=\u7f29\u7565\u56fe
+mark.thumbnail.open=\u6253\u5f00
+mark.thumbnail.close=\u5173\u95ed
 #view-sidebar
 mark.sidebar=\u4fa7\u8fb9\u680f
 #mark-history
-mark.history=\u56de\u8bc4
+mark.history.title=\u56de\u8bc4
 mark.history.time=\u65f6\u95f4
 mark.history.number=\u7f16\u53f7
 mark.history.score=\u603b\u5206
@@ -57,27 +67,48 @@ mark.history.search=\u67e5\u627e\u8bd5\u5377
 mark.history.pre=\u524d
 mark.history.success=\u56de\u8bc4\u6210\u529f\uff0c\u603b\u5206\uff1a
 mark.history.problem=\u56de\u8bc4\u6210\u529f\uff0c\u5df2\u63d0\u4ea4\u95ee\u9898\u5377
+mark.history.loading=\u6b63\u5728\u52a0\u8f7d\u8bf7\u7a0d\u5019
 #mark-board
-mark.submit=\u63d0\u4ea4
-mark.total.score.board=\u603b\u5206\uff1a
-mark.total.score=\u603b\u5206
-mark.score.zero=\u5168\u96f6\u5206
-mark.pass=\u8df3 \u8fc7
-mark.choose.result=\u9009\u505a\u7ed3\u679c
-mark.keyboard=\u952e\u76d8\u7ed9\u5206 >>
-mark.mouse=<< \u9f20\u6807\u7ed9\u5206
-mark.interval=\u95f4\u9694
-mark.score=\u5206
-mark.clear.question=\u6e05\u9664\u672c\u9898
+mark.board.submit=\u63d0\u4ea4
+mark.board.total.score=\u603b\u5206
+mark.board.score.zero=\u5168\u96f6\u5206
+mark.board.pass=\u8df3 \u8fc7
+mark.board.choose.result=\u9009\u505a\u7ed3\u679c
+mark.board.keyboard=\u952e\u76d8\u7ed9\u5206 >>
+mark.board.mouse=<< \u9f20\u6807\u7ed9\u5206
+mark.board.interval=\u95f4\u9694
+mark.board.score=\u5206
+mark.board.back=\u56de\u9000
+mark.board.clear.question=\u6e05\u9664\u672c\u9898
+mark.board.clear.question=\u6e05\u9664\u5168\u5377
+mark.board.question.not.mark=\u5f53\u524d\u4efb\u52a1\u8fd8\u6709\u672a\u7ed9\u5206\u7684\u9898\uff0c\u8bf7\u7ee7\u7eed\u7ed9\u5206
+mark.board.confirm=,\u786e\u8ba4\u63d0\u4ea4\u5417\uff1f
+mark.board.zero.confirm=\u786e\u8ba4\u8981\u63d0\u4ea4\u5168\u96f6\u5206\u5417\uff1f
+mark.board.null=\u65e0
+mark.board.interval.error=\u4e0d\u7b26\u5408\u5206\u503c\u95f4\u9694\u8981\u6c42
+mark.board.gt=\u4e0d\u80fd\u5927\u4e8e
+mark.board.lt=\u4e0d\u80fd\u5c0f\u4e8e
+mark.board.number.error=\u4e0d\u662f\u5408\u6cd5\u6570\u5b57
+mark.board.step.error=\u5fc5\u987b\u9009\u62e9\u4e00\u9898\u5206\u53d1\uff01
+mark.board.step.same=\u4e0d\u80fd\u91cd\u65b0\u5206\u53d1\u5230\u540c\u4e00\u9898\uff01
 #sheet-view
 mark.sheet=\u539f\u56fe
 mark.sheet.check=\u539f\u56fe\u5207\u6362
+mark.sheet.open=\u6253\u5f00
+mark.sheet.close=\u5173\u95ed
 #answer-view
 mark.answer=\u6807\u7b54
 #warning-info
-mark.try.again=\u8bf7\u70b9\u51fb\u91cd\u8bd5
-mark.force.special.tag=\u5f3a\u5236\u7279\u6b8a\u6807\u8bb0\u5df2\u5f00\u542f\uff0c\u81f3\u5c11\u4f7f\u7528\u4e00\u4e2a\u7279\u6b8a\u6807\u8bb0
-mark.network.error=\u7f51\u7edc\u5f02\u5e38\uff0c\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25
-mark.task.error=\u9886\u53d6\u8bc4\u5377\u4efb\u52a1\u51fa\u9519
-mark.task.finish=\u8bc4\u5377\u4efb\u52a1\u5df2\u5b8c\u6210
-mark.task.loading=\u8bc4\u5377\u4efb\u52a1\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.warning.try.again=\u8bf7\u70b9\u51fb\u91cd\u8bd5
+mark.warning.force.special.tag=\u5f3a\u5236\u7279\u6b8a\u6807\u8bb0\u5df2\u5f00\u542f\uff0c\u81f3\u5c11\u4f7f\u7528\u4e00\u4e2a\u7279\u6b8a\u6807\u8bb0
+mark.warning.network.error=\u7f51\u7edc\u5f02\u5e38\uff0c\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25
+mark.warning.task.error=\u9886\u53d6\u8bc4\u5377\u4efb\u52a1\u51fa\u9519
+mark.warning.task.finish=\u8bc4\u5377\u4efb\u52a1\u5df2\u5b8c\u6210
+mark.warning.task.loading=\u8bc4\u5377\u4efb\u52a1\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.warning.close=\u5173\u95ed
+#json-view
+mark.json.loading=\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.json.student.answer=\u8003\u751f\u7b54\u6848\uff1a
+mark.json.answer=\u6807\u7b54\uff1a
+mark.json.body=\u9898\u5e72\uff1a
+mark.json.question.number=\u9898\u53f7\uff1a

+ 23 - 11
stmms-web/src/main/webapp/static/mark-json/js/mark-control.js

@@ -656,9 +656,9 @@ MarkControl.prototype.center_dom = '<div class="center-content span12"></div>';
 
 MarkControl.prototype.center_header_dom = '<div class="row-fluid"><div class="header"><p class="tips">\
 <em>\
-<a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.assistant">小助手</span></a></em>\
+<a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.control.assistant">小助手</span></a></em>\
 <a class="useinfo" href="#"><i class="icon-user icon-white"></i><i id="mark-user-name"></i></a>\
-<a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="user.logout">退出</i></a>\
+<a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="mark.control.logout">退出</i></a>\
 </p></div></div>';
 
 MarkControl.prototype.center_content_dom = '<div class="row-fluid"></div>';
@@ -667,7 +667,7 @@ MarkControl.prototype.image_content_dom = '<div class="image-content span12"></d
 
 MarkControl.prototype.assistant_dom = '<div class="popover bottom assistant"><div class="arrow"></div></div>';
 
-MarkControl.prototype.mark_function_dom = '<h3 class="popover-title">评卷功能</h3>\
+MarkControl.prototype.mark_function_dom = '<h3 class="popover-title" data-i18n-text="mark.control.function">评卷功能</h3>\
 <div class="popover-content"><p id="function-list" class="popover-list">\
 </p></div>';
 
@@ -713,14 +713,26 @@ function getDom(content, markControl) {
         content = content.replace(/{logoutUrl}/g, markControl.option.logoutUrl);
     }
     var result = $(content);
-    result.find("[data-i18n-value]").each(function() {
-		$(this).val($.i18n.prop($(this).data("i18n-value")));
-	});
-    result.find("[data-i18n-text]").each(function() {
-		$(this).text($.i18n.prop($(this).data("i18n-text")));
-	});
-    result.find("[data-i18n-placeholder]").each(function() {
-		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+    result.each(function() {
+    	if($(this).data("i18n-value")!=undefined){
+    		$(this).val($.i18n.prop($(this).data("i18n-value")));
+    	}
+		if($(this).data("i18n-text")!=undefined){
+			$(this).text($.i18n.prop($(this).data("i18n-text")));
+		    	}
+		if($(this).data("i18n-placeholder")!=undefined){
+			$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+		}
+    	
+    	$(this).find("[data-i18n-value]").each(function() {
+    		$(this).val($.i18n.prop($(this).data("i18n-value")));
+    	});
+    	$(this).find("[data-i18n-text]").each(function() {
+    		$(this).text($.i18n.prop($(this).data("i18n-text")));
+    	});
+    	$(this).find("[data-i18n-placeholder]").each(function() {
+    		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+    	});
 	});
     return result;
 }

+ 24 - 12
stmms-web/src/main/webapp/static/mark-new/js/mark-control.js

@@ -660,10 +660,10 @@ MarkControl.prototype.sidebar_dom = '<div class="mark-sidebar span2 hide"></div>
 MarkControl.prototype.center_dom = '<div class="center-content span12"></div>';
 
 MarkControl.prototype.center_header_dom = '<div class="row-fluid"><div class="header"><p class="tips">\
-<em><a href="##" class="btn" id="switch-track-button" style="display:none" data-i18n-text="mark.mode.track">切换到轨迹模式</a>\
-<a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.assistant"> 小助手</span></a></em>\
+<em><a href="##" class="btn" id="switch-track-button" style="display:none" data-i18n-text="mark.control.mode.track">切换到轨迹模式</a>\
+<a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.control.assistant"> 小助手</span></a></em>\
 <a class="useinfo" href="#"><i class="icon-user icon-white"></i><i id="mark-user-name"></i></a>\
-<a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="user.logout">退出</i></a>\
+<a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="mark.control.logout">退出</i></a>\
 </p></div></div>';
 
 MarkControl.prototype.center_content_dom = '<div class="row-fluid"></div>';
@@ -672,7 +672,7 @@ MarkControl.prototype.image_content_dom = '<div class="image-content span12"></d
 
 MarkControl.prototype.assistant_dom = '<div class="popover bottom assistant"><div class="arrow"></div></div>';
 
-MarkControl.prototype.mark_function_dom = '<h3 class="popover-title" data-i18n-text="mark.function">评卷功能</h3>\
+MarkControl.prototype.mark_function_dom = '<h3 class="popover-title" data-i18n-text="mark.control.function">评卷功能</h3>\
 <div class="popover-content"><p id="function-list" class="popover-list">\
 </p></div>';
 
@@ -718,14 +718,26 @@ function getDom(content, markControl) {
         content = content.replace(/{logoutUrl}/g, markControl.option.logoutUrl);
     }
     var result = $(content);
-    result.find("[data-i18n-value]").each(function() {
-		$(this).val($.i18n.prop($(this).data("i18n-value")));
-	});
-    result.find("[data-i18n-text]").each(function() {
-		$(this).text($.i18n.prop($(this).data("i18n-text")));
-	});
-    result.find("[data-i18n-placeholder]").each(function() {
-		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+    result.each(function() {
+    	if($(this).data("i18n-value")!=undefined){
+    		$(this).val($.i18n.prop($(this).data("i18n-value")));
+    	}
+		if($(this).data("i18n-text")!=undefined){
+			$(this).text($.i18n.prop($(this).data("i18n-text")));
+		    	}
+		if($(this).data("i18n-placeholder")!=undefined){
+			$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+		}
+    	
+    	$(this).find("[data-i18n-value]").each(function() {
+    		$(this).val($.i18n.prop($(this).data("i18n-value")));
+    	});
+    	$(this).find("[data-i18n-text]").each(function() {
+    		$(this).text($.i18n.prop($(this).data("i18n-text")));
+    	});
+    	$(this).find("[data-i18n-placeholder]").each(function() {
+    		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+    	});
 	});
     return result;
 }

+ 11 - 11
stmms-web/src/main/webapp/static/mark-new/js/modules/change-name.js

@@ -37,24 +37,24 @@ function ChangeName(option) {
               var pw2Text = self.popover.password2Input.val();
                   pw2Text = pw2Text.replace(/(^\s*)|(\s*$)/g, "");
               if (nameText.length == 0) {
-                  self.popover.userNameMessage.html('姓名不能为空');
+                  self.popover.userNameMessage.html(getMessage("mark.change.name.null"));
                   return false;
               } else if (nameText.length > 8) {
-                  self.popover.userNameMessage.html('长度不能超过8个字');
+                  self.popover.userNameMessage.html(getMessage("mark.change.name.length"));
                   return false;
               }
               if(pwText.length > 0 || pw2Text.length > 0) {
                   logout = true;
                   if (!pw2Text) {
-                    self.popover.password2Message.html('请再次输入您的密码');
+                    self.popover.password2Message.html(getMessage("mark.change.press.password.again"));
                     return false;
                   }
                   if (pwText != pw2Text) {
-                    self.popover.password2Message.html('两次密码请保持一致');
+                    self.popover.password2Message.html(getMessage("mark.change.password.same"));
                     return false;
                   }
                   if(pw2Text.length < 4){
-                    self.popover.password2Message.html('密码的长度至少4位');
+                    self.popover.password2Message.html(getMessage("mark.change.password.length"));
                     return false;
                   }
               }
@@ -69,10 +69,10 @@ function ChangeName(option) {
                           window.location.href = '/mark/logout';
                         }
                     } else {
-                        self.popover.userNameMessage.html('修改失败,请稍后重试');
+                        self.popover.userNameMessage.html(getMessage("mark.change.error"));
                     }
                 }).error(function() {
-                    self.popover.userNameMessage.html('网络通信错误,请稍后重试');
+                    self.popover.userNameMessage.html(getMessage("mark.change.network.error"));
                 });
     });
 }
@@ -95,11 +95,11 @@ ChangeName.prototype.toggle = function(enable) {
 
 ChangeName.prototype.popover_dom = '<div class="message-popover" style="display:none"><div class="popover-header">\
 <p class="title" data-i18n-text="mark.change.name">修改个人信息</p><p class="image-close"><img src="{staticServer}/mark-new/images/images-close.png" /></p></div>\
-<div class="popover-cont"><span style="color: red;">*</span><input type="text" class="username-input" placeholder="请输入您的姓名" data-i18n-placeholder="mark.name"/>\
+<div class="popover-cont"><span style="color: red;">*</span><input type="text" class="username-input" placeholder="请输入您的姓名" data-i18n-placeholder="mark.change.press.name"/>\
 <i class="wrong username"></i></div>\
-<div class="popover-cont"><input type="password" class="password-input" placeholder="请输入新的密码" data-i18n-placeholder="mark.password"/>\
+<div class="popover-cont"><input type="password" class="password-input" placeholder="请输入新的密码" data-i18n-placeholder="mark.change.press.password"/>\
  <i class="wrong password"></i></div>\
- <div class="popover-cont"><input type="password" class="password2-input" placeholder="请再次输入您的密码" data-i18n-placeholder="mark.password.again"/> \
+ <div class="popover-cont"><input type="password" class="password2-input" placeholder="请再次输入您的密码" data-i18n-placeholder="mark.change.press.password.again"/> \
  <i class="wrong password2"></i></div>\
-<a href="#" class="btn btn-small btn-info text-userInfo" data-i18n-text="mark.confirm">确定</a>\
+<a href="#" class="btn btn-small btn-info text-userInfo" data-i18n-text="mark.change.confirm">确定</a>\
 </div>';

+ 22 - 22
stmms-web/src/main/webapp/static/mark-new/js/modules/mark-board.js

@@ -156,10 +156,10 @@ MarkBoard.prototype.init = function() {
         var selectedBlockId = $(".block-id-list  option:selected").val();
         if (markBoard.task != undefined) {
             if (markBoard.task.blockId == selectedBlockId) {
-                alert("不能重新分发到同一题!");
+                alert(getMessage("mark.board.step.same"));
                 return false;
             } else if (selectedBlockId == 0) {
-                alert("必须选择一题分发!");
+                alert(getMessage("mark.board.step.error"));
                 return false;
             } else {
                 markBoard.task.reset = true;
@@ -173,10 +173,10 @@ MarkBoard.prototype.init = function() {
         var selectedBlockId = $(".block-id-list  option:selected").val();
         if (markBoard.task != undefined) {
             if (markBoard.task.blockId == selectedBlockId) {
-                alert("不能重新分发到同一题!");
+                alert(getMessage("mark.board.step.same"));
                 return false;
             } else if (selectedBlockId == 0) {
-                alert("必须选择一题分发!");
+                alert(getMessage("mark.board.step.error"));
                 return false;
             } else {
                 markBoard.task.reset = true;
@@ -438,8 +438,8 @@ MarkBoard.prototype.onTaskSubmit = function() {
         finish = true;
     }
     if (!finish) {
-        alert('当前任务还有未给分的步骤,请继续给分');
-    } else if (!this.needConfirm || confirm('总分为' + totalScore + ', 确认要提交吗?')) {
+        alert(getMessage("mark.board.question.not.mark"));
+    } else if (!this.needConfirm || confirm(getMessage("mark.board.total.score") + totalScore + getMessage("mark.board.confirm"))) {
         this.task.totalScore = totalScore;
         this.task.scoreList = scoreList.join(',');
         this.markControl.submitTask();
@@ -449,18 +449,18 @@ MarkBoard.prototype.onTaskSubmit = function() {
 MarkBoard.prototype.validateScore = function(step, scoreString) {
     var stepDom = this.stepBoard.stepArray[this.currentStep.number - 1].find('.current-score');
     if (!$.isNumeric(scoreString)) {
-        this.togglePopover(true, '不是合法数字', stepDom);
+        this.togglePopover(true, getMessage("mark.board.number.error"), stepDom);
         //alert('当前分数不是合法数字');
         return false;
     }
     var score = new Number(scoreString);
     if (score < step.min) {
-        this.togglePopover(true, '不能小于' + step.min, stepDom);
+        this.togglePopover(true, getMessage("mark.board.lt") +" " + step.min, stepDom);
         //alert('当前分数不应小于' + step.min);
         return false;
     }
     if (score > step.max) {
-        this.togglePopover(true, '不能大于' + step.max, stepDom);
+        this.togglePopover(true, getMessage("mark.board.gt") +" " + step.max, stepDom);
         //alert('当前分数不应大于' + step.max);
         return false;
     }
@@ -473,7 +473,7 @@ MarkBoard.prototype.validateScore = function(step, scoreString) {
         }
     }
     if (!find) {
-        this.togglePopover(true, '不符合分值间隔要求', stepDom);
+        this.togglePopover(true, getMessage("mark.board.interval.error"), stepDom);
         //alert('当前分数不符合分值间隔要求');
         return false;
     }
@@ -509,7 +509,7 @@ MarkBoard.prototype.render = function(task) {
             var dom = getDom(this.step_dom, this.markControl);
             dom.attr('data-number', step.number);
             dom.find('.step-title').html(step.title);
-            dom.find('.interval-score').html($.i18n.prop("mark.interval") + step.interval + $.i18n.prop("mark.score"));
+            dom.find('.interval-score').html(getMessage("mark.board.interval") + step.interval + getMessage("mark.board.score"));
             dom.find('.max-score').html(step.max);
             dom.find('.min-score').html(step.min);
             if (step.markFinish === true) {
@@ -580,7 +580,7 @@ MarkBoard.prototype.initMarkBoardHeader = function() {
         if (group != undefined) {
             this.scoreBoard.header.empty();
             var blockSelect = (this.scoreBoard.header).append(this.scoreBoard_selective_dom).find('select');
-            blockSelect.append('<option value="0">无</option>');
+            blockSelect.append('<option value="0" data-i18n-text="mark.board.null">无</option>');
             if (group.blockList != undefined) {
                 for (var i = 0; i < group.blockList.length; i++) {
                     var block = group.blockList[i];
@@ -595,7 +595,7 @@ MarkBoard.prototype.initMarkBoardHeader = function() {
 
             blockSelect = this.stepBoard.selectiveHeader.find('select');
             blockSelect.empty();
-            blockSelect.append('<option value="0">无</option>');
+            blockSelect.append('<option value="0" data-i18n-text="mark.board.null">无</option>');
             if (group.blockList != undefined) {
                 for (var i = 0; i < group.blockList.length; i++) {
                     var block = group.blockList[i];
@@ -679,9 +679,9 @@ MarkBoard.prototype.onFocusChange = function() {
 }
 
 MarkBoard.prototype.step_board_dom = '<div class="span2 mark-steps" style="display:none"><div class="step-board">\
-<a href="#" class="header" id="show-score-board-button" data-i18n-text="mark.mouse"><< 鼠标给分</a>\
-<div class="sublist"><p class="fraction"><span data-i18n-text="mark.total.score">总分</span> <i id="total-score">5</i></p><div>\
-<a href="#" class="header all-zero-button" data-i18n-text="mark.score.zero">全零分</a>\
+<a href="#" class="header" id="show-score-board-button" data-i18n-text="mark.board.mouse"><< 鼠标给分</a>\
+<div class="sublist"><p class="fraction"><span data-i18n-text="mark.board.total.score">总分</span> <i id="total-score">5</i></p><div>\
+<a href="#" class="header all-zero-button" data-i18n-text="mark.board.score.zero">全零分</a>\
 <div class="step-list"></div>\
 </div></div>';
 
@@ -700,7 +700,7 @@ MarkBoard.prototype.scoreBoard_dom = '<div class="score-board score-board-popove
 MarkBoard.prototype.scoreBoard_header_dom = '<div class="header">\
 <p class="fl" id="score-board-header"></p>\
 <a class="header-close" id="score-board-close-button" href="#">\
-<i class="header-text" data-i18n-text="mark.keyboard">键盘给分 >></i></a>\
+<i class="header-text" data-i18n-text="mark.board.keyboard">键盘给分 >></i></a>\
 </div>';
 
 MarkBoard.prototype.scoreBoard_stepHolder_dom = '<div class="content"></div>';
@@ -713,15 +713,15 @@ MarkBoard.prototype.scoreBoard_step_dom = '<div class="sublist">\
 MarkBoard.prototype.scoreBoard_score_dom = '<a href="#" class="score-select"></a>';
 
 MarkBoard.prototype.scoreBoard_footer_dom = '<div class="footer">\
-<p class="font"><span data-i18n-text="mark.total.score.board">总分:</span><i class="yellow" id="score-board-total-score"></i></p>\
-<a id="task-submit-button" class="button" href="#" data-i18n-text="mark.submit">提 交</a>\
-<a class="button all-zero-button" href="##" data-i18n-text="mark.score.zero">全零分</a>\
-<a id="task-pass-button" class="button" href="#" style="display:none" data-i18n-text="mark.pass">跳 过</a>\
+<p class="font"><span data-i18n-text="mark.board.total.score">总分:</span><i class="yellow" id="score-board-total-score"></i></p>\
+<a id="task-submit-button" class="button" href="#" data-i18n-text="mark.board.submit">提 交</a>\
+<a class="button all-zero-button" href="##" data-i18n-text="mark.board.score.zero">全零分</a>\
+<a id="task-pass-button" class="button" href="#" style="display:none" data-i18n-text="mark.board.pass">跳 过</a>\
 </div>';
 
 MarkBoard.prototype.popover_dom = '<div class="popover left assistant">\
 <div class="arrow"></div>\
 <h3 class="popover-title"></h3></div>';
 
-MarkBoard.prototype.scoreBoard_selective_dom = '<i class="fl" data-i18n-text="mark.choose.result">选做结果</i>\
+MarkBoard.prototype.scoreBoard_selective_dom = '<i class="fl" data-i18n-text="mark.board.choose.result">选做结果</i>\
 <select class="block-id-list span1 mr-t"></select>';

+ 3 - 3
stmms-web/src/main/webapp/static/mark-new/js/modules/mark-history.js

@@ -289,10 +289,10 @@ MarkHistory.prototype.updateTaskScore = function(score) {
     });
 }
 
-MarkHistory.prototype.toggle_button_dom = '<a href="#" data-i18n-text="mark.history">回评</a>';
+MarkHistory.prototype.toggle_button_dom = '<a href="#" data-i18n-text="mark.history.title">回评</a>';
 
 MarkHistory.prototype.header_dom = '<div class="header">\
-<p class="fl" data-i18n-text="mark.history">回评</p>\
+<p class="fl" data-i18n-text="mark.history.title">回评</p>\
 <a href="#" id="close-history-button"><img src="{staticServer}/mark-new/images/hp-close.png" /></a>\
 </div>';
 
@@ -312,7 +312,7 @@ MarkHistory.prototype.history_list_dom = '<div class="sublist"><div class="c-tab
 <th id="studentId-sort-th"><span data-i18n-text="mark.history.number">编号</span><em class="up" id="studentId-sort"></th>\
 <th id="time-sort-th"><span data-i18n-text="mark.history.time">时间</span><em class="up" id="time-sort"></em></th>\
 <th id="score-sort-th"><span data-i18n-text="mark.history.score">总分</span><em class="up" id="score-sort"></th></tr></thead>\
-<tbody class="loding" id="history-loading"><tr><td colspan="3"><div><img src="{staticServer}/mark-new/images/loding.gif"/></div><p data-i18n-text="mark.loading">正在加载请稍候</p></td></tr></tbody>\
+<tbody class="loding" id="history-loading"><tr><td colspan="3"><div><img src="{staticServer}/mark-new/images/loding.gif"/></div><p data-i18n-text="mark.history.loading">正在加载请稍候</p></td></tr></tbody>\
 <tbody id="history-list"></tbody></table></div></div>';
 
 MarkHistory.prototype.history_row_dom = '<tr><td class="history-secret-number"></td>\

+ 12 - 12
stmms-web/src/main/webapp/static/mark-new/js/modules/mark-status.js

@@ -9,7 +9,7 @@ function MarkStatus(option) {
     this.markControl = option.markControl;
     this.init(option);
     this.markControl.on('task.get.before', this, function(event, context, statusInfo) {
-        this.changeStatus('正在加载');
+        this.changeStatus(getMessage('mark.status.loading'));
         this.clearTopTitle();
     });
     this.markControl.on('task.get.success', this, function(event, context, eventObject) {
@@ -148,21 +148,21 @@ MarkStatus.prototype.render = function(status) {
 
 MarkStatus.prototype.status_dom = '<p class="text">\
 <i id="subject-title" style="cursor:pointer"><em id="subject-name"></em></i>\
-<i id="status-title"><em id="status-name" data-i18n-text="mark.loading"></em></i>\
-<i id="library-title" style="display:none"><soan data-i18n-text="mark.library.number">任务编号</span><em id="library-number"></em></i>\
-<i id="student-title" style="display:none"><span data-i18n-text="mark.student.number">考生编号</span><em id="student-number"></em></i>\
-<i id="objective-area" style="display:none"><span data-i18n-text="mark.objective.score">客观得分</span><em id="objective-score"></em></i>\
-<i><span data-i18n-text="mark.marked.count">已评</span><em id="person-count"></em></i>\
+<i id="status-title"><em id="status-name" data-i18n-text="mark.status.loading"></em></i>\
+<i id="library-title" style="display:none"><span data-i18n-text="mark.status.library.number">任务编号</span><em id="library-number"></em></i>\
+<i id="student-title" style="display:none"><span data-i18n-text="mark.status.student.number">考生编号</span><em id="student-number"></em></i>\
+<i id="objective-area" style="display:none"><span data-i18n-text="mark.status.objective.score">客观得分</span><em id="objective-score"></em></i>\
+<i><span data-i18n-text="mark.status.marked.count">已评</span><em id="person-count"></em></i>\
 </p>';
 
 MarkStatus.prototype.progress_dom = '<p class="text">\
-<i id="top-count-area" style="display:none"><span data-i18n-text="mark.top.count">分配</span><em id="top-count"></em></i>\
-<i><span data-i18n-text="mark.unmark.count">未评</span><em id="todo-count"></em></i>\
-<i><span data-i18n-text="mark.progress">进度</span><em id="marked-percent"></em></i>\
+<i id="top-count-area" style="display:none"><span data-i18n-text="mark.status.top.count">分配</span><em id="top-count"></em></i>\
+<i><span data-i18n-text="mark.status.unmark.count">未评</span><em id="todo-count"></em></i>\
+<i><span data-i18n-text="mark.status.progress">进度</span><em id="marked-percent"></em></i>\
 </p>';
 
 MarkStatus.prototype.popover_dom = '<div class="warning-popover">\
-<p data-i18n-text="mark.top.count.finish">分配任务已评完,是否继续?</p>\
-<a href="#" class="btn btn-large btn-primary text-c" id="continue-button" data-i18n-text="mark.continue">继续</a>\
-<a href="{logoutUrl}" class="btn btn-large text-c" id="exit-button" data-i18n-text="user.logout">退出</a>\
+<p data-i18n-text="mark.status.top.count.finish">分配任务已评完,是否继续?</p>\
+<a href="#" class="btn btn-large btn-primary text-c" id="continue-button" data-i18n-text="mark.status.continue">继续</a>\
+<a href="{logoutUrl}" class="btn btn-large text-c" id="exit-button" data-i18n-text="mark.status.logout">退出</a>\
 </div>';

+ 2 - 2
stmms-web/src/main/webapp/static/mark-new/js/modules/problem-process.js

@@ -104,6 +104,6 @@ ProblemProcess.prototype.button_dom = '<input type="radio" class="problemId" nam
 ProblemProcess.prototype.popover_dom = '<div class="message-popover" style="display:none;"><div class="popover-header">\
 	<p class="title" data-i18n-text="mark.problem">问题卷</p><p class="image-close"><img src="{staticServer}/mark-new/images/images-close.png" /></p></div>\
 	<div id="problem-type-list" style="text-align:left;"></div>\
-	<a href="#" class="btn btn-small btn-info submit-btn" data-i18n-text="mark.confirm">确定</a>\
-	<a href="#" class="btn btn-small btn-info close-btn" data-i18n-text="mark.cancel">取消</a>\
+	<a href="#" class="btn btn-small btn-info submit-btn" data-i18n-text="mark.problem.confirm">确定</a>\
+	<a href="#" class="btn btn-small btn-info close-btn" data-i18n-text="mark.problem.cancel">取消</a>\
 	</div>';

+ 2 - 2
stmms-web/src/main/webapp/static/mark-new/js/modules/sheet-view.js

@@ -140,9 +140,9 @@ SheetView.prototype.toggle = function(show) {
     }
 }
 
-SheetView.prototype.control_dom = '<h3 class="popover-title" data-i18n-text="mark.sheet">查看原卷</h3>\
+SheetView.prototype.control_dom = '<h3 class="popover-title" data-i18n-text="mark.sheet">原卷</h3>\
 <div class="popover-content"><p id="sheet-list" class="popover-list">\
-<a href="#" id="show-sheet-button" data-i18n-text="mark.open">打开</a><a href="#" id="hide-sheet-button" data-i18n-text="mark.close">关闭</a>\
+<a href="#" id="show-sheet-button" data-i18n-text="mark.sheet.open">打开</a><a href="#" id="hide-sheet-button" data-i18n-text="mark.sheet.close">关闭</a>\
 </p></div>';
 
 SheetView.prototype.container_dom = '<div class="image-view-popover sheet" style=" width:100%; height:100vh;"></div>';

+ 3 - 3
stmms-web/src/main/webapp/static/mark-new/js/modules/single-image-view.js

@@ -161,7 +161,7 @@ SingleImageView.prototype.updateScrollTop = function(scrollTopPercent) {
 }
 
 SingleImageView.prototype.image_control_dom = '<em>\
-<a href="#" class="btn zoom-in-button" data-i18n-text="mark.zoom.in">放大</a>\
-<a href="#" class="btn zoom-out-button" data-i18n-text="mark.zoom.out">缩小</a>\
-<a href="#" class="btn zoom-fit-button" data-i18n-text="mark.zoom.fit">适应</a>\
+<a href="#" class="btn zoom-in-button" data-i18n-text="mark.single.zoom.in">放大</a>\
+<a href="#" class="btn zoom-out-button" data-i18n-text="mark.single.zoom.out">缩小</a>\
+<a href="#" class="btn zoom-fit-button" data-i18n-text="mark.single.zoom.fit">适应</a>\
 </em>';

+ 4 - 4
stmms-web/src/main/webapp/static/mark-new/js/modules/specialTag.js

@@ -149,11 +149,11 @@ SpecialTag.prototype.container_content_dom = '<div class="content popover-conten
     <a href="#" value="√">√</a>\
     <a href="#" value="X">×</a>\
     <a href="#" value="乄">乄</a>\
-	<a href="#" value="___" ><u data-i18n-text="mark.underline">下划线</u></a></p>\
-<p><a href="#" id="undo-button" style="margin-left: 20px;" data-i18n-text="mark.back">回&nbsp;&nbsp;&nbsp;退</a>\
-<a href="#" id="clear-button" data-i18n-text="mark.clear">全部清除</a></p></div>';
+	<a href="#" value="___" ><u data-i18n-text="mark.special.underline">下划线</u></a></p>\
+<p><a href="#" id="undo-button" style="margin-left: 20px;" data-i18n-text="mark.special.back">回&nbsp;&nbsp;&nbsp;退</a>\
+<a href="#" id="clear-button" data-i18n-text="mark.special.clear">全部清除</a></p></div>';
 
 SpecialTag.prototype.control_dom = '<h3 class="popover-title" data-i18n-text="mark.special.tag">特殊标记</h3>\
 <div class="popover-content"><p id="problem-list" class="popover-list">\
-<a href="#" id="show-SpecialTag-button" data-i18n-text="mark.open">打开</a><a href="#" id="hide-SpecialTag-button" data-i18n-text="mark.close">关闭</a>\
+<a href="#" id="show-SpecialTag-button" data-i18n-text="mark.special.open">打开</a><a href="#" id="hide-SpecialTag-button" data-i18n-text="mark.special.close">关闭</a>\
 </p></div>';

+ 1 - 1
stmms-web/src/main/webapp/static/mark-new/js/modules/thumbnail.js

@@ -136,5 +136,5 @@ Thumbnail.prototype.container_content_dom = '<div class="content" style="padding
 
 Thumbnail.prototype.control_dom = '<h3 class="popover-title" data-i18n-text="mark.thumbnail">缩略图</h3>\
 <div class="popover-content"><p id="problem-list" class="popover-list">\
-<a href="#" id="show-thumbnail-button" data-i18n-text="mark.open">打开</a><a href="#" id="hide-thumbnail-button" data-i18n-text="mark.close">关闭</a>\
+<a href="#" id="show-thumbnail-button" data-i18n-text="mark.thumbnail.open">打开</a><a href="#" id="hide-thumbnail-button" data-i18n-text="mark.thumbnail.close">关闭</a>\
 </p></div>';

+ 9 - 9
stmms-web/src/main/webapp/static/mark-new/js/modules/warning-info.js

@@ -15,7 +15,7 @@ function WarningInfo(option) {
         this.toggle(false);
     });
     this.markControl.on('task.get.none', this, function(event, context, message) {
-        this.toggle(true, message != undefined ? message : $.i18n.prop("mark.task.loading"), '', function() {
+        this.toggle(true, message != undefined ? message : getMessage("mark.warning.task.loading"), '', function() {
             self.markControl.getTask();
         });
         if (context.status != undefined && context.status.totalCount == 0) {
@@ -23,7 +23,7 @@ function WarningInfo(option) {
         }
     });
     this.markControl.on('task.get.finish', this, function(event, context, message) {
-        this.toggle(true, option.finishMessage != undefined ? option.finishMessage : $.i18n.prop("mark.task.finish"));
+        this.toggle(true, option.finishMessage != undefined ? option.finishMessage : getMessage("mark.warning.task.finish"));
         if (option.finishButtonUrl != undefined) {
             this.container.button.attr('href', option.finishButtonUrl);
             if (option.finishButtonText != undefined) {
@@ -35,7 +35,7 @@ function WarningInfo(option) {
         }
     });
     this.markControl.on('task.get.error', this, function(event, context, eventObject) {
-        this.toggle(true, option.errorMessage != undefined ? option.errorMessage : $.i18n.prop("mark.task.error"), '', function() {
+        this.toggle(true, option.errorMessage != undefined ? option.errorMessage : getMessage("mark.warning.task.error"), '', function() {
             self.markControl.getTask();
         });
     });
@@ -43,16 +43,16 @@ function WarningInfo(option) {
         //this.toggle(false);
     });
     this.markControl.on('task.submit.error', this, function(event, context, eventObject) {
-        this.toggle(true, eventObject || $.i18n.prop("mark.network.error"), $.i18n.prop("mark.close"));
+        this.toggle(true, eventObject || getMessage("mark.warning.network.error"), getMessage("mark.warning.close"));
     });
     this.markControl.on('task.submit.forceSpecialTag', this, function(event, context, eventObject) {
-        this.toggle(true, $.i18n.prop("mark.force.special.tag"), $.i18n.prop("mark.close"));
+        this.toggle(true, getMessage("mark.warning.force.special.tag"), getMessage("mark.warning.close"));
     });
     this.markControl.on('history.submit.success', this, function(event, context, task) {
     	if(task.problem==true){
-    		this.toggle(true,$.i18n.prop("mark.history.problem") ,$.i18n.prop("mark.close"));
+    		this.toggle(true,getMessage("mark.warning.problem") ,getMessage("mark.warning.close"));
     	}else if(task.previous==true){
-    		this.toggle(true, $.i18n.prop("mark.history.success") +task.totalScore, $.i18n.prop("mark.close"));
+    		this.toggle(true, getMessage("mark.warning.success") +task.totalScore, getMessage("mark.warning.close"));
     	}
     });
 }
@@ -75,7 +75,7 @@ WarningInfo.prototype.toggle = function(enable, message, buttonText, callback) {
         if (buttonText != undefined && buttonText != '') {
             this.container.button.html(buttonText);
         } else {
-            this.container.button.html($.i18n.prop("mark.try.again"));
+            this.container.button.html(getMessage("mark.warning.try.again"));
         }
 
         this.container.button.unbind();
@@ -95,4 +95,4 @@ WarningInfo.prototype.toggle = function(enable, message, buttonText, callback) {
 }
 
 WarningInfo.prototype.container_dom = '<div class="warning-popover"><p></p>\
-<a href="#" class="btn btn-large btn-primary text-c" data-i18n-text="mark.try.again">请点击重试</a></div>';
+<a href="#" class="btn btn-large btn-primary text-c" data-i18n-text="mark.warning.try.again">请点击重试</a></div>';

+ 24 - 12
stmms-web/src/main/webapp/static/mark-track/js/mark-control.js

@@ -656,17 +656,17 @@ MarkControl.prototype.sidebar_dom = '<div class="mark-sidebar span2 hide"></div>
 MarkControl.prototype.center_dom = '<div class="center-content span12"></div>';
 
 MarkControl.prototype.center_header_dom = '<div class="row-fluid"><div class="header"><p class="tips">\
-<em><a href="##" class="btn" id="switch-common-button" style="display:none" data-i18n-text="mark.mode.common">切换到普通模式</a>\
-<a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.assistant"> 小助手</span></a></em>\
+<em><a href="##" class="btn" id="switch-common-button" style="display:none" data-i18n-text="mark.control.mode.common">切换到普通模式</a>\
+<a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.control.assistant"> 小助手</span></a></em>\
 <a class="useinfo" href="#"><i class="icon-user icon-white"></i><i id="mark-user-name"></i></a>\
-<a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="user.logout">退出</i></a>\
+<a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="mark.control.logout">退出</i></a>\
 </p></div></div>';
 
 MarkControl.prototype.center_content_dom = '<div class="row-fluid"><div class="image-content span9"><nav></nav></div></div>';
 
 MarkControl.prototype.assistant_dom = '<div class="popover bottom assistant"><div class="arrow"></div></div>';
 
-MarkControl.prototype.mark_function_dom = '<h3 class="popover-title" data-i18n-text="mark.function">评卷功能</h3>\
+MarkControl.prototype.mark_function_dom = '<h3 class="popover-title" data-i18n-text="mark.control.function">评卷功能</h3>\
 <div class="popover-content"><p id="function-list" class="popover-list">\
 </p></div>';
 
@@ -712,14 +712,26 @@ function getDom(content, markControl) {
         content = content.replace(/{logoutUrl}/g, markControl.option.logoutUrl);
     }
     var result = $(content);
-    result.find("[data-i18n-value]").each(function() {
-		$(this).val($.i18n.prop($(this).data("i18n-value")));
-	});
-    result.find("[data-i18n-text]").each(function() {
-		$(this).text($.i18n.prop($(this).data("i18n-text")));
-	});
-    result.find("[data-i18n-placeholder]").each(function() {
-		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+    result.each(function() {
+    	if($(this).data("i18n-value")!=undefined){
+    		$(this).val($.i18n.prop($(this).data("i18n-value")));
+    	}
+		if($(this).data("i18n-text")!=undefined){
+			$(this).text($.i18n.prop($(this).data("i18n-text")));
+		    	}
+		if($(this).data("i18n-placeholder")!=undefined){
+			$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+		}
+    	
+    	$(this).find("[data-i18n-value]").each(function() {
+    		$(this).val($.i18n.prop($(this).data("i18n-value")));
+    	});
+    	$(this).find("[data-i18n-text]").each(function() {
+    		$(this).text($.i18n.prop($(this).data("i18n-text")));
+    	});
+    	$(this).find("[data-i18n-placeholder]").each(function() {
+    		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+    	});
 	});
     return result;
 }

+ 10 - 10
stmms-web/src/main/webapp/static/mark-track/js/modules/mark-board.js

@@ -435,7 +435,7 @@ MarkBoard.prototype.updateTotalScore = function() {
 }
 
 MarkBoard.prototype.allZeroSubmit = function() {
-    if (this.task != undefined && this.stepList != undefined && this.stepList.length > 0 && confirm('确认要提交全零分吗?')) {
+    if (this.task != undefined && this.stepList != undefined && this.stepList.length > 0 && confirm(getMessage("mark.board.zero.confirm"))) {
         for (var i = 0; i < this.stepList.length; i++) {
             this.stepList[i].markFinish = true;
             this.stepList[i].markScore = 0;
@@ -478,9 +478,9 @@ MarkBoard.prototype.onTaskSubmit = function() {
         }
     }
     if (!finish) {
-        alert('当前任务还有未给分的题,请继续给分');
-    } else if (!this.needConfirm || confirm('总分为' + totalScore + ', 确认要提交吗?')) {
-        this.task.totalScore = totalScore;
+        alert(getMessage("mark.board.question.not.mark"));
+    } else if (!this.needConfirm || confirm(getMessage("mark.board.total.score") + totalScore + getMessage("mark.board.confirm") )) {
+        this.task.totalScore = totalScore;"mark.board.total.score"
         this.task.scoreList = scoreList.join(',');
         this.task.trackList = trackList;
         this.markControl.submitTask();
@@ -492,16 +492,16 @@ MarkBoard.prototype.onFocusChange = function() {
 }
 
 MarkBoard.prototype.step_board_dom = '<div class="span3 mark-steps"><div class="step-board">\
-    <div class="sublist"><p class="fraction"><span data-i18n-text="mark.total.score">总分</span> <i id="total-score">5</i></p></div>\
+    <div class="sublist"><p class="fraction"><span data-i18n-text="mark.board.total.score">总分</span> <i id="total-score">5</i></p></div>\
 <div class="button">\
-<input type="submit" value="全零分" class="btn1 all-zero-button" data-i18n-value="mark.score.zero"/>\
-<input type="submit" value="提&nbsp;交" class="btn2 task-submit-button" data-i18n-value="mark.submit"/></div>\
+<input type="submit" value="全零分" class="btn1 all-zero-button" data-i18n-value="mark.board.score.zero"/>\
+<input type="submit" value="提&nbsp;交" class="btn2 task-submit-button" data-i18n-value="mark.board.submit"/></div>\
 <div class="step-list"><div class="number"><ul></ul></div></div>\
 <div class="score_board"><div class="score"><ul></ul></div></div>\
 <div class="clear_button">\
-<input type="submit" value="回退" class="btn1 undo-last-track-button" data-i18n-value="mark.back"/>\
-<input type="submit" value="清除本题" class="btn1 clear-current-track-button" data-i18n-value="mark.clear.question"/>\
-<!--<input type="submit" value="清除全卷" class="btn1 clear-all-track-button" data-i18n-value="mark.clear"/></div>-->\
+<input type="submit" value="回退" class="btn1 undo-last-track-button" data-i18n-value="mark.board.back"/>\
+<input type="submit" value="清除本题" class="btn1 clear-current-track-button" data-i18n-value="mark.board.clear.question"/>\
+<!--<input type="submit" value="清除全卷" class="btn1 clear-all-track-button" data-i18n-value="mark.board.clear"/></div>-->\
 </div></div>';
 
 MarkBoard.prototype.step_dom = '<li><a href="#"><p></p><h2></h2></a></li>';

+ 1 - 1
stmms-web/src/main/webapp/static/mark-track/js/modules/sheet-view.js

@@ -37,7 +37,7 @@ SheetView.prototype.render = function(urls) {
 				var content = $(this.container_dom).appendTo(this.markControl.container.centerContent);
 				this.renderContent(content, url,i);
 				this.list.push({
-				    nav: this.markControl.addNavGroup($.i18n.prop("mark.sheet") + (i + 1), content),
+				    nav: this.markControl.addNavGroup(getMessage("mark.sheet") + (i + 1), content),
 				    content: content
 				});
 			} 

+ 4 - 4
stmms-web/src/main/webapp/static/mark-track/js/modules/single-image-view.js

@@ -50,7 +50,7 @@ SingleImageView.prototype.init = function() {
     //this.container.perfectScrollbar({
     //    wheelSpeed: 20
     //});
-    this.markControl.addNavGroup($.i18n.prop("mark.student.answer"), this.container);
+    this.markControl.addNavGroup(getMessage("mark.single.student.answer"), this.container);
 
     this.canvas = this.container.find('canvas')[0];
     this.ctx = this.canvas.getContext("2d");
@@ -136,7 +136,7 @@ SingleImageView.prototype.drawTag = function(tag) {
 SingleImageView.prototype.container_dom = '<div style="overflow: scroll; width: 100%"><canvas></canvas></div>';
 
 SingleImageView.prototype.image_control_dom = '<em>\
-<a href="#" class="btn zoom-in-button" data-i18n-text="mark.zoom.in">放大</a>\
-<a href="#" class="btn zoom-out-button" data-i18n-text="mark.zoom.out">缩小</a>\
-<a href="#" class="btn zoom-fit-button" data-i18n-text="mark.zoom.fit">适应</a>\
+<a href="#" class="btn zoom-in-button" data-i18n-text="mark.single.zoom.in">放大</a>\
+<a href="#" class="btn zoom-out-button" data-i18n-text="mark.single.zoom.out">缩小</a>\
+<a href="#" class="btn zoom-fit-button" data-i18n-text="mark.single.zoom.fit">适应</a>\
 </em>';