Skip to content

Commit 674f2e3

Browse files
authored
Merge pull request #3609 from Hong-Seungmin/feat/i18n-korean-support
feat: add Korean localization support
2 parents fd9cb04 + 711a549 commit 674f2e3

File tree

3 files changed

+267
-0
lines changed

3 files changed

+267
-0
lines changed

i18next-parser.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ module.exports = {
66
'be',
77
'de',
88
'en',
9+
'ko',
910
'ru',
1011
'uk',
1112
'zh_cn',

src/i18n/i18n.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import i18next from 'i18next';
22
import be from './locales/be.json';
33
import de from './locales/de.json';
44
import en from './locales/en.json';
5+
import ko from './locales/ko.json';
56
import ru from './locales/ru.json';
67
import uk from './locales/uk.json';
78
import zh_cn from './locales/zh_cn.json';
@@ -29,6 +30,7 @@ export const initializeI18n = async () => {
2930
be: { translation: be }, // Belarusian
3031
de: { translation: de }, // German
3132
en: { translation: en }, // English
33+
ko: { translation: ko }, // Korean
3234
ru: { translation: ru }, // Russian
3335
uk: { translation: uk }, // Ukrainian
3436
zh: { translation: zh_cn }, // Chinese (Simplified)

src/i18n/locales/ko.json

Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
{
2+
"main": {
3+
"loadingPlugin": "플러그인 로드 중: {{name}} v{{version}}",
4+
"unloadingPlugin": "플러그인 언로드 중: {{name}} v{{version}}"
5+
},
6+
"modals": {
7+
"customStatusModal": {
8+
"editAvailableAsCommand": {
9+
"description": "활성화하면 이 상태를 명령어(command)로 사용할 수 있어 단축키를 지정하고 상태를 전환할 수 있습니다.",
10+
"name": "명령어로 사용"
11+
},
12+
"editNextStatusSymbol": {
13+
"description": "클릭 시 다음에 사용할 기호입니다.",
14+
"name": "다음 상태 기호"
15+
},
16+
"editStatusName": {
17+
"description": "작업 상태를 알아보기 쉽게 표현하는 이름입니다.",
18+
"name": "상태 이름"
19+
},
20+
"editStatusSymbol": {
21+
"description": "대괄호 '[]' 사이에 들어가는 문자입니다. (코어 상태가 아닌 사용자 정의 상태만 편집할 수 있습니다.)",
22+
"name": "상태 기호"
23+
},
24+
"editStatusType": {
25+
"description": "검색 및 상태 전환 시 어떻게 동작할지 제어합니다.",
26+
"name": "상태 유형"
27+
},
28+
"fixErrorsBeforeSaving": "저장하기 전에 오류를 수정하세요."
29+
}
30+
},
31+
"reports": {
32+
"statusRegistry": {
33+
"about": {
34+
"createdBy": "이 파일은 이 보관소(vault)의 작업 상태를 시각화하는 데 도움을 주기 위해 Obsidian Tasks 플러그인(버전 {{version}})이 생성했습니다.",
35+
"deleteFileAnyTime": "이 파일은 언제든지 삭제할 수 있습니다.",
36+
"title": "이 파일에 대하여",
37+
"updateReport": {
38+
"line1": "Tasks 상태 설정을 변경했다면, 다음 방법으로 보고서를 업데이트할 수 있습니다:",
39+
"line2": "`설정(Settings)` → `Tasks`로 이동합니다.",
40+
"line3": "`상태 검토 및 확인(Review and check your Statuses)`을 클릭합니다."
41+
}
42+
},
43+
"columnHeadings": {
44+
"nextStatusSymbol": "다음 상태 기호",
45+
"problems": "문제점 (있는 경우)",
46+
"statusName": "상태 이름",
47+
"statusSymbol": "상태 기호",
48+
"statusType": "상태 유형"
49+
},
50+
"loadedSettings": {
51+
"settingsActuallyUsed": "Tasks에서 실제로 사용 중인 설정입니다.",
52+
"switchToLivePreview": "다이어그램을 보려면 실시간 미리보기(Live Preview) 또는 읽기 모드(Reading Mode)로 전환하세요.",
53+
"title": "로드된 설정"
54+
},
55+
"messages": {
56+
"cannotFindNextStatus": "다음 상태를 찾는 중 예기치 않은 오류가 발생했습니다.",
57+
"duplicateSymbol": "중복된 기호 '{{symbol}}': 이 상태는 무시됩니다.",
58+
"emptySymbol": "기호가 비어있음: 이 상태는 무시됩니다.",
59+
"nextSymbolUnknown": "알 수 없는 다음 기호 {{symbol}}: 기호가 {{symbol}}인 상태를 생성하세요.",
60+
"notConventionalType": "참고: 상태 기호 {{symbol}}의 일반적인 유형은 {{type}}입니다. 이 유형을 다시 확인해 보세요.",
61+
"wrongTypeAfterDone": {
62+
"line1": "이 `DONE` 상태 다음에는 `TODO` 또는 `IN_PROGRESS`가 아닌 {{nextType}}이(가) 옵니다.",
63+
"line2": "반복 작업을 완료하는 데 사용될 경우, 다음 작업이 `not done` 필터와 일치하도록 대신 `TODO` 또는 `IN_PROGRESS`가 이어집니다.",
64+
"line3": "[반복 작업과 사용자 정의 상태(Recurring Tasks and Custom Statuses)]({{helpURL}}) 문서를 참고하세요."
65+
}
66+
},
67+
"sampleTasks": {
68+
"line1": "현재 사용 중인 각 상태에 대한 예시 작업입니다. 자유롭게 테스트해 보세요.",
69+
"line2": "이 파일이 생성될 당시, 작업 설명에 포함된 상태 기호와 이름은 정확했습니다.",
70+
"line3": "생성 후 예시 작업을 수정했다면, 아래 Tasks 검색의 그룹 제목에서 현재 상태 유형과 이름을 확인할 수 있습니다.",
71+
"tip": {
72+
"line1": "팁: 모든 체크박스가 똑같이 보인다면…",
73+
"line2": "읽기 모드(Reading Mode) 또는 실시간 미리보기(Live Preview)에서 모든 체크박스가 동일하게 보인다면, [사용자 정의 상태 스타일링(Style custom statuses)]({{url}}) 문서를 참고하여 상태에 스타일을 적용할 테마나 CSS 스니펫을 선택하세요."
74+
},
75+
"title": "예시 작업"
76+
},
77+
"searchSampleTasks": {
78+
"line1": "이 Tasks 검색은 이 파일의 모든 작업을 상태 유형과 이름별로 그룹화하여 보여줍니다.",
79+
"title": "예시 작업 검색"
80+
},
81+
"statusSettings": {
82+
"comment": {
83+
"line1": "표를 보려면 실시간 미리보기 또는 읽기 모드로 전환하세요.",
84+
"line2": "상태 이름에 '*'나 '_'와 같은 마크다운(Markdown) 서식 문자가 포함된 경우,",
85+
"line3": "Obsidian은 읽기 모드에서만 표를 올바르게 렌더링할 수 있습니다."
86+
},
87+
"theseAreStatusValues": "코어(Core) 및 사용자 정의(Custom) 상태 섹션의 상태 값입니다.",
88+
"title": "상태 설정"
89+
}
90+
}
91+
},
92+
"settings": {
93+
"autoSuggest": {
94+
"heading": "자동 제안",
95+
"maxSuggestions": {
96+
"description": "자동 제안 메뉴가 나타날 때 표시할 제안의 개수입니다 ('⏎' 옵션 포함).",
97+
"name": "자동 제안 최대 표시 개수"
98+
},
99+
"minLength": {
100+
"description": "0보다 큰 값이면, 지원되는 키워드의 시작 부분이 인식될 때만 자동 제안이 실행됩니다.",
101+
"name": "자동 제안 최소 일치 길이"
102+
},
103+
"toggle": {
104+
"description": "활성화하면 인식된 작업 줄에서 입력하는 동안 지능형 제안 메뉴가 열립니다.",
105+
"name": "작업 내용 자동 제안"
106+
}
107+
},
108+
"changeRequiresRestart": "설정 변경 후에는 Obsidian을 다시 시작해야 합니다.",
109+
"dates": {
110+
"cancelledDate": {
111+
"description": "활성화하면 작업을 '취소'로 전환할 때 마지막에 ❌ YYYY-MM-DD 타임스탬프가 추가됩니다.",
112+
"name": "모든 취소된 작업에 취소 날짜 설정"
113+
},
114+
"createdDate": {
115+
"description": "활성화하면 '작업 생성/편집'으로 작업을 만들거나 반복 작업을 완료할 때, 다른 날짜 값 앞에 ➕ YYYY-MM-DD 타임스탬프가 추가됩니다.",
116+
"name": "모든 추가된 작업에 생성 날짜 설정"
117+
},
118+
"doneDate": {
119+
"description": "활성화하면 작업을 '완료'로 전환할 때 마지막에 ✅ YYYY-MM-DD 타임스탬프가 추가됩니다.",
120+
"name": "모든 완료된 작업에 완료 날짜 설정"
121+
},
122+
"heading": "날짜"
123+
},
124+
"datesFromFileNames": {
125+
"heading": "파일명에서 날짜 사용",
126+
"scheduledDate": {
127+
"extraFormat": {
128+
"description": {
129+
"line1": "날짜 없는 작업에 파일명을 예정일(Scheduled)로 사용할 때 Tasks가 인식할 추가 날짜 형식입니다.",
130+
"line2": "구문 참조(Syntax Reference)"
131+
},
132+
"name": "날짜 없는 작업의 예정일로 사용할 추가 파일명 날짜 형식",
133+
"placeholder": "예: MMM DD YYYY"
134+
},
135+
"folders": {
136+
"description": "모든 곳에서 기본 예정일을 사용하려면 비워 두고, 특정 폴더만 지정하려면 쉼표로 구분된 폴더 목록을 입력하세요.",
137+
"name": "기본 예정일을 사용할 폴더"
138+
},
139+
"toggle": {
140+
"description": {
141+
"line1": "예정일(Scheduled, ⏳) 입력 시간을 절약하세요.",
142+
"line2": "이 옵션을 활성화하면 날짜 없는 모든 작업에 파일명에서 추출한 기본 예정일이 설정됩니다.",
143+
"line3": "기본적으로 Tasks는 <code>YYYY-MM-DD</code>와 <code>YYYYMMDD</code> 날짜 형식을 모두 인식합니다.",
144+
"line4": "날짜 없는 작업은 마감일(Due, 📅), 예정일(Scheduled, ⏳), 시작일(Start, 🛫)이 모두 없는 작업을 의미합니다."
145+
},
146+
"name": "날짜 없는 작업에 파일명을 예정일로 사용"
147+
}
148+
}
149+
},
150+
"dialogs": {
151+
"accessKeys": {
152+
"description": "대화상자의 단축키(접근 키)가 시스템 단축키나 보조 기술 기능과 충돌한다면, 여기서 비활성화할 수 있습니다.",
153+
"name": "대화상자에서 접근 키 제공"
154+
},
155+
"heading": "대화상자"
156+
},
157+
"format": {
158+
"description": {
159+
"line1": "Tasks가 작업을 읽고 쓰는 데 사용할 형식입니다.",
160+
"line2": "<b>중요</b>: 현재 Tasks는 한 번에 하나의 형식만 지원합니다. Dataview를 선택하면 <b>Tasks의 이모지 표식을 읽지 못합니다</b>."
161+
},
162+
"displayName": {
163+
"dataview": "Dataview",
164+
"tasksEmojiFormat": "Tasks 이모지 형식"
165+
},
166+
"name": "작업 형식"
167+
},
168+
"globalFilter": {
169+
"filter": {
170+
"description": {
171+
"line1": "권장: 보관소의 모든 체크리스트 항목을 작업으로 관리하려면 비워 두세요.",
172+
"line2": "일부 \"<code>- [ ]</code>\" 체크리스트만 Tasks가 처리하도록 하려면 전역 필터를 사용하세요. 지정한 문자열이 설명에 포함된 항목만 작업으로 간주됩니다.",
173+
"line3": "예: 전역 필터를 <code>#task</code>로 설정하면 Tasks는 <code>#task</code>가 태그된 항목만 처리합니다.",
174+
"line4": "그 외 항목은 일반 체크리스트로 유지되며, 쿼리에 표시되지 않고 완료 날짜도 설정되지 않습니다."
175+
},
176+
"name": "전역 필터",
177+
"placeholder": "예: #task 또는 TODO"
178+
},
179+
"heading": "전역 작업 필터",
180+
"removeFilter": {
181+
"description": "활성화하면 작업 표시 시 설명에서 전역 필터 문자열을 제거합니다.",
182+
"name": "설명에서 전역 필터 제거"
183+
}
184+
},
185+
"globalQuery": {
186+
"heading": "전역 쿼리",
187+
"query": {
188+
"description": "보관소의 모든 Tasks 블록 시작에 자동으로 포함되는 쿼리입니다. 기본 필터나 레이아웃 옵션을 추가할 때 유용합니다.",
189+
"placeholder": "예시...\npath does not include _templates/\nlimit 300\nshow urgency"
190+
}
191+
},
192+
"presets": {
193+
"line1": "여기서 이름 있는 지침을 정의해 여러 쿼리에서 재사용할 수 있습니다. '{{name}}' 프리셋은 Tasks 쿼리에서 '{{instruction1}}' 또는 '{{instruction2}}'로 사용할 수 있습니다.",
194+
"line2": "프리셋을 수정하면 열려 있는 모든 Tasks 쿼리가 자동으로 새로고침됩니다.",
195+
"name": "프리셋"
196+
},
197+
"recurringTasks": {
198+
"heading": "반복 작업",
199+
"nextLine": {
200+
"description": "활성화하면 완료된 작업의 바로 아래 줄에 다음 반복이 나타납니다. 비활성화 시 다음 반복은 완료된 작업 앞에 나타납니다.",
201+
"name": "다음 반복을 아래 줄에 표시"
202+
},
203+
"removeScheduledDate": {
204+
"description": {
205+
"line1": "활성화하면 시작일(🛫)또는 마감일(📅) 중 하나라도 있을 때, 다음 반복 작업에는 예정일(⏳)을 설정하지 않습니다.",
206+
"line2": "시작일과 마감일은 다음 반복으로 넘기되, 예정일은 추후 작업 계획 시점에 설정하려는 경우에 유용합니다."
207+
},
208+
"name": "반복 시 예정일 제거"
209+
}
210+
},
211+
"seeTheDocumentation": "문서 보기",
212+
"statuses": {
213+
"collections": {
214+
"anuppuccinTheme": "AnuPpuccin 테마",
215+
"auraTheme": "Aura 테마",
216+
"borderTheme": "Border 테마",
217+
"buttons": {
218+
"addCollection": {
219+
"name": "{{themeName}}: 지원되는 상태 {{numberOfStatuses}}개 추가"
220+
}
221+
},
222+
"ebullientworksTheme": "Ebullientworks 테마",
223+
"itsThemeAndSlrvbCheckboxes": "ITS 테마 & SlRvb 체크박스",
224+
"lytModeTheme": "LYT Mode 테마 (다크 모드 전용)",
225+
"minimalTheme": "Minimal 테마",
226+
"thingsTheme": "Things 테마"
227+
},
228+
"coreStatuses": {
229+
"buttons": {
230+
"checkStatuses": {
231+
"name": "상태 검토 및 확인",
232+
"tooltip": "보관소 루트에 현재 상태 설정의 Mermaid 다이어그램을 포함한 새 파일을 생성합니다."
233+
}
234+
},
235+
"description": {
236+
"line1": "이것들은 사용자 정의 CSS나 테마 없이도 Tasks가 자체적으로 지원하는 코어 상태입니다.",
237+
"line2": "아래 섹션에서 사용자 정의 상태를 직접 편집하고 추가할 수 있습니다."
238+
},
239+
"heading": "코어 상태"
240+
},
241+
"customStatuses": {
242+
"buttons": {
243+
"addAllUnknown": {
244+
"name": "알 수 없는 모든 상태 유형 추가"
245+
},
246+
"addNewStatus": {
247+
"name": "새 작업 상태 추가"
248+
},
249+
"resetCustomStatuses": {
250+
"name": "사용자 정의 상태를 기본값으로 재설정"
251+
}
252+
},
253+
"description": {
254+
"line1": "먼저 <b>CSS 스니펫 또는 테마를 설치하여 사용자 정의 체크박스에 스타일을 적용</b>하세요.",
255+
"line2": "그 다음, 아래 버튼을 사용하여 선택한 체크박스 스타일에 맞춰 사용자 정의 상태를 설정하세요.",
256+
"line3": "<b>참고:</b> 이전에 정의된 상태와 기호가 동일한 상태는 무시됩니다. '작업 생성/편집' 명령어의 상태 드롭다운 메뉴에서 실제로 로드된 상태를 확인할 수 있습니다.",
257+
"line4": "시작하려면 문서를 참고하세요!"
258+
},
259+
"heading": "사용자 정의 상태"
260+
},
261+
"heading": "작업 상태"
262+
}
263+
}
264+
}

0 commit comments

Comments
 (0)