@sd-angular/core 19.0.0-beta.94 → 19.0.0-beta.96

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 (194) hide show
  1. package/README.md +10 -10
  2. package/components/anchor/src/components/anchor/anchor.component.d.ts +4 -1
  3. package/components/anchor/src/components/anchor-item/anchor-item.component.d.ts +2 -1
  4. package/components/anchor/src/components/anchor-vertical/anchor-vertical-list.component.d.ts +3 -1
  5. package/components/badge/src/badge.component.d.ts +3 -4
  6. package/components/button/src/button.component.d.ts +2 -2
  7. package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +2 -2
  8. package/components/document-builder/src/document-builder.model.d.ts +2 -2
  9. package/components/editor/src/models/editor.model.d.ts +2 -2
  10. package/components/editor/src/plugins/image-upload/utils/validate.utils.d.ts +2 -2
  11. package/components/form-generic/src/components/form-builder/components/attribute-table/attribute-table.component.d.ts +4 -2
  12. package/components/form-generic/src/components/form-builder/components/attribute-template/attribute-template.component.d.ts +2 -2
  13. package/components/form-generic/src/components/form-builder/components/configure-validation/configure-validation.component.d.ts +2 -2
  14. package/components/form-generic/src/components/form-builder/components/group/attribute/group-attribute.component.d.ts +23 -0
  15. package/components/form-generic/src/components/form-builder/components/group/index.d.ts +1 -0
  16. package/components/form-generic/src/components/form-builder/components/index.d.ts +1 -0
  17. package/components/form-generic/src/components/form-builder/components/table/control/table-control.component.d.ts +3 -0
  18. package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +61 -18
  19. package/components/form-generic/src/components/form-render/form-render.component.d.ts +2 -2
  20. package/components/form-generic/src/models/form-generic-component.model.d.ts +22 -2
  21. package/components/index.d.ts +1 -2
  22. package/components/modal/src/modal.component.d.ts +5 -3
  23. package/components/preview/index.d.ts +3 -0
  24. package/components/preview/src/preview-image/preview-image.component.d.ts +84 -24
  25. package/components/preview/src/preview-image/preview-image.types.d.ts +53 -0
  26. package/components/preview/src/preview-pdf/preview-pdf.component.d.ts +186 -0
  27. package/components/preview/src/preview-pdf/preview-pdf.types.d.ts +84 -0
  28. package/components/quick-action/src/quick-action.component.d.ts +5 -6
  29. package/components/section/src/section.component.d.ts +1 -2
  30. package/components/table/src/components/column-filter/column-filter.component.d.ts +3 -3
  31. package/components/table/src/table.component.d.ts +2 -2
  32. package/components/upload-file/src/upload-file.component.d.ts +4 -1
  33. package/configurations/src/sd-core.configuration.d.ts +2 -1
  34. package/fesm2022/sd-angular-core-components-anchor.mjs +19 -6
  35. package/fesm2022/sd-angular-core-components-anchor.mjs.map +1 -1
  36. package/fesm2022/sd-angular-core-components-button.mjs +1 -1
  37. package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
  38. package/fesm2022/sd-angular-core-components-code-editor.mjs +3 -3
  39. package/fesm2022/sd-angular-core-components-code-editor.mjs.map +1 -1
  40. package/fesm2022/sd-angular-core-components-document-builder.mjs +3 -3
  41. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  42. package/fesm2022/sd-angular-core-components-editor.mjs +3 -3
  43. package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -1
  44. package/fesm2022/sd-angular-core-components-form-generic.mjs +627 -317
  45. package/fesm2022/sd-angular-core-components-form-generic.mjs.map +1 -1
  46. package/fesm2022/sd-angular-core-components-history.mjs +3 -3
  47. package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
  48. package/fesm2022/sd-angular-core-components-import-excel.mjs +5 -5
  49. package/fesm2022/sd-angular-core-components-import-excel.mjs.map +1 -1
  50. package/fesm2022/sd-angular-core-components-modal.mjs +8 -3
  51. package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
  52. package/fesm2022/sd-angular-core-components-preview.mjs +1963 -91
  53. package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
  54. package/fesm2022/sd-angular-core-components-quick-action.mjs +8 -19
  55. package/fesm2022/sd-angular-core-components-quick-action.mjs.map +1 -1
  56. package/fesm2022/sd-angular-core-components-tab-router.mjs +31 -26
  57. package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
  58. package/fesm2022/sd-angular-core-components-table.mjs +32 -29
  59. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  60. package/fesm2022/sd-angular-core-components-upload-file.mjs +12 -8
  61. package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
  62. package/fesm2022/sd-angular-core-components.mjs +1 -2
  63. package/fesm2022/sd-angular-core-components.mjs.map +1 -1
  64. package/fesm2022/sd-angular-core-configurations.mjs.map +1 -1
  65. package/fesm2022/sd-angular-core-directives.mjs +2 -2
  66. package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
  67. package/fesm2022/sd-angular-core-forms-autocomplete.mjs +2 -2
  68. package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
  69. package/fesm2022/sd-angular-core-forms-checkbox.mjs +6 -13
  70. package/fesm2022/sd-angular-core-forms-checkbox.mjs.map +1 -1
  71. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +6 -5
  72. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
  73. package/fesm2022/sd-angular-core-forms-chip.mjs +6 -12
  74. package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
  75. package/fesm2022/sd-angular-core-forms-date-range.mjs +33 -26
  76. package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
  77. package/fesm2022/sd-angular-core-forms-date.mjs +29 -19
  78. package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
  79. package/fesm2022/sd-angular-core-forms-datetime.mjs +98 -57
  80. package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
  81. package/fesm2022/sd-angular-core-forms-input-number.mjs +2 -2
  82. package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
  83. package/fesm2022/sd-angular-core-forms-input.mjs +25 -10
  84. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  85. package/fesm2022/sd-angular-core-forms-radio.mjs +7 -15
  86. package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
  87. package/fesm2022/sd-angular-core-forms-select.mjs +4 -4
  88. package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
  89. package/fesm2022/sd-angular-core-forms-switch.mjs +6 -14
  90. package/fesm2022/sd-angular-core-forms-switch.mjs.map +1 -1
  91. package/fesm2022/sd-angular-core-forms-textarea.mjs +5 -5
  92. package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
  93. package/fesm2022/sd-angular-core-handlers.mjs +2 -2
  94. package/fesm2022/sd-angular-core-handlers.mjs.map +1 -1
  95. package/fesm2022/sd-angular-core-i18n.mjs +1610 -38
  96. package/fesm2022/sd-angular-core-i18n.mjs.map +1 -1
  97. package/fesm2022/sd-angular-core-interceptors.mjs +2 -2
  98. package/fesm2022/sd-angular-core-interceptors.mjs.map +1 -1
  99. package/fesm2022/sd-angular-core-models.mjs +6 -0
  100. package/fesm2022/sd-angular-core-models.mjs.map +1 -0
  101. package/fesm2022/sd-angular-core-modules-layout.mjs +87 -39
  102. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  103. package/fesm2022/sd-angular-core-services-confirm.mjs +2 -2
  104. package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
  105. package/fesm2022/sd-angular-core-services-docx.mjs +2 -2
  106. package/fesm2022/sd-angular-core-services-docx.mjs.map +1 -1
  107. package/fesm2022/sd-angular-core-services-excel.mjs +27 -23
  108. package/fesm2022/sd-angular-core-services-excel.mjs.map +1 -1
  109. package/fesm2022/sd-angular-core-services-notify.mjs +21 -21
  110. package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
  111. package/fesm2022/sd-angular-core-utilities-extensions.mjs +74 -830
  112. package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
  113. package/fesm2022/sd-angular-core-utilities-models.mjs +36 -136
  114. package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
  115. package/fesm2022/sd-angular-core.mjs +0 -1
  116. package/fesm2022/sd-angular-core.mjs.map +1 -1
  117. package/forms/autocomplete/src/autocomplete.component.d.ts +1 -2
  118. package/forms/checkbox/src/checkbox.component.d.ts +3 -3
  119. package/forms/chip/src/chip.component.d.ts +4 -4
  120. package/forms/chip-calendar/src/chip-calendar.component.d.ts +4 -4
  121. package/forms/date/src/date.component.d.ts +3 -5
  122. package/forms/date-range/src/date-range.component.d.ts +3 -5
  123. package/forms/datetime/src/datetime.component.d.ts +2 -2
  124. package/forms/datetime/src/popup/sd-datetime-picker.component.d.ts +10 -11
  125. package/forms/input/src/input.component.d.ts +1 -2
  126. package/forms/input-number/src/input-number.component.d.ts +1 -2
  127. package/forms/radio/src/radio.component.d.ts +3 -3
  128. package/forms/select/src/select.component.d.ts +5 -5
  129. package/forms/switch/src/switch.component.d.ts +3 -3
  130. package/forms/textarea/src/textarea.component.d.ts +1 -2
  131. package/i18n/index.d.ts +5 -5
  132. package/i18n/src/en.d.ts +406 -2
  133. package/i18n/src/i18n.messages.d.ts +2 -0
  134. package/i18n/src/i18n.pipe.d.ts +9 -0
  135. package/i18n/src/i18n.service.d.ts +14 -0
  136. package/i18n/src/i18n.token.d.ts +1 -0
  137. package/i18n/src/i18n.types.d.ts +31 -0
  138. package/i18n/src/ja.d.ts +2 -0
  139. package/i18n/src/ko.d.ts +2 -0
  140. package/i18n/src/vi.d.ts +2 -312
  141. package/i18n/src/zh.d.ts +2 -0
  142. package/models/index.d.ts +1 -0
  143. package/models/src/language.model.d.ts +2 -0
  144. package/modules/layout/modules/home/components/home-page/home-page.component.d.ts +25 -0
  145. package/package.json +82 -89
  146. package/public-api.d.ts +0 -1
  147. package/sd-angular-core-19.0.0-beta.96.tgz +0 -0
  148. package/services/notify/index.d.ts +1 -1
  149. package/services/notify/src/components/toast/toast.component.d.ts +3 -3
  150. package/services/notify/src/components/toast-container.component.d.ts +3 -4
  151. package/services/notify/src/notify.model.d.ts +1 -1
  152. package/services/notify/src/notify.service.d.ts +5 -5
  153. package/utilities/extensions/src/array.extension.d.ts +1 -7
  154. package/utilities/extensions/src/color.extension.d.ts +5 -20
  155. package/utilities/extensions/src/date.extension.d.ts +1 -18
  156. package/utilities/extensions/src/number.extension.d.ts +1 -10
  157. package/utilities/extensions/src/string.extension.d.ts +30 -4
  158. package/utilities/extensions/src/utility.extension.d.ts +6 -0
  159. package/utilities/models/src/color.model.d.ts +4 -1
  160. package/utilities/models/src/empty.model.d.ts +3 -0
  161. package/utilities/models/src/filter.model.d.ts +12 -24
  162. package/utilities/models/src/maybe-async.model.d.ts +10 -4
  163. package/utilities/models/src/nested-key-of.model.d.ts +4 -5
  164. package/utilities/models/src/operator.model.d.ts +9 -4
  165. package/utilities/models/src/order.model.d.ts +4 -5
  166. package/utilities/models/src/paging.model.d.ts +8 -16
  167. package/utilities/models/src/pattern.model.d.ts +13 -0
  168. package/utilities/models/src/size.model.d.ts +4 -1
  169. package/components/anchor-v2/index.d.ts +0 -1
  170. package/components/anchor-v2/src/components/anchor-item-v2/anchor-item-v2.component.d.ts +0 -12
  171. package/components/anchor-v2/src/components/anchor-v2/anchor-v2.component.d.ts +0 -19
  172. package/components/anchor-v2/src/components/anchor-vertical-v2/anchor-vertical-list-v2.component.d.ts +0 -16
  173. package/components/anchor-v2/src/components/index.d.ts +0 -2
  174. package/components/anchor-v2/src/index.d.ts +0 -2
  175. package/components/anchor-v2/src/models/index.d.ts +0 -1
  176. package/components/anchor-v2/src/models/sd-anchor-v2.model.d.ts +0 -7
  177. package/components/workflow/index.d.ts +0 -2
  178. package/components/workflow/src/configurations/index.d.ts +0 -1
  179. package/components/workflow/src/configurations/workflow.configuration.d.ts +0 -10
  180. package/fesm2022/sd-angular-core-components-anchor-v2.mjs +0 -151
  181. package/fesm2022/sd-angular-core-components-anchor-v2.mjs.map +0 -1
  182. package/fesm2022/sd-angular-core-components-workflow.mjs +0 -17
  183. package/fesm2022/sd-angular-core-components-workflow.mjs.map +0 -1
  184. package/fesm2022/sd-angular-core-services-firebase.mjs +0 -38
  185. package/fesm2022/sd-angular-core-services-firebase.mjs.map +0 -1
  186. package/i18n/src/sd-i18n.messages.d.ts +0 -2
  187. package/i18n/src/sd-i18n.pipe.d.ts +0 -9
  188. package/i18n/src/sd-i18n.service.d.ts +0 -12
  189. package/i18n/src/sd-i18n.token.d.ts +0 -1
  190. package/i18n/src/sd-i18n.types.d.ts +0 -5
  191. package/sd-angular-core-19.0.0-beta.94.tgz +0 -0
  192. package/services/firebase/index.d.ts +0 -2
  193. package/services/firebase/src/firebase.model.d.ts +0 -8
  194. package/services/firebase/src/firebase.service.d.ts +0 -14
