@sdcorejs/angular 20.1.3 → 20.1.5

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 (168) hide show
  1. package/README.md +19 -14
  2. package/components/audit-diff/index.d.ts +74 -0
  3. package/components/badge/index.d.ts +1 -1
  4. package/components/breadcrumb/index.d.ts +53 -0
  5. package/components/data-state/index.d.ts +44 -0
  6. package/components/document-builder/index.d.ts +5 -5
  7. package/components/form-generic/index.d.ts +67 -104
  8. package/components/import-excel/index.d.ts +4 -14
  9. package/components/index.d.ts +4 -0
  10. package/components/job-progress/index.d.ts +38 -0
  11. package/components/mini-editor/index.d.ts +9 -9
  12. package/components/modal/index.d.ts +7 -1
  13. package/components/preview/index.d.ts +181 -28
  14. package/components/side-drawer/index.d.ts +7 -1
  15. package/components/tab/index.d.ts +9 -2
  16. package/components/table/index.d.ts +8 -7
  17. package/components/tree/index.d.ts +24 -2
  18. package/components/upload-file/index.d.ts +5 -4
  19. package/directives/index.d.ts +10 -8
  20. package/fesm2022/sdcorejs-angular-components-anchor.mjs +14 -14
  21. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  22. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs +332 -0
  23. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs.map +1 -0
  24. package/fesm2022/sdcorejs-angular-components-badge.mjs +1 -0
  25. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  26. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs +121 -0
  27. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs.map +1 -0
  28. package/fesm2022/sdcorejs-angular-components-data-state.mjs +68 -0
  29. package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -0
  30. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +18 -23
  31. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
  32. package/fesm2022/sdcorejs-angular-components-editor.mjs +6 -4
  33. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  34. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +495 -838
  35. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  36. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +24 -34
  37. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  38. package/fesm2022/sdcorejs-angular-components-job-progress.mjs +97 -0
  39. package/fesm2022/sdcorejs-angular-components-job-progress.mjs.map +1 -0
  40. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +10 -20
  41. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
  42. package/fesm2022/sdcorejs-angular-components-modal.mjs +61 -4
  43. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  44. package/fesm2022/sdcorejs-angular-components-preview.mjs +1438 -218
  45. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  46. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +4 -4
  47. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  48. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +1 -1
  49. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  50. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +39 -2
  51. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  52. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +16 -22
  53. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  54. package/fesm2022/sdcorejs-angular-components-tab.mjs +48 -4
  55. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  56. package/fesm2022/sdcorejs-angular-components-table.mjs +96 -63
  57. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  58. package/fesm2022/sdcorejs-angular-components-tree.mjs +186 -17
  59. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  60. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +15 -22
  61. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  62. package/fesm2022/sdcorejs-angular-components.mjs +4 -0
  63. package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
  64. package/fesm2022/sdcorejs-angular-directives.mjs +29 -41
  65. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  66. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +7 -7
  67. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  68. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +20 -83
  69. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  70. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +6 -3
  71. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  72. package/fesm2022/sdcorejs-angular-forms-chip.mjs +6 -3
  73. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  74. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +16 -13
  75. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  76. package/fesm2022/sdcorejs-angular-forms-date.mjs +42 -65
  77. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  78. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +51 -66
  79. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  80. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +384 -0
  81. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -0
  82. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +1 -1
  83. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  84. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +7 -5
  85. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  86. package/fesm2022/sdcorejs-angular-forms-input.mjs +290 -56
  87. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  88. package/fesm2022/sdcorejs-angular-forms-models.mjs +155 -2
  89. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  90. package/fesm2022/sdcorejs-angular-forms-radio.mjs +44 -78
  91. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  92. package/fesm2022/sdcorejs-angular-forms-select.mjs +6 -20
  93. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  94. package/fesm2022/sdcorejs-angular-forms-switch.mjs +19 -76
  95. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  96. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +6 -5
  97. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  98. package/fesm2022/sdcorejs-angular-forms-time-range.mjs +280 -0
  99. package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -0
  100. package/fesm2022/sdcorejs-angular-forms-time.mjs +310 -0
  101. package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -0
  102. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +210 -0
  103. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -0
  104. package/fesm2022/sdcorejs-angular-forms.mjs +73 -4
  105. package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
  106. package/fesm2022/sdcorejs-angular-i18n.mjs +375 -10
  107. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  108. package/fesm2022/sdcorejs-angular-interceptors.mjs +12 -17
  109. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  110. package/fesm2022/sdcorejs-angular-modules-layout.mjs +994 -168
  111. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  112. package/fesm2022/sdcorejs-angular-pipes.mjs +5 -7
  113. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  114. package/fesm2022/sdcorejs-angular-services-api.mjs +407 -137
  115. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  116. package/fesm2022/sdcorejs-angular-services-cache.mjs +515 -105
  117. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  118. package/fesm2022/sdcorejs-angular-services-confirm.mjs +5 -7
  119. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  120. package/fesm2022/sdcorejs-angular-services-docx.mjs +7 -10
  121. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
  122. package/fesm2022/sdcorejs-angular-services-loading.mjs +339 -74
  123. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  124. package/fesm2022/sdcorejs-angular-services-notify.mjs +7 -10
  125. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  126. package/fesm2022/sdcorejs-angular-services-persistence.mjs +899 -0
  127. package/fesm2022/sdcorejs-angular-services-persistence.mjs.map +1 -0
  128. package/fesm2022/sdcorejs-angular-services-storage.mjs +324 -122
  129. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  130. package/fesm2022/sdcorejs-angular-services-task.mjs +389 -0
  131. package/fesm2022/sdcorejs-angular-services-task.mjs.map +1 -0
  132. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs +255 -0
  133. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs.map +1 -0
  134. package/fesm2022/sdcorejs-angular-services-viewport.mjs +76 -0
  135. package/fesm2022/sdcorejs-angular-services-viewport.mjs.map +1 -0
  136. package/fesm2022/sdcorejs-angular-services.mjs +4 -0
  137. package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
  138. package/forms/autocomplete/index.d.ts +3 -4
  139. package/forms/checkbox/index.d.ts +4 -8
  140. package/forms/date/index.d.ts +2 -2
  141. package/forms/date-range/index.d.ts +6 -7
  142. package/forms/datetime/index.d.ts +2 -2
  143. package/forms/entity-picker/index.d.ts +128 -0
  144. package/forms/index.d.ts +15 -5
  145. package/forms/input/index.d.ts +74 -11
  146. package/forms/input-number/index.d.ts +1 -1
  147. package/forms/models/index.d.ts +86 -3
  148. package/forms/radio/index.d.ts +12 -8
  149. package/forms/switch/index.d.ts +4 -7
  150. package/forms/time/index.d.ts +117 -0
  151. package/forms/time-range/index.d.ts +98 -0
  152. package/forms/tree-select/index.d.ts +76 -0
  153. package/i18n/index.d.ts +72 -2
  154. package/interceptors/index.d.ts +5 -6
  155. package/modules/layout/index.d.ts +354 -17
  156. package/package.json +49 -1
  157. package/pipes/index.d.ts +2 -2
  158. package/services/api/index.d.ts +68 -24
  159. package/services/cache/index.d.ts +52 -16
  160. package/services/confirm/index.d.ts +3 -2
  161. package/services/docx/index.d.ts +2 -3
  162. package/services/index.d.ts +4 -0
  163. package/services/loading/index.d.ts +16 -8
  164. package/services/persistence/index.d.ts +159 -0
  165. package/services/storage/index.d.ts +26 -8
  166. package/services/task/index.d.ts +104 -0
  167. package/services/unsaved-changes/index.d.ts +83 -0
  168. package/services/viewport/index.d.ts +42 -0
