@object-ui/i18n 3.1.5 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +21 -1
  3. package/dist/i18n.js +10 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +2 -0
  6. package/dist/locales/ar.d.ts +260 -1
  7. package/dist/locales/ar.js +260 -1
  8. package/dist/locales/de.d.ts +260 -1
  9. package/dist/locales/de.js +269 -1
  10. package/dist/locales/en.d.ts +279 -0
  11. package/dist/locales/en.js +289 -0
  12. package/dist/locales/es.d.ts +260 -1
  13. package/dist/locales/es.js +260 -1
  14. package/dist/locales/fr.d.ts +260 -1
  15. package/dist/locales/fr.js +269 -1
  16. package/dist/locales/index.d.ts +2661 -9
  17. package/dist/locales/ja.d.ts +271 -1
  18. package/dist/locales/ja.js +271 -1
  19. package/dist/locales/ko.d.ts +260 -1
  20. package/dist/locales/ko.js +260 -1
  21. package/dist/locales/pt.d.ts +260 -1
  22. package/dist/locales/pt.js +260 -1
  23. package/dist/locales/ru.d.ts +271 -1
  24. package/dist/locales/ru.js +280 -1
  25. package/dist/locales/zh.d.ts +280 -1
  26. package/dist/locales/zh.js +290 -1
  27. package/dist/useObjectLabel.d.ts +46 -0
  28. package/dist/useObjectLabel.js +79 -12
  29. package/dist/useSafeTranslation.d.ts +5 -0
  30. package/dist/useSafeTranslation.js +46 -0
  31. package/package.json +31 -8
  32. package/.turbo/turbo-build.log +0 -4
  33. package/src/__tests__/i18n.test.ts +0 -228
  34. package/src/__tests__/provider.test.tsx +0 -117
  35. package/src/__tests__/spec-formatters.test.ts +0 -208
  36. package/src/__tests__/useObjectLabel.test.tsx +0 -131
  37. package/src/i18n.ts +0 -98
  38. package/src/index.ts +0 -78
  39. package/src/locales/ar.ts +0 -541
  40. package/src/locales/de.ts +0 -545
  41. package/src/locales/en.ts +0 -625
  42. package/src/locales/es.ts +0 -540
  43. package/src/locales/fr.ts +0 -545
  44. package/src/locales/index.ts +0 -42
  45. package/src/locales/ja.ts +0 -540
  46. package/src/locales/ko.ts +0 -540
  47. package/src/locales/pt.ts +0 -540
  48. package/src/locales/ru.ts +0 -540
  49. package/src/locales/zh.ts +0 -624
  50. package/src/provider.tsx +0 -177
  51. package/src/useObjectLabel.ts +0 -122
  52. package/src/utils/formatting.ts +0 -136
  53. package/src/utils/index.ts +0 -21
  54. package/src/utils/spec-formatters.ts +0 -220
  55. package/tsconfig.json +0 -12
  56. package/tsconfig.tsbuildinfo +0 -1
@@ -32,6 +32,8 @@ declare const ko: {
32
32
  readonly noResults: "결과를 찾을 수 없습니다";
33
33
  readonly required: "필수";
34
34
  readonly optional: "선택";
35
+ readonly selectOption: "옵션을 선택하세요";
36
+ readonly select: "선택...";
35
37
  };
