@open-mercato/core 0.6.7-develop.6834.1.e76f4b8cbc → 0.6.7-develop.6842.1.8cd8a8883c

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 (51) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/modules/customers/components/detail/ActivitiesDayStrip.js +2 -3
  3. package/dist/modules/customers/components/detail/ActivitiesDayStrip.js.map +2 -2
  4. package/dist/modules/dashboards/lib/aggregations.js +20 -6
  5. package/dist/modules/dashboards/lib/aggregations.js.map +2 -2
  6. package/package.json +8 -8
  7. package/src/modules/api_keys/i18n/ko.json +42 -0
  8. package/src/modules/attachments/i18n/ko.json +172 -0
  9. package/src/modules/audit_logs/i18n/ko.json +66 -0
  10. package/src/modules/auth/i18n/ko.json +255 -0
  11. package/src/modules/business_rules/i18n/ko.json +396 -0
  12. package/src/modules/catalog/i18n/ko.json +723 -0
  13. package/src/modules/communication_channels/i18n/ko.json +138 -0
  14. package/src/modules/configs/i18n/ko.json +197 -0
  15. package/src/modules/currencies/i18n/de.json +1 -0
  16. package/src/modules/currencies/i18n/en.json +1 -0
  17. package/src/modules/currencies/i18n/es.json +1 -0
  18. package/src/modules/currencies/i18n/ko.json +160 -0
  19. package/src/modules/currencies/i18n/pl.json +1 -0
  20. package/src/modules/customer_accounts/i18n/ko.json +354 -0
  21. package/src/modules/customers/components/detail/ActivitiesDayStrip.tsx +2 -3
  22. package/src/modules/customers/i18n/de.json +10 -0
  23. package/src/modules/customers/i18n/en.json +10 -0
  24. package/src/modules/customers/i18n/es.json +10 -0
  25. package/src/modules/customers/i18n/ko.json +2855 -0
  26. package/src/modules/customers/i18n/pl.json +10 -0
  27. package/src/modules/dashboards/i18n/ko.json +118 -0
  28. package/src/modules/dashboards/lib/aggregations.ts +42 -6
  29. package/src/modules/data_sync/i18n/ko.json +125 -0
  30. package/src/modules/design_system/i18n/ko.json +58 -0
  31. package/src/modules/dictionaries/i18n/ko.json +130 -0
  32. package/src/modules/directory/i18n/ko.json +105 -0
  33. package/src/modules/entities/i18n/ko.json +260 -0
  34. package/src/modules/feature_toggles/i18n/ko.json +96 -0
  35. package/src/modules/inbox_ops/i18n/ko.json +196 -0
  36. package/src/modules/integrations/i18n/ko.json +129 -0
  37. package/src/modules/messages/i18n/ko.json +263 -0
  38. package/src/modules/notifications/i18n/ko.json +55 -0
  39. package/src/modules/payment_gateways/i18n/ko.json +87 -0
  40. package/src/modules/planner/i18n/ko.json +565 -0
  41. package/src/modules/portal/i18n/ko.json +143 -0
  42. package/src/modules/progress/i18n/ko.json +20 -0
  43. package/src/modules/query_index/i18n/ko.json +69 -0
  44. package/src/modules/resources/i18n/ko.json +770 -0
  45. package/src/modules/sales/i18n/ko.json +1442 -0
  46. package/src/modules/shipping_carriers/i18n/ko.json +85 -0
  47. package/src/modules/staff/i18n/ko.json +1162 -0
  48. package/src/modules/sync_excel/i18n/ko.json +107 -0
  49. package/src/modules/translations/i18n/ko.json +45 -0
  50. package/src/modules/wms/i18n/ko.json +1053 -0
  51. package/src/modules/workflows/i18n/ko.json +1203 -0
@@ -518,6 +518,7 @@
518
518
  "customers.companies.detail.billing.paymentTerms": "Termin płatności",
519
519
  "customers.companies.detail.copied": "Skopiowano do schowka",
520
520
  "customers.companies.detail.copy": "Kopiuj",
521
+ "customers.companies.detail.createdAt": "Utworzono {{date}}",
521
522
  "customers.companies.detail.currency.add": "Dodaj walutę",
522
523
  "customers.companies.detail.currency.addPrompt": "Podaj kod waluty.",
523
524
  "customers.companies.detail.currency.cancel": "Anuluj",
@@ -562,6 +563,7 @@
562
563
  "customers.companies.detail.emptyState.people.title": "Zbuduj zespół konta",
563
564
  "customers.companies.detail.emptyState.tasks.action": "Utwórz zadanie",
564
565
  "customers.companies.detail.emptyState.tasks.title": "Zaplanuj kolejne kroki",
566
+ "customers.companies.detail.entityType": "Firma",
565
567
  "customers.companies.detail.error.load": "Nie udało się załadować firmy.",
566
568
  "customers.companies.detail.error.notFound": "Nie znaleziono firmy.",
567
569
  "customers.companies.detail.fields.annualRevenue": "Roczne przychody",
@@ -1845,6 +1847,8 @@
1845
1847
  "customers.people.detail.addresses.deleted": "Adres usunięty",
1846
1848
  "customers.people.detail.addresses.editAction": "Edytuj adres",
1847
1849
  "customers.people.detail.addresses.editTitle": "Edytuj adres",
1850
+ "customers.people.detail.addresses.empty": "Brak adresów",
1851
+ "customers.people.detail.addresses.emptyTitle": "Brak adresów",
1848
1852
  "customers.people.detail.addresses.error": "Nie udało się zapisać adresu",
1849
1853
  "customers.people.detail.addresses.fields.buildingNumber": "Numer budynku",
1850
1854
  "customers.people.detail.addresses.fields.city": "Miasto",
@@ -1870,6 +1874,7 @@
1870
1874
  "customers.people.detail.addresses.saving": "Zapisywanie…",
1871
1875
  "customers.people.detail.addresses.streetFormatHint": "Aktywny jest układ z ulicą na początku.",
1872
1876
  "customers.people.detail.addresses.success": "Adres zapisany",
1877
+ "customers.people.detail.addresses.title": "Adresy",
1873
1878
  "customers.people.detail.addresses.types.add": "Dodaj typ",
1874
1879
  "customers.people.detail.addresses.types.addHint": "Utwórz nowy typ adresu do wielokrotnego użycia.",
1875
1880
  "customers.people.detail.addresses.types.cancel": "Anuluj",
