[Notice] Announcing the End of Demo Server [Read me]

apply localization code
@cbf98aee542751973c81f95389569f085274f2d6
--- app/utils/MenuType.java
+++ app/utils/MenuType.java
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
|
3 | 3 |
public enum MenuType { |
4 | 4 |
SITE_HOME(1), NEW_PROJECT(2), PROJECTS(3), HELP(4), SITE_SETTING(5), USER(6), |
5 |
- PROJECT_HOME(100), BOARD(101), CODE(102), ISSUE(103), TASK(104), PROJECT_SETTING(105), NONE(0); |
|
5 |
+ PROJECT_HOME(100), BOARD(101), CODE(102), ISSUE(103), TASK(104), PROJECT_SETTING(105), MILESTONE(106), NONE(0); |
|
6 | 6 |
|
7 | 7 |
private int type; |
8 | 8 |
|
--- app/views/help/toc.scala.html
+++ app/views/help/toc.scala.html
... | ... | @@ -7,7 +7,8 @@ |
7 | 7 |
<div class="inner"> |
8 | 8 |
<form action="/project/search" method="get"> |
9 | 9 |
<span class="labels">FAQ</span><!-- |
10 |
- --><input name="query" class="text" type="text" placeholder="현재 게시글에서 검색"><button type="submit" class="btn search-btn">SEARCH</button> |
|
10 |
+ --><input name="query" class="text" type="text"><!-- |
|
11 |
+ --><button type="submit" class="btn search-btn">@Messages("issue.search")</button> |
|
11 | 12 |
</form> |
12 | 13 |
</div> |
13 | 14 |
</div> |
--- app/views/issue/issueList.scala.html
+++ app/views/issue/issueList.scala.html
... | ... | @@ -40,16 +40,16 @@ |
40 | 40 |
} |
41 | 41 |
**@ |
42 | 42 |
|
43 |
-@main(Messages(title), project, utils.MenuType.ISSUE){ |
|
43 |
+@main(Messages(title) + " (" + project.name + ")", project, utils.MenuType.ISSUE){ |
|
44 | 44 |
<div class="page"> |
45 |
- @views.html.prjmenu(project, utils.MenuType.ISSUE, "main-menu-only") |
|
45 |
+ @prjmenu(project, utils.MenuType.ISSUE, "main-menu-only") |
|
46 | 46 |
|
47 | 47 |
<div class="header-wrap"> |
48 | 48 |
<div class="stats-wrap"> |
49 | 49 |
@for(state <- Array(State.ALL, State.OPEN, State.CLOSED)) { |
50 | 50 |
<div class="stat stat-issue @if(param.state == state.state) { active }"> |
51 | 51 |
<a href="@routes.IssueApp.issues(project.owner, project.name, state.state)"> |
52 |
- <span class="desc"><strong>@state.name</strong> issues</span><!-- |
|
52 |
+ <span class="desc"><strong>@Messages("issue.state." + state.name.toLowerCase())</strong> @Messages("issue.state.unit")</span><!-- |
|
53 | 53 |
--><span class="num @state.state">@Issue.countIssues(project.id, state)</span> |
54 | 54 |
</a> |
55 | 55 |
</div> |
... | ... | @@ -132,7 +132,7 @@ |
132 | 132 |
--><span class="date">@agoString(issue.ago)</span></p> |
133 | 133 |
</div> |
134 | 134 |
<div class="right-panel"> |
135 |
- <div class="state @issue.state.toString.toLowerCase">@Messages(issue.state.state)</div> |
|
135 |
+ <div class="state @issue.state.toString.toLowerCase">@Messages("issue.state." + issue.state.toString.toLowerCase)</div> |
|
136 | 136 |
<div class="comment-wrap"> |
137 | 137 |
<i class="ico ico-comment-bubble"></i><span class="num">@issue.comments.size()</span> |
138 | 138 |
</div> |
--- app/views/milestone/create.scala.html
+++ app/views/milestone/create.scala.html
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 |
@import utils.TemplateHelper._ |
4 | 4 |
@import models.enumeration._ |
5 | 5 |
@project.projectMngMain(title, projectInst) { |
6 |
- @prjmenu(projectInst, utils.MenuType.PROJECT_HOME, "") |
|
6 |
+ @prjmenu(projectInst, utils.MenuType.MILESTONE, "") |
|
7 | 7 |
|
8 | 8 |
<div class="form-wrap milestone frm-wrap"> |
9 | 9 |
<form class="nm" action="@routes.MilestoneApp.newMilestone(projectInst.owner, projectInst.name)" method="post"> |
--- app/views/milestone/edit.scala.html
+++ app/views/milestone/edit.scala.html
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 |
|
7 | 7 |
@project.projectMngMain(title, projectInst) { |
8 | 8 |
|
9 |
-@prjmenu(projectInst, utils.MenuType.PROJECT_HOME, "") |
|
9 |
+@prjmenu(projectInst, utils.MenuType.MILESTONE, "") |
|
10 | 10 |
|
11 | 11 |
<div class="form-wrap milestone frm-wrap"> |
12 | 12 |
<form class="nm" action="@routes.MilestoneApp.editMilestone(projectInst.owner, projectInst.name, milestoneId)" method="post"> |
--- app/views/milestone/list.scala.html
+++ app/views/milestone/list.scala.html
... | ... | @@ -38,7 +38,7 @@ |
38 | 38 |
} |
39 | 39 |
|
40 | 40 |
@project.projectMngMain(title, projectInst) { |
41 |
- @prjmenu(projectInst, utils.MenuType.PROJECT_HOME, "") |
|
41 |
+ @prjmenu(projectInst, utils.MenuType.MILESTONE, "") |
|
42 | 42 |
|
43 | 43 |
<div class="tab-wrap"> |
44 | 44 |
<div class="pull-right btns"> |
... | ... | @@ -61,8 +61,8 @@ |
61 | 61 |
|
62 | 62 |
<div class="filter-wrap milestone"> |
63 | 63 |
<div class="filters"> |
64 |
- <a href="@makeSortLink("dueDate")" class="filter"><i class="ico ico-sort @sortMark("dueDate")"></i>완료일순</a> |
|
65 |
- <a href="@makeSortLink("completionRate")" class="filter active"><i class="ico ico-sort @sortMark("completionRate")"></i>완료율순</a> |
|
64 |
+ <a href="@makeSortLink("dueDate")" class="filter"><i class="ico ico-sort @sortMark("dueDate")"></i>@Messages("order.dueDate")</a> |
|
65 |
+ <a href="@makeSortLink("completionRate")" class="filter active"><i class="ico ico-sort @sortMark("completionRate")"></i>@Messages("order.completionRate")</a> |
|
66 | 66 |
</div> |
67 | 67 |
<div class="legend"> |
68 | 68 |
<i class="orange"></i>완료 |
--- app/views/milestone/manage.scala.html
+++ app/views/milestone/manage.scala.html
... | ... | @@ -27,7 +27,7 @@ |
27 | 27 |
} |
28 | 28 |
|
29 | 29 |
@project.projectMngMain(message, projectInst) { |
30 |
- @prjmenu(projectInst, utils.MenuType.PROJECT_HOME, "") |
|
30 |
+ @prjmenu(projectInst, utils.MenuType.MILESTONE, "") |
|
31 | 31 |
|
32 | 32 |
@if(milestones == null || milestones.isEmpty()){ |
33 | 33 |
|
--- app/views/project/projectHome.scala.html
+++ app/views/project/projectHome.scala.html
... | ... | @@ -1,74 +1,80 @@ |
1 |
-@(message: String, project: Project) |
|
2 |
- |
|
3 |
-@main(message, project, utils.MenuType.PROJECT_HOME) { |
|
4 |
-<div class="page"> |
|
5 |
- @prjmenu(project, utils.MenuType.PROJECT_HOME, "") |
|
6 |
- |
|
7 |
- <div class="bubble-wrap dark-gray project-home"> |
|
8 |
- <div class="inner logo"> |
|
9 |
- <div class="logo-wrap"> |
|
1 |
+@(message: String, project: Project) |
|
2 |
+ |
|
3 |
+@main(message, project, utils.MenuType.PROJECT_HOME) { |
|
4 |
+<div class="page"> |
|
5 |
+ @prjmenu(project, utils.MenuType.PROJECT_HOME, "") |
|
6 |
+ |
|
7 |
+ <div class="bubble-wrap dark-gray project-home"> |
|
8 |
+ <div class="inner logo"> |
|
9 |
+ <div class="logo-wrap"> |
|
10 | 10 |
<img src="@defining(Attachment.findByContainer(project.asResource)) @{ files => |
11 | 11 |
if (files.size > 0) "/files/" + files.head.id |
12 | 12 |
else routes.Assets.at("images/bg-default-project.jpg")}"/> |
13 |
- </div> |
|
14 |
- </div> |
|
15 |
- <div class="inner project-info"> |
|
16 |
- <header> |
|
17 |
- <h3>프로젝트 정보</h3> |
|
18 |
- <!--<div class="project-status"> |
|
19 |
- <i class="ico ico-like"></i> |
|
20 |
- <span class="num">100</span> |
|
21 |
- <span class="sp">|</span> |
|
22 |
- <i class="ico ico-activity high"></i> |
|
23 |
- </div>--> |
|
24 |
- </header> |
|
25 |
- <ul class="infos"> |
|
26 |
- <li class="info"> |
|
27 |
- <strong>라이센스 :</strong> GPL v2 |
|
28 |
- </li> |
|
29 |
- <li class="info"> |
|
13 |
+ </div> |
|
14 |
+ </div> |
|
15 |
+ <div class="inner project-info"> |
|
16 |
+ <header> |
|
17 |
+ <h3>@Messages("project.info")</h3> |
|
18 |
+ <!--<div class="project-status"> |
|
19 |
+ <i class="ico ico-like"></i> |
|
20 |
+ <span class="num">100</span> |
|
21 |
+ <span class="sp">|</span> |
|
22 |
+ <i class="ico ico-activity high"></i> |
|
23 |
+ </div>--> |
|
24 |
+ </header> |
|
25 |
+ <ul class="infos"> |
|
26 |
+ <li class="info"> |
|
27 |
+ <strong>@Messages("project.license") :</strong> GPL v2 |
|
28 |
+ </li> |
|
29 |
+ <li class="info"> |
|
30 | 30 |
<strong>@Messages("project.tags") :</strong> |
31 | 31 |
@for(tag <- project.tags) { |
32 |
- <span class='label label-info'>@tag.name</span> |
|
32 |
+ <span class="label">@tag.name</span> |
|
33 | 33 |
} |
34 |
- </li> |
|
35 |
- <li class="info"> |
|
36 |
- <strong>프로그래밍 언어 :</strong> PHP, Python, Java |
|
37 |
- </li> |
|
38 |
- <li class="info"> |
|
39 |
- <strong>코드관리 :</strong> @project.vcs |
|
40 |
- </li> |
|
41 |
- </ul> |
|
42 |
- </div> |
|
43 |
- <div class="inner member-info"> |
|
44 |
- <header> |
|
45 |
- <h3>개발자 정보</h3> |
|
46 |
- </header> |
|
47 |
- <div class="member-wrap"> |
|
48 |
- <ul class="project-members"> |
|
49 |
- @for(member <- User.findUsersByProject(project.id)){ |
|
50 |
- <li class="member"> |
|
51 |
- <a href="@routes.UserApp.userInfo(member.loginId)"> |
|
52 |
- <img src="@member.avatarUrl" alt="@member.loginId" class="user-thumb"></a> |
|
53 |
- <a href="@routes.UserApp.userInfo(member.loginId)"><strong>@member.loginId</strong></a> |
|
54 |
- </li> |
|
55 |
- } |
|
56 |
- </ul> |
|
57 |
- </div> |
|
58 |
- </div> |
|
59 |
- </div> |
|
60 |
- <div class="bubble-wrap dark-gray readme"> |
|
61 |
- @if(project.readme == null) { |
|
62 |
- @Messages("project.readme") |
|
63 |
- } else { |
|
64 |
- <div class="readme-wrap"> |
|
65 |
- <header><i class="ico ico-readme-book"></i><strong>README.md</strong></header> |
|
66 |
- <div class="readme-body" markdown="true"> |
|
67 |
- @project.readme |
|
68 |
- </div> |
|
69 |
- </div> |
|
70 |
- } |
|
71 |
- @markdown() |
|
72 |
- </div> |
|
73 |
-</div> |
|
74 |
-} |
|
34 |
+ </li> |
|
35 |
+ <li class="info"> |
|
36 |
+ <strong>@Messages("project.codeLanguage") :</strong> Java, JavaScript |
|
37 |
+ </li> |
|
38 |
+ <li class="info"> |
|
39 |
+ <strong>@Messages("project.vcs") :</strong> @project.vcs |
|
40 |
+ </li> |
|
41 |
+ </ul> |
|
42 |
+ </div> |
|
43 |
+ <div class="inner member-info"> |
|
44 |
+ <header> |
|
45 |
+ <h3>@Messages("project.members")</h3> |
|
46 |
+ </header> |
|
47 |
+ <div class="member-wrap"> |
|
48 |
+ <ul class="project-members"> |
|
49 |
+ @for(member <- User.findUsersByProject(project.id)){ |
|
50 |
+ <li class="member"> |
|
51 |
+ <a href="@routes.UserApp.userInfo(member.loginId)" class="avatar-wrap img-rounded pull-left small"> |
|
52 |
+ <img src="@member.avatarUrl" alt="@member.loginId" width="24" height="24"> |
|
53 |
+ </a> |
|
54 |
+ <a href="@routes.UserApp.userInfo(member.loginId)" class="name"> |
|
55 |
+ <strong>@member.loginId (@member.name)</strong> |
|
56 |
+ </a> |
|
57 |
+ </li> |
|
58 |
+ } |
|
59 |
+ </ul> |
|
60 |
+ </div> |
|
61 |
+ </div> |
|
62 |
+ </div> |
|
63 |
+ |
|
64 |
+ <div class="bubble-wrap dark-gray readme"> |
|
65 |
+ @if(project.readme == null) { |
|
66 |
+ <p class="default"> |
|
67 |
+ @Messages("project.readme") |
|
68 |
+ </p> |
|
69 |
+ } else { |
|
70 |
+ <div class="readme-wrap"> |
|
71 |
+ <header><i class="ico ico-readme-book"></i><strong>README.md</strong></header> |
|
72 |
+ <div class="readme-body" markdown="true"> |
|
73 |
+ @project.readme |
|
74 |
+ </div> |
|
75 |
+ </div> |
|
76 |
+ } |
|
77 |
+ @markdown() |
|
78 |
+ </div> |
|
79 |
+</div> |
|
80 |
+} |
--- conf/messages.en
+++ conf/messages.en
... | ... | @@ -103,9 +103,10 @@ |
103 | 103 |
milestone.title.duplicated = Title is duplicated. |
104 | 104 |
|
105 | 105 |
#Issue |
106 |
-issue.stateType.all = All |
|
107 |
-issue.stateType.open = Open |
|
108 |
-issue.stateType.closed = Closed |
|
106 |
+issue.state.unit = issues |
|
107 |
+issue.state.all = All |
|
108 |
+issue.state.open = Open |
|
109 |
+issue.state.closed = Closed |
|
109 | 110 |
issue.state.assigned = Assigned |
110 | 111 |
issue.state.enrolled = Enrolled |
111 | 112 |
issue.state.solved = Solved |
... | ... | @@ -251,6 +252,7 @@ |
251 | 252 |
project.searchPlaceholder = search at current project |
252 | 253 |
project.wrongName = Project name is wrong |
253 | 254 |
project.tags = Tags |
255 |
+project.license = License |
|
254 | 256 |
|
255 | 257 |
#Site |
256 | 258 |
site.sidebar = Site Management |
... | ... | @@ -286,6 +288,12 @@ |
286 | 288 |
user.signupId = ID (lower case) |
287 | 289 |
user.signupBtn = Sign Up |
288 | 290 |
|
291 |
+#Role |
|
292 |
+role.manager = Manager |
|
293 |
+role.member = Member |
|
294 |
+role.guest = Guest |
|
295 |
+role.siteManager = Site Manager |
|
296 |
+ |
|
289 | 297 |
#Time |
290 | 298 |
time.just = just now |
291 | 299 |
time.second = {0} second ago |
--- conf/messages.ko
+++ conf/messages.ko
... | ... | @@ -63,6 +63,8 @@ |
63 | 63 |
order.date = 날짜순 |
64 | 64 |
order.state = 상태순 |
65 | 65 |
order.comments = 댓글순 |
66 |
+order.completionRate = 완료율순 |
|
67 |
+order.dueDate = 완료일순 |
|
66 | 68 |
|
67 | 69 |
button.save = 저장 |
68 | 70 |
button.confirm = 확인 |
... | ... | @@ -105,10 +107,15 @@ |
105 | 107 |
milestone.title.duplicated = 마일스톤 제목이 다른것과 중복 됩니다. 다른 제목을 사용하세요. |
106 | 108 |
|
107 | 109 |
#Issue |
110 |
+issue.state.unit = 이슈 |
|
108 | 111 |
issue.state = 상태 |
109 | 112 |
issue.state.all = 전체 |
110 | 113 |
issue.state.open = 미해결 |
111 | 114 |
issue.state.closed = 해결 |
115 |
+issue.state.assigned = 할당됨 |
|
116 |
+issue.state.enrolled = 등록 |
|
117 |
+issue.state.solved = 해결됨 |
|
118 |
+issue.state.finished = 완료됨 |
|
112 | 119 |
issue.is.empty = 등록된 이슈가 없습니다. |
113 | 120 |
issue.menu.searchDefault = 이슈 검색 |
114 | 121 |
issue.menu.milestoneSelectDefault = 마일스톤 선택 |
... | ... | @@ -215,7 +222,7 @@ |
215 | 222 |
project.agreement = 이용 약관 |
216 | 223 |
project.name.rule = 이름 규칙 |
217 | 224 |
project.info = 프로젝트 정보 |
218 |
-project.members = 프로젝트 인원 |
|
225 |
+project.members = 개발자 |
|
219 | 226 |
project.members.addMember = 새로운 멤버의 아이디를 입력하세요 |
220 | 227 |
project.member.isManager = 프로젝트 관리자 권한이 필요합니다 |
221 | 228 |
project.member.alreadyMember = 이미 프로젝트에 가입되어 있는 멤버입니다. |
... | ... | @@ -249,7 +256,9 @@ |
249 | 256 |
project.readme = 프로젝트에 대한 설명을 README.md 파일로 작성해서 코드저장소에 추가하면 이 곳에 나타납니다. |
250 | 257 |
project.searchPlaceholder = 현재 프로젝트에서 검색 |
251 | 258 |
project.wrongName = 프로젝트 이름이 올바르지 않습니다. |
252 |
-project.tags = 태그 |
|
259 |
+project.tags = 태그 |
|
260 |
+project.license = 라이센스 |
|
261 |
+project.codeLanguage = 프로그래밍 언어 |
|
253 | 262 |
|
254 | 263 |
#Site |
255 | 264 |
site.sidebar = 사이트 관리 |
... | ... | @@ -285,6 +294,12 @@ |
285 | 294 |
user.signupId = 아이디 |
286 | 295 |
user.signupBtn = 참여하기 |
287 | 296 |
|
297 |
+#Role |
|
298 |
+role.manager = 관리자 |
|
299 |
+role.member = 참여자 |
|
300 |
+role.guest = 지나가던 사람 |
|
301 |
+role.siteManager = 사이트 관리자 |
|
302 |
+ |
|
288 | 303 |
#Time |
289 | 304 |
time.just = 방금 전 |
290 | 305 |
time.second = {0} 초 전 |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?