Skip to content

Commit 665f9de

Browse files
authored
Merge pull request #333 from Worklenz/feat/i18n/ko-missing-translation
Feat/i18n/ko missing translation
2 parents 1401af3 + a9b0281 commit 665f9de

151 files changed

Lines changed: 3832 additions & 43 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
<a href="https://github.com/Worklenz/worklenz/issues">
2323
<img src="https://img.shields.io/github/issues/Worklenz/worklenz" alt="Issues">
2424
</a>
25+
<a href="https://discord.gg/AVbkGXHA">
26+
<img src="https://img.shields.io/discord/1202616582757556276?style=flat&logo=discord&logoColor=white&label=Discord&color=5865F2" alt="Issues">
27+
</a>
2528
</p>
2629

2730
<p align="center">

docker-compose.yml

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -55,24 +55,9 @@ services:
5555
depends_on:
5656
- minio
5757
restart: on-failure
58-
entrypoint: >
59-
/bin/sh -c '
60-
echo "Waiting for MinIO to start...";
61-
sleep 15;
62-
for i in 1 2 3 4 5; do
63-
echo "Attempt $i to connect to MinIO...";
64-
if /usr/bin/mc alias set myminio http://minio:9000 minioadmin minioadmin; then
65-
echo "Successfully connected to MinIO!";
66-
/usr/bin/mc mb --ignore-existing myminio/worklenz-bucket;
67-
/usr/bin/mc policy set public myminio/worklenz-bucket;
68-
exit 0;
69-
fi
70-
echo "Connection failed, retrying in 5 seconds...";
71-
sleep 5;
72-
done;
73-
echo "Failed to connect to MinIO after 5 attempts";
74-
exit 1;
75-
'
58+
entrypoint: ["/bin/sh", "/scripts/createbuckets-entrypoint.sh"]
59+
volumes:
60+
- ./docker/createbuckets-entrypoint.sh:/scripts/createbuckets-entrypoint.sh:ro
7661
networks:
7762
- worklenz
7863
db:
@@ -91,11 +76,13 @@ services:
9176
interval: 10s
9277
timeout: 5s
9378
retries: 5
79+
start_period: 30s
9480
restart: unless-stopped
9581
networks:
9682
- worklenz
9783
volumes:
9884
- worklenz_postgres_data:/var/lib/postgresql/data
85+
- ./docker/db-init-wrapper.sh:/usr/local/bin/db-init-wrapper.sh:ro
9986
- type: bind
10087
source: ./worklenz-backend/database/sql
10188
target: /docker-entrypoint-initdb.d/sql
@@ -111,23 +98,7 @@ services:
11198
- type: bind
11299
source: ./pg_backups
113100
target: /docker-entrypoint-initdb.d/pg_backups
114-
command: >
115-
bash -c '
116-
if command -v apt-get >/dev/null 2>&1; then
117-
apt-get update && apt-get install -y dos2unix
118-
elif command -v apk >/dev/null 2>&1; then
119-
apk add --no-cache dos2unix
120-
fi
121-
122-
find /docker-entrypoint-initdb.d -type f -name "*.sh" -exec sh -c '"'"'
123-
for f; do
124-
dos2unix "$f" 2>/dev/null || true
125-
chmod +x "$f"
126-
done
127-
'"'"' sh {} +
128-
129-
exec docker-entrypoint.sh postgres
130-
'
101+
command: ["/usr/local/bin/db-init-wrapper.sh"]
131102
db-backup:
132103
image: postgres:15
133104
container_name: worklenz_db_backup