@@ -1893,6 +1898,8 @@
1893
1898
  "customers.people.detail.addresses.validation.required": "Wpisz {{field}}",
1894
1899
  "customers.people.detail.addresses.validation.tooLong": "Pole {{field}} jest za długie (maks. {{max}} znaków)",
1895
1900
  "customers.people.detail.anonymous": "Anonimowy",
1901
+ "customers.people.detail.attachments.description": "Pliki powiązane z tym rekordem.",
1902
+ "customers.people.detail.attachments.title": "Załączniki",
1896
1903
  "customers.people.detail.companies.addAction": "Powiąż firmę",
1897
1904
  "customers.people.detail.companies.addError": "Nie udało się powiązać firmy.",
1898
1905
  "customers.people.detail.companies.addSuccess": "Powiązano firmę.",
@@ -2082,6 +2089,7 @@
2082
2089
  "customers.people.detail.inline.urlInvalid": "Podaj poprawny adres URL",
2083
2090
  "customers.people.detail.loading": "Ładowanie danych osoby",
2084
2091
  "customers.people.detail.noValue": "Brak danych",
2092
+ "customers.people.detail.notes.add": "Dodaj notatkę",
2085
2093
  "customers.people.detail.notes.addLabel": "Dodaj notatkę",
2086
2094
  "customers.people.detail.notes.addShortcut": "Dodaj notatkę ⌘⏎ / Ctrl+Enter",
2087
2095
  "customers.people.detail.notes.appearance.cancel": "Anuluj",
@@ -2112,6 +2120,8 @@
2112
2120
  "customers.people.detail.notes.deleteSuccess": "Notatka usunięta",
2113
2121
  "customers.people.detail.notes.edit": "Edytuj notatkę",
2114
2122
  "customers.people.detail.notes.editorLoading": "Ładowanie edytora…",
2123
+ "customers.people.detail.notes.empty": "Brak notatek",
2124
+ "customers.people.detail.notes.emptyTitle": "Brak notatek",
2115
2125
  "customers.people.detail.notes.entityMissing": "Nie można ustalić bieżącej osoby.",
2116
2126
  "customers.people.detail.notes.error": "Nie udało się zapisać notatki",
2117
2127
  "customers.people.detail.notes.fields.deal": "Powiąż z szansą (opcjonalnie)",