package/i18n/src/en.d.ts CHANGED
@@ -1,2 +1,406 @@
1
- import type { VI_MESSAGES } from './vi';
2
- export declare const EN_MESSAGES: Record<keyof typeof VI_MESSAGES, string>;
1
+ export declare const EN_MESSAGES: {
2
+ readonly 'core.common.cancel': "Cancel";
3
+ readonly 'core.common.close': "Close";
4
+ readonly 'core.common.reload': "Reload page";
5
+ readonly 'core.test.greet': "Hello {name}";
6
+ readonly 'core.validator.email.name': "Email";
7
+ readonly 'core.validator.email.error': "Invalid email";
8
+ readonly 'core.validator.phone.name': "Phone";
9
+ readonly 'core.validator.phone.error': "Invalid phone number";
10
+ readonly 'core.validator.phone-vn.name': "VN phone";
11
+ readonly 'core.validator.phone-vn.error': "Invalid phone number";
12
+ readonly 'core.validator.cccd.name': "National ID";
13
+ readonly 'core.validator.cccd.error': "Invalid national ID (12 digits)";
14
+ readonly 'core.validator.passport.name': "Passport";
15
+ readonly 'core.validator.passport.error': "Invalid passport (1 letter + 7 digits)";
16
+ readonly 'core.validator.id-vn.name': "National ID / Passport";
17
+ readonly 'core.validator.id-vn.error': "Invalid national ID or passport";
18
+ readonly 'core.validator.time.name': "Time";
19
+ readonly 'core.validator.time.error': "Invalid time (format HH:mm)";
20
+ readonly 'core.operator.equal.display': "Equal";
21
+ readonly 'core.operator.not-equal.display': "Not equal";
22
+ readonly 'core.operator.greater-than.display': "Greater than";
23
+ readonly 'core.operator.less-than.display': "Less than";
24
+ readonly 'core.operator.greater-or-equal.display': "Greater than or equal";
25
+ readonly 'core.operator.less-or-equal.display': "Less than or equal";
26
+ readonly 'core.operator.contain.display': "Contains";
27
+ readonly 'core.operator.not-contain.display': "Does not contain";
28
+ readonly 'core.operator.start-with.display': "Starts with";
29
+ readonly 'core.operator.end-with.display': "Ends with";
30
+ readonly 'core.operator.in.display': "In";
31
+ readonly 'core.operator.not-in.display': "Not in";
32
+ readonly 'core.operator.null.display': "Is empty";
33
+ readonly 'core.operator.not-null.display': "Is not empty";
34
+ readonly 'core.handler.global-error.update-title': "A NEW SYSTEM UPDATE IS AVAILABLE";
35
+ readonly 'core.handler.global-error.update-body': "The current version is outdated and could not load resources.\nPlease press OK to reload the page.";
36
+ readonly 'core.interceptor.no-internet.offline': "No network connection. Waiting for connection...";
37
+ readonly 'core.interceptor.no-internet.cors-error': "Cannot connect to server (CORS or configuration error).";
38
+ readonly 'core.interceptor.no-internet.maintenance': "Server is under maintenance. Please try again later.";
39
+ readonly 'core.interceptor.no-internet.restored': "Connection restored.";
40
+ readonly 'core.excel.cannot-read-file': "Could not read file content";
41
+ readonly 'core.excel.no-sheet': "Excel file has no data sheet";
42
+ readonly 'core.docx.invalid-format': "Invalid format. Please select a template in DOC or DOCX format";
43
+ readonly 'core.docx.size-exceeded': "Template file size exceeds the supported limit. Please try again";
44
+ readonly 'core.docx.convert-error': "An error occurred while converting the DOCX file";
45
+ readonly 'core.notify.type.success': "Success";
46
+ readonly 'core.notify.type.info': "Information";
47
+ readonly 'core.notify.type.warning': "Warning";
48
+ readonly 'core.notify.type.error': "Error";
49
+ readonly 'core.notify.show-more': "Show more ({count})";
50
+ readonly 'core.notify.show-less': "Show less";
51
+ readonly 'core.confirm.title': "Confirm";
52
+ readonly 'core.confirm.yes': "OK";
53
+ readonly 'core.confirm.no': "Cancel";
54
+ readonly 'core.confirm.yes-short': "Yes";
55
+ readonly 'core.confirm.no-short': "No";
56
+ readonly 'core.directive.hover-copy.tooltip': "Copy";
57
+ readonly 'core.form.input.required': "Please enter information";
58
+ readonly 'core.form.input.maxlength': "Maximum characters: {max}";
59
+ readonly 'core.form.input.invalid-pattern': "Invalid format";
60
+ readonly 'core.form.input.exceeded': "Exceeded maximum characters";
61
+ readonly 'core.form.autocomplete.required': "Please enter information";
62
+ readonly 'core.form.chip.required': "Please enter information";
63
+ readonly 'core.form.chip.minlength': "Please enter at least {min} values";
64
+ readonly 'core.form.chip.maxlength': "Please enter at most {max} values";
65
+ readonly 'core.form.chip-calendar.required': "Please enter information";
66
+ readonly 'core.form.chip-calendar.minlength': "Please enter at least {min} values";
67
+ readonly 'core.form.chip-calendar.maxlength': "Please enter at most {max} values";
68
+ readonly 'core.form.date.required': "Please enter information";
69
+ readonly 'core.form.date.min-date': "Minimum date: {date}";
70
+ readonly 'core.form.date.max-date': "Maximum date: {date}";
71
+ readonly 'core.form.date.parse-error': "Parse error: {text}";
72
+ readonly 'core.form.date.invalid-format': "Invalid format";
73
+ readonly 'core.form.date-range.required': "Please enter information";
74
+ readonly 'core.form.date-range.invalid-min': "Start date is invalid (below limit)";
75
+ readonly 'core.form.date-range.invalid-max': "End date is invalid (above limit)";
76
+ readonly 'core.form.date-range.from': "From";
77
+ readonly 'core.form.date-range.to': "to";
78
+ readonly 'core.form.datetime.required': "Please enter information";
79
+ readonly 'core.form.datetime.min-date': "Minimum date: {date}";
80
+ readonly 'core.form.datetime.max-date': "Maximum date: {date}";
81
+ readonly 'core.form.datetime.invalid-format': "Invalid format";
82
+ readonly 'core.form.datetime.now': "Now";
83
+ readonly 'core.form.datetime.confirm': "Confirm";
84
+ readonly 'core.form.time-spinner.hour': "Hour";
85
+ readonly 'core.form.time-spinner.minute': "Minute";
86
+ readonly 'core.form.time-spinner.second': "Second";
87
+ readonly 'core.form.time-spinner.increase-hour': "Increase hour";
88
+ readonly 'core.form.time-spinner.decrease-hour': "Decrease hour";
89
+ readonly 'core.form.time-spinner.increase-minute': "Increase minute";
90
+ readonly 'core.form.time-spinner.decrease-minute': "Decrease minute";
91
+ readonly 'core.form.time-spinner.increase-second': "Increase second";
92
+ readonly 'core.form.time-spinner.decrease-second': "Decrease second";
93
+ readonly 'core.form.input-number.required': "Please enter information";
94
+ readonly 'core.form.input-number.min': "Value must not be less than {min}";
95
+ readonly 'core.form.input-number.max': "Value must not be greater than {max}";
96
+ readonly 'core.form.radio.required': "Please enter information";
97
+ readonly 'core.form.select.required': "Please enter information";
98
+ readonly 'core.form.textarea.required': "Please enter information";
99
+ readonly 'core.form.textarea.maxlength': "Maximum characters: {max}";
100
+ readonly 'core.form.textarea.invalid-pattern': "Invalid format";
101
+ readonly 'core.form.textarea.exceeded': "Exceeded maximum characters";
102
+ readonly 'core.component.editor.required': "Please enter content";
103
+ readonly 'core.component.editor.maxlength': "Maximum characters: {max}";
104
+ readonly 'core.component.editor.image.invalid-format': "File format \".{format}\" is not allowed. Allowed formats: {allowed}";
105
+ readonly 'core.component.editor.image.size-exceeded': "File size {sizeMB}MB exceeds the limit of {maxSizeMB}MB";
106
+ readonly 'core.component.editor.image.min-width': "Image width {width}px is below the minimum of {min}px";
107
+ readonly 'core.component.editor.image.min-height': "Image height {height}px is below the minimum of {min}px";
108
+ readonly 'core.component.editor.image.max-width': "Image width {width}px exceeds the limit of {max}px";
109
+ readonly 'core.component.editor.image.max-height': "Image height {height}px exceeds the limit of {max}px";
110
+ readonly 'core.component.editor.image.max-per-selection': "You can select at most {max} images per selection";
111
+ readonly 'core.component.document-builder.page-number.current': "Current page number";
112
+ readonly 'core.component.document-builder.page-number.total': "Total pages";
113
+ readonly 'core.component.document-builder.ck-comment.label': "Comment";
114
+ readonly 'core.component.document-builder.ck-comment.text-too-long': "Text too long ({length} characters). Maximum {max} characters.";
115
+ readonly 'core.component.document-builder.variable.not-allowed': "Adding variable to the text is not allowed";
116
+ readonly 'core.component.document-builder.variable.invalid-data': "Invalid variable data";
117
+ readonly 'core.component.form-builder.field-key': "Field key";
118
+ readonly 'core.component.form-builder.display': "Display";
119
+ readonly 'core.component.form-builder.general': "General";
120
+ readonly 'core.component.form-builder.visible-when': "Visible when";
121
+ readonly 'core.component.form-builder.required': "Required";
122
+ readonly 'core.component.form-builder.label': "Label";
123
+ readonly 'core.component.form-builder.disabled': "Disabled";
124
+ readonly 'core.component.form-builder.disabled-when': "Disabled when";
125
+ readonly 'core.component.form-builder.hidden-when': "Hidden when";
126
+ readonly 'core.component.form-builder.validation': "Validation";
127
+ readonly 'core.component.form-builder.required-when': "Required when";
128
+ readonly 'core.component.form-builder.confirm': "Confirm";
129
+ readonly 'core.component.form-builder.delete': "Delete";
130
+ readonly 'core.component.form-builder.save': "Save";
131
+ readonly 'core.component.form-builder.hint': "Hint";
132
+ readonly 'core.component.form-builder.parameter': "Parameters";
133
+ readonly 'core.component.form-builder.add-field': "Add field";
134
+ readonly 'core.component.form-builder.data': "Data";
135
+ readonly 'core.component.form-builder.query-condition': "Query condition";
136
+ readonly 'core.component.form-builder.set-query-value': "Set query value";
137
+ readonly 'core.component.form-builder.value-source-field': "Source field";
138
+ readonly 'core.component.form-builder.assign-parameter': "Assign parameter";
139
+ readonly 'core.component.form-builder.template-data': "Template data";
140
+ readonly 'core.component.form-builder.set-expression': "Set expression";
141
+ readonly 'core.component.form-builder.condition-group': "Condition group";
142
+ readonly 'core.component.form-builder.condition': "Condition";
143
+ readonly 'core.component.form-builder.layout': "Layout";
144
+ readonly 'core.component.form-builder.maxlength': "Maximum characters";
145
+ readonly 'core.component.form-builder.assign-parameter-value': "Assign parameter value";
146
+ readonly 'core.component.form-builder.parameter-name': "Parameter name";
147
+ readonly 'core.component.form-builder.parameter-value': "Parameter value";
148
+ readonly 'core.component.form-builder.assign-value': "Assign value";
149
+ readonly 'core.component.form-builder.add-data': "Add data";
150
+ readonly 'core.component.form-builder.data-api': "API data";
151
+ readonly 'core.component.form-builder.data-static': "Static data";
152
+ readonly 'core.component.form-builder.set-on-change-assign': "Set value-on-change";
153
+ readonly 'core.component.form-builder.target-field': "Target field";
154
+ readonly 'core.component.form-builder.target-value': "Target value";
155
+ readonly 'core.component.form-builder.column-data': "Column data";
156
+ readonly 'core.component.form-builder.add-column': "Add column";
157
+ readonly 'core.component.form-builder.column-config': "Column config";
158
+ readonly 'core.component.form-builder.column-name': "Column name";
159
+ readonly 'core.component.form-builder.width': "Width";
160
+ readonly 'core.component.form-builder.data-type': "Data type";
161
+ readonly 'core.component.form-builder.show-when-true': "Show when TRUE";
162
+ readonly 'core.component.form-builder.show-when-false': "Show when FALSE";
163
+ readonly 'core.component.form-builder.column-list': "Column list";
164
+ readonly 'core.component.form-builder.yes-no': "Yes/No";
165
+ readonly 'core.component.form-builder.config-validation-error-warning': "Configure validation error/warning";
166
+ readonly 'core.component.form-builder.message-type': "Message type";
167
+ readonly 'core.component.form-builder.message-display': "Display message";
168
+ readonly 'core.component.form-builder.condition-expression': "Condition expression";
169
+ readonly 'core.component.form-builder.add-validation': "Add validation";
170
+ readonly 'core.component.form-builder.expression': "Expression";
171
+ readonly 'core.component.form-builder.available-methods': "Available methods";
172
+ readonly 'core.component.form-builder.format': "Format";
173
+ readonly 'core.component.form-builder.time': "Time";
174
+ readonly 'core.component.form-builder.content': "Content";
175
+ readonly 'core.component.form-builder.min': "Minimum";
176
+ readonly 'core.component.form-builder.max': "Maximum";
177
+ readonly 'core.component.form-builder.vertical': "Vertical";
178
+ readonly 'core.component.form-builder.multiple': "Multiple selection";
179
+ readonly 'core.component.form-builder.default-value': "Default value";
180
+ readonly 'core.component.form-builder.type': "Type";
181
+ readonly 'core.component.form-builder.file': "File";
182
+ readonly 'core.component.form-builder.image': "Image";
183
+ readonly 'core.component.form-builder.max-files': "Max files/images";
184
+ readonly 'core.component.form-builder.size-mb': "Size (MB)";
185
+ readonly 'core.component.form-builder.format-example': "Format (e.g. png,jpg ...)";
186
+ readonly 'core.component.form-builder.source-mobile': "Source (mobile)";
187
+ readonly 'core.component.form-builder.config-variable': "Configure variables";
188
+ readonly 'core.component.form-builder.config-validation-warning-error': "Configure validation warning/error";
189
+ readonly 'core.component.form-builder.back-to-design': "Back to design";
190
+ readonly 'core.component.form-builder.preview': "Preview";
191
+ readonly 'core.component.form-builder.drag-vertically': "Drag up/down";
192
+ readonly 'core.component.form-builder.unset-readonly': "Remove read-only";
193
+ readonly 'core.component.form-builder.set-readonly': "Read-only";
194
+ readonly 'core.component.form-builder.duplicate': "Duplicate";
195
+ readonly 'core.component.form-builder.show': "Show";
196
+ readonly 'core.component.form-builder.hide': "Hide";
197
+ readonly 'core.component.form-builder.flex': "Flex";
198
+ readonly 'core.component.form-builder.display-label': "Display label";
199
+ readonly 'core.component.form-builder.attribute': "Attribute";
200
+ readonly 'core.component.form-builder.add-variable': "Add variable";
201
+ readonly 'core.component.form-builder.add-new': "Add new";
202
+ readonly 'core.component.form-builder.detail': "Details";
203
+ readonly 'core.component.form-builder.create-update': "Create/update";
204
+ readonly 'core.component.form-builder.default': "Default";
205
+ readonly 'core.component.form-builder.show-more': "Show more";
206
+ readonly 'core.component.form-builder.show-less': "Show less";
207
+ readonly 'core.component.form-builder.row-overflow': "Cannot move to this row because the total size exceeds 12 columns";
208
+ readonly 'core.component.form-builder.upload-source.all': "All";
209
+ readonly 'core.component.form-builder.upload-source.photo-library': "Pick from library";
210
+ readonly 'core.component.form-builder.upload-source.capture': "Take photo";
211
+ readonly 'core.component.form-builder.components': "Components";
212
+ readonly 'core.component.form-builder.search-components': "Search components…";
213
+ readonly 'core.component.form-builder.view-json': "View JSON";
214
+ readonly 'core.component.form-builder.design': "Design";
215
+ readonly 'core.component.form-builder.preview-runtime': "Preview · Runtime";
216
+ readonly 'core.component.form-builder.cancel': "Cancel";
217
+ readonly 'core.component.form-builder.submit': "Submit";
218
+ readonly 'core.component.form-builder.empty-title': "Drag components here to start";
219
+ readonly 'core.component.form-builder.empty-hint': "Build your form by dragging fields from the left panel, or press";
220
+ readonly 'core.component.form-builder.conditional': "Conditional";
221
+ readonly 'core.component.form-builder.group-drop-here': "Drop a field here to add it to this group";
222
+ readonly 'core.component.form-builder.hidden': "Hidden";
223
+ readonly 'core.component.form-builder.read-only': "Read only";
224
+ readonly 'core.component.form-builder.untitled': "Untitled";
225
+ readonly 'core.component.form-builder.no-selection-title': "Nothing selected";
226
+ readonly 'core.component.form-builder.no-selection-hint': "Select a component on the canvas to edit its attributes.";
227
+ readonly 'core.component.form-builder.group-children': "Children";
228
+ readonly 'core.component.form-builder.group-icon': "Icon";
229
+ readonly 'core.component.form-builder.group-accent-color': "Accent color";
230
+ readonly 'core.component.form-builder.group-no-children': "No fields yet. Add or drag fields into this group.";
231
+ readonly 'core.component.form-builder.break': "Break";
232
+ readonly 'core.component.code-editor.copied': "Copied!";
233
+ readonly 'core.component.code-editor.copy': "Copy code";
234
+ readonly 'core.component.history.by': "By";
235
+ readonly 'core.component.import-excel.title': "Import Excel data";
236
+ readonly 'core.component.import-excel.see-all': "See all";
237
+ readonly 'core.component.import-excel.valid-rows': "Valid rows";
238
+ readonly 'core.component.import-excel.error-rows': "Error rows";
239
+ readonly 'core.component.import-excel.warning-rows': "Warning rows";
240
+ readonly 'core.component.import-excel.valid-data': "Valid data";
241
+ readonly 'core.component.import-excel.download-template-tooltip': "Click to download template";
242
+ readonly 'core.component.import-excel.upload': "Upload";
243
+ readonly 'core.component.import-excel.download': "Download";
244
+ readonly 'core.component.import-excel.confirm-save': "Confirm & Save";
245
+ readonly 'core.component.import-excel.status': "Status";
246
+ readonly 'core.component.import-excel.no-data-upload': "No data uploaded";
247
+ readonly 'core.component.import-excel.click-here-template': "Click here to download template";
248
+ readonly 'core.component.import-excel.no-data-in-file': "File has no data";
249
+ readonly 'core.component.import-excel.row-limit': "Upload limit is {limit} rows";
250
+ readonly 'core.component.import-excel.required': "Required data";
251
+ readonly 'core.component.import-excel.min-length': "Minimum string length: {min}";
252
+ readonly 'core.component.import-excel.max-length': "Maximum string length: {max}";
253
+ readonly 'core.component.import-excel.not-a-number': "{value} is not a valid number";
254
+ readonly 'core.component.import-excel.below-min': "{value} is below the minimum value: {min}";
255
+ readonly 'core.component.import-excel.above-max': "{value} is above the maximum value: {max}";
256
+ readonly 'core.component.import-excel.invalid-bool': "Please enter a valid value (true, false, 1, 0)";
257
+ readonly 'core.component.import-excel.invalid-value': "Value {value} is invalid";
258
+ readonly 'core.component.import-excel.value-not-in-list': "Value {value} is not in the allowed list [{list}]";
259
+ readonly 'core.component.import-excel.invalid-date-format': "Date {value} does not match format {format}";
260
+ readonly 'core.component.import-excel.generic-error': "An error occurred";
261
+ readonly 'core.component.import-excel.notify-title': "Notification";
262
+ readonly 'core.component.import-excel.message-column': "Message";
263
+ readonly 'core.component.import-excel.success': "Success";
264
+ readonly 'core.component.preview-image.no-image': "No image information";
265
+ readonly 'core.component.preview-image.title': "Preview image";
266
+ readonly 'core.component.preview-image.no-image-hint': "There are no images to display";
267
+ readonly 'core.component.preview-image.load-error': "Failed to load image";
268
+ readonly 'core.component.preview-image.load-error-hint': "The image may have been deleted or the path is invalid";
269
+ readonly 'core.component.preview-image.retry': "Retry";
270
+ readonly 'core.component.preview-image.close': "Close";
271
+ readonly 'core.component.preview-image.prev': "Previous image";
272
+ readonly 'core.component.preview-image.next': "Next image";
273
+ readonly 'core.component.preview-image.zoom-in': "Zoom in";
274
+ readonly 'core.component.preview-image.zoom-out': "Zoom out";
275
+ readonly 'core.component.preview-image.fit': "Fit to screen";
276
+ readonly 'core.component.preview-image.rotate': "Rotate";
277
+ readonly 'core.component.preview-image.download': "Download";
278
+ readonly 'core.component.preview-image.fullscreen': "Fullscreen";
279
+ readonly 'core.component.preview-image.loading': "Loading image...";
280
+ readonly 'core.component.preview-image.kbd-hint-nav': "navigate";
281
+ readonly 'core.component.preview-image.kbd-hint-close': "close";
282
+ readonly 'core.component.preview-pdf.title': "Preview document";
283
+ readonly 'core.component.preview-pdf.close': "Close";
284
+ readonly 'core.component.preview-pdf.pages-count': "{count} pages";
285
+ readonly 'core.component.preview-pdf.tab.thumbnails': "Pages";
286
+ readonly 'core.component.preview-pdf.tab.outline': "Outline";
287
+ readonly 'core.component.preview-pdf.tab.search': "Find";
288
+ readonly 'core.component.preview-pdf.first-page': "First page";
289
+ readonly 'core.component.preview-pdf.prev-page': "Previous page";
290
+ readonly 'core.component.preview-pdf.next-page': "Next page";
291
+ readonly 'core.component.preview-pdf.last-page': "Last page";
292
+ readonly 'core.component.preview-pdf.zoom-in': "Zoom in";
293
+ readonly 'core.component.preview-pdf.zoom-out': "Zoom out";
294
+ readonly 'core.component.preview-pdf.fit-page': "Fit page";
295
+ readonly 'core.component.preview-pdf.fit-width': "Fit width";
296
+ readonly 'core.component.preview-pdf.actual-size': "Actual size";
297
+ readonly 'core.component.preview-pdf.rotate': "Rotate";
298
+ readonly 'core.component.preview-pdf.scroll-page': "Single page";
299
+ readonly 'core.component.preview-pdf.scroll-continuous': "Continuous scroll";
300
+ readonly 'core.component.preview-pdf.print': "Print";
301
+ readonly 'core.component.preview-pdf.download': "Download";
302
+ readonly 'core.component.preview-pdf.fullscreen': "Fullscreen";
303
+ readonly 'core.component.preview-pdf.toggle-sidebar': "Toggle sidebar";
304
+ readonly 'core.component.preview-pdf.page-of': "page {current} / {total}";
305
+ readonly 'core.component.preview-pdf.empty.title': "No document";
306
+ readonly 'core.component.preview-pdf.empty.subtitle': "No PDF file to display yet";
307
+ readonly 'core.component.preview-pdf.loading': "Loading document...";
308
+ readonly 'core.component.preview-pdf.loading.page': "Processing page {current} / {total}";
309
+ readonly 'core.component.preview-pdf.error.invalid.title': "Failed to load document";
310
+ readonly 'core.component.preview-pdf.error.invalid.body': "The PDF file may be corrupted. Please check the file.";
311
+ readonly 'core.component.preview-pdf.error.password.title': "Document is protected";
312
+ readonly 'core.component.preview-pdf.error.password.body': "This PDF file requires a password to open.";
313
+ readonly 'core.component.preview-pdf.error.network.title': "Cannot connect";
314
+ readonly 'core.component.preview-pdf.error.network.body': "Unable to load the file from the server. Please try again later.";
315
+ readonly 'core.component.preview-pdf.error.unknown.title': "An error occurred";
316
+ readonly 'core.component.preview-pdf.error.unknown.body': "Please retry or download the original file to view it.";
317
+ readonly 'core.component.preview-pdf.error.retry': "Retry";
318
+ readonly 'core.component.preview-pdf.error.download-raw': "Download original";
319
+ readonly 'core.component.preview-pdf.deferred.outline': "Outline will be added in a future version.";
320
+ readonly 'core.component.preview-pdf.deferred.search': "Search will be added in a future version.";
321
+ readonly 'core.component.preview-pdf.search': "Search";
322
+ readonly 'core.component.preview-pdf.search-placeholder': "Search in document...";
323
+ readonly 'core.component.preview-pdf.search-case': "Match case";
324
+ readonly 'core.component.preview-pdf.search-whole': "Whole word";
325
+ readonly 'core.component.preview-pdf.search-no-results': "No results";
326
+ readonly 'core.component.preview-pdf.search-results-count': "{count} results for \"{term}\"";
327
+ readonly 'core.component.preview-pdf.search-prev': "Previous match";
328
+ readonly 'core.component.preview-pdf.search-next': "Next match";
329
+ readonly 'core.component.preview-pdf.search-close': "Close search";
330
+ readonly 'core.component.table.setup': "Table setup";
331
+ readonly 'core.component.table.column-header': "Column header";
332
+ readonly 'core.component.table.width': "Width";
333
+ readonly 'core.component.table.fixed': "Fixed";
334
+ readonly 'core.component.table.char-limit': "Character limit";
335
+ readonly 'core.component.table.skip': "Skip";
336
+ readonly 'core.component.table.apply': "Apply";
337
+ readonly 'core.component.table.filter': "Filter";
338
+ readonly 'core.component.table.clear-selection': "Clear selection";
339
+ readonly 'core.component.table.customize': "Customize";
340
+ readonly 'core.component.table.search': "Search";
341
+ readonly 'core.component.table.reload': "Reload";
342
+ readonly 'core.component.table.setup-short': "Setup";
343
+ readonly 'core.component.table.no-results': "No results found";
344
+ readonly 'core.component.table.no-results-hint': "Please search or filter with different criteria";
345
+ readonly 'core.component.table.choose-filter-hint': "Please choose a filter to start";
346
+ readonly 'core.component.table.no-data': "No data";
347
+ readonly 'core.component.table.export-excel': "Export Excel";
348
+ readonly 'core.component.table.export-csv': "Export CSV";
349
+ readonly 'core.component.table.showing': "Showing:";
350
+ readonly 'core.component.table.paginator.first-page': "First page";
351
+ readonly 'core.component.table.paginator.last-page': "Last page";
352
+ readonly 'core.component.table.paginator.items-per-page': "Showing";
353
+ readonly 'core.component.table.paginator.next-page': "Next page";
354
+ readonly 'core.component.table.paginator.previous-page': "Previous page";
355
+ readonly 'core.component.table.error-occurred': "An error occurred";
356
+ readonly 'core.component.table.not-an-array': "Data is not an array";
357
+ readonly 'core.component.table.config.confirm-reset': "Confirm reset all settings to defaults";
358
+ readonly 'core.component.table.popup-export.select-columns': "Please select columns to export";
359
+ readonly 'core.component.table.selector-action.default-msg': "items selected";
360
+ readonly 'core.component.tab-router.too-many-tabs': "You have opened too many tabs.";
361
+ readonly 'core.component.upload-file.upload': "Upload file";
362
+ readonly 'core.component.upload-file.error-occurred': "An error occurred";
363
+ readonly 'core.component.upload-file.please-upload': "Please upload a file/image";
364
+ readonly 'core.component.upload-file.desc-format-and-size': "Format: {exts} and up to: {maxSize}MB";
365
+ readonly 'core.component.upload-file.desc-format': "Format: {exts}";
366
+ readonly 'core.component.upload-file.desc-max-size': "Up to: {maxSize}MB";
367
+ readonly 'core.component.upload-file.not-image': "[{name}] Uploaded file is not an image";
368
+ readonly 'core.component.upload-file.invalid-format': "[{name}] Uploaded file has invalid format: {exts}";
369
+ readonly 'core.component.upload-file.size-exceeded': "[{name}] Max file size: {maxSize} MB";
370
+ readonly 'core.component.upload-file.upload-failed': "An error occurred during file upload";
371
+ readonly 'core.component.upload-file.too-many-files': "You selected too many files. Please check the count";
372
+ readonly 'core.component.upload-file.confirm-delete-message': "Do you want to delete this file? This action cannot be undone";
373
+ readonly 'core.component.upload-file.confirm-delete-title': "Confirm delete?";
374
+ readonly 'core.component.upload-file.confirm-yes': "Confirm";
375
+ readonly 'core.component.upload-file.confirm-no': "Cancel";
376
+ readonly 'core.component.upload-file.no-configuration': "Please inject SD_UPLOAD_FILE_CONFIGURATION or pass [upload] directly into the component";
377
+ readonly 'core.component.upload-file.no-configuration-key': "No upload configuration found for key='{key}'. Please check providers or pass [upload] directly";
378
+ readonly 'core.component.upload-file.preview-title': "Preview image";
379
+ readonly 'core.module.layout.user.change-password': "Change password";
380
+ readonly 'core.module.layout.user.logout': "Sign out";
381
+ readonly 'core.module.layout.sidebar.search': "Search";
382
+ readonly 'core.module.layout.greeting.hello': "Hello, {name}";
383
+ readonly 'core.module.layout.weekday.0': "Sunday";
384
+ readonly 'core.module.layout.weekday.1': "Monday";
385
+ readonly 'core.module.layout.weekday.2': "Tuesday";
386
+ readonly 'core.module.layout.weekday.3': "Wednesday";
387
+ readonly 'core.module.layout.weekday.4': "Thursday";
388
+ readonly 'core.module.layout.weekday.5': "Friday";
389
+ readonly 'core.module.layout.weekday.6': "Saturday";
390
+ readonly 'core.module.layout.today-info.format': "{weekday}, {date}";
391
+ readonly 'core.module.layout.forbidden.title': "Access denied";
392
+ readonly 'core.module.layout.forbidden.message': "You don't have permission to access this page. Please contact your administrator or go back to the home page";
393
+ readonly 'core.module.layout.forbidden.back-home': "Back to home";
394
+ readonly 'core.module.layout.not-found.title': "404 - Page not found";
395
+ readonly 'core.module.layout.not-found.message': "The page you're looking for doesn't exist or has been removed. Please check the URL or go back to the home page to continue.";
396
+ readonly 'core.module.layout.not-found.back': "Go back";
397
+ readonly 'core.module.layout.home.tab-name': "Home";
398
+ readonly 'core.module.layout.home.feature.data': "Data";
399
+ readonly 'core.module.layout.home.feature.reports': "Reports";
400
+ readonly 'core.module.layout.home.feature.users': "Users";
401
+ readonly 'core.module.layout.home.feature.workflow': "Workflow";
402
+ readonly 'core.module.layout.home.feature.audit': "Audit";
403
+ readonly 'core.module.layout.home.feature.integration': "Integration";
404
+ readonly 'core.module.layout.mock.user.full-name': "Demo User";
405
+ readonly 'core.module.generic.generic-select.detail-link': "details";
406
+ };
@@ -0,0 +1,2 @@
1
+ import type { Language } from './i18n.types';
2
+ export declare const I18N_MESSAGES: Record<Language, Readonly<Record<string, string>>>;
@@ -0,0 +1,9 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { I18nParams } from './i18n.types';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TranslatePipe implements PipeTransform {
5
+ #private;
6
+ transform(key: string, params?: I18nParams): string;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslatePipe, never>;
8
+ static ɵpipe: i0.ɵɵPipeDeclaration<TranslatePipe, "translate", true>;
9
+ }
@@ -0,0 +1,14 @@
1
+ import { Signal } from '@angular/core';
2
+ import { I18nParams, Language } from './i18n.types';
3
+ import * as i0 from "@angular/core";
4
+ export declare class I18nService {
5
+ #private;
6
+ readonly language: Signal<Language>;
7
+ readonly messages: Signal<Readonly<Record<string, string>>>;
8
+ setLanguage(lang: Language, opts?: {
9
+ reload?: boolean;
10
+ }): void;
11
+ t(key: string, params?: I18nParams): string;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<I18nService, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<I18nService>;
14
+ }
@@ -0,0 +1 @@
1
+ export declare const I18N_STORAGE_KEY = "sd-core.language";
@@ -0,0 +1,31 @@
1
+ import type { EN_MESSAGES } from './en';
2
+ import { SUPPORTED_LANGUAGES, type Language } from '@sd-angular/core/models';
3
+ export { SUPPORTED_LANGUAGES };
4
+ export type { Language };
5
+ export type I18nKey = keyof typeof EN_MESSAGES;
6
+ export type I18nParams = Record<string, string | number>;
7
+ /**
8
+ * I18nCatalog — full catalog of messages keyed by I18nKey.
9
+ *
10
+ * Tip: hover over EN_MESSAGES['key'] to see the EN reference value when typing a custom catalog.
11
+ *
12
+ * Example:
13
+ * import type { I18nCatalog } from '@sd-angular/core/i18n';
14
+ * const myCustom: I18nCatalog = {
15
+ * 'core.common.cancel': 'Annuler',
16
+ * // ... must provide all keys
17
+ * };
18
+ */
19
+ export type I18nCatalog = Record<I18nKey, string>;
20
+ /**
21
+ * Custom language provider. Returns a complete I18nCatalog synchronously.
22
+ *
23
+ * Sync-only by design: keeping the resolution path synchronous lets `t()` return the
24
+ * correct value on the very first call (no microtask flash of 'vi' fallback) and keeps
25
+ * the pipe pure. If you need to load a catalog from an API, fetch it before
26
+ * bootstrapping Angular and pass the already-resolved object here.
27
+ *
28
+ * Example:
29
+ * const config: ISdCoreConfiguration = { language: () => ({ ...myCatalog }) };
30
+ */
31
+ export type CustomLanguageProvider = () => I18nCatalog;
@@ -0,0 +1,2 @@
1
+ import type { EN_MESSAGES } from './en';
2
+ export declare const JA_MESSAGES: Record<keyof typeof EN_MESSAGES, string>;
@@ -0,0 +1,2 @@
1
+ import type { EN_MESSAGES } from './en';
2
+ export declare const KO_MESSAGES: Record<keyof typeof EN_MESSAGES, string>;