docker/createbuckets-entrypoint.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/sh
2+
set -e
3+
4+
echo "Waiting for MinIO to start..."
5+
sleep 15
6+
7+
for i in 1 2 3 4 5; do
8+
echo "Attempt $i to connect to MinIO..."
9+
if /usr/bin/mc alias set myminio http://minio:9000 minioadmin minioadmin; then
10+
echo "Successfully connected to MinIO!"
11+
/usr/bin/mc mb --ignore-existing myminio/worklenz-bucket
12+
/usr/bin/mc policy set public myminio/worklenz-bucket
13+
exit 0
14+
fi
15+
16+
echo "Connection failed, retrying in 5 seconds..."
17+
sleep 5
18+
done
19+
20+
echo "Failed to connect to MinIO after 5 attempts"
21+
exit 1
22+

docker/db-init-wrapper.sh

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/sh
2+
set -e
3+
4+
# Install dos2unix if possible
5+
if command -v apt-get >/dev/null 2>&1; then
6+
apt-get update && apt-get install -y dos2unix
7+
elif command -v apk >/dev/null 2>&1; then
8+
apk add --no-cache dos2unix
9+
fi
10+
11+
# Normalize and chmod all .sh files
12+
for f in /docker-entrypoint-initdb.d/*.sh; do
13+
if [ -f "$f" ]; then
14+
dos2unix "$f" 2>/dev/null || true
15+
chmod +x "$f"
16+
fi
17+
done
18+
19+
# hand control to the real entrypoint
20+
exec docker-entrypoint.sh postgres
21+

worklenz-backend/database/sql/1_tables.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ CREATE TYPE DEPENDENCY_TYPE AS ENUM ('blocked_by');
1212

1313
CREATE TYPE SCHEDULE_TYPE AS ENUM ('daily', 'weekly', 'yearly', 'monthly', 'every_x_days', 'every_x_weeks', 'every_x_months');
1414

15-
CREATE TYPE LANGUAGE_TYPE AS ENUM ('en', 'es', 'pt', 'alb', 'de', 'zh_cn');
15+
CREATE TYPE LANGUAGE_TYPE AS ENUM ('en', 'es', 'pt', 'alb', 'de', 'zh_cn', 'ko');
1616

1717
-- START: Users
1818
CREATE SEQUENCE IF NOT EXISTS users_user_no_seq START 1;
@@ -34,7 +34,7 @@ CREATE TABLE IF NOT EXISTS project_access_levels (
3434
ALTER TABLE project_access_levels
3535
ADD CONSTRAINT project_access_levels_pk
3636
PRIMARY KEY (id);
37-
37+
3838
CREATE TABLE IF NOT EXISTS countries (
3939
id UUID DEFAULT uuid_generate_v4() NOT NULL,
4040
code CHAR(2) NOT NULL,

worklenz-backend/src/controllers/task-comments-controller.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import WorklenzControllerBase from "./worklenz-controller-base";
77
import HandleExceptions from "../decorators/handle-exceptions";
88
import { NotificationsService } from "../services/notifications/notifications.service";
99
import { humanFileSize, log_error, megabytesToBytes } from "../shared/utils";
10-
import { HTML_TAG_REGEXP, S3_URL } from "../shared/constants";
10+
import { HTML_TAG_REGEXP, S3_URL, getStorageUrl } from "../shared/constants";
1111
import { getBaseUrl } from "../cron_jobs/helpers";
1212
import { ICommentEmailNotification } from "../interfaces/comment-email-notification";
1313
import { sendTaskComment } from "../shared/email-notifications";
@@ -382,7 +382,7 @@ export default class TaskCommentsController extends WorklenzControllerBase {
382382
}
383383

384384
private static async getTaskComments(taskId: string) {
385-
const url = `${S3_URL}/${getRootDir()}`;
385+
const url = `${getStorageUrl()}/${getRootDir()}`;
386386

387387
const q = `SELECT task_comments.id,
388388
tc.text_content AS content,
@@ -567,7 +567,7 @@ export default class TaskCommentsController extends WorklenzControllerBase {
567567

568568
const commentId = data.id;
569569

570-
const url = `${S3_URL}/${getRootDir()}`;
570+
const url = `${getStorageUrl()}/${getRootDir()}`;
571571

572572
for (const attachment of attachments) {
573573
if (req.user?.subscription_status === "free" && req.user?.owner_id) {
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"doesNotExistText": "죄송합니다. 방문한 페이지는 존재하지 않습니다.",
3+
"backHomeButton": "집으로 돌아와"
4+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"continue": "계속하다",
3+
"setupYourAccount": "Worklenz 계정을 설정하십시오.",
4+
"organizationStepTitle": "조직의 이름을 지정하십시오",
5+
"organizationStepLabel": "WorkLenz 계정의 이름을 선택하십시오.",
6+
"projectStepTitle": "첫 번째 프로젝트를 만듭니다",
7+
"projectStepLabel": "지금 어떤 프로젝트를 진행하고 있습니까?",
8+
"projectStepPlaceholder": "예를 들어 마케팅 계획",
9+
"tasksStepTitle": "첫 번째 작업을 만듭니다",
10+
"tasksStepLabel": "당신이 할 몇 가지 작업을 입력하십시오.",
11+
"tasksStepAddAnother": "다른 추가",
12+
"emailPlaceholder": "이메일 주소",
13+
"invalidEmail": "유효한 이메일 주소를 입력하십시오",
14+
"or": "또는",
15+
"templateButton": "템플릿에서 가져옵니다",
16+
"goBack": "돌아 가라",
17+
"cancel": "취소",
18+
"create": "만들다",
19+
"templateDrawerTitle": "템플릿에서 선택하십시오",
20+
"step3InputLabel": "이메일로 초대하십시오",
21+
"addAnother": "다른 추가",
22+
"skipForNow": "지금은 건너 뜁니다",
23+
"formTitle": "첫 번째 작업을 만듭니다.",
24+
"step3Title": "팀과 함께 일하도록 초대하십시오",
25+
"maxMembers": "(최대 5 명의 회원을 초대 할 수 있습니다)",
26+
"maxTasks": "(최대 5 개의 작업을 만들 수 있습니다)"
27+
}
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
{
2+
"title": "청구",
3+
"currentBill": "현재 청구서",
4+
"configuration": "구성",
5+
"currentPlanDetails": "현재 계획 세부 사항",
6+
"upgradePlan": "업그레이드 계획",
7+
"cardBodyText01": "무료 평가판",
8+
"cardBodyText02": "(시험 계획은 1 개월 19 일 안에 만료됩니다)",
9+
"redeemCode": "코드를 상환합니다",
10+
"accountStorage": "계정 저장",
11+
"used": "사용된:",
12+
"remaining": "나머지 :",
13+
"charges": "요금",
14+
"tooltip": "현재 청구주기에 대한 요금",
15+
"description": "설명",
16+
"billingPeriod": "청구 기간",
17+
"billStatus": "청구서 상태",
18+
"perUserValue": "사용자 값에 따라",
19+
"users": "사용자",
20+
"amount": "",
21+
"invoices": "송장",
22+
"transactionId": "거래 ID",
23+
"transactionDate": "거래 날짜",
24+
"paymentMethod": "지불 방법",
25+
"status": "상태",
26+
"ltdUsers": "{{ltd_users}} 사용자에 추가 할 수 있습니다.",
27+
"totalSeats": "총 좌석",
28+
"availableSeats": "사용 가능한 좌석",
29+
"addMoreSeats": "더 많은 좌석을 추가하십시오",
30+
"drawerTitle": "코드를 상환합니다",
31+
"label": "코드를 상환합니다",
32+
"drawerPlaceholder": "사용 코드를 입력하십시오",
33+
"redeemSubmit": "제출하다",
34+
"modalTitle": "팀에 가장 적합한 계획을 선택하십시오",
35+
"seatLabel": "좌석이 없습니다",
36+
"freePlan": "자유 계획",
37+
"startup": "스타트 업",
38+
"business": "사업",
39+
"tag": "가장 인기가 있습니다",
40+
"enterprise": "기업",
41+
"freeSubtitle": "영원히 무료",
42+
"freeUsers": "개인 용도에 가장 적합합니다",
43+
"freeText01": "100MB 스토리지",
44+
"freeText02": "3 프로젝트",
45+
"freeText03": "5 팀원",
46+
"startupSubtitle": "고정 요금 / 월",
47+
"startupUsers": "최대 15 명의 사용자",
48+
"startupText01": "25GB 스토리지",
49+
"startupText02": "무제한 활성 프로젝트",
50+
"startupText03": "일정",
51+
"startupText04": "보고",
52+
"startupText05": "프로젝트를 구독하십시오",
53+
"businessSubtitle": "사용자 / 월",
54+
"businessUsers": "16-200 명의 사용자",
55+
"enterpriseUsers": "200-500 명 이상의 사용자",
56+
"footerTitle": "연락하는 데 사용할 수있는 연락처를 제공하십시오.",
57+
"footerLabel": "연락처 번호",
58+
"footerButton": "저희에게 연락하십시오",
59+
"redeemCodePlaceHolder": "사용 코드를 입력하십시오",
60+
"submit": "제출하다",
61+
"trialPlan": "무료 평가판",
62+
"trialExpireDate": "{{vrient_expire_date}}까지 유효합니다.",
63+
"trialExpired": "무료 평가판 만료 {{vrient_expire_string}}",
64+
"trialInProgress": "무료 평가판은 {{vrient_expire_string}}가 만료됩니다.",
65+
"required": "이 필드가 필요합니다",
66+
"invalidCode": "잘못된 코드",
67+
"selectPlan": "팀에 가장 적합한 계획을 선택하십시오",
68+
"changeSubscriptionPlan": "구독 계획을 변경하십시오",
69+
"noOfSeats": "좌석 수",
70+
"annualPlan": "프로 - 연례",
71+
"monthlyPlan": "프로 - 월별",
72+
"freeForever": "영원히 무료",
73+
"bestForPersonalUse": "개인 용도에 가장 적합합니다",
74+
"storage": "저장",
75+
"projects": "프로젝트",
76+
"teamMembers": "팀원",
77+
"unlimitedTeamMembers": "무제한 팀원",
78+
"unlimitedActiveProjects": "무제한 활성 프로젝트",
79+
"schedule": "일정",
80+
"reporting": "보고",
81+
"subscribeToProjects": "프로젝트를 구독하십시오",
82+
"billedAnnually": "매년 청구됩니다",
83+
"billedMonthly": "매월 청구",
84+
"pausePlan": "일시 정지 계획",
85+
"resumePlan": "이력서 계획",
86+
"changePlan": "변경 계획",
87+
"cancelPlan": "계획을 취소하십시오",
88+
"perMonthPerUser": "사용자/월별",
89+
"viewInvoice": "송장을 봅니다",
90+
"switchToFreePlan": "무료 계획으로 전환하십시오",
91+
"expirestoday": "오늘",
92+
"expirestomorrow": "내일",
93+
"expiredDaysAgo": "{{days}} 며칠 전",
94+
"continueWith": "{{plan}} 계속 계속",
95+
"changeToPlan": "{{plan}}로 변경",
96+
"creditPlan": "신용 계획",
97+
"customPlan": "맞춤형 계획",
98+
"planValidTill": "귀하의 계획은 {{date}}까지 유효합니다.",
99+
"purchaseSeatsText": "계속하려면 추가 좌석을 구매해야합니다.",
100+
"currentSeatsText": "현재 {{seats}} 좌석이 있습니다.",
101+
"selectSeatsText": "구매할 추가 좌석 수를 선택하십시오.",
102+
"purchase": "구입",
103+
"contactSales": "연락 판매"
104+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"overview": "개요",
3+
"name": "조직 이름",
4+
"owner": "조직 소유자",
5+
"admins": "조직 관리자",
6+
"contactNumber": "연락처 번호를 추가하십시오",
7+
"edit": "편집하다"
8+
}

0 commit comments

Comments
 (0)