@@ -0,0 +1,118 @@
1
+ {
2
+ "dashboards.analytics.chartVariant.donut": "도넛형",
3
+ "dashboards.analytics.chartVariant.pie": "원형",
4
+ "dashboards.analytics.comparison.vsDayBefore": "전날 대비",
5
+ "dashboards.analytics.comparison.vsLastMonth": "지난달 대비",
6
+ "dashboards.analytics.comparison.vsLastQuarter": "지난 분기 대비",
7
+ "dashboards.analytics.comparison.vsLastWeek": "지난주 대비",
8
+ "dashboards.analytics.comparison.vsLastYear": "작년 대비",
9
+ "dashboards.analytics.comparison.vsMonthBefore": "전달 대비",
10
+ "dashboards.analytics.comparison.vsPrevious30Days": "이전 30일 대비",
11
+ "dashboards.analytics.comparison.vsPrevious7Days": "이전 7일 대비",
12
+ "dashboards.analytics.comparison.vsPrevious90Days": "이전 90일 대비",
13
+ "dashboards.analytics.comparison.vsPreviousPeriod": "이전 기간 대비",
14
+ "dashboards.analytics.comparison.vsQuarterBefore": "이전 분기 대비",
15
+ "dashboards.analytics.comparison.vsWeekBefore": "이전 주 대비",
16
+ "dashboards.analytics.comparison.vsYearBefore": "이전 해 대비",
17
+ "dashboards.analytics.comparison.vsYesterday": "어제 대비",
18
+ "dashboards.analytics.currency.unlabelled": "통화 없이 표시된 금액",
19
+ "dashboards.analytics.currency.unlabelledHint": "신뢰할 수 있는 통화를 결정할 수 없어 금액이 통화 없이 표시됩니다.",
20
+ "dashboards.analytics.dateRange.last30Days": "최근 30일",
21
+ "dashboards.analytics.dateRange.last7Days": "최근 7일",
22
+ "dashboards.analytics.dateRange.last90Days": "최근 90일",
23
+ "dashboards.analytics.dateRange.lastMonth": "지난달",
24
+ "dashboards.analytics.dateRange.lastQuarter": "지난 분기",
25
+ "dashboards.analytics.dateRange.lastWeek": "지난주",
26
+ "dashboards.analytics.dateRange.lastYear": "작년",
27
+ "dashboards.analytics.dateRange.thisMonth": "이번 달",
28
+ "dashboards.analytics.dateRange.thisQuarter": "이번 분기",
29
+ "dashboards.analytics.dateRange.thisWeek": "이번 주",
30
+ "dashboards.analytics.dateRange.thisYear": "올해",
31
+ "dashboards.analytics.dateRange.today": "오늘",
32
+ "dashboards.analytics.dateRange.yesterday": "어제",
33
+ "dashboards.analytics.granularity.day": "일",
34
+ "dashboards.analytics.granularity.month": "월",
35
+ "dashboards.analytics.granularity.quarter": "분기",
36
+ "dashboards.analytics.granularity.short.day": "일",
37
+ "dashboards.analytics.granularity.short.month": "월",
38
+ "dashboards.analytics.granularity.short.quarter": "분기",
39
+ "dashboards.analytics.granularity.short.week": "주",
40
+ "dashboards.analytics.granularity.short.year": "년",
41
+ "dashboards.analytics.granularity.week": "주",
42
+ "dashboards.analytics.granularity.year": "년",
43
+ "dashboards.analytics.labels.unknown": "알 수 없음",
44
+ "dashboards.analytics.labels.unknownProduct": "알 수 없는 상품",
45
+ "dashboards.analytics.labels.unnamedProduct": "이름 없는 상품",
46
+ "dashboards.analytics.labels.value": "값",
47
+ "dashboards.analytics.orderStatus.cancelled": "취소됨",
48
+ "dashboards.analytics.orderStatus.confirmed": "확인됨",
49
+ "dashboards.analytics.orderStatus.delivered": "배송 완료",
50
+ "dashboards.analytics.orderStatus.draft": "초안",
51
+ "dashboards.analytics.orderStatus.pending": "대기 중",
52
+ "dashboards.analytics.orderStatus.processing": "처리 중",
53
+ "dashboards.analytics.orderStatus.shipped": "배송됨",
54
+ "dashboards.analytics.settings.chartLayout": "차트 레이아웃",
55
+ "dashboards.analytics.settings.chartVariant": "차트 스타일",
56
+ "dashboards.analytics.settings.dateRange": "날짜 범위",
57
+ "dashboards.analytics.settings.dealStatusScope": "특가가 포함됨",
58
+ "dashboards.analytics.settings.dealStatusScopeAll": "승패를 포함한 모든 거래",
59
+ "dashboards.analytics.settings.dealStatusScopeOpen": "공개 거래만",
60
+ "dashboards.analytics.settings.granularity": "세분성",
61
+ "dashboards.analytics.settings.horizontal": "가로",
62
+ "dashboards.analytics.settings.limit": "항목 수",
63
+ "dashboards.analytics.settings.showArea": "영역 채우기 표시",
64
+ "dashboards.analytics.settings.showComparison": "비교 표시",
65
+ "dashboards.analytics.settings.vertical": "세로",
66
+ "dashboards.analytics.widgets.aovKpi.description": "기간 비교가 포함된 평균 주문 금액",
67
+ "dashboards.analytics.widgets.aovKpi.error": "AOV 데이터를 불러오지 못했습니다",
68
+ "dashboards.analytics.widgets.aovKpi.title": "평균 주문 금액",
69
+ "dashboards.analytics.widgets.newCustomersKpi.description": "기간 비교가 포함된 신규 고객 수",
70
+ "dashboards.analytics.widgets.newCustomersKpi.error": "신규 고객 데이터를 불러오지 못했습니다",
71
+ "dashboards.analytics.widgets.newCustomersKpi.title": "고객 증가",
72
+ "dashboards.analytics.widgets.ordersByStatus.description": "상태별 주문 분포",
73
+ "dashboards.analytics.widgets.ordersByStatus.empty": "이 기간에 주문이 없습니다",
74
+ "dashboards.analytics.widgets.ordersByStatus.error": "상태별 주문 데이터를 불러오지 못했습니다",
75
+ "dashboards.analytics.widgets.ordersByStatus.title": "상태별 주문",
76
+ "dashboards.analytics.widgets.ordersKpi.description": "기간 비교가 포함된 총 주문 수",
77
+ "dashboards.analytics.widgets.ordersKpi.error": "주문 데이터를 불러오지 못했습니다",
78
+ "dashboards.analytics.widgets.ordersKpi.title": "주문",
79
+ "dashboards.analytics.widgets.pipelineSummary.description": "파이프라인 단계별 딜 가치",
80
+ "dashboards.analytics.widgets.pipelineSummary.empty": "이 기간에 딜 데이터가 없습니다",
81
+ "dashboards.analytics.widgets.pipelineSummary.error": "파이프라인 데이터를 불러오지 못했습니다",
82
+ "dashboards.analytics.widgets.pipelineSummary.title": "파이프라인 요약",
83
+ "dashboards.analytics.widgets.revenueKpi.description": "기간 비교가 포함된 총 매출",
84
+ "dashboards.analytics.widgets.revenueKpi.error": "매출 데이터를 불러오지 못했습니다",
85
+ "dashboards.analytics.widgets.revenueKpi.title": "매출",
86
+ "dashboards.analytics.widgets.revenueTrend.description": "커스터마이즈 가능한 세분성으로 확인하는 시간별 매출",
87
+ "dashboards.analytics.widgets.revenueTrend.empty": "이 기간에 매출 데이터가 없습니다",
88
+ "dashboards.analytics.widgets.revenueTrend.error": "매출 추이 데이터를 불러오지 못했습니다",
89
+ "dashboards.analytics.widgets.revenueTrend.title": "매출 추이",
90
+ "dashboards.analytics.widgets.salesByRegion.description": "배송 지역별 매출 분포",
91
+ "dashboards.analytics.widgets.salesByRegion.empty": "이 기간에 지역별 판매 데이터가 없습니다",
92
+ "dashboards.analytics.widgets.salesByRegion.error": "지역별 판매 데이터를 불러오지 못했습니다",
93
+ "dashboards.analytics.widgets.salesByRegion.title": "지역별 판매",
94
+ "dashboards.analytics.widgets.topCustomers.column.customer": "고객",
95
+ "dashboards.analytics.widgets.topCustomers.column.revenue": "매출",
96
+ "dashboards.analytics.widgets.topCustomers.description": "총 매출 기준 상위 고객",
97
+ "dashboards.analytics.widgets.topCustomers.empty": "이 기간에 고객 데이터가 없습니다",
98
+ "dashboards.analytics.widgets.topCustomers.error": "상위 고객 데이터를 불러오지 못했습니다",
99
+ "dashboards.analytics.widgets.topCustomers.title": "매출 기준 상위 고객",
100
+ "dashboards.analytics.widgets.topProducts.description": "매출 기준 베스트셀러 상품",
101
+ "dashboards.analytics.widgets.topProducts.empty": "이 기간에 상품 판매 데이터가 없습니다",
102
+ "dashboards.analytics.widgets.topProducts.error": "상위 상품 데이터를 불러오지 못했습니다",
103
+ "dashboards.analytics.widgets.topProducts.title": "매출 기준 상위 상품",
104
+ "dashboards.errors.organization_required": "조직 컨텍스트가 필요합니다",
105
+ "dashboards.errors.tenant_required": "테넌트 컨텍스트가 필요합니다",
106
+ "dashboards.errors.unauthorized": "권한이 없습니다",
107
+ "dashboards.widgets.effective": "적용된 위젯:",
108
+ "dashboards.widgets.error.load": "위젯 구성을 불러올 수 없습니다.",
109
+ "dashboards.widgets.error.save": "대시보드 위젯 설정을 저장할 수 없습니다.",
110
+ "dashboards.widgets.flash.saved": "대시보드 위젯이 업데이트되었습니다",
111
+ "dashboards.widgets.loading": "위젯 옵션을 불러오는 중…",
112
+ "dashboards.widgets.mode.hint": "이 사용자는 현재 할당된 역할로부터 위젯을 상속받고 있습니다. 커스터마이즈하려면 재정의로 전환하세요.",
113
+ "dashboards.widgets.mode.inherit": "역할에서 상속",
114
+ "dashboards.widgets.mode.override": "이 사용자에 대해 재정의",
115
+ "dashboards.widgets.reset": "재설정",
116
+ "dashboards.widgets.save": "위젯 저장",
117
+ "dashboards.widgets.saving": "저장 중…"
118
+ }
@@ -142,6 +142,37 @@ export function resolveGroupExpression(
142
142
  return { expression: groupMapping.dbColumn, dbColumn: groupMapping.dbColumn, jsonPath: null }
143
143
  }