36
38
  readonly validation: {
37
39
  readonly required: "{{field}}은(는) 필수입니다";
@@ -54,6 +56,11 @@ declare const ko: {
54
56
  readonly saveError: "저장에 실패했습니다";
55
57
  readonly unsavedChanges: "저장하지 않은 변경사항이 있습니다. 페이지를 떠나시겠습니까?";
56
58
  readonly stepOf: "{{total}}단계 중 {{current}}단계";
59
+ readonly createTitle: "{{object}} 생성";
60
+ readonly editTitle: "{{object}} 편집";
61
+ readonly createDescription: "새 {{object}}을(를) 데이터베이스에 추가합니다.";
62
+ readonly editDescription: "{{object}} 세부 정보 업데이트";
63
+ readonly saveRecord: "레코드 저장";
57
64
  };
58
65
  readonly table: {
59
66
  readonly rowsPerPage: "페이지당 행 수";
@@ -130,6 +137,22 @@ declare const ko: {
130
137
  readonly deleteCard: "카드 삭제";
131
138
  readonly deleteColumn: "열 삭제";
132
139
  };
140
+ readonly view: {
141
+ readonly rename: "이름 변경";
142
+ readonly duplicateView: "뷰 복제";
143
+ readonly shareView: "뷰 공유";
144
+ readonly setAsDefault: "기본값으로 설정";
145
+ readonly pinView: "뷰 고정";
146
+ readonly unpinView: "고정 해제";
147
+ readonly changeViewType: "뷰 유형 변경";
148
+ readonly deleteView: "뷰 삭제";
149
+ readonly addView: "뷰 추가";
150
+ readonly unsavedChanges: "저장되지 않은 변경";
151
+ readonly saveAsView: "뷰로 저장";
152
+ readonly moreViews: "{{count}}개 더";
153
+ readonly activeFilters: "필터 적용 중";
154
+ readonly activeSort: "정렬 적용 중";
155
+ };
133
156
  readonly detail: {
134
157
  readonly back: "뒤로";
135
158
  readonly edit: "편집";
@@ -164,11 +187,137 @@ declare const ko: {
164
187
  readonly viewAll: "모두 보기";
165
188
  readonly new: "새로 만들기";
166
189
  readonly emptyValue: "—";
190
+ readonly comments: "댓글";
191
+ readonly searchComments: "댓글 검색…";
192
+ readonly addCommentPlaceholder: "댓글 추가… (Ctrl+Enter로 제출)";
193
+ readonly noMatchingComments: "일치하는 댓글이 없습니다";
194
+ readonly noCommentsYet: "아직 댓글이 없습니다";
195
+ readonly pinned: "고정됨";
196
+ readonly pin: "고정";
197
+ readonly unpin: "고정 해제";
198
+ readonly justNow: "방금";
199
+ readonly minutesAgo: "{{count}}분 전";
200
+ readonly hoursAgo: "{{count}}시간 전";
201
+ readonly daysAgo: "{{count}}일 전";
202
+ readonly dropFilesToUpload: "파일을 여기에 끌어놓거나 클릭하여 업로드";
203
+ readonly attachmentCount: "첨부파일 {{count}}개";
204
+ readonly attachmentCountPlural: "첨부파일 {{count}}개";
205
+ readonly removeAttachment: "첨부파일 제거";
206
+ readonly unifiedDiff: "통합 보기";
207
+ readonly sideBySideDiff: "나란히 보기";
208
+ readonly noChanges: "변경 없음";
209
+ readonly previousVersion: "이전 버전";
210
+ readonly currentVersion: "현재 버전";
211
+ readonly discussion: "토론";
212
+ readonly showDiscussion: "토론 보기 ({{count}})";
213
+ readonly hideDiscussion: "토론 숨기기";
214
+ readonly bold: "굵게 (Ctrl+B)";
215
+ readonly italic: "기울임 (Ctrl+I)";
216
+ readonly listFormat: "목록";
217
+ readonly inlineCode: "인라인 코드";
218
+ readonly mentionSomeone: "멘션하기";
219
+ readonly preview: "미리보기";
220
+ readonly submitComment: "제출 (Ctrl+Enter)";
221
+ readonly writeComment: "댓글 작성…";
222
+ readonly subscribedTooltip: "구독 중 — 클릭하여 구독 취소";
223
+ readonly unsubscribedTooltip: "알림 구독";
224
+ readonly firstRecord: "첫 번째 레코드 (Home)";
225
+ readonly previousRecordKey: "이전 레코드 (←)";
226
+ readonly nextRecordKey: "다음 레코드 (→)";
227
+ readonly lastRecord: "마지막 레코드 (End)";
228
+ readonly noRecords: "레코드 없음";
229
+ readonly searchWhileNavigating: "탐색 중 검색";
230
+ readonly searchRecords: "레코드 검색…";
231
+ readonly allActivity: "모든 활동";
232
+ readonly commentsOnly: "댓글만";
233
+ readonly fieldChangesFilter: "필드 변경";
234
+ readonly tasksOnly: "작업만";
235
+ readonly leaveCommentPlaceholder: "댓글 남기기… (Ctrl+Enter로 제출)";
236
+ readonly noActivity: "기록된 활동 없음";
237
+ readonly loadMore: "더 보기";
238
+ readonly edited: "(수정됨)";
239
+ readonly via: "{{source}} 통해";
240
+ readonly replyCount: "답글 {{count}}개";
241
+ readonly replyCountPlural: "답글 {{count}}개";
242
+ readonly replyPlaceholder: "답글…";
243
+ readonly filterActivity: "활동 필터";
244
+ readonly openDiscussion: "토론 패널 열기";
245
+ readonly closeDiscussion: "토론 패널 닫기";
246
+ readonly subscribeAriaLabel: "알림 구독";
247
+ readonly unsubscribeAriaLabel: "알림 구독 취소";
248
+ readonly clearSearch: "검색 지우기";
167
249
  };
168
250
  readonly chart: {
169
251
  readonly noData: "차트 데이터가 없습니다";
170
252
  readonly loading: "차트 로딩 중...";
171
253
  };
254
+ readonly map: {
255
+ readonly searchLocations: "위치 검색…";
256
+ readonly locationDetails: "위치 상세";
257
+ readonly markersCount: "마커 {{count}}개";
258
+ readonly invalidCoordinates: "좌표가 누락되었거나 유효하지 않아 {{count}}개 레코드가 지도에서 제외되었습니다.";
259
+ readonly invalidCoordinatesPlural: "좌표가 누락되었거나 유효하지 않아 {{count}}개 레코드가 지도에서 제외되었습니다.";
260
+ };
261
+ readonly workflow: {
262
+ readonly draft: "초안";
263
+ readonly active: "활성";
264
+ readonly paused: "일시 중지";
265
+ readonly completed: "완료";
266
+ readonly cancelled: "취소됨";
267
+ readonly save: "저장";
268
+ readonly publish: "게시";
269
+ readonly addNode: "노드 추가";
270
+ readonly workflowFlow: "워크플로우";
271
+ readonly properties: "속성";
272
+ readonly connections: "연결";
273
+ readonly quickConnect: "빠른 연결";
274
+ readonly fromPlaceholder: "시작...";
275
+ readonly toPlaceholder: "종료...";
276
+ readonly connect: "연결";
277
+ readonly label: "라벨";
278
+ readonly type: "유형";
279
+ readonly description: "설명";
280
+ readonly assignee: "담당자";
281
+ readonly assigneeType: "담당자 유형";
282
+ readonly user: "사용자";
283
+ readonly role: "역할";
284
+ readonly group: "그룹";
285
+ readonly expression: "수식";
286
+ readonly timeoutMinutes: "제한 시간(분)";
287
+ readonly selectNodeToEdit: "속성을 편집할 노드를 선택하세요";
288
+ readonly workflowTitle: "워크플로우 제목";
289
+ readonly newWorkflow: "새 워크플로우";
290
+ readonly outConnections: "{{count}}개 출력";
291
+ readonly start: "시작";
292
+ readonly end: "종료";
293
+ readonly task: "작업";
294
+ readonly userTask: "사용자 작업";
295
+ readonly serviceTask: "서비스 작업";
296
+ readonly scriptTask: "스크립트 작업";
297
+ readonly approval: "승인";
298
+ readonly condition: "조건";
299
+ readonly parallelGateway: "병렬 게이트웨이";
300
+ readonly joinGateway: "합류 게이트웨이";
301
+ readonly boundaryEvent: "경계 이벤트";
302
+ readonly delay: "지연";
303
+ readonly notification: "알림";
304
+ readonly webhook: "Webhook";
305
+ readonly allowConcurrency: "허용 (동시 실행)";
306
+ readonly forbidConcurrency: "금지 (새 작업 건너뛰기)";
307
+ readonly replaceConcurrency: "대체 (기존 취소)";
308
+ readonly queueConcurrency: "대기열 (현재 완료 후 실행)";
309
+ readonly conditionEvent: "조건";
310
+ readonly manualEvent: "수동";
311
+ readonly webhookEvent: "Webhook";
312
+ readonly timerEvent: "타이머";
313
+ readonly signalEvent: "시그널";
314
+ readonly versionHistory: "버전 기록";
315
+ readonly importBpmn: "BPMN 가져오기";
316
+ readonly exportBpmn: "BPMN 내보내기";
317
+ readonly undo: "실행 취소";
318
+ readonly redo: "다시 실행";
319
+ readonly resetZoom: "확대/축소 초기화";
320
+ };
172
321
  readonly dashboard: {
173
322
  readonly addWidget: "위젯 추가";
174
323
  readonly removeWidget: "위젯 제거";
@@ -322,6 +471,58 @@ declare const ko: {
322
471
  readonly modeLight: "라이트";
323
472
  readonly modeDark: "다크";
324
473
  readonly mobilePreview: "모바일 미리보기";
474
+ readonly objectManager: {
475
+ readonly title: "개체 관리자";
476
+ readonly addObject: "새 개체";
477
+ readonly searchPlaceholder: "개체 검색…";
478
+ readonly noObjects: "개체를 찾을 수 없습니다.";
479
+ readonly objectName: "API 이름";
480
+ readonly objectLabel: "레이블";
481
+ readonly pluralLabel: "복수 레이블";
482
+ readonly icon: "아이콘";
483
+ readonly selectIcon: "아이콘 선택…";
484
+ readonly group: "그룹";
485
+ readonly noGroup: "그룹 없음";
486
+ readonly sortOrder: "정렬 순서";
487
+ readonly enabled: "활성화";
488
+ readonly relationships: "관계";
489
+ readonly systemBadge: "시스템";
490
+ readonly fieldCount: "{{count}} 필드";
491
+ readonly ungrouped: "미분류";
492
+ readonly deleteConfirmTitle: "개체를 삭제하시겠습니까?";
493
+ readonly deleteConfirmMessage: "이 개체와 모든 필드가 영구적으로 삭제됩니다. 이 작업은 되돌릴 수 없습니다.";
494
+ };
495
+ readonly fieldDesigner: {
496
+ readonly title: "필드 디자이너";
497
+ readonly addField: "새 필드";
498
+ readonly searchPlaceholder: "필드 검색…";
499
+ readonly allTypes: "모든 유형";
500
+ readonly noFields: "필드를 찾을 수 없습니다.";
501
+ readonly fieldName: "API 이름";
502
+ readonly fieldLabel: "레이블";
503
+ readonly fieldType: "유형";
504
+ readonly fieldGroup: "그룹";
505
+ readonly description: "설명";
506
+ readonly required: "필수";
507
+ readonly unique: "고유";
508
+ readonly readOnly: "읽기 전용";
509
+ readonly hidden: "숨김";
510
+ readonly indexed: "인덱스";
511
+ readonly externalId: "외부 ID";
512
+ readonly trackHistory: "이력 추적";
513
+ readonly defaultValue: "기본값";
514
+ readonly placeholder: "플레이스홀더";
515
+ readonly referenceTo: "참조 대상";
516
+ readonly formula: "수식";
517
+ readonly options: "옵션";
518
+ readonly addOption: "옵션 추가";
519
+ readonly validationRules: "유효성 규칙";
520
+ readonly addRule: "규칙 추가";
521
+ readonly systemBadge: "시스템";
522
+ readonly ungrouped: "일반";
523
+ readonly deleteConfirmTitle: "필드를 삭제하시겠습니까?";
524
+ readonly deleteConfirmMessage: "이 필드가 영구적으로 삭제됩니다. 기존 데이터가 손실됩니다.";
525
+ };
325
526
  };
326
527
  readonly console: {
327
528
  readonly title: "ObjectStack 콘솔";
@@ -337,6 +538,16 @@ declare const ko: {
337
538
  readonly loadingConfig: "설정 로드 중";
338
539
  readonly preparingWorkspace: "워크스페이스 준비 중";
339
540
  };
541
+ readonly error: {
542
+ readonly connectionFailed: "서버에 연결할 수 없습니다";
543
+ readonly serverUnreachable: "서버 {{url}}에 연결할 수 없습니다.";
544
+ readonly checkServer: "네트워크 연결을 확인하거나 백엔드가 실행 중인지 확인하세요.";
545
+ readonly timeout: "연결 시간이 초과되었습니다 (10초).";
546
+ };
547
+ readonly actions: {
548
+ readonly retry: "재시도";
549
+ readonly retrying: "재시도 중…";
550
+ };
340
551
  readonly shortcuts: {
341
552
  readonly title: "키보드 단축키";
342
553
  readonly description: "사용 가능한 모든 키보드 단축키 빠른 참조.";
@@ -407,7 +618,7 @@ declare const ko: {
407
618
  readonly generalHint: "보기 제목, 설명 및 유형";
408
619
  readonly toolbar: "도구 모음";
409
620
  readonly toolbarHint: "검색, 필터, 정렬, 그룹화 및 밀도 전환";
410
- readonly toolbarEnabledCount: "{{count}} of {{total}} enabled";
621
+ readonly toolbarEnabledCount: "{{total}}개 중 {{count}}개 활성화";
411
622
  readonly navigationSection: "탐색";
412
623
  readonly navigationHint: "행 클릭 동작 및 상세 보기 설정";
413
624
  readonly records: "레코드";
@@ -540,5 +751,53 @@ declare const ko: {
540
751
  readonly timeout: "요청 시간이 초과되었습니다. 다시 시도해주세요.";
541
752
  readonly unknown: "예기치 않은 오류가 발생했습니다.";
542
753
  };
754
+ readonly workspace: {
755
+ readonly label: "워크스페이스";
756
+ readonly default: "내 워크스페이스";
757
+ readonly switch: "워크스페이스 전환";
758
+ readonly create: "워크스페이스 생성";
759
+ readonly createTitle: "워크스페이스 만들기";
760
+ readonly createDescription: "워크스페이스는 팀이 협업할 수 있는 공유 공간입니다.";
761
+ readonly createButton: "워크스페이스 생성";
762
+ readonly nameLabel: "워크스페이스 이름";
763
+ readonly namePlaceholder: "예: Acme Inc";
764
+ readonly slugLabel: "URL 슬러그";
765
+ readonly slugHint: "URL에 사용됩니다. 소문자, 숫자, 하이픈만 사용 가능합니다.";
766
+ readonly invite: "구성원 초대";
767
+ readonly members: "구성원";
768
+ readonly settings: "워크스페이스 설정";
769
+ };
770
+ readonly sidebar: {
771
+ readonly settings: "설정";
772
+ readonly help: "도움말";
773
+ readonly helpTooltip: "도움말 및 문서";
774
+ readonly activityFeed: "활동 피드";
775
+ };
776
+ readonly home: {
777
+ readonly title: "홈";
778
+ readonly subtitle: "워크스페이스 대시보드";
779
+ readonly nav: "홈";
780
+ readonly allApps: "모든 애플리케이션";
781
+ readonly loading: "워크스페이스 로드 중...";
782
+ readonly recent: "최근";
783
+ readonly starred: "즐겨찾기";
784
+ readonly welcome: "ObjectUI에 오신 것을 환영합니다";
785
+ readonly welcomeDescription: "첫 애플리케이션을 만들거나 시스템 설정을 구성하여 시작하세요.";
786
+ readonly createFirstApp: "첫 앱 만들기";
787
+ readonly systemSettings: "시스템 설정";
788
+ readonly quickActions: {
789
+ readonly title: "빠른 작업";
790
+ readonly createApp: "앱 생성";
791
+ readonly createAppDesc: "새 애플리케이션으로 시작";
792
+ readonly manageObjects: "객체 관리";
793
+ readonly manageObjectsDesc: "데이터 모델 구성";
794
+ readonly systemSettings: "시스템 설정";
795
+ readonly systemSettingsDesc: "워크스페이스 구성";
796
+ };
797
+ readonly appCard: {
798
+ readonly noDescription: "설명 없음";
799
+ readonly default: "기본값";
800
+ };
801
+ };
543
802
  };
544
803
  export default ko;
@@ -32,6 +32,8 @@ const ko = {
32
32
  noResults: '결과를 찾을 수 없습니다',
33
33
  required: '필수',
34
34
  optional: '선택',
35
+ selectOption: '옵션을 선택하세요',
36
+ select: '선택...',
35
37
  },
36
38
  validation: {
37
39
  required: '{{field}}은(는) 필수입니다',
@@ -54,6 +56,11 @@ const ko = {
54
56
  saveError: '저장에 실패했습니다',
55
57
  unsavedChanges: '저장하지 않은 변경사항이 있습니다. 페이지를 떠나시겠습니까?',
56
58
  stepOf: '{{total}}단계 중 {{current}}단계',
59
+ createTitle: '{{object}} 생성',
60
+ editTitle: '{{object}} 편집',
61
+ createDescription: '새 {{object}}을(를) 데이터베이스에 추가합니다.',
62
+ editDescription: '{{object}} 세부 정보 업데이트',
63
+ saveRecord: '레코드 저장',
57
64
  },
58
65
  table: {
59
66
  rowsPerPage: '페이지당 행 수',
@@ -130,6 +137,22 @@ const ko = {
130
137
  deleteCard: '카드 삭제',
131
138
  deleteColumn: '열 삭제',
132
139
  },
140
+ view: {
141
+ rename: '이름 변경',
142
+ duplicateView: '뷰 복제',
143
+ shareView: '뷰 공유',
144
+ setAsDefault: '기본값으로 설정',
145
+ pinView: '뷰 고정',
146
+ unpinView: '고정 해제',
147
+ changeViewType: '뷰 유형 변경',
148
+ deleteView: '뷰 삭제',
149
+ addView: '뷰 추가',
150
+ unsavedChanges: '저장되지 않은 변경',
151
+ saveAsView: '뷰로 저장',
152
+ moreViews: '{{count}}개 더',
153
+ activeFilters: '필터 적용 중',
154
+ activeSort: '정렬 적용 중',
155
+ },
133
156
  detail: {
134
157
  back: '뒤로',
135
158
  edit: '편집',
@@ -164,11 +187,137 @@ const ko = {
164
187
  viewAll: '모두 보기',
165
188
  new: '새로 만들기',
166
189
  emptyValue: '—',
190
+ comments: '댓글',
191
+ searchComments: '댓글 검색…',
192
+ addCommentPlaceholder: '댓글 추가… (Ctrl+Enter로 제출)',
193
+ noMatchingComments: '일치하는 댓글이 없습니다',
194
+ noCommentsYet: '아직 댓글이 없습니다',
195
+ pinned: '고정됨',
196
+ pin: '고정',
197
+ unpin: '고정 해제',
198
+ justNow: '방금',
199
+ minutesAgo: '{{count}}분 전',
200
+ hoursAgo: '{{count}}시간 전',
201
+ daysAgo: '{{count}}일 전',
202
+ dropFilesToUpload: '파일을 여기에 끌어놓거나 클릭하여 업로드',
203
+ attachmentCount: '첨부파일 {{count}}개',
204
+ attachmentCountPlural: '첨부파일 {{count}}개',
205
+ removeAttachment: '첨부파일 제거',
206
+ unifiedDiff: '통합 보기',
207
+ sideBySideDiff: '나란히 보기',
208
+ noChanges: '변경 없음',
209
+ previousVersion: '이전 버전',
210
+ currentVersion: '현재 버전',
211
+ discussion: '토론',
212
+ showDiscussion: '토론 보기 ({{count}})',
213
+ hideDiscussion: '토론 숨기기',
214
+ bold: '굵게 (Ctrl+B)',
215
+ italic: '기울임 (Ctrl+I)',
216
+ listFormat: '목록',
217
+ inlineCode: '인라인 코드',
218
+ mentionSomeone: '멘션하기',
219
+ preview: '미리보기',
220
+ submitComment: '제출 (Ctrl+Enter)',
221
+ writeComment: '댓글 작성…',
222
+ subscribedTooltip: '구독 중 — 클릭하여 구독 취소',
223
+ unsubscribedTooltip: '알림 구독',
224
+ firstRecord: '첫 번째 레코드 (Home)',
225
+ previousRecordKey: '이전 레코드 (←)',
226
+ nextRecordKey: '다음 레코드 (→)',
227
+ lastRecord: '마지막 레코드 (End)',
228
+ noRecords: '레코드 없음',
229
+ searchWhileNavigating: '탐색 중 검색',
230
+ searchRecords: '레코드 검색…',
231
+ allActivity: '모든 활동',
232
+ commentsOnly: '댓글만',
233
+ fieldChangesFilter: '필드 변경',
234
+ tasksOnly: '작업만',
235
+ leaveCommentPlaceholder: '댓글 남기기… (Ctrl+Enter로 제출)',
236
+ noActivity: '기록된 활동 없음',
237
+ loadMore: '더 보기',
238
+ edited: '(수정됨)',
239
+ via: '{{source}} 통해',
240
+ replyCount: '답글 {{count}}개',
241
+ replyCountPlural: '답글 {{count}}개',
242
+ replyPlaceholder: '답글…',
243
+ filterActivity: '활동 필터',
244
+ openDiscussion: '토론 패널 열기',
245
+ closeDiscussion: '토론 패널 닫기',
246
+ subscribeAriaLabel: '알림 구독',
247
+ unsubscribeAriaLabel: '알림 구독 취소',
248
+ clearSearch: '검색 지우기',
167
249
  },
168
250
  chart: {
169
251
  noData: '차트 데이터가 없습니다',
170
252
  loading: '차트 로딩 중...',
171
253
  },
254
+ map: {
255
+ searchLocations: '위치 검색…',
256
+ locationDetails: '위치 상세',
257
+ markersCount: '마커 {{count}}개',
258
+ invalidCoordinates: '좌표가 누락되었거나 유효하지 않아 {{count}}개 레코드가 지도에서 제외되었습니다.',
259
+ invalidCoordinatesPlural: '좌표가 누락되었거나 유효하지 않아 {{count}}개 레코드가 지도에서 제외되었습니다.',
260
+ },
261
+ workflow: {
262
+ draft: '초안',
263
+ active: '활성',
264
+ paused: '일시 중지',
265
+ completed: '완료',
266
+ cancelled: '취소됨',
267
+ save: '저장',
268
+ publish: '게시',
269
+ addNode: '노드 추가',
270
+ workflowFlow: '워크플로우',
271
+ properties: '속성',
272
+ connections: '연결',
273
+ quickConnect: '빠른 연결',
274
+ fromPlaceholder: '시작...',
275
+ toPlaceholder: '종료...',
276
+ connect: '연결',
277
+ label: '라벨',
278
+ type: '유형',
279
+ description: '설명',
280
+ assignee: '담당자',
281
+ assigneeType: '담당자 유형',
282
+ user: '사용자',
283
+ role: '역할',
284
+ group: '그룹',
285
+ expression: '수식',
286
+ timeoutMinutes: '제한 시간(분)',
287
+ selectNodeToEdit: '속성을 편집할 노드를 선택하세요',
288
+ workflowTitle: '워크플로우 제목',
289
+ newWorkflow: '새 워크플로우',
290
+ outConnections: '{{count}}개 출력',
291
+ start: '시작',
292
+ end: '종료',
293
+ task: '작업',
294
+ userTask: '사용자 작업',
295
+ serviceTask: '서비스 작업',
296
+ scriptTask: '스크립트 작업',
297
+ approval: '승인',
298
+ condition: '조건',
299
+ parallelGateway: '병렬 게이트웨이',
300
+ joinGateway: '합류 게이트웨이',
301
+ boundaryEvent: '경계 이벤트',
302
+ delay: '지연',
303
+ notification: '알림',
304
+ webhook: 'Webhook',
305
+ allowConcurrency: '허용 (동시 실행)',
306
+ forbidConcurrency: '금지 (새 작업 건너뛰기)',
307
+ replaceConcurrency: '대체 (기존 취소)',
308
+ queueConcurrency: '대기열 (현재 완료 후 실행)',
309
+ conditionEvent: '조건',
310
+ manualEvent: '수동',
311
+ webhookEvent: 'Webhook',
312
+ timerEvent: '타이머',
313
+ signalEvent: '시그널',
314
+ versionHistory: '버전 기록',
315
+ importBpmn: 'BPMN 가져오기',
316
+ exportBpmn: 'BPMN 내보내기',
317
+ undo: '실행 취소',
318
+ redo: '다시 실행',
319
+ resetZoom: '확대/축소 초기화',
320
+ },
172
321
  dashboard: {
173
322
  addWidget: '위젯 추가',
174
323
  removeWidget: '위젯 제거',
@@ -322,6 +471,58 @@ const ko = {
322
471
  modeLight: '라이트',
323
472
  modeDark: '다크',
324
473
  mobilePreview: '모바일 미리보기',
474
+ objectManager: {
475
+ title: '개체 관리자',
476
+ addObject: '새 개체',
477
+ searchPlaceholder: '개체 검색…',
478
+ noObjects: '개체를 찾을 수 없습니다.',
479
+ objectName: 'API 이름',
480
+ objectLabel: '레이블',
481
+ pluralLabel: '복수 레이블',
482
+ icon: '아이콘',
483
+ selectIcon: '아이콘 선택…',
484
+ group: '그룹',
485
+ noGroup: '그룹 없음',
486
+ sortOrder: '정렬 순서',
487
+ enabled: '활성화',
488
+ relationships: '관계',
489
+ systemBadge: '시스템',
490
+ fieldCount: '{{count}} 필드',
491
+ ungrouped: '미분류',
492
+ deleteConfirmTitle: '개체를 삭제하시겠습니까?',
493
+ deleteConfirmMessage: '이 개체와 모든 필드가 영구적으로 삭제됩니다. 이 작업은 되돌릴 수 없습니다.',
494
+ },
495
+ fieldDesigner: {
496
+ title: '필드 디자이너',
497
+ addField: '새 필드',
498
+ searchPlaceholder: '필드 검색…',
499
+ allTypes: '모든 유형',
500
+ noFields: '필드를 찾을 수 없습니다.',
501
+ fieldName: 'API 이름',
502
+ fieldLabel: '레이블',
503
+ fieldType: '유형',
504
+ fieldGroup: '그룹',
505
+ description: '설명',
506
+ required: '필수',
507
+ unique: '고유',
508
+ readOnly: '읽기 전용',
509
+ hidden: '숨김',
510
+ indexed: '인덱스',
511
+ externalId: '외부 ID',
512
+ trackHistory: '이력 추적',
513
+ defaultValue: '기본값',
514
+ placeholder: '플레이스홀더',
515
+ referenceTo: '참조 대상',
516
+ formula: '수식',
517
+ options: '옵션',
518
+ addOption: '옵션 추가',
519
+ validationRules: '유효성 규칙',
520
+ addRule: '규칙 추가',
521
+ systemBadge: '시스템',
522
+ ungrouped: '일반',
523
+ deleteConfirmTitle: '필드를 삭제하시겠습니까?',
524
+ deleteConfirmMessage: '이 필드가 영구적으로 삭제됩니다. 기존 데이터가 손실됩니다.',
525
+ },
325
526
  },
326
527
  console: {
327
528
  title: 'ObjectStack 콘솔',
@@ -337,6 +538,16 @@ const ko = {
337
538
  loadingConfig: '설정 로드 중',
338
539
  preparingWorkspace: '워크스페이스 준비 중',
339
540
  },
541
+ error: {
542
+ connectionFailed: '서버에 연결할 수 없습니다',
543
+ serverUnreachable: '서버 {{url}}에 연결할 수 없습니다.',
544
+ checkServer: '네트워크 연결을 확인하거나 백엔드가 실행 중인지 확인하세요.',
545
+ timeout: '연결 시간이 초과되었습니다 (10초).',
546
+ },
547
+ actions: {
548
+ retry: '재시도',
549
+ retrying: '재시도 중…',
550
+ },
340
551
  shortcuts: {
341
552
  title: '키보드 단축키',
342
553
  description: '사용 가능한 모든 키보드 단축키 빠른 참조.',
@@ -402,7 +613,7 @@ const ko = {
402
613
  generalHint: '보기 제목, 설명 및 유형',
403
614
  toolbar: '도구 모음',
404
615
  toolbarHint: '검색, 필터, 정렬, 그룹화 및 밀도 전환',
405
- toolbarEnabledCount: '{{count}} of {{total}} enabled',
616
+ toolbarEnabledCount: '{{total}}개 중 {{count}}개 활성화',
406
617
  navigationSection: '탐색',
407
618
  navigationHint: '행 클릭 동작 및 상세 보기 설정',
408
619
  records: '레코드',
@@ -535,5 +746,53 @@ const ko = {
535
746
  timeout: '요청 시간이 초과되었습니다. 다시 시도해주세요.',
536
747
  unknown: '예기치 않은 오류가 발생했습니다.',
537
748
  },
749
+ workspace: {
750
+ label: '워크스페이스',
751
+ default: '내 워크스페이스',
752
+ switch: '워크스페이스 전환',
753
+ create: '워크스페이스 생성',
754
+ createTitle: '워크스페이스 만들기',
755
+ createDescription: '워크스페이스는 팀이 협업할 수 있는 공유 공간입니다.',
756
+ createButton: '워크스페이스 생성',
757
+ nameLabel: '워크스페이스 이름',
758
+ namePlaceholder: '예: Acme Inc',
759
+ slugLabel: 'URL 슬러그',
760
+ slugHint: 'URL에 사용됩니다. 소문자, 숫자, 하이픈만 사용 가능합니다.',
761
+ invite: '구성원 초대',
762
+ members: '구성원',
763
+ settings: '워크스페이스 설정',
764
+ },
765
+ sidebar: {
766
+ settings: '설정',
767
+ help: '도움말',
768
+ helpTooltip: '도움말 및 문서',
769
+ activityFeed: '활동 피드',
770
+ },
771
+ home: {
772
+ title: '홈',
773
+ subtitle: '워크스페이스 대시보드',
774
+ nav: '홈',
775
+ allApps: '모든 애플리케이션',
776
+ loading: '워크스페이스 로드 중...',
777
+ recent: '최근',
778
+ starred: '즐겨찾기',
779
+ welcome: 'ObjectUI에 오신 것을 환영합니다',
780
+ welcomeDescription: '첫 애플리케이션을 만들거나 시스템 설정을 구성하여 시작하세요.',
781
+ createFirstApp: '첫 앱 만들기',
782
+ systemSettings: '시스템 설정',
783
+ quickActions: {
784
+ title: '빠른 작업',
785
+ createApp: '앱 생성',
786
+ createAppDesc: '새 애플리케이션으로 시작',
787
+ manageObjects: '객체 관리',
788
+ manageObjectsDesc: '데이터 모델 구성',
789
+ systemSettings: '시스템 설정',
790
+ systemSettingsDesc: '워크스페이스 구성',
791
+ },
792
+ appCard: {
793
+ noDescription: '설명 없음',
794
+ default: '기본값',
795
+ },
796
+ },
538
797
  };
539
798
  export default ko;