@@ -116,6 +116,8 @@ const EN_MESSAGES = {
116
116
  'core.form.input.maxlength': 'Maximum characters: {max}',
117
117
  'core.form.input.invalid-pattern': 'Invalid format',
118
118
  'core.form.input.exceeded': 'Exceeded maximum characters',
119
+ 'core.form.input.mask-incomplete': 'The value is incomplete',
120
+ 'core.form.input.mask-invalid': 'The value contains invalid characters',
119
121
  // ---- Forms: autocomplete ----
120
122
  'core.form.autocomplete.required': 'Please enter information',
121
123
  // ---- Forms: chip ----
@@ -145,6 +147,65 @@ const EN_MESSAGES = {
145
147
  'core.form.datetime.invalid-format': 'Invalid format',
146
148
  'core.form.datetime.now': 'Now',
147
149
  'core.form.datetime.confirm': 'Confirm',
150
+ // ---- Forms: entity-picker / tree-select ----
151
+ 'core.form.entity-picker.placeholder': 'Select an entity',
152
+ 'core.form.entity-picker.modal-title': 'Select entity',
153
+ 'core.form.entity-picker.value': 'Value',
154
+ 'core.form.entity-picker.clear': 'Clear selection',
155
+ 'core.form.entity-picker.add': 'Add',
156
+ 'core.form.entity-picker.cancel': 'Cancel',
157
+ 'core.form.entity-picker.apply': 'Apply',
158
+ 'core.form.tree-select.placeholder': 'Select a tree item',
159
+ 'core.form.tree-select.modal-title': 'Select tree item',
160
+ 'core.form.tree-select.clear': 'Clear selection',
161
+ 'core.form.tree-select.search': 'Search tree',
162
+ 'core.form.tree-select.cancel': 'Cancel',
163
+ 'core.form.tree-select.apply': 'Apply',
164
+ 'core.component.tree.retry': 'Retry',
165
+ 'core.service.unsaved-changes.message': 'You have unsaved changes. Discard them and continue?',
166
+ 'core.component.job-progress.status.idle': 'Ready',
167
+ 'core.component.job-progress.status.queued': 'Queued',
168
+ 'core.component.job-progress.status.running': 'In progress',
169
+ 'core.component.job-progress.status.succeeded': 'Completed',
170
+ 'core.component.job-progress.status.failed': 'Failed',
171
+ 'core.component.job-progress.status.cancelled': 'Cancelled',
172
+ 'core.component.job-progress.cancel': 'Cancel',
173
+ 'core.component.job-progress.retry': 'Retry',
174
+ 'core.component.audit-diff.label': 'Audit changes',
175
+ 'core.component.audit-diff.field': 'Field',
176
+ 'core.component.audit-diff.before': 'Before',
177
+ 'core.component.audit-diff.after': 'After',
178
+ 'core.component.audit-diff.empty': 'No changes',
179
+ 'core.component.audit-diff.kind.added': 'Added',
180
+ 'core.component.audit-diff.kind.removed': 'Removed',
181
+ 'core.component.audit-diff.kind.changed': 'Changed',
182
+ 'core.component.audit-diff.kind.unchanged': 'Unchanged',
183
+ 'core.component.audit-diff.value.label': 'Value',
184
+ 'core.component.audit-diff.value.not-set': 'Not set',
185
+ 'core.component.audit-diff.value.undefined': 'Undefined',
186
+ 'core.component.audit-diff.value.null': 'Null',
187
+ 'core.component.audit-diff.value.true': 'Yes',
188
+ 'core.component.audit-diff.value.false': 'No',
189
+ // ---- Forms: time ----
190
+ 'core.form.time.required': 'Please enter a time',
191
+ 'core.form.time.invalid': 'Enter a valid time in HH:mm format',
192
+ 'core.form.time.min': 'Time must not be earlier than {min}',
193
+ 'core.form.time.max': 'Time must not be later than {max}',
194
+ 'core.form.time.step': 'Time must align to a {step}-minute interval',
195
+ 'core.form.time.open-picker': 'Open time picker',
196
+ 'core.form.time.confirm': 'Confirm',
197
+ 'core.form.time.clear': 'Clear time',
198
+ // ---- Forms: time-range ----
199
+ 'core.form.time-range.required': 'Please enter both start and end times',
200
+ 'core.form.time-range.incomplete': 'Enter both times or enable an open-ended range',
201
+ 'core.form.time-range.range': 'Start time must not be later than end time',
202
+ 'core.form.time-range.invalid': 'Enter valid times in HH:mm format',
203
+ 'core.form.time-range.min': 'Times must not be earlier than {min}',
204
+ 'core.form.time-range.max': 'Times must not be later than {max}',
205
+ 'core.form.time-range.step': 'Times must align to a {step}-minute interval',
206
+ 'core.form.time-range.from': 'From',
207
+ 'core.form.time-range.to': 'To',
208
+ 'core.form.time-range.clear': 'Clear time range',
148
209
  // ---- Forms: time-spinner ----
149
210
  'core.form.time-spinner.hour': 'Hour',
150
211
  'core.form.time-spinner.minute': 'Minute',
@@ -284,6 +345,15 @@ const EN_MESSAGES = {
284
345
  'core.component.form-builder.show-less': 'Show less',
285
346
  'core.component.inform.show-more': 'Show more',
286
347
  'core.component.inform.show-less': 'Show less',
348
+ 'core.component.data-state.loading.title': 'Loading',
349
+ 'core.component.data-state.loading.message': 'Please wait while the data is being loaded.',
350
+ 'core.component.data-state.empty.title': 'No data',
351
+ 'core.component.data-state.empty.message': 'There is no data to display yet.',
352
+ 'core.component.data-state.error.title': 'Unable to load data',
353
+ 'core.component.data-state.error.message': 'An error occurred. Please try again.',
354
+ 'core.component.data-state.forbidden.title': 'Access denied',
355
+ 'core.component.data-state.forbidden.message': 'You do not have permission to view this content.',
356
+ 'core.component.data-state.retry': 'Try again',
287
357
  'core.component.form-builder.row-overflow': 'Cannot move to this row because the total size exceeds 12 columns',
288
358
  'core.component.form-builder.upload-source.all': 'All',
289
359
  'core.component.form-builder.upload-source.photo-library': 'Pick from library',
@@ -404,14 +474,13 @@ const EN_MESSAGES = {
404
474
  'core.component.preview-pdf.error.unknown.body': 'Please retry or download the original file to view it.',
405
475
  'core.component.preview-pdf.error.retry': 'Retry',
406
476
  'core.component.preview-pdf.error.download-raw': 'Download original',
407
- 'core.component.preview-pdf.deferred.outline': 'Outline will be added in a future version.',
408
- 'core.component.preview-pdf.deferred.search': 'Search will be added in a future version.',
409
477
  'core.component.preview-pdf.search': 'Search',
410
478
  'core.component.preview-pdf.search-placeholder': 'Search in document...',
411
479
  'core.component.preview-pdf.search-case': 'Match case',
412
480
  'core.component.preview-pdf.search-whole': 'Whole word',
413
481
  'core.component.preview-pdf.search-no-results': 'No results',
414
482
  'core.component.preview-pdf.search-results-count': '{count} results for "{term}"',
483
+ 'core.component.preview-pdf.search-truncated': 'Showing the first {count} matches. Refine your search to see fewer results.',
415
484
  'core.component.preview-pdf.search-prev': 'Previous match',
416
485
  'core.component.preview-pdf.search-next': 'Next match',
417
486
  'core.component.preview-pdf.search-close': 'Close search',
@@ -469,7 +538,11 @@ const EN_MESSAGES = {
469
538
  // ---- Module: layout (sidebar / user menu) ----
470
539
  'core.module.layout.user.change-password': 'Change password',
471
540
  'core.module.layout.user.logout': 'Sign out',
541
+ 'core.module.layout.user.update-profile': 'Update profile',
542
+ 'core.module.layout.user.setting': 'Settings',
543
+ 'core.module.layout.user.notification': 'Notifications',
472
544
  'core.module.layout.sidebar.search': 'Search',
545
+ 'core.module.layout.sidebar.toggle': 'Toggle sidebar',
473
546
  // ---- Module: layout (greeting + weekday) ----
474
547
  'core.module.layout.greeting.hello': 'Hello, {name}',
475
548
  'core.module.layout.weekday.0': 'Sunday',
@@ -612,6 +685,8 @@ const JA_MESSAGES = {
612
685
  'core.form.input.maxlength': '最大文字数: {max}',
613
686
  'core.form.input.invalid-pattern': '形式が正しくありません',
614
687
  'core.form.input.exceeded': '最大文字数を超えています',
688
+ 'core.form.input.mask-incomplete': '値が未完成です',
689
+ 'core.form.input.mask-invalid': '使用できない文字が含まれています',
615
690
  // ---- Forms: autocomplete ----
616
691
  'core.form.autocomplete.required': '入力してください',
617
692
  // ---- Forms: chip ----
@@ -641,6 +716,65 @@ const JA_MESSAGES = {
641
716
  'core.form.datetime.invalid-format': '形式が正しくありません',
642
717
  'core.form.datetime.now': '現在',
643
718
  'core.form.datetime.confirm': '確定',
719
+ // ---- Forms: entity-picker / tree-select ----
720
+ 'core.form.entity-picker.placeholder': 'エンティティを選択',
721
+ 'core.form.entity-picker.modal-title': 'エンティティを選択',
722
+ 'core.form.entity-picker.value': '値',
723
+ 'core.form.entity-picker.clear': '選択をクリア',
724
+ 'core.form.entity-picker.add': '追加',
725
+ 'core.form.entity-picker.cancel': 'キャンセル',
726
+ 'core.form.entity-picker.apply': '適用',
727
+ 'core.form.tree-select.placeholder': 'ツリー項目を選択',
728
+ 'core.form.tree-select.modal-title': 'ツリー項目を選択',
729
+ 'core.form.tree-select.clear': '選択をクリア',
730
+ 'core.form.tree-select.search': 'ツリーを検索',
731
+ 'core.form.tree-select.cancel': 'キャンセル',
732
+ 'core.form.tree-select.apply': '適用',
733
+ 'core.component.tree.retry': '再試行',
734
+ 'core.service.unsaved-changes.message': '未保存の変更があります。破棄して続行しますか?',
735
+ 'core.component.job-progress.status.idle': '準備完了',
736
+ 'core.component.job-progress.status.queued': '待機中',
737
+ 'core.component.job-progress.status.running': '処理中',
738
+ 'core.component.job-progress.status.succeeded': '完了',
739
+ 'core.component.job-progress.status.failed': '失敗',
740
+ 'core.component.job-progress.status.cancelled': 'キャンセル済み',
741
+ 'core.component.job-progress.cancel': 'キャンセル',
742
+ 'core.component.job-progress.retry': '再試行',
743
+ 'core.component.audit-diff.label': '監査変更',
744
+ 'core.component.audit-diff.field': '項目',
745
+ 'core.component.audit-diff.before': '変更前',
746
+ 'core.component.audit-diff.after': '変更後',
747
+ 'core.component.audit-diff.empty': '変更はありません',
748
+ 'core.component.audit-diff.kind.added': '追加',
749
+ 'core.component.audit-diff.kind.removed': '削除',
750
+ 'core.component.audit-diff.kind.changed': '変更',
751
+ 'core.component.audit-diff.kind.unchanged': '未変更',
752
+ 'core.component.audit-diff.value.label': '値',
753
+ 'core.component.audit-diff.value.not-set': '未設定',
754
+ 'core.component.audit-diff.value.undefined': '未定義',
755
+ 'core.component.audit-diff.value.null': 'Null',
756
+ 'core.component.audit-diff.value.true': 'はい',
757
+ 'core.component.audit-diff.value.false': 'いいえ',
758
+ // ---- Forms: time ----
759
+ 'core.form.time.required': '時刻を入力してください',
760
+ 'core.form.time.invalid': 'HH:mm形式の有効な時刻を入力してください',
761
+ 'core.form.time.min': '時刻は{min}以降にしてください',
762
+ 'core.form.time.max': '時刻は{max}以前にしてください',
763
+ 'core.form.time.step': '時刻は{step}分間隔で入力してください',
764
+ 'core.form.time.open-picker': '時刻選択を開く',
765
+ 'core.form.time.confirm': '確定',
766
+ 'core.form.time.clear': '時刻をクリア',
767
+ // ---- Forms: time-range ----
768
+ 'core.form.time-range.required': '開始時刻と終了時刻を入力してください',
769
+ 'core.form.time-range.incomplete': '両方の時刻を入力するか、オープン範囲を有効にしてください',
770
+ 'core.form.time-range.range': '開始時刻は終了時刻以前にしてください',
771
+ 'core.form.time-range.invalid': 'HH:mm形式の有効な時刻を入力してください',
772
+ 'core.form.time-range.min': '時刻は{min}以降にしてください',
773
+ 'core.form.time-range.max': '時刻は{max}以前にしてください',
774
+ 'core.form.time-range.step': '時刻は{step}分間隔で入力してください',
775
+ 'core.form.time-range.from': '開始',
776
+ 'core.form.time-range.to': '終了',
777
+ 'core.form.time-range.clear': '時間範囲をクリア',
644
778
  // ---- Forms: time-spinner ----
645
779
  'core.form.time-spinner.hour': '時',
646
780
  'core.form.time-spinner.minute': '分',
@@ -780,6 +914,15 @@ const JA_MESSAGES = {
780
914
  'core.component.form-builder.show-less': '折りたたむ',
781
915
  'core.component.inform.show-more': 'もっと見る',
782
916
  'core.component.inform.show-less': '折りたたむ',
917
+ 'core.component.data-state.loading.title': '読み込み中',
918
+ 'core.component.data-state.loading.message': 'データを読み込んでいます。しばらくお待ちください。',
919
+ 'core.component.data-state.empty.title': 'データがありません',
920
+ 'core.component.data-state.empty.message': '表示するデータはまだありません。',
921
+ 'core.component.data-state.error.title': 'データを読み込めません',
922
+ 'core.component.data-state.error.message': 'エラーが発生しました。もう一度お試しください。',
923
+ 'core.component.data-state.forbidden.title': 'アクセスが拒否されました',
924
+ 'core.component.data-state.forbidden.message': 'このコンテンツを表示する権限がありません。',
925
+ 'core.component.data-state.retry': '再試行',
783
926
  'core.component.form-builder.row-overflow': '合計サイズが12列を超えるため、この行に移動できません',
784
927
  'core.component.form-builder.upload-source.all': 'すべて',
785
928
  'core.component.form-builder.upload-source.photo-library': 'ライブラリから選択',
@@ -900,14 +1043,13 @@ const JA_MESSAGES = {
900
1043
  'core.component.preview-pdf.error.unknown.body': 'もう一度試すか、元のファイルをダウンロードしてご覧ください。',
901
1044
  'core.component.preview-pdf.error.retry': '再試行',
902
1045
  'core.component.preview-pdf.error.download-raw': '元のファイルをダウンロード',
903
- 'core.component.preview-pdf.deferred.outline': '目次は今後のバージョンで追加されます。',
904
- 'core.component.preview-pdf.deferred.search': '検索機能は今後のバージョンで追加されます。',
905
1046
  'core.component.preview-pdf.search': '検索',
906
1047
  'core.component.preview-pdf.search-placeholder': 'ドキュメント内を検索...',
907
1048
  'core.component.preview-pdf.search-case': '大文字小文字を区別',
908
1049
  'core.component.preview-pdf.search-whole': '単語単位で一致',
909
1050
  'core.component.preview-pdf.search-no-results': '見つかりません',
910
1051
  'core.component.preview-pdf.search-results-count': '「{term}」の検索結果 {count} 件',
1052
+ 'core.component.preview-pdf.search-truncated': '最初の {count} 件を表示しています。検索条件を絞り込んでください。',
911
1053
  'core.component.preview-pdf.search-prev': '前の結果',
912
1054
  'core.component.preview-pdf.search-next': '次の結果',
913
1055
  'core.component.preview-pdf.search-close': '検索を閉じる',
@@ -965,7 +1107,11 @@ const JA_MESSAGES = {
965
1107
  // ---- Module: layout (sidebar / user menu) ----
966
1108
  'core.module.layout.user.change-password': 'パスワード変更',
967
1109
  'core.module.layout.user.logout': 'ログアウト',
1110
+ 'core.module.layout.user.update-profile': 'プロフィールを更新',
1111
+ 'core.module.layout.user.setting': '設定',
1112
+ 'core.module.layout.user.notification': '通知',
968
1113
  'core.module.layout.sidebar.search': '検索',
1114
+ 'core.module.layout.sidebar.toggle': 'サイドバーを切り替える',
969
1115
  // ---- Module: layout (greeting + weekday) ----
970
1116
  'core.module.layout.greeting.hello': 'こんにちは、{name}さん',
971
1117
  'core.module.layout.weekday.0': '日曜日',
@@ -1108,6 +1254,8 @@ const KO_MESSAGES = {
1108
1254
  'core.form.input.maxlength': '최대 글자수: {max}',
1109
1255
  'core.form.input.invalid-pattern': '형식이 올바르지 않습니다',
1110
1256
  'core.form.input.exceeded': '최대 글자수를 초과했습니다',
1257
+ 'core.form.input.mask-incomplete': '값이 완전하지 않습니다',
1258
+ 'core.form.input.mask-invalid': '허용되지 않는 문자가 포함되어 있습니다',
1111
1259
  // ---- Forms: autocomplete ----
1112
1260
  'core.form.autocomplete.required': '정보를 입력해 주세요',
1113
1261
  // ---- Forms: chip ----
@@ -1137,6 +1285,65 @@ const KO_MESSAGES = {
1137
1285
  'core.form.datetime.invalid-format': '형식이 올바르지 않습니다',
1138
1286
  'core.form.datetime.now': '지금',
1139
1287
  'core.form.datetime.confirm': '확인',
1288
+ // ---- Forms: entity-picker / tree-select ----
1289
+ 'core.form.entity-picker.placeholder': '엔터티 선택',
1290
+ 'core.form.entity-picker.modal-title': '엔터티 선택',
1291
+ 'core.form.entity-picker.value': '값',
1292
+ 'core.form.entity-picker.clear': '선택 지우기',
1293
+ 'core.form.entity-picker.add': '추가',
1294
+ 'core.form.entity-picker.cancel': '취소',
1295
+ 'core.form.entity-picker.apply': '적용',
1296
+ 'core.form.tree-select.placeholder': '트리 항목 선택',
1297
+ 'core.form.tree-select.modal-title': '트리 항목 선택',
1298
+ 'core.form.tree-select.clear': '선택 지우기',
1299
+ 'core.form.tree-select.search': '트리 검색',
1300
+ 'core.form.tree-select.cancel': '취소',
1301
+ 'core.form.tree-select.apply': '적용',
1302
+ 'core.component.tree.retry': '다시 시도',
1303
+ 'core.service.unsaved-changes.message': '저장하지 않은 변경 사항이 있습니다. 변경을 버리고 계속할까요?',
1304
+ 'core.component.job-progress.status.idle': '준비됨',
1305
+ 'core.component.job-progress.status.queued': '대기 중',
1306
+ 'core.component.job-progress.status.running': '진행 중',
1307
+ 'core.component.job-progress.status.succeeded': '완료됨',
1308
+ 'core.component.job-progress.status.failed': '실패',
1309
+ 'core.component.job-progress.status.cancelled': '취소됨',
1310
+ 'core.component.job-progress.cancel': '취소',
1311
+ 'core.component.job-progress.retry': '다시 시도',
1312
+ 'core.component.audit-diff.label': '감사 변경 사항',
1313
+ 'core.component.audit-diff.field': '필드',
1314
+ 'core.component.audit-diff.before': '변경 전',
1315
+ 'core.component.audit-diff.after': '변경 후',
1316
+ 'core.component.audit-diff.empty': '변경 사항 없음',
1317
+ 'core.component.audit-diff.kind.added': '추가됨',
1318
+ 'core.component.audit-diff.kind.removed': '삭제됨',
1319
+ 'core.component.audit-diff.kind.changed': '변경됨',
1320
+ 'core.component.audit-diff.kind.unchanged': '변경 없음',
1321
+ 'core.component.audit-diff.value.label': '값',
1322
+ 'core.component.audit-diff.value.not-set': '설정 안 됨',
1323
+ 'core.component.audit-diff.value.undefined': '정의되지 않음',
1324
+ 'core.component.audit-diff.value.null': 'Null',
1325
+ 'core.component.audit-diff.value.true': '예',
1326
+ 'core.component.audit-diff.value.false': '아니요',
1327
+ // ---- Forms: time ----
1328
+ 'core.form.time.required': '시간을 입력해 주세요',
1329
+ 'core.form.time.invalid': 'HH:mm 형식의 올바른 시간을 입력해 주세요',
1330
+ 'core.form.time.min': '시간은 {min}보다 빠를 수 없습니다',
1331
+ 'core.form.time.max': '시간은 {max}보다 늦을 수 없습니다',
1332
+ 'core.form.time.step': '시간은 {step}분 간격에 맞아야 합니다',
1333
+ 'core.form.time.open-picker': '시간 선택기 열기',
1334
+ 'core.form.time.confirm': '확인',
1335
+ 'core.form.time.clear': '시간 지우기',
1336
+ // ---- Forms: time-range ----
1337
+ 'core.form.time-range.required': '시작 시간과 종료 시간을 모두 입력해 주세요',
1338
+ 'core.form.time-range.incomplete': '두 시간을 모두 입력하거나 열린 범위를 활성화해 주세요',
1339
+ 'core.form.time-range.range': '시작 시간은 종료 시간보다 늦을 수 없습니다',
1340
+ 'core.form.time-range.invalid': 'HH:mm 형식의 올바른 시간을 입력해 주세요',
1341
+ 'core.form.time-range.min': '시간은 {min}보다 빠를 수 없습니다',
1342
+ 'core.form.time-range.max': '시간은 {max}보다 늦을 수 없습니다',
1343
+ 'core.form.time-range.step': '시간은 {step}분 간격에 맞아야 합니다',
1344
+ 'core.form.time-range.from': '시작',
1345
+ 'core.form.time-range.to': '종료',
1346
+ 'core.form.time-range.clear': '시간 범위 지우기',
1140
1347
  // ---- Forms: time-spinner ----
1141
1348
  'core.form.time-spinner.hour': '시',
1142
1349
  'core.form.time-spinner.minute': '분',
@@ -1276,6 +1483,15 @@ const KO_MESSAGES = {
1276
1483
  'core.component.form-builder.show-less': '접기',
1277
1484
  'core.component.inform.show-more': '더 보기',
1278
1485
  'core.component.inform.show-less': '접기',
1486
+ 'core.component.data-state.loading.title': '불러오는 중',
1487
+ 'core.component.data-state.loading.message': '데이터를 불러오는 동안 잠시 기다려 주세요.',
1488
+ 'core.component.data-state.empty.title': '데이터 없음',
1489
+ 'core.component.data-state.empty.message': '표시할 데이터가 아직 없습니다.',
1490
+ 'core.component.data-state.error.title': '데이터를 불러올 수 없음',
1491
+ 'core.component.data-state.error.message': '오류가 발생했습니다. 다시 시도해 주세요.',
1492
+ 'core.component.data-state.forbidden.title': '접근 거부됨',
1493
+ 'core.component.data-state.forbidden.message': '이 콘텐츠를 볼 권한이 없습니다.',
1494
+ 'core.component.data-state.retry': '다시 시도',
1279
1495
  'core.component.form-builder.row-overflow': '전체 크기가 12열을 초과하여 이 행으로 이동할 수 없습니다',
1280
1496
  'core.component.form-builder.upload-source.all': '전체',
1281
1497
  'core.component.form-builder.upload-source.photo-library': '라이브러리에서 선택',
@@ -1396,14 +1612,13 @@ const KO_MESSAGES = {
1396
1612
  'core.component.preview-pdf.error.unknown.body': '다시 시도하거나 원본 파일을 다운로드하여 확인하세요.',
1397
1613
  'core.component.preview-pdf.error.retry': '다시 시도',
1398
1614
  'core.component.preview-pdf.error.download-raw': '원본 다운로드',
1399
- 'core.component.preview-pdf.deferred.outline': '목차는 다음 버전에서 추가됩니다.',
1400
- 'core.component.preview-pdf.deferred.search': '검색 기능은 다음 버전에서 추가됩니다.',
1401
1615
  'core.component.preview-pdf.search': '검색',
1402
1616
  'core.component.preview-pdf.search-placeholder': '문서에서 검색...',
1403
1617
  'core.component.preview-pdf.search-case': '대소문자 구분',
1404
1618
  'core.component.preview-pdf.search-whole': '단어 단위',
1405
1619
  'core.component.preview-pdf.search-no-results': '결과 없음',
1406
1620
  'core.component.preview-pdf.search-results-count': '"{term}"에 대한 결과 {count}개',
1621
+ 'core.component.preview-pdf.search-truncated': '처음 {count}개의 결과를 표시합니다. 검색어를 구체화하세요.',
1407
1622
  'core.component.preview-pdf.search-prev': '이전 결과',
1408
1623
  'core.component.preview-pdf.search-next': '다음 결과',
1409
1624
  'core.component.preview-pdf.search-close': '검색 닫기',
@@ -1461,7 +1676,11 @@ const KO_MESSAGES = {
1461
1676
  // ---- Module: layout (sidebar / user menu) ----
1462
1677
  'core.module.layout.user.change-password': '비밀번호 변경',
1463
1678
  'core.module.layout.user.logout': '로그아웃',
1679
+ 'core.module.layout.user.update-profile': '프로필 수정',
1680
+ 'core.module.layout.user.setting': '설정',
1681
+ 'core.module.layout.user.notification': '알림',
1464
1682
  'core.module.layout.sidebar.search': '검색',
1683
+ 'core.module.layout.sidebar.toggle': '사이드바 전환',
1465
1684
  // ---- Module: layout (greeting + weekday) ----
1466
1685
  'core.module.layout.greeting.hello': '안녕하세요, {name}님',
1467
1686
  'core.module.layout.weekday.0': '일요일',
@@ -1604,6 +1823,8 @@ const VI_MESSAGES = {
1604
1823
  'core.form.input.maxlength': 'Số ký tự tối đa: {max}',
1605
1824
  'core.form.input.invalid-pattern': 'Định dạng không hợp lệ',
1606
1825
  'core.form.input.exceeded': 'Vượt quá số ký tự tối đa',
1826
+ 'core.form.input.mask-incomplete': 'Giá trị chưa đầy đủ',
1827
+ 'core.form.input.mask-invalid': 'Giá trị chứa ký tự không hợp lệ',
1607
1828
  // ---- Forms: autocomplete ----
1608
1829
  'core.form.autocomplete.required': 'Vui lòng nhập thông tin',
1609
1830
  // ---- Forms: chip ----
@@ -1633,6 +1854,65 @@ const VI_MESSAGES = {
1633
1854
  'core.form.datetime.invalid-format': 'Sai định dạng',
1634
1855
  'core.form.datetime.now': 'Bây giờ',
1635
1856
  'core.form.datetime.confirm': 'Xác nhận',
1857
+ // ---- Forms: entity-picker / tree-select ----
1858
+ 'core.form.entity-picker.placeholder': 'Chọn đối tượng',
1859
+ 'core.form.entity-picker.modal-title': 'Chọn đối tượng',
1860
+ 'core.form.entity-picker.value': 'Giá trị',
1861
+ 'core.form.entity-picker.clear': 'Xóa lựa chọn',
1862
+ 'core.form.entity-picker.add': 'Thêm mới',
1863
+ 'core.form.entity-picker.cancel': 'Hủy',
1864
+ 'core.form.entity-picker.apply': 'Áp dụng',
1865
+ 'core.form.tree-select.placeholder': 'Chọn mục cây',
1866
+ 'core.form.tree-select.modal-title': 'Chọn mục cây',
1867
+ 'core.form.tree-select.clear': 'Xóa lựa chọn',
1868
+ 'core.form.tree-select.search': 'Tìm kiếm cây',
1869
+ 'core.form.tree-select.cancel': 'Hủy',
1870
+ 'core.form.tree-select.apply': 'Áp dụng',
1871
+ 'core.component.tree.retry': 'Thử lại',
1872
+ 'core.service.unsaved-changes.message': 'Bạn có thay đổi chưa lưu. Bỏ thay đổi và tiếp tục?',
1873
+ 'core.component.job-progress.status.idle': 'Sẵn sàng',
1874
+ 'core.component.job-progress.status.queued': 'Đang chờ',
1875
+ 'core.component.job-progress.status.running': 'Đang thực hiện',
1876
+ 'core.component.job-progress.status.succeeded': 'Hoàn tất',
1877
+ 'core.component.job-progress.status.failed': 'Thất bại',
1878
+ 'core.component.job-progress.status.cancelled': 'Đã hủy',
1879
+ 'core.component.job-progress.cancel': 'Hủy',
1880
+ 'core.component.job-progress.retry': 'Thử lại',
1881
+ 'core.component.audit-diff.label': 'Thay đổi kiểm toán',
1882
+ 'core.component.audit-diff.field': 'Trường',
1883
+ 'core.component.audit-diff.before': 'Trước',
1884
+ 'core.component.audit-diff.after': 'Sau',
1885
+ 'core.component.audit-diff.empty': 'Không có thay đổi',
1886
+ 'core.component.audit-diff.kind.added': 'Đã thêm',
1887
+ 'core.component.audit-diff.kind.removed': 'Đã xóa',
1888
+ 'core.component.audit-diff.kind.changed': 'Đã đổi',
1889
+ 'core.component.audit-diff.kind.unchanged': 'Không đổi',
1890
+ 'core.component.audit-diff.value.label': 'Giá trị',
1891
+ 'core.component.audit-diff.value.not-set': 'Chưa thiết lập',
1892
+ 'core.component.audit-diff.value.undefined': 'Không xác định',
1893
+ 'core.component.audit-diff.value.null': 'Rỗng',
1894
+ 'core.component.audit-diff.value.true': 'Có',
1895
+ 'core.component.audit-diff.value.false': 'Không',
1896
+ // ---- Forms: time ----
1897
+ 'core.form.time.required': 'Vui lòng nhập giờ',
1898
+ 'core.form.time.invalid': 'Vui lòng nhập giờ hợp lệ theo định dạng HH:mm',
1899
+ 'core.form.time.min': 'Giờ không được sớm hơn {min}',
1900
+ 'core.form.time.max': 'Giờ không được muộn hơn {max}',
1901
+ 'core.form.time.step': 'Giờ phải theo khoảng {step} phút',
1902
+ 'core.form.time.open-picker': 'Mở bộ chọn giờ',
1903
+ 'core.form.time.confirm': 'Xác nhận',
1904
+ 'core.form.time.clear': 'Xóa giờ',
1905
+ // ---- Forms: time-range ----
1906
+ 'core.form.time-range.required': 'Vui lòng nhập cả giờ bắt đầu và kết thúc',
1907
+ 'core.form.time-range.incomplete': 'Nhập đủ hai đầu hoặc bật khoảng thời gian mở',
1908
+ 'core.form.time-range.range': 'Giờ bắt đầu không được sau giờ kết thúc',
1909
+ 'core.form.time-range.invalid': 'Vui lòng nhập giờ hợp lệ theo định dạng HH:mm',
1910
+ 'core.form.time-range.min': 'Các mốc giờ không được sớm hơn {min}',
1911
+ 'core.form.time-range.max': 'Các mốc giờ không được muộn hơn {max}',
1912
+ 'core.form.time-range.step': 'Các mốc giờ phải theo khoảng {step} phút',
1913
+ 'core.form.time-range.from': 'Từ',
1914
+ 'core.form.time-range.to': 'Đến',
1915
+ 'core.form.time-range.clear': 'Xóa khoảng giờ',
1636
1916
  // ---- Forms: time-spinner ----
1637
1917
  'core.form.time-spinner.hour': 'Giờ',
1638
1918
  'core.form.time-spinner.minute': 'Phút',
@@ -1772,6 +2052,15 @@ const VI_MESSAGES = {
1772
2052
  'core.component.form-builder.show-less': 'Thu gọn',
1773
2053
  'core.component.inform.show-more': 'Xem thêm',
1774
2054
  'core.component.inform.show-less': 'Thu gọn',
2055
+ 'core.component.data-state.loading.title': 'Đang tải',
2056
+ 'core.component.data-state.loading.message': 'Vui lòng chờ trong khi dữ liệu được tải.',
2057
+ 'core.component.data-state.empty.title': 'Chưa có dữ liệu',
2058
+ 'core.component.data-state.empty.message': 'Hiện chưa có dữ liệu để hiển thị.',
2059
+ 'core.component.data-state.error.title': 'Không thể tải dữ liệu',
2060
+ 'core.component.data-state.error.message': 'Đã xảy ra lỗi. Vui lòng thử lại.',
2061
+ 'core.component.data-state.forbidden.title': 'Không có quyền truy cập',
2062
+ 'core.component.data-state.forbidden.message': 'Bạn không có quyền xem nội dung này.',
2063
+ 'core.component.data-state.retry': 'Thử lại',
1775
2064
  'core.component.form-builder.row-overflow': 'Không thể di chuyển tới dòng này vì tổng kích thước vượt quá 12 cột',
1776
2065
  'core.component.form-builder.upload-source.all': 'Tất cả',
1777
2066
  'core.component.form-builder.upload-source.photo-library': 'Chọn từ thư viện',
@@ -1892,14 +2181,13 @@ const VI_MESSAGES = {
1892
2181
  'core.component.preview-pdf.error.unknown.body': 'Vui lòng thử lại hoặc tải file gốc về để xem.',
1893
2182
  'core.component.preview-pdf.error.retry': 'Thử lại',
1894
2183
  'core.component.preview-pdf.error.download-raw': 'Tải file gốc',
1895
- 'core.component.preview-pdf.deferred.outline': 'Mục lục sẽ được bổ sung trong phiên bản kế tiếp.',
1896
- 'core.component.preview-pdf.deferred.search': 'Tính năng tìm kiếm sẽ được bổ sung trong phiên bản kế tiếp.',
1897
2184
  'core.component.preview-pdf.search': 'Tìm kiếm',
1898
2185
  'core.component.preview-pdf.search-placeholder': 'Tìm trong tài liệu...',
1899
2186
  'core.component.preview-pdf.search-case': 'Phân biệt hoa thường',
1900
2187
  'core.component.preview-pdf.search-whole': 'Từ nguyên',
1901
2188
  'core.component.preview-pdf.search-no-results': 'Không tìm thấy',
1902
2189
  'core.component.preview-pdf.search-results-count': '{count} kết quả cho "{term}"',
2190
+ 'core.component.preview-pdf.search-truncated': 'Đang hiển thị {count} kết quả đầu tiên. Hãy thu hẹp nội dung tìm kiếm.',
1903
2191
  'core.component.preview-pdf.search-prev': 'Kết quả trước',
1904
2192
  'core.component.preview-pdf.search-next': 'Kết quả tiếp',
1905
2193
  'core.component.preview-pdf.search-close': 'Đóng tìm kiếm',
@@ -1957,7 +2245,11 @@ const VI_MESSAGES = {
1957
2245
  // ---- Module: layout (sidebar / user menu) ----
1958
2246
  'core.module.layout.user.change-password': 'Đổi mật khẩu',
1959
2247
  'core.module.layout.user.logout': 'Đăng xuất',
2248
+ 'core.module.layout.user.update-profile': 'Chỉnh sửa hồ sơ',
2249
+ 'core.module.layout.user.setting': 'Thiết lập',
2250
+ 'core.module.layout.user.notification': 'Thông báo',
1960
2251
  'core.module.layout.sidebar.search': 'Tìm kiếm',
2252
+ 'core.module.layout.sidebar.toggle': 'Thu gọn hoặc mở rộng thanh điều hướng',
1961
2253
  // ---- Module: layout (greeting + weekday) ----
1962
2254
  'core.module.layout.greeting.hello': 'Xin chào, {name}',
1963
2255
  'core.module.layout.weekday.0': 'Chủ Nhật',
@@ -2100,6 +2392,8 @@ const ZH_MESSAGES = {
2100
2392
  'core.form.input.maxlength': '最大字符数: {max}',
2101
2393
  'core.form.input.invalid-pattern': '格式不正确',
2102
2394
  'core.form.input.exceeded': '已超过最大字符数',
2395
+ 'core.form.input.mask-incomplete': '输入值不完整',
2396
+ 'core.form.input.mask-invalid': '输入值包含无效字符',
2103
2397
  // ---- Forms: autocomplete ----
2104
2398
  'core.form.autocomplete.required': '请输入内容',
2105
2399
  // ---- Forms: chip ----
@@ -2129,6 +2423,65 @@ const ZH_MESSAGES = {
2129
2423
  'core.form.datetime.invalid-format': '格式不正确',
2130
2424
  'core.form.datetime.now': '现在',
2131
2425
  'core.form.datetime.confirm': '确认',
2426
+ // ---- Forms: entity-picker / tree-select ----
2427
+ 'core.form.entity-picker.placeholder': '选择实体',
2428
+ 'core.form.entity-picker.modal-title': '选择实体',
2429
+ 'core.form.entity-picker.value': '值',
2430
+ 'core.form.entity-picker.clear': '清除选择',
2431
+ 'core.form.entity-picker.add': '添加',
2432
+ 'core.form.entity-picker.cancel': '取消',
2433
+ 'core.form.entity-picker.apply': '应用',
2434
+ 'core.form.tree-select.placeholder': '选择树节点',
2435
+ 'core.form.tree-select.modal-title': '选择树节点',
2436
+ 'core.form.tree-select.clear': '清除选择',
2437
+ 'core.form.tree-select.search': '搜索树',
2438
+ 'core.form.tree-select.cancel': '取消',
2439
+ 'core.form.tree-select.apply': '应用',
2440
+ 'core.component.tree.retry': '重试',
2441
+ 'core.service.unsaved-changes.message': '您有未保存的更改。是否放弃更改并继续?',
2442
+ 'core.component.job-progress.status.idle': '就绪',
2443
+ 'core.component.job-progress.status.queued': '排队中',
2444
+ 'core.component.job-progress.status.running': '进行中',
2445
+ 'core.component.job-progress.status.succeeded': '已完成',
2446
+ 'core.component.job-progress.status.failed': '失败',
2447
+ 'core.component.job-progress.status.cancelled': '已取消',
2448
+ 'core.component.job-progress.cancel': '取消',
2449
+ 'core.component.job-progress.retry': '重试',
2450
+ 'core.component.audit-diff.label': '审计变更',
2451
+ 'core.component.audit-diff.field': '字段',
2452
+ 'core.component.audit-diff.before': '变更前',
2453
+ 'core.component.audit-diff.after': '变更后',
2454
+ 'core.component.audit-diff.empty': '没有变更',
2455
+ 'core.component.audit-diff.kind.added': '已添加',
2456
+ 'core.component.audit-diff.kind.removed': '已删除',
2457
+ 'core.component.audit-diff.kind.changed': '已更改',
2458
+ 'core.component.audit-diff.kind.unchanged': '未更改',
2459
+ 'core.component.audit-diff.value.label': '值',
2460
+ 'core.component.audit-diff.value.not-set': '未设置',
2461
+ 'core.component.audit-diff.value.undefined': '未定义',
2462
+ 'core.component.audit-diff.value.null': '空值',
2463
+ 'core.component.audit-diff.value.true': '是',
2464
+ 'core.component.audit-diff.value.false': '否',
2465
+ // ---- Forms: time ----
2466
+ 'core.form.time.required': '请输入时间',
2467
+ 'core.form.time.invalid': '请输入 HH:mm 格式的有效时间',
2468
+ 'core.form.time.min': '时间不得早于 {min}',
2469
+ 'core.form.time.max': '时间不得晚于 {max}',
2470
+ 'core.form.time.step': '时间必须符合 {step} 分钟间隔',
2471
+ 'core.form.time.open-picker': '打开时间选择器',
2472
+ 'core.form.time.confirm': '确认',
2473
+ 'core.form.time.clear': '清除时间',
2474
+ // ---- Forms: time-range ----
2475
+ 'core.form.time-range.required': '请输入开始和结束时间',
2476
+ 'core.form.time-range.incomplete': '请输入两个时间,或启用开放时间范围',
2477
+ 'core.form.time-range.range': '开始时间不得晚于结束时间',
2478
+ 'core.form.time-range.invalid': '请输入 HH:mm 格式的有效时间',
2479
+ 'core.form.time-range.min': '时间不得早于 {min}',
2480
+ 'core.form.time-range.max': '时间不得晚于 {max}',
2481
+ 'core.form.time-range.step': '时间必须符合 {step} 分钟间隔',
2482
+ 'core.form.time-range.from': '开始',
2483
+ 'core.form.time-range.to': '结束',
2484
+ 'core.form.time-range.clear': '清除时间范围',
2132
2485
  // ---- Forms: time-spinner ----
2133
2486
  'core.form.time-spinner.hour': '时',
2134
2487
  'core.form.time-spinner.minute': '分',
@@ -2268,6 +2621,15 @@ const ZH_MESSAGES = {
2268
2621
  'core.component.form-builder.show-less': '收起',
2269
2622
  'core.component.inform.show-more': '展开',
2270
2623
  'core.component.inform.show-less': '收起',
2624
+ 'core.component.data-state.loading.title': '正在加载',
2625
+ 'core.component.data-state.loading.message': '正在加载数据,请稍候。',
2626
+ 'core.component.data-state.empty.title': '暂无数据',
2627
+ 'core.component.data-state.empty.message': '目前没有可显示的数据。',
2628
+ 'core.component.data-state.error.title': '无法加载数据',
2629
+ 'core.component.data-state.error.message': '发生错误,请重试。',
2630
+ 'core.component.data-state.forbidden.title': '访问被拒绝',
2631
+ 'core.component.data-state.forbidden.message': '您没有权限查看此内容。',
2632
+ 'core.component.data-state.retry': '重试',
2271
2633
  'core.component.form-builder.row-overflow': '无法移动到该行,因为总宽度超过 12 列',
2272
2634
  'core.component.form-builder.upload-source.all': '全部',
2273
2635
  'core.component.form-builder.upload-source.photo-library': '从相册选择',
@@ -2388,14 +2750,13 @@ const ZH_MESSAGES = {
2388
2750
  'core.component.preview-pdf.error.unknown.body': '请重试或下载原始文件查看。',
2389
2751
  'core.component.preview-pdf.error.retry': '重试',
2390
2752
  'core.component.preview-pdf.error.download-raw': '下载原始文件',
2391
- 'core.component.preview-pdf.deferred.outline': '目录功能将在后续版本中添加。',
2392
- 'core.component.preview-pdf.deferred.search': '搜索功能将在后续版本中添加。',
2393
2753
  'core.component.preview-pdf.search': '搜索',
2394
2754
  'core.component.preview-pdf.search-placeholder': '在文档中搜索...',
2395
2755
  'core.component.preview-pdf.search-case': '区分大小写',
2396
2756
  'core.component.preview-pdf.search-whole': '全词匹配',
2397
2757
  'core.component.preview-pdf.search-no-results': '未找到结果',
2398
2758
  'core.component.preview-pdf.search-results-count': '关于 "{term}" 的 {count} 个结果',
2759
+ 'core.component.preview-pdf.search-truncated': '正在显示前 {count} 个匹配项。请缩小搜索范围。',
2399
2760
  'core.component.preview-pdf.search-prev': '上一个结果',
2400
2761
  'core.component.preview-pdf.search-next': '下一个结果',
2401
2762
  'core.component.preview-pdf.search-close': '关闭搜索',
@@ -2453,7 +2814,11 @@ const ZH_MESSAGES = {
2453
2814
  // ---- Module: layout (sidebar / user menu) ----
2454
2815
  'core.module.layout.user.change-password': '修改密码',
2455
2816
  'core.module.layout.user.logout': '退出登录',
2817
+ 'core.module.layout.user.update-profile': '更新个人资料',
2818
+ 'core.module.layout.user.setting': '设置',
2819
+ 'core.module.layout.user.notification': '通知',
2456
2820
  'core.module.layout.sidebar.search': '搜索',
2821
+ 'core.module.layout.sidebar.toggle': '切换侧边栏',
2457
2822
  // ---- Module: layout (greeting + weekday) ----
2458
2823
  'core.module.layout.greeting.hello': '你好,{name}',
2459
2824
  'core.module.layout.weekday.0': '星期日',