144
144
 
145
+ /**
146
+ * Normalizes the value of a set filter (`in` / `not_in`) into the list of members it selects.
147
+ *
148
+ * The list is rendered as one placeholder per member rather than as a single array parameter:
149
+ * MikroORM does not bind parameters at the driver level — `AbstractSqlConnection.execute` calls
150
+ * `platform.formatQuery`, which interpolates each value through `BasePostgreSqlPlatform.escape`,
151
+ * and that renders a JavaScript array as a bare comma-separated list. The previous
152
+ * `= ANY(?)` / `!= ALL(?)` form therefore produced `= ANY('a', 'b')`, which PostgreSQL rejects
153
+ * for every shape of value (#4669).
154
+ *
155
+ * A missing value yields an empty set rather than a dropped filter, so an `in` filter the caller
156
+ * failed to populate selects nothing instead of silently widening the result.
157
+ *
158
+ * A null or undefined *member* is refused instead of rendered. `column IN (NULL)` matches no row
159
+ * and `column NOT IN ('a', NULL)` is NULL for every row, so such a member would return an empty
160
+ * aggregation with no error — a silent zero on a reporting surface, which is worse than a loud
161
+ * failure. Requests are already rejected at the API boundary by `widgetDataFilterSchema` in
162
+ * `api/widgets/data/schema.ts`; this throw keeps in-process callers, whose filter values are
163
+ * typed as `unknown`, from reaching the same silent path. Nullness is queried with the dedicated
164
+ * `is_null` / `is_not_null` operators.
165
+ */
166
+ function normalizeSetFilterValues(value: unknown): unknown[] {
167
+ const values = Array.isArray(value) ? value : value === undefined ? [] : [value]
168
+ if (values.some((member) => member === null || member === undefined)) {
169
+ throw new Error(
170
+ '[internal] Set filter members must not be null or undefined — use the is_null / is_not_null operators to filter on nullness',
171
+ )
172
+ }
173
+ return values
174
+ }
175
+
145
176
  function buildWhereClause(
146
177
  options: Pick<BuildAggregationQueryOptions, 'entityType' | 'dateRange' | 'filters' | 'scope' | 'registry'>,
147
178
  ): { clause: string; params: unknown[] } {
@@ -200,13 +231,18 @@ function buildWhereClause(
200
231
  params.push(filter.value)
201
232
  break
202
233
  case 'in':
203
- whereClauses.push(`${filterMapping.dbColumn} = ANY(?)`)
204
- params.push(filter.value)
205
- break
206
- case 'not_in':
207
- whereClauses.push(`${filterMapping.dbColumn} != ALL(?)`)
208
- params.push(filter.value)
234
+ case 'not_in': {
235
+ const values = normalizeSetFilterValues(filter.value)
236
+ if (values.length === 0) {
237
+ whereClauses.push(filter.operator === 'in' ? 'FALSE' : 'TRUE')
238
+ break
239
+ }
240
+ const keyword = filter.operator === 'in' ? 'IN' : 'NOT IN'
241
+ const placeholders = values.map(() => '?').join(', ')
242
+ whereClauses.push(`${filterMapping.dbColumn} ${keyword} (${placeholders})`)
243
+ params.push(...values)
209
244
  break
245
+ }
210
246
  case 'is_null':
211
247
  whereClauses.push(`${filterMapping.dbColumn} IS NULL`)
212
248
  break
@@ -0,0 +1,125 @@
1
+ {
2
+ "data_sync.dashboard.actions.view": "보기",
3
+ "data_sync.dashboard.columns.created": "생성됨",
4
+ "data_sync.dashboard.columns.createdAt": "시작됨",
5
+ "data_sync.dashboard.columns.direction": "방향",
6
+ "data_sync.dashboard.columns.entityType": "엔터티 유형",
7
+ "data_sync.dashboard.columns.failed": "실패",
8
+ "data_sync.dashboard.columns.integration": "통합",
9
+ "data_sync.dashboard.columns.status": "상태",
10
+ "data_sync.dashboard.columns.updated": "수정됨",
11
+ "data_sync.dashboard.direction.export": "내보내기",
12
+ "data_sync.dashboard.direction.import": "가져오기",
13
+ "data_sync.dashboard.filters.allDirections": "모든 방향",
14
+ "data_sync.dashboard.filters.allStatuses": "모든 상태",
15
+ "data_sync.dashboard.filters.status": "상태",
16
+ "data_sync.dashboard.loadError": "동기화 실행을 불러오지 못했습니다",
17
+ "data_sync.dashboard.noRuns": "아직 동기화 실행 기록이 없습니다",
18
+ "data_sync.dashboard.schedule.cron": "Cron",
19
+ "data_sync.dashboard.schedule.cronHelp": "예: `0 * * * *`는 매시 정각에 실행됩니다.",
20
+ "data_sync.dashboard.schedule.cronValue": "Cron 표현식",
21
+ "data_sync.dashboard.schedule.delete": "일정 제거",
22
+ "data_sync.dashboard.schedule.deleteError": "반복 일정 제거에 실패했습니다",
23
+ "data_sync.dashboard.schedule.deleteSuccess": "반복 일정이 제거되었습니다",
24
+ "data_sync.dashboard.schedule.deleting": "제거 중...",
25
+ "data_sync.dashboard.schedule.description": "이 대시보드를 벗어나지 않고 선택한 통합, 엔터티, 방향에 대한 반복 일정을 저장하세요.",
26
+ "data_sync.dashboard.schedule.enabled": "일정 활성화됨",
27
+ "data_sync.dashboard.schedule.enabledHelp": "일정 정의를 삭제하지 않고 반복 작업을 일시 중지합니다.",
28
+ "data_sync.dashboard.schedule.error": "반복 일정 저장에 실패했습니다",
29
+ "data_sync.dashboard.schedule.fullSync": "예약된 작업을 전체 동기화로 실행",
30
+ "data_sync.dashboard.schedule.fullSyncHelp": "활성화하면 모든 반복 실행이 저장된 커서 대신 처음부터 시작됩니다.",
31
+ "data_sync.dashboard.schedule.interval": "간격",
32
+ "data_sync.dashboard.schedule.intervalHelp": "예: 반복 간격으로 `1h`, `6h`, `24h`를 사용하세요.",
33
+ "data_sync.dashboard.schedule.intervalValue": "간격",
34
+ "data_sync.dashboard.schedule.invalidValue": "저장하기 전에 일정 값을 입력하세요.",
35
+ "data_sync.dashboard.schedule.lastRun": "마지막 예약 실행: {value}",
36
+ "data_sync.dashboard.schedule.neverRun": "저장되었지만 아직 완료된 예약 실행이 없습니다.",
37
+ "data_sync.dashboard.schedule.none": "이 대상에 대해 저장된 반복 일정이 아직 없습니다.",
38
+ "data_sync.dashboard.schedule.save": "반복 일정 저장",
39
+ "data_sync.dashboard.schedule.saving": "저장 중...",
40
+ "data_sync.dashboard.schedule.status.disabled": "반복 일정 일시 중지됨",
41
+ "data_sync.dashboard.schedule.status.enabled": "반복 일정 활성",
42
+ "data_sync.dashboard.schedule.status.none": "반복 일정 없음",
43
+ "data_sync.dashboard.schedule.status.shortDisabled": "일시 중지됨",
44
+ "data_sync.dashboard.schedule.status.shortEnabled": "예약됨",
45
+ "data_sync.dashboard.schedule.status.shortNone": "1회성",
46
+ "data_sync.dashboard.schedule.success": "반복 일정이 저장되었습니다",
47
+ "data_sync.dashboard.schedule.timezone": "표준 시간대",
48
+ "data_sync.dashboard.schedule.title": "반복 일정",
49
+ "data_sync.dashboard.schedule.type": "일정 유형",
50
+ "data_sync.dashboard.searchPlaceholder": "통합, 엔터티 유형, 상태 또는 실행 ID로 검색",
51
+ "data_sync.dashboard.start.batchSize": "배치 크기",
52
+ "data_sync.dashboard.start.description": "이 페이지에서 동기화 대상을 선택하고, 임시 실행을 시작하거나, 동일한 엔터티와 방향에 대한 반복 일정을 저장하세요.",
53
+ "data_sync.dashboard.start.error": "동기화 실행을 시작하지 못했습니다",
54
+ "data_sync.dashboard.start.eyebrow": "한 번만 실행하거나 반복 실행 유지",
55
+ "data_sync.dashboard.start.fullSync": "전체 동기화로 실행",
56
+ "data_sync.dashboard.start.fullSyncHelp": "저장된 커서를 무시하고 이 실행에 대해 전체 소스를 다시 처리합니다.",
57
+ "data_sync.dashboard.start.invalidBatchSize": "배치 크기는 1에서 1000 사이여야 합니다.",
58
+ "data_sync.dashboard.start.providerManaged": "이 통합은 자체 설정 흐름에서 동기화 실행을 시작합니다. 계속하려면 통합 설정 페이지를 여세요.",
59
+ "data_sync.dashboard.start.runNowDescription": "다음 즉시 동기화에 사용하세요. 배치 크기와 전체 동기화 모드는 이 수동 실행에만 적용됩니다.",
60
+ "data_sync.dashboard.start.runNowFootnote": "수동 실행은 즉시 진행 상황을 표시하며 시작 후 실행 상세 페이지로 이동합니다.",
61
+ "data_sync.dashboard.start.runNowTitle": "지금 한 번 실행",
62
+ "data_sync.dashboard.start.status.credentialsMissing": "자격 증명 누락",
63
+ "data_sync.dashboard.start.status.credentialsReady": "자격 증명 준비됨",
64
+ "data_sync.dashboard.start.status.disabled": "통합 비활성화됨",
65
+ "data_sync.dashboard.start.status.enabled": "통합 활성화됨",
66
+ "data_sync.dashboard.start.submit": "동기화 시작",
67
+ "data_sync.dashboard.start.success": "동기화 실행이 시작되었습니다",
68
+ "data_sync.dashboard.start.title": "동기화 시작 또는 예약",
69
+ "data_sync.dashboard.status.cancelled": "취소됨",
70
+ "data_sync.dashboard.status.completed": "완료됨",
71
+ "data_sync.dashboard.status.failed": "실패",
72
+ "data_sync.dashboard.status.paused": "일시 중지됨",
73
+ "data_sync.dashboard.status.pending": "대기 중",
74
+ "data_sync.dashboard.status.running": "실행 중",
75
+ "data_sync.dashboard.title": "동기화 실행",
76
+ "data_sync.integrationTab.columns.actions": "작업",
77
+ "data_sync.integrationTab.columns.lastRun": "마지막 실행",
78
+ "data_sync.integrationTab.columns.value": "값",
79
+ "data_sync.integrationTab.credentialsMissing": "동기화를 시작하기 전에 자격 증명을 구성하세요.",
80
+ "data_sync.integrationTab.credentialsMissingNotice": "자격 증명이 아직 없습니다. 원한다면 먼저 일정을 저장할 수 있지만, 자격 증명이 구성될 때까지 수동 및 예약 실행은 실패합니다.",
81
+ "data_sync.integrationTab.description": "통합 상세 페이지에서 직접 일회성 동기화를 실행하거나 지원되는 모든 엔터티에 대한 반복 일정을 저장하세요.",
82
+ "data_sync.integrationTab.empty": "이 제공업체는 아직 예약 가능한 동기화 엔터티를 제공하지 않습니다.",
83
+ "data_sync.integrationTab.fullSyncShort": "전체",
84
+ "data_sync.integrationTab.integrationDisabled": "동기화를 시작하기 전에 통합을 활성화하세요.",
85
+ "data_sync.integrationTab.integrationDisabledNotice": "통합이 비활성화되어 있습니다. 지금 일정을 저장할 수 있지만 통합이 활성화될 때까지 실행이 차단됩니다.",
86
+ "data_sync.integrationTab.loadError": "동기화 일정을 불러오지 못했습니다.",
87
+ "data_sync.integrationTab.notAvailable": "이 통합은 데이터 동기화 제공업체로 등록되어 있지 않습니다.",
88
+ "data_sync.integrationTab.providerManaged": "이 통합은 제공업체별 설정 흐름에서 시작하세요.",
89
+ "data_sync.integrationTab.providerManagedNotice": "이 제공업체는 실행을 시작하기 전에 자체 설정 흐름이 필요합니다. 일반 일정 대신 이 페이지의 제공업체 탭을 사용하세요.",
90
+ "data_sync.integrationTab.refresh": "새로고침",
91
+ "data_sync.integrationTab.runError": "동기화 시작에 실패했습니다.",
92
+ "data_sync.integrationTab.runNowHelp": "지금 실행은 같은 행의 전체 동기화 체크박스를 사용하며 Data Sync에서 즉시 진행 상황 추적을 시작합니다.",
93
+ "data_sync.integrationTab.runNowTitle": "수동 실행",
94
+ "data_sync.integrationTab.runStarted": "동기화 실행이 시작되었습니다.",
95
+ "data_sync.integrationTab.start": "지금 실행",
96
+ "data_sync.integrationTab.starting": "시작하는 중...",
97
+ "data_sync.integrationTab.title": "동기화 일정",
98
+ "data_sync.nav.title": "데이터 동기화",
99
+ "data_sync.runs.detail.back": "동기화 실행으로 돌아가기",
100
+ "data_sync.runs.detail.cancel": "취소",
101
+ "data_sync.runs.detail.cancelError": "동기화 실행 취소에 실패했습니다",
102
+ "data_sync.runs.detail.cancelSuccess": "동기화 실행이 취소되었습니다",
103
+ "data_sync.runs.detail.counters.created": "생성됨",
104
+ "data_sync.runs.detail.counters.failed": "실패",
105
+ "data_sync.runs.detail.counters.skipped": "건너뜀",
106
+ "data_sync.runs.detail.counters.updated": "업데이트됨",
107
+ "data_sync.runs.detail.error": "오류",
108
+ "data_sync.runs.detail.loadError": "동기화 실행을 불러오지 못했습니다",
109
+ "data_sync.runs.detail.logs": "작업 로그",
110
+ "data_sync.runs.detail.logs.level": "레벨",
111
+ "data_sync.runs.detail.logs.message": "메시지",
112
+ "data_sync.runs.detail.logs.time": "시간",
113
+ "data_sync.runs.detail.noLogs": "로그 항목 없음",
114
+ "data_sync.runs.detail.notFound": "동기화 실행을 찾을 수 없습니다.",
115
+ "data_sync.runs.detail.progress": "진행 상황",
116
+ "data_sync.runs.detail.progress.batches": "{count}개 배치",
117
+ "data_sync.runs.detail.progress.eta": "{eta} 남음",
118
+ "data_sync.runs.detail.progress.itemsProcessed": "{count}개 항목 처리됨",
119
+ "data_sync.runs.detail.progress.itemsProcessedTotal": "{total}개 중 {processed}개 항목 처리됨",
120
+ "data_sync.runs.detail.progress.percent": "{percent}% 완료",
121
+ "data_sync.runs.detail.retry": "재시도",
122
+ "data_sync.runs.detail.retryError": "동기화 실행 재시도에 실패했습니다",
123
+ "data_sync.runs.detail.retrySuccess": "동기화 실행이 재시도되었습니다",
124
+ "data_sync.runs.detail.title": "동기화 실행"
125
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "design_system.entries.button.description": "전체 DS 변형 및 크기 규모를 갖춘 기본 작업 트리거입니다.",
3
+ "design_system.entries.buttonGroup.description": "하나의 테두리를 공유하는 관련 작업 버튼 그룹에 합류했습니다.",
4
+ "design_system.entries.fancyButton.description": "눈에 띄는 작업을 위한 그라데이션 마케팅 등급 버튼입니다.",
5
+ "design_system.entries.iconButton.description": "사각형 아이콘 전용 버튼; 항상 aria-label이 필요합니다.",
6
+ "design_system.entries.linkButton.description": "DS 컨트롤 스타일의 인라인 텍스트 링크입니다.",
7
+ "design_system.entries.socialButton.description": "소셜 로그인을 위한 브랜드 색상의 인증 버튼입니다.",
8
+ "design_system.families.banners": "배너 및 설명선",
9
+ "design_system.families.buttons": "버튼",
10
+ "design_system.families.charts": "차트",
11
+ "design_system.families.dates": "날짜 및 시간",
12
+ "design_system.families.detail": "세부 섹션",
13
+ "design_system.families.display": "데이터 표시",
14
+ "design_system.families.feedback": "피드백",
15
+ "design_system.families.filters": "필터",
16
+ "design_system.families.foundations": "기초",
17
+ "design_system.families.icons": "아이콘",
18
+ "design_system.families.inputs": "입력",
19
+ "design_system.families.messages": "메시지",
20
+ "design_system.families.navigation": "항해",
21
+ "design_system.families.notifications": "알림",
22
+ "design_system.families.overlays": "오버레이",
23
+ "design_system.families.scaffolding": "페이지 비계",
24
+ "design_system.families.schedule": "일정",
25
+ "design_system.gallery.copied": "스니펫이 클립보드에 복사되었습니다.",
26
+ "design_system.gallery.copy": "코드 복사",
27
+ "design_system.gallery.copyFailed": "스니펫을 복사할 수 없습니다.",
28
+ "design_system.gallery.familiesGroup": "가족",
29
+ "design_system.gallery.familyContents": "이 제품군의 구성요소",
30
+ "design_system.gallery.iconCopied": "복사됨: {snippet}",
31
+ "design_system.gallery.iconCopyJsx": "JSX 복사(lucide-react)",
32
+ "design_system.gallery.iconCopyMeta": "page.meta 아이콘의 이름 복사",
33
+ "design_system.gallery.iconCountAll": "{total} 아이콘",
34
+ "design_system.gallery.iconCountFiltered": "{total} 아이콘의 {visible}",
35
+ "design_system.gallery.iconSearchPlaceholder": "필터 아이콘…",
36
+ "design_system.gallery.loadFailed": "이 가족을 로드할 수 없습니다.",
37
+ "design_system.gallery.noResults": "검색어와 일치하는 구성요소가 없습니다.",
38
+ "design_system.gallery.openInFigma": "Figma에서 열기",
39
+ "design_system.gallery.retry": "다시 해 보다",
40
+ "design_system.gallery.samples.addresses.empty": "아직 주소가 없습니다",
41
+ "design_system.gallery.samples.addresses.emptyTitle": "첫 번째 주소를 추가하세요",
42
+ "design_system.gallery.samples.addresses.title": "주소",
43
+ "design_system.gallery.samples.attachments.description": "이 레코드에 연결된 파일",
44
+ "design_system.gallery.samples.attachments.title": "첨부 파일",
45
+ "design_system.gallery.samples.billingDetails": "청구 정보",
46
+ "design_system.gallery.samples.createdAt": "{date}에 생성됨",
47
+ "design_system.gallery.samples.entityType": "회사",
48
+ "design_system.gallery.samples.listDescription": "조직에서 사용할 수 있는 통화",
49
+ "design_system.gallery.samples.notes.add": "메모 추가",
50
+ "design_system.gallery.samples.notes.empty": "아직 메모가 없습니다",
51
+ "design_system.gallery.samples.notes.emptyTitle": "첫 번째 메모를 남기세요",
52
+ "design_system.gallery.searchPlaceholder": "구성요소 검색…",
53
+ "design_system.gallery.usageDo": "하다",
54
+ "design_system.gallery.usageDont": "하지 않다",
55
+ "design_system.gallery.viewDocs": "문서 보기",
56
+ "design_system.nav.group": "개발자",
57
+ "design_system.nav.title": "디자인 시스템"
58
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "dictionaries.config.delete.confirm": "사전 \"{{name}}\"을(를) 삭제하시겠습니까?",
3
+ "dictionaries.config.dialog.cancel": "취소",
4
+ "dictionaries.config.dialog.createTitle": "사전 생성",
5
+ "dictionaries.config.dialog.descriptionLabel": "설명",
6
+ "dictionaries.config.dialog.descriptionPlaceholder": "이 사전이 어떻게 사용되는지 설명하세요 (선택 사항).",
7
+ "dictionaries.config.dialog.editTitle": "사전 편집",
8
+ "dictionaries.config.dialog.entrySortModeHelp": "사전 항목 API와 드롭다운에서 반환되는 순서를 제어합니다.",
9
+ "dictionaries.config.dialog.entrySortModeLabel": "항목 정렬 순서",
10
+ "dictionaries.config.dialog.keyErrorLength": "키는 최대 100자까지 가능합니다.",
11
+ "dictionaries.config.dialog.keyErrorPattern": "소문자, 숫자, 하이픈 또는 밑줄을 사용하세요.",
12
+ "dictionaries.config.dialog.keyErrorRequired": "키는 필수입니다.",
13
+ "dictionaries.config.dialog.keyHint": "소문자, 숫자, 하이픈 또는 밑줄을 사용하세요.",
14
+ "dictionaries.config.dialog.keyLabel": "키",
15
+ "dictionaries.config.dialog.keyPlaceholder": "slug_name",
16
+ "dictionaries.config.dialog.nameErrorRequired": "이름은 필수입니다.",
17
+ "dictionaries.config.dialog.nameLabel": "이름",
18
+ "dictionaries.config.dialog.namePlaceholder": "표시 이름",
19
+ "dictionaries.config.dialog.save": "저장",
20
+ "dictionaries.config.entries.actions.add": "항목 추가",
21
+ "dictionaries.config.entries.actions.refresh": "새로고침",
22
+ "dictionaries.config.entries.actions.translate": "번역",
23
+ "dictionaries.config.entries.appearance.none": "없음",
24
+ "dictionaries.config.entries.columns.actions": "작업",
25
+ "dictionaries.config.entries.columns.appearance": "외형",
26
+ "dictionaries.config.entries.columns.label": "라벨",
27
+ "dictionaries.config.entries.columns.value": "값",
28
+ "dictionaries.config.entries.delete.confirm": "\"{{value}}\"을(를) 삭제하시겠습니까?",
29
+ "dictionaries.config.entries.dialog.addTitle": "사전 항목 추가",
30
+ "dictionaries.config.entries.dialog.cancel": "취소",
31
+ "dictionaries.config.entries.dialog.colorClear": "색상 제거",
32
+ "dictionaries.config.entries.dialog.colorHelp": "이 항목의 강조 색상을 선택하세요.",
33
+ "dictionaries.config.entries.dialog.colorLabel": "색상",
34
+ "dictionaries.config.entries.dialog.editTitle": "사전 항목 편집",
35
+ "dictionaries.config.entries.dialog.iconBrowse": "아이콘 및 이모지 찾아보기",
36
+ "dictionaries.config.entries.dialog.iconClear": "아이콘 제거",
37
+ "dictionaries.config.entries.dialog.iconLabel": "아이콘 또는 이모지",
38
+ "dictionaries.config.entries.dialog.iconPlaceholder": "이모지나 아이콘 토큰을 입력하세요.",
39
+ "dictionaries.config.entries.dialog.iconSearchEmpty": "검색과 일치하는 아이콘이 없습니다.",
40
+ "dictionaries.config.entries.dialog.iconSearchPlaceholder": "아이콘 또는 이모지 검색…",
41
+ "dictionaries.config.entries.dialog.iconSuggestions": "제안",
42
+ "dictionaries.config.entries.dialog.labelLabel": "라벨",
43
+ "dictionaries.config.entries.dialog.labelPlaceholder": "UI에 표시되는 이름",
44
+ "dictionaries.config.entries.dialog.previewEmpty": "선택된 외형이 없습니다",
45
+ "dictionaries.config.entries.dialog.save": "저장",
46
+ "dictionaries.config.entries.dialog.saveShortcut": "⌘/Ctrl + Enter",
47
+ "dictionaries.config.entries.dialog.valueLabel": "값",
48
+ "dictionaries.config.entries.empty": "아직 항목이 없습니다.",
49
+ "dictionaries.config.entries.error.delete": "사전 항목 삭제에 실패했습니다.",
50
+ "dictionaries.config.entries.error.load": "사전 항목을 불러오지 못했습니다.",
51
+ "dictionaries.config.entries.error.required": "값은 필수입니다.",
52
+ "dictionaries.config.entries.error.save": "사전 항목 저장에 실패했습니다.",
53
+ "dictionaries.config.entries.loading": "항목을 불러오는 중…",
54
+ "dictionaries.config.entries.placeholder": "항목을 관리할 사전을 선택하세요.",
55
+ "dictionaries.config.entries.readOnly": "상속된 사전은 상위 조직에서 관리됩니다.",
56
+ "dictionaries.config.entries.readOnlyActions": "상위 조직에서 관리됨",
57
+ "dictionaries.config.entries.subtitle": "이 사전의 재사용 가능한 값과 외형을 관리합니다.",
58
+ "dictionaries.config.entries.success.create": "사전 항목이 생성되었습니다.",
59
+ "dictionaries.config.entries.success.delete": "사전 항목이 삭제되었습니다.",
60
+ "dictionaries.config.entries.success.update": "사전 항목이 수정되었습니다.",
61
+ "dictionaries.config.error.delete": "사전 삭제에 실패했습니다.",
62
+ "dictionaries.config.error.inheritedManage": "상속된 사전은 상위 조직에서 관리해야 합니다.",
63
+ "dictionaries.config.error.load": "사전을 불러오지 못했습니다.",
64
+ "dictionaries.config.error.required": "키와 이름은 필수입니다.",
65
+ "dictionaries.config.error.save": "사전 저장에 실패했습니다.",
66
+ "dictionaries.config.error.system": "시스템 사전은 삭제할 수 없습니다.",
67
+ "dictionaries.config.list.add": "새 사전",
68
+ "dictionaries.config.list.empty": "아직 사전이 없습니다. 시작하려면 하나를 생성하세요.",
69
+ "dictionaries.config.list.inherited": "상속됨",
70
+ "dictionaries.config.list.loading": "사전을 불러오는 중…",
71
+ "dictionaries.config.list.title": "사전",
72
+ "dictionaries.config.nav.title": "사전",
73
+ "dictionaries.config.sortModes.createdAtAsc": "오래된 순",
74
+ "dictionaries.config.sortModes.createdAtDesc": "최신 순",
75
+ "dictionaries.config.sortModes.labelAsc": "가나다 순",
76
+ "dictionaries.config.sortModes.labelDesc": "가나다 역순",
77
+ "dictionaries.config.sortModes.valueAsc": "값 오름차순",
78
+ "dictionaries.config.sortModes.valueDesc": "값 내림차순",
79
+ "dictionaries.config.success.create": "사전이 생성되었습니다.",
80
+ "dictionaries.config.success.delete": "사전이 삭제되었습니다.",
81
+ "dictionaries.config.success.update": "사전이 수정되었습니다.",
82
+ "dictionaries.customFields.allowInlineCreate": "양식 내 인라인 생성 허용",
83
+ "dictionaries.customFields.allowMultiple": "여러 항목 선택 허용",
84
+ "dictionaries.customFields.defaultValue": "기본값",
85
+ "dictionaries.customFields.defaultValueMultiUnavailable": "다중 선택 사전 필드에는 기본값을 사용할 수 없습니다.",
86
+ "dictionaries.customFields.defaultValueNone": "기본값 없음",
87
+ "dictionaries.customFields.defaultValueStale": "기본 항목을 찾을 수 없습니다 — 삭제되었거나 이름이 변경되었을 수 있습니다.",
88
+ "dictionaries.customFields.dictionaryLabel": "사전 소스",
89
+ "dictionaries.customFields.dictionaryPlaceholder": "사전 선택",
90
+ "dictionaries.customFields.empty": "아직 사용 가능한 사전이 없습니다. 먼저 하나를 생성하세요.",
91
+ "dictionaries.customFields.errorLoad": "사전을 불러오지 못했습니다.",
92
+ "dictionaries.customFields.inactive": "비활성",
93
+ "dictionaries.customFields.inlineCreateSingleOnly": "인라인 생성은 단일 항목 사전 필드에만 사용할 수 있습니다.",
94
+ "dictionaries.customFields.loading": "사전을 불러오는 중…",
95
+ "dictionaries.customFields.manageLink": "사전 관리",
96
+ "dictionaries.customFields.selectedHint": "이 사전의 항목이 필드를 채웁니다.",
97
+ "dictionaries.customFields.selector.add": "항목 추가",
98
+ "dictionaries.customFields.selector.dialogDescription": "새 항목을 생성하여 여러 레코드에서 재사용하세요.",
99
+ "dictionaries.customFields.selector.placeholder": "항목 선택",
100
+ "dictionaries.entries.audit.create": "사전 항목 추가",
101
+ "dictionaries.entries.audit.delete": "사전 항목 삭제",
102
+ "dictionaries.entries.audit.reorder": "사전 항목 순서 변경",
103
+ "dictionaries.entries.audit.set_default": "기본 사전 항목 설정",
104
+ "dictionaries.entries.audit.update": "사전 항목 수정",
105
+ "dictionaries.entries.create": "사전 항목 추가",
106
+ "dictionaries.entries.delete": "사전 항목 삭제",
107
+ "dictionaries.entries.update": "사전 항목 수정",
108
+ "dictionaries.errors.currency_protected": "통화 사전은 필수이며 수정하거나 삭제할 수 없습니다.",
109
+ "dictionaries.errors.duplicate": "이 키를 가진 사전이 이미 존재합니다",
110
+ "dictionaries.errors.entry_create_failed": "사전 항목 생성에 실패했습니다.",
111
+ "dictionaries.errors.entry_duplicate": "이 값을 가진 항목이 이미 존재합니다",
112
+ "dictionaries.errors.entry_not_found": "사전 항목을 찾을 수 없습니다",
113
+ "dictionaries.errors.entry_required": "값은 필수입니다",
114
+ "dictionaries.errors.entry_update_failed": "사전 항목 수정에 실패했습니다.",
115
+ "dictionaries.errors.invalid_key": "소문자, 숫자, 하이픈 또는 밑줄을 사용하세요.",
116
+ "dictionaries.errors.not_found": "사전을 찾을 수 없습니다",
117
+ "dictionaries.errors.organization_required": "조직 컨텍스트가 필요합니다",
118
+ "dictionaries.errors.unauthorized": "권한이 없습니다",
119
+ "dictionaries.form.colorClear": "색상 지우기",
120
+ "dictionaries.form.colorHelp": "이 항목의 강조 색상을 선택하세요.",
121
+ "dictionaries.form.colorLabel": "색상",
122
+ "dictionaries.form.iconClearLabel": "아이콘 지우기",
123
+ "dictionaries.form.iconLabel": "아이콘",
124
+ "dictionaries.form.iconPickerTriggerLabel": "아이콘 찾아보기",
125
+ "dictionaries.form.iconPlaceholder": "이모지나 아이콘 이름을 입력하세요",
126
+ "dictionaries.form.iconSearchEmptyLabel": "검색과 일치하는 아이콘이 없습니다",
127
+ "dictionaries.form.iconSearchPlaceholder": "아이콘 또는 이모지 검색…",
128
+ "dictionaries.form.iconSuggestionsLabel": "제안",
129
+ "dictionaries.form.previewEmptyLabel": "선택된 외형이 없습니다"
130
+ }