{"version":3,"file":"sdcorejs-angular-i18n.mjs","sources":["../../../projects/sdcorejs-angular/i18n/src/i18n.token.ts","../../../projects/sdcorejs-angular/i18n/src/en.ts","../../../projects/sdcorejs-angular/i18n/src/ja.ts","../../../projects/sdcorejs-angular/i18n/src/ko.ts","../../../projects/sdcorejs-angular/i18n/src/vi.ts","../../../projects/sdcorejs-angular/i18n/src/zh.ts","../../../projects/sdcorejs-angular/i18n/src/i18n.messages.ts","../../../projects/sdcorejs-angular/i18n/src/i18n.service.ts","../../../projects/sdcorejs-angular/i18n/src/i18n.pipe.ts","../../../projects/sdcorejs-angular/i18n/sdcorejs-angular-i18n.ts"],"sourcesContent":["export const I18N_STORAGE_KEY = 'sd-core.language';\n","export const EN_MESSAGES = {\n  'core.common.cancel': 'Cancel',\n  'core.common.close': 'Close',\n  'core.common.reload': 'Reload page',\n  'core.test.greet': 'Hello {name}',\n\n  // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----\n  'core.validator.email.name': 'Email',\n  'core.validator.email.error': 'Invalid email',\n  'core.validator.phone.name': 'Phone',\n  'core.validator.phone.error': 'Invalid phone number',\n  // Legacy aliases — pattern.model.ts cũ vẫn dùng các key này (phone-vn / cccd / id-vn)\n  'core.validator.phone-vn.name': 'VN phone',\n  'core.validator.phone-vn.error': 'Invalid Vietnamese phone number',\n  'core.validator.cccd.name': 'National ID',\n  'core.validator.cccd.error': 'Invalid national ID (12 digits)',\n  'core.validator.id-vn.name': 'National ID / Passport',\n  'core.validator.id-vn.error': 'Invalid national ID or passport',\n  'core.validator.vn-phone.name': 'VN phone',\n  'core.validator.vn-phone.error': 'Invalid Vietnamese phone number',\n  'core.validator.vn-id.name': 'National ID',\n  'core.validator.vn-id.error': 'Invalid national ID (12 digits)',\n  'core.validator.passport.name': 'Passport',\n  'core.validator.passport.error': 'Invalid passport (1 letter + 7 digits)',\n  'core.validator.vn-id-or-passport.name': 'National ID / Passport',\n  'core.validator.vn-id-or-passport.error': 'Invalid national ID or passport',\n  'core.validator.time.name': 'Time',\n  'core.validator.time.error': 'Invalid time (format HH:mm)',\n  'core.validator.url.name': 'URL',\n  'core.validator.url.error': 'Invalid URL',\n  'core.validator.domain.name': 'Domain',\n  'core.validator.domain.error': 'Invalid domain',\n  'core.validator.ipv4.name': 'IPv4',\n  'core.validator.ipv4.error': 'Invalid IPv4 address',\n  'core.validator.ipv6.name': 'IPv6',\n  'core.validator.ipv6.error': 'Invalid IPv6 address',\n  'core.validator.image-url.name': 'Image URL',\n  'core.validator.image-url.error': 'Invalid image URL',\n  'core.validator.slug.name': 'Slug',\n  'core.validator.slug.error': 'Invalid slug',\n  'core.validator.number.name': 'Number',\n  'core.validator.number.error': 'Invalid number',\n  'core.validator.integer.name': 'Integer',\n  'core.validator.integer.error': 'Invalid integer',\n  'core.validator.decimal.name': 'Decimal',\n  'core.validator.decimal.error': 'Invalid decimal number',\n  'core.validator.positive-number.name': 'Positive number',\n  'core.validator.positive-number.error': 'Must be a positive number',\n  'core.validator.uuid.name': 'UUID',\n  'core.validator.uuid.error': 'Invalid UUID',\n  'core.validator.code-16.name': '16-char code',\n  'core.validator.code-16.error': 'Invalid 16-character code',\n  'core.validator.code-32.name': '32-char code',\n  'core.validator.code-32.error': 'Invalid 32-character code',\n  'core.validator.hex-color.name': 'Hex color',\n  'core.validator.hex-color.error': 'Invalid hex color',\n  'core.validator.base64.name': 'Base64',\n  'core.validator.base64.error': 'Invalid Base64 string',\n\n  // ---- Operators (operator.model.ts) ----\n  'core.operator.equal.display': 'Equal',\n  'core.operator.not-equal.display': 'Not equal',\n  'core.operator.greater-than.display': 'Greater than',\n  'core.operator.less-than.display': 'Less than',\n  'core.operator.greater-or-equal.display': 'Greater than or equal',\n  'core.operator.less-or-equal.display': 'Less than or equal',\n  'core.operator.contain.display': 'Contains',\n  'core.operator.not-contain.display': 'Does not contain',\n  'core.operator.start-with.display': 'Starts with',\n  'core.operator.not-start-with.display': 'Does not start with',\n  'core.operator.end-with.display': 'Ends with',\n  'core.operator.not-end-with.display': 'Does not end with',\n  'core.operator.in.display': 'In',\n  'core.operator.not-in.display': 'Not in',\n  'core.operator.between.display': 'Between',\n  'core.operator.null.display': 'Is empty',\n  'core.operator.not-null.display': 'Is not empty',\n\n  // ---- Global error handler ----\n  'core.handler.global-error.update-title': 'A NEW SYSTEM UPDATE IS AVAILABLE',\n  'core.handler.global-error.update-body':\n    'The current version is outdated and could not load resources.\\nPlease press OK to reload the page.',\n\n  // ---- Interceptor: no-internet ----\n  'core.interceptor.no-internet.offline': 'No network connection. Waiting for connection...',\n  'core.interceptor.no-internet.cors-error': 'Cannot connect to server (CORS or configuration error).',\n  'core.interceptor.no-internet.maintenance': 'Server is under maintenance. Please try again later.',\n  'core.interceptor.no-internet.restored': 'Connection restored.',\n\n  // ---- Service: excel ----\n  'core.excel.cannot-read-file': 'Could not read file content',\n  'core.excel.no-sheet': 'Excel file has no data sheet',\n\n  // ---- Service: docx ----\n  'core.docx.invalid-format': 'Invalid format. Please select a template in DOC or DOCX format',\n  'core.docx.size-exceeded': 'Template file size exceeds the supported limit. Please try again',\n  'core.docx.convert-error': 'An error occurred while converting the DOCX file',\n\n  // ---- Service: notify (toast) ----\n  'core.notify.type.success': 'Success',\n  'core.notify.type.info': 'Information',\n  'core.notify.type.warning': 'Warning',\n  'core.notify.type.error': 'Error',\n  'core.notify.show-more': 'Show more ({count})',\n  'core.notify.show-less': 'Show less',\n\n  // ---- Service: confirm ----\n  'core.confirm.title': 'Confirm',\n  'core.confirm.yes': 'OK',\n  'core.confirm.no': 'Cancel',\n  'core.confirm.yes-short': 'Yes',\n  'core.confirm.no-short': 'No',\n\n  // ---- Directive: hover-copy ----\n  'core.directive.hover-copy.tooltip': 'Copy',\n\n  // ---- Forms: input ----\n  'core.form.input.required': 'Please enter information',\n  'core.form.input.maxlength': 'Maximum characters: {max}',\n  'core.form.input.invalid-pattern': 'Invalid format',\n  'core.form.input.exceeded': 'Exceeded maximum characters',\n  'core.form.input.mask-incomplete': 'The value is incomplete',\n  'core.form.input.mask-invalid': 'The value contains invalid characters',\n\n  // ---- Forms: autocomplete ----\n  'core.form.autocomplete.required': 'Please enter information',\n\n  // ---- Forms: chip ----\n  'core.form.chip.required': 'Please enter information',\n  'core.form.chip.minlength': 'Please enter at least {min} values',\n  'core.form.chip.maxlength': 'Please enter at most {max} values',\n\n  // ---- Forms: chip-calendar ----\n  'core.form.chip-calendar.required': 'Please enter information',\n  'core.form.chip-calendar.minlength': 'Please enter at least {min} values',\n  'core.form.chip-calendar.maxlength': 'Please enter at most {max} values',\n\n  // ---- Forms: date ----\n  'core.form.date.required': 'Please enter information',\n  'core.form.date.min-date': 'Minimum date: {date}',\n  'core.form.date.max-date': 'Maximum date: {date}',\n  'core.form.date.parse-error': 'Parse error: {text}',\n  'core.form.date.invalid-format': 'Invalid format',\n\n  // ---- Forms: date-range ----\n  'core.form.date-range.required': 'Please enter information',\n  'core.form.date-range.invalid-min': 'Start date is invalid (below limit)',\n  'core.form.date-range.invalid-max': 'End date is invalid (above limit)',\n  'core.form.date-range.from': 'From',\n  'core.form.date-range.to': 'to',\n\n  // ---- Forms: datetime ----\n  'core.form.datetime.required': 'Please enter information',\n  'core.form.datetime.min-date': 'Minimum date: {date}',\n  'core.form.datetime.max-date': 'Maximum date: {date}',\n  'core.form.datetime.invalid-format': 'Invalid format',\n  'core.form.datetime.now': 'Now',\n  'core.form.datetime.confirm': 'Confirm',\n\n  // ---- Forms: entity-picker / tree-select ----\n  'core.form.entity-picker.placeholder': 'Select an entity',\n  'core.form.entity-picker.modal-title': 'Select entity',\n  'core.form.entity-picker.value': 'Value',\n  'core.form.entity-picker.clear': 'Clear selection',\n  'core.form.entity-picker.add': 'Add',\n  'core.form.entity-picker.cancel': 'Cancel',\n  'core.form.entity-picker.apply': 'Apply',\n  'core.form.tree-select.placeholder': 'Select a tree item',\n  'core.form.tree-select.modal-title': 'Select tree item',\n  'core.form.tree-select.clear': 'Clear selection',\n  'core.form.tree-select.search': 'Search tree',\n  'core.form.tree-select.cancel': 'Cancel',\n  'core.form.tree-select.apply': 'Apply',\n  'core.component.tree.retry': 'Retry',\n  'core.service.unsaved-changes.message': 'You have unsaved changes. Discard them and continue?',\n  'core.component.job-progress.status.idle': 'Ready',\n  'core.component.job-progress.status.queued': 'Queued',\n  'core.component.job-progress.status.running': 'In progress',\n  'core.component.job-progress.status.succeeded': 'Completed',\n  'core.component.job-progress.status.failed': 'Failed',\n  'core.component.job-progress.status.cancelled': 'Cancelled',\n  'core.component.job-progress.cancel': 'Cancel',\n  'core.component.job-progress.retry': 'Retry',\n  'core.component.audit-diff.label': 'Audit changes',\n  'core.component.audit-diff.field': 'Field',\n  'core.component.audit-diff.before': 'Before',\n  'core.component.audit-diff.after': 'After',\n  'core.component.audit-diff.empty': 'No changes',\n  'core.component.audit-diff.kind.added': 'Added',\n  'core.component.audit-diff.kind.removed': 'Removed',\n  'core.component.audit-diff.kind.changed': 'Changed',\n  'core.component.audit-diff.kind.unchanged': 'Unchanged',\n  'core.component.audit-diff.value.label': 'Value',\n  'core.component.audit-diff.value.not-set': 'Not set',\n  'core.component.audit-diff.value.undefined': 'Undefined',\n  'core.component.audit-diff.value.null': 'Null',\n  'core.component.audit-diff.value.true': 'Yes',\n  'core.component.audit-diff.value.false': 'No',\n\n  // ---- Forms: time ----\n  'core.form.time.required': 'Please enter a time',\n  'core.form.time.invalid': 'Enter a valid time in HH:mm format',\n  'core.form.time.min': 'Time must not be earlier than {min}',\n  'core.form.time.max': 'Time must not be later than {max}',\n  'core.form.time.step': 'Time must align to a {step}-minute interval',\n  'core.form.time.open-picker': 'Open time picker',\n  'core.form.time.confirm': 'Confirm',\n  'core.form.time.clear': 'Clear time',\n\n  // ---- Forms: time-range ----\n  'core.form.time-range.required': 'Please enter both start and end times',\n  'core.form.time-range.incomplete': 'Enter both times or enable an open-ended range',\n  'core.form.time-range.range': 'Start time must not be later than end time',\n  'core.form.time-range.invalid': 'Enter valid times in HH:mm format',\n  'core.form.time-range.min': 'Times must not be earlier than {min}',\n  'core.form.time-range.max': 'Times must not be later than {max}',\n  'core.form.time-range.step': 'Times must align to a {step}-minute interval',\n  'core.form.time-range.from': 'From',\n  'core.form.time-range.to': 'To',\n  'core.form.time-range.clear': 'Clear time range',\n\n  // ---- Forms: time-spinner ----\n  'core.form.time-spinner.hour': 'Hour',\n  'core.form.time-spinner.minute': 'Minute',\n  'core.form.time-spinner.second': 'Second',\n  'core.form.time-spinner.increase-hour': 'Increase hour',\n  'core.form.time-spinner.decrease-hour': 'Decrease hour',\n  'core.form.time-spinner.increase-minute': 'Increase minute',\n  'core.form.time-spinner.decrease-minute': 'Decrease minute',\n  'core.form.time-spinner.increase-second': 'Increase second',\n  'core.form.time-spinner.decrease-second': 'Decrease second',\n\n  // ---- Forms: input-number ----\n  'core.form.input-number.required': 'Please enter information',\n  'core.form.input-number.min': 'Value must not be less than {min}',\n  'core.form.input-number.max': 'Value must not be greater than {max}',\n\n  // ---- Forms: radio ----\n  'core.form.radio.required': 'Please enter information',\n\n  // ---- Forms: switch ----\n  'core.form.switch.on': 'On',\n  'core.form.switch.off': 'Off',\n\n  // ---- Forms: checkbox ----\n  'core.form.checkbox.checked': 'Yes',\n  'core.form.checkbox.unchecked': 'No',\n\n  // ---- Forms: select ----\n  'core.form.select.required': 'Please enter information',\n\n  // ---- Forms: textarea ----\n  'core.form.textarea.required': 'Please enter information',\n  'core.form.textarea.maxlength': 'Maximum characters: {max}',\n  'core.form.textarea.invalid-pattern': 'Invalid format',\n  'core.form.textarea.exceeded': 'Exceeded maximum characters',\n\n  // ---- Component: editor ----\n  'core.component.editor.required': 'Please enter content',\n  'core.component.editor.maxlength': 'Maximum characters: {max}',\n  'core.component.editor.image.invalid-format': 'File format \".{format}\" is not allowed. Allowed formats: {allowed}',\n  'core.component.editor.image.size-exceeded': 'File size {sizeMB}MB exceeds the limit of {maxSizeMB}MB',\n  'core.component.editor.image.min-width': 'Image width {width}px is below the minimum of {min}px',\n  'core.component.editor.image.min-height': 'Image height {height}px is below the minimum of {min}px',\n  'core.component.editor.image.max-width': 'Image width {width}px exceeds the limit of {max}px',\n  'core.component.editor.image.max-height': 'Image height {height}px exceeds the limit of {max}px',\n  'core.component.editor.image.max-per-selection': 'You can select at most {max} images per selection',\n\n  // ---- Component: document-builder ----\n  'core.component.document-builder.page-number.current': 'Current page number',\n  'core.component.document-builder.page-number.total': 'Total pages',\n  'core.component.document-builder.ck-comment.label': 'Comment',\n  'core.component.document-builder.ck-comment.text-too-long': 'Text too long ({length} characters). Maximum {max} characters.',\n  'core.component.document-builder.variable.not-allowed': 'Adding variable to the text is not allowed',\n  'core.component.document-builder.variable.invalid-data': 'Invalid variable data',\n\n  // ---- Component: form-builder ----\n  'core.component.form-builder.field-key': 'Field key',\n  'core.component.form-builder.display': 'Display',\n  'core.component.form-builder.general': 'General',\n  'core.component.form-builder.visible-when': 'Visible when',\n  'core.component.form-builder.required': 'Required',\n  'core.component.form-builder.label': 'Label',\n  'core.component.form-builder.disabled': 'Disabled',\n  'core.component.form-builder.disabled-when': 'Disabled when',\n  'core.component.form-builder.hidden-when': 'Hidden when',\n  'core.component.form-builder.validation': 'Validation',\n  'core.component.form-builder.required-when': 'Required when',\n  'core.component.form-builder.confirm': 'Confirm',\n  'core.component.form-builder.delete': 'Delete',\n  'core.component.form-builder.save': 'Save',\n  'core.component.form-builder.hint': 'Hint',\n  'core.component.form-builder.parameter': 'Parameters',\n  'core.component.form-builder.add-field': 'Add field',\n  'core.component.form-builder.data': 'Data',\n  'core.component.form-builder.query-condition': 'Query condition',\n  'core.component.form-builder.set-query-value': 'Set query value',\n  'core.component.form-builder.value-source-field': 'Source field',\n  'core.component.form-builder.assign-parameter': 'Assign parameter',\n  'core.component.form-builder.template-data': 'Template data',\n  'core.component.form-builder.set-expression': 'Set expression',\n  'core.component.form-builder.condition-group': 'Condition group',\n  'core.component.form-builder.condition': 'Condition',\n  'core.component.form-builder.layout': 'Layout',\n  'core.component.form-builder.maxlength': 'Maximum characters',\n  'core.component.form-builder.assign-parameter-value': 'Assign parameter value',\n  'core.component.form-builder.parameter-name': 'Parameter name',\n  'core.component.form-builder.parameter-value': 'Parameter value',\n  'core.component.form-builder.assign-value': 'Assign value',\n  'core.component.form-builder.add-data': 'Add data',\n  'core.component.form-builder.data-api': 'API data',\n  'core.component.form-builder.data-static': 'Static data',\n  'core.component.form-builder.set-on-change-assign': 'Set value-on-change',\n  'core.component.form-builder.target-field': 'Target field',\n  'core.component.form-builder.target-value': 'Target value',\n  'core.component.form-builder.column-data': 'Column data',\n  'core.component.form-builder.add-column': 'Add column',\n  'core.component.form-builder.column-config': 'Column config',\n  'core.component.form-builder.column-name': 'Column name',\n  'core.component.form-builder.width': 'Width',\n  'core.component.form-builder.data-type': 'Data type',\n  'core.component.form-builder.show-when-true': 'Show when TRUE',\n  'core.component.form-builder.show-when-false': 'Show when FALSE',\n  'core.component.form-builder.column-list': 'Column list',\n  'core.component.form-builder.yes-no': 'Yes/No',\n  'core.component.form-builder.config-validation-error-warning': 'Configure validation error/warning',\n  'core.component.form-builder.message-type': 'Message type',\n  'core.component.form-builder.message-display': 'Display message',\n  'core.component.form-builder.condition-expression': 'Condition expression',\n  'core.component.form-builder.add-validation': 'Add validation',\n  'core.component.form-builder.expression': 'Expression',\n  'core.component.form-builder.available-methods': 'Available methods',\n  'core.component.form-builder.format': 'Format',\n  'core.component.form-builder.time': 'Time',\n  'core.component.form-builder.content': 'Content',\n  'core.component.form-builder.min': 'Minimum',\n  'core.component.form-builder.max': 'Maximum',\n  'core.component.form-builder.vertical': 'Vertical',\n  'core.component.form-builder.multiple': 'Multiple selection',\n  'core.component.form-builder.default-value': 'Default value',\n  'core.component.form-builder.type': 'Type',\n  'core.component.form-builder.file': 'File',\n  'core.component.form-builder.image': 'Image',\n  'core.component.form-builder.max-files': 'Max files/images',\n  'core.component.form-builder.size-mb': 'Size (MB)',\n  'core.component.form-builder.format-example': 'Format (e.g. png,jpg ...)',\n  'core.component.form-builder.source-mobile': 'Source (mobile)',\n  'core.component.form-builder.config-variable': 'Configure variables',\n  'core.component.form-builder.config-validation-warning-error': 'Configure validation warning/error',\n  'core.component.form-builder.back-to-design': 'Back to design',\n  'core.component.form-builder.preview': 'Preview',\n  'core.component.form-builder.drag-vertically': 'Drag up/down',\n  'core.component.form-builder.unset-readonly': 'Remove read-only',\n  'core.component.form-builder.set-readonly': 'Read-only',\n  'core.component.form-builder.duplicate': 'Duplicate',\n  'core.component.form-builder.show': 'Show',\n  'core.component.form-builder.hide': 'Hide',\n  'core.component.form-builder.flex': 'Flex',\n  'core.component.form-builder.display-label': 'Display label',\n  'core.component.form-builder.attribute': 'Attribute',\n  'core.component.form-builder.add-variable': 'Add variable',\n  'core.component.form-builder.add-new': 'Add new',\n  'core.component.form-builder.detail': 'Details',\n  'core.component.form-builder.create-update': 'Create/update',\n  'core.component.form-builder.default': 'Default',\n  'core.component.form-builder.show-more': 'Show more',\n  'core.component.form-builder.show-less': 'Show less',\n  'core.component.inform.show-more': 'Show more',\n  'core.component.inform.show-less': 'Show less',\n  'core.component.data-state.loading.title': 'Loading',\n  'core.component.data-state.loading.message': 'Please wait while the data is being loaded.',\n  'core.component.data-state.empty.title': 'No data',\n  'core.component.data-state.empty.message': 'There is no data to display yet.',\n  'core.component.data-state.error.title': 'Unable to load data',\n  'core.component.data-state.error.message': 'An error occurred. Please try again.',\n  'core.component.data-state.forbidden.title': 'Access denied',\n  'core.component.data-state.forbidden.message': 'You do not have permission to view this content.',\n  'core.component.data-state.retry': 'Try again',\n  'core.component.form-builder.row-overflow': 'Cannot move to this row because the total size exceeds 12 columns',\n  'core.component.form-builder.upload-source.all': 'All',\n  'core.component.form-builder.upload-source.photo-library': 'Pick from library',\n  'core.component.form-builder.upload-source.capture': 'Take photo',\n  // Form-builder UI v2 (M3 redesign)\n  'core.component.form-builder.components': 'Components',\n  'core.component.form-builder.search-components': 'Search components…',\n  'core.component.form-builder.view-json': 'View JSON',\n  'core.component.form-builder.design': 'Design',\n  'core.component.form-builder.preview-runtime': 'Preview · Runtime',\n  'core.component.form-builder.cancel': 'Cancel',\n  'core.component.form-builder.submit': 'Submit',\n  'core.component.form-builder.empty-title': 'Drag components here to start',\n  'core.component.form-builder.empty-hint': 'Build your form by dragging fields from the left panel, or press',\n  'core.component.form-builder.conditional': 'Conditional',\n  'core.component.form-builder.group-drop-here': 'Drop a field here to add it to this group',\n  'core.component.form-builder.edit-group': 'Edit group',\n  'core.component.form-builder.group-empty-hint': 'Click Details to add fields to this group',\n  'core.component.form-builder.hidden': 'Hidden',\n  'core.component.form-builder.read-only': 'Read only',\n  'core.component.form-builder.untitled': 'Untitled',\n  'core.component.form-builder.no-selection-title': 'Nothing selected',\n  'core.component.form-builder.no-selection-hint': 'Select a component on the canvas to edit its attributes.',\n  'core.component.form-builder.group-children': 'Children',\n  'core.component.form-builder.group-icon': 'Icon',\n  'core.component.form-builder.group-accent-color': 'Accent color',\n  'core.component.form-builder.group-no-children': 'No fields yet. Add or drag fields into this group.',\n  'core.component.form-builder.break': 'Break',\n\n  // ---- Component: code-editor ----\n  'core.component.code-editor.copied': 'Copied!',\n  'core.component.code-editor.copy': 'Copy code',\n\n  // ---- Component: history ----\n  'core.component.history.by': 'By',\n\n  // ---- Component: import-excel ----\n  'core.component.import-excel.title': 'Import Excel data',\n  'core.component.import-excel.see-all': 'See all',\n  'core.component.import-excel.valid-rows': 'Valid rows',\n  'core.component.import-excel.error-rows': 'Error rows',\n  'core.component.import-excel.warning-rows': 'Warning rows',\n  'core.component.import-excel.valid-data': 'Valid data',\n  'core.component.import-excel.download-template-tooltip': 'Click to download template',\n  'core.component.import-excel.upload': 'Upload',\n  'core.component.import-excel.download': 'Download',\n  'core.component.import-excel.confirm-save': 'Confirm & Save',\n  'core.component.import-excel.status': 'Status',\n  'core.component.import-excel.no-data-upload': 'No data uploaded',\n  'core.component.import-excel.click-here-template': 'Click here to download template',\n  'core.component.import-excel.no-data-in-file': 'File has no data',\n  'core.component.import-excel.row-limit': 'Upload limit is {limit} rows',\n  'core.component.import-excel.required': 'Required data',\n  'core.component.import-excel.min-length': 'Minimum string length: {min}',\n  'core.component.import-excel.max-length': 'Maximum string length: {max}',\n  'core.component.import-excel.not-a-number': '{value} is not a valid number',\n  'core.component.import-excel.below-min': '{value} is below the minimum value: {min}',\n  'core.component.import-excel.above-max': '{value} is above the maximum value: {max}',\n  'core.component.import-excel.invalid-bool': 'Please enter a valid value (true, false, 1, 0)',\n  'core.component.import-excel.invalid-value': 'Value {value} is invalid',\n  'core.component.import-excel.value-not-in-list': 'Value {value} is not in the allowed list [{list}]',\n  'core.component.import-excel.invalid-date-format': 'Date {value} does not match format {format}',\n  'core.component.import-excel.generic-error': 'An error occurred',\n  'core.component.import-excel.notify-title': 'Notification',\n  'core.component.import-excel.message-column': 'Message',\n  'core.component.import-excel.success': 'Success',\n\n  // ---- Component: preview-image ----\n  'core.component.preview-image.no-image': 'No image information',\n  'core.component.preview-image.title': 'Preview image',\n  'core.component.preview-image.no-image-hint': 'There are no images to display',\n  'core.component.preview-image.load-error': 'Failed to load image',\n  'core.component.preview-image.load-error-hint': 'The image may have been deleted or the path is invalid',\n  'core.component.preview-image.retry': 'Retry',\n  'core.component.preview-image.close': 'Close',\n  'core.component.preview-image.prev': 'Previous image',\n  'core.component.preview-image.next': 'Next image',\n  'core.component.preview-image.zoom-in': 'Zoom in',\n  'core.component.preview-image.zoom-out': 'Zoom out',\n  'core.component.preview-image.fit': 'Fit to screen',\n  'core.component.preview-image.rotate': 'Rotate',\n  'core.component.preview-image.download': 'Download',\n  'core.component.preview-image.fullscreen': 'Fullscreen',\n  'core.component.preview-image.loading': 'Loading image...',\n  'core.component.preview-image.kbd-hint-nav': 'navigate',\n  'core.component.preview-image.kbd-hint-close': 'close',\n\n  // ---- Component: preview-pdf ----\n  'core.component.preview-pdf.title': 'Preview document',\n  'core.component.preview-pdf.close': 'Close',\n  'core.component.preview-pdf.pages-count': '{count} pages',\n  'core.component.preview-pdf.tab.thumbnails': 'Pages',\n  'core.component.preview-pdf.tab.outline': 'Outline',\n  'core.component.preview-pdf.tab.search': 'Find',\n  'core.component.preview-pdf.first-page': 'First page',\n  'core.component.preview-pdf.prev-page': 'Previous page',\n  'core.component.preview-pdf.next-page': 'Next page',\n  'core.component.preview-pdf.last-page': 'Last page',\n  'core.component.preview-pdf.zoom-in': 'Zoom in',\n  'core.component.preview-pdf.zoom-out': 'Zoom out',\n  'core.component.preview-pdf.fit-page': 'Fit page',\n  'core.component.preview-pdf.fit-width': 'Fit width',\n  'core.component.preview-pdf.actual-size': 'Actual size',\n  'core.component.preview-pdf.rotate': 'Rotate',\n  'core.component.preview-pdf.scroll-page': 'Single page',\n  'core.component.preview-pdf.scroll-continuous': 'Continuous scroll',\n  'core.component.preview-pdf.print': 'Print',\n  'core.component.preview-pdf.download': 'Download',\n  'core.component.preview-pdf.fullscreen': 'Fullscreen',\n  'core.component.preview-pdf.toggle-sidebar': 'Toggle sidebar',\n  'core.component.preview-pdf.page-of': 'page {current} / {total}',\n  'core.component.preview-pdf.empty.title': 'No document',\n  'core.component.preview-pdf.empty.subtitle': 'No PDF file to display yet',\n  'core.component.preview-pdf.loading': 'Loading document...',\n  'core.component.preview-pdf.loading.page': 'Processing page {current} / {total}',\n  'core.component.preview-pdf.error.invalid.title': 'Failed to load document',\n  'core.component.preview-pdf.error.invalid.body': 'The PDF file may be corrupted. Please check the file.',\n  'core.component.preview-pdf.error.password.title': 'Document is protected',\n  'core.component.preview-pdf.error.password.body': 'This PDF file requires a password to open.',\n  'core.component.preview-pdf.error.network.title': 'Cannot connect',\n  'core.component.preview-pdf.error.network.body': 'Unable to load the file from the server. Please try again later.',\n  'core.component.preview-pdf.error.unknown.title': 'An error occurred',\n  'core.component.preview-pdf.error.unknown.body': 'Please retry or download the original file to view it.',\n  'core.component.preview-pdf.error.retry': 'Retry',\n  'core.component.preview-pdf.error.download-raw': 'Download original',\n  'core.component.preview-pdf.search': 'Search',\n  'core.component.preview-pdf.search-placeholder': 'Search in document...',\n  'core.component.preview-pdf.search-case': 'Match case',\n  'core.component.preview-pdf.search-whole': 'Whole word',\n  'core.component.preview-pdf.search-no-results': 'No results',\n  'core.component.preview-pdf.search-results-count': '{count} results for \"{term}\"',\n  'core.component.preview-pdf.search-truncated': 'Showing the first {count} matches. Refine your search to see fewer results.',\n  'core.component.preview-pdf.search-prev': 'Previous match',\n  'core.component.preview-pdf.search-next': 'Next match',\n  'core.component.preview-pdf.search-close': 'Close search',\n\n  // ---- Component: table ----\n  'core.component.table.setup': 'Table setup',\n  'core.component.table.column-header': 'Column header',\n  'core.component.table.width': 'Width',\n  'core.component.table.fixed': 'Fixed',\n  'core.component.table.char-limit': 'Character limit',\n  'core.component.table.skip': 'Skip',\n  'core.component.table.apply': 'Apply',\n  'core.component.table.filter': 'Filter',\n  'core.component.table.clear-selection': 'Clear selection',\n  'core.component.table.customize': 'Customize',\n  'core.component.table.search': 'Search',\n  'core.component.table.reload': 'Reload',\n  'core.component.table.setup-short': 'Setup',\n  'core.component.table.no-results': 'No results found',\n  'core.component.table.no-results-hint': 'Please search or filter with different criteria',\n  'core.component.table.choose-filter-hint': 'Please choose a filter to start',\n  'core.component.table.no-data': 'No data',\n  'core.component.table.export-excel': 'Export Excel',\n  'core.component.table.export-csv': 'Export CSV',\n  'core.component.table.showing': 'Showing:',\n  'core.component.table.paginator.first-page': 'First page',\n  'core.component.table.paginator.last-page': 'Last page',\n  'core.component.table.paginator.items-per-page': 'Showing',\n  'core.component.table.paginator.next-page': 'Next page',\n  'core.component.table.paginator.previous-page': 'Previous page',\n  'core.component.table.error-occurred': 'An error occurred',\n  'core.component.table.not-an-array': 'Data is not an array',\n  'core.component.table.config.confirm-reset': 'Confirm reset all settings to defaults',\n  'core.component.table.popup-export.select-columns': 'Please select columns to export',\n  'core.component.table.selector-action.default-msg': 'items selected',\n  'core.component.tab-router.too-many-tabs': 'You have opened too many tabs.',\n\n  // ---- Component: upload-file ----\n  'core.component.upload-file.upload': 'Upload file',\n  'core.component.upload-file.error-occurred': 'An error occurred',\n  'core.component.upload-file.please-upload': 'Please upload a file/image',\n  'core.component.upload-file.desc-format-and-size': 'Format: {exts} and up to: {maxSize}MB',\n  'core.component.upload-file.desc-format': 'Format: {exts}',\n  'core.component.upload-file.desc-max-size': 'Up to: {maxSize}MB',\n  'core.component.upload-file.not-image': '[{name}] Uploaded file is not an image',\n  'core.component.upload-file.invalid-format': '[{name}] Uploaded file has invalid format: {exts}',\n  'core.component.upload-file.size-exceeded': '[{name}] Max file size: {maxSize} MB',\n  'core.component.upload-file.upload-failed': 'An error occurred during file upload',\n  'core.component.upload-file.too-many-files': 'You selected too many files. Please check the count',\n  'core.component.upload-file.confirm-delete-message': 'Do you want to delete this file? This action cannot be undone',\n  'core.component.upload-file.confirm-delete-title': 'Confirm delete?',\n  'core.component.upload-file.confirm-yes': 'Confirm',\n  'core.component.upload-file.confirm-no': 'Cancel',\n  'core.component.upload-file.no-configuration': 'Please inject SD_UPLOAD_FILE_CONFIGURATION or pass [upload] directly into the component',\n  'core.component.upload-file.no-configuration-key':\n    \"No upload configuration found for key='{key}'. Please check providers or pass [upload] directly\",\n  'core.component.upload-file.preview-title': 'Preview image',\n\n  // ---- Module: layout (sidebar / user menu) ----\n  'core.module.layout.user.change-password': 'Change password',\n  'core.module.layout.user.logout': 'Sign out',\n  'core.module.layout.user.update-profile': 'Update profile',\n  'core.module.layout.user.setting': 'Settings',\n  'core.module.layout.user.notification': 'Notifications',\n  'core.module.layout.sidebar.search': 'Search',\n  'core.module.layout.sidebar.toggle': 'Toggle sidebar',\n\n  // ---- Module: layout (greeting + weekday) ----\n  'core.module.layout.greeting.hello': 'Hello, {name}',\n  'core.module.layout.weekday.0': 'Sunday',\n  'core.module.layout.weekday.1': 'Monday',\n  'core.module.layout.weekday.2': 'Tuesday',\n  'core.module.layout.weekday.3': 'Wednesday',\n  'core.module.layout.weekday.4': 'Thursday',\n  'core.module.layout.weekday.5': 'Friday',\n  'core.module.layout.weekday.6': 'Saturday',\n  'core.module.layout.today-info.format': '{weekday}, {date}',\n\n  // ---- Module: layout (forbidden page) ----\n  'core.module.layout.forbidden.title': 'Access denied',\n  'core.module.layout.forbidden.message':\n    \"You don't have permission to access this page. Please contact your administrator or go back to the home page\",\n  'core.module.layout.forbidden.back-home': 'Back to home',\n\n  // ---- Module: layout (not-found page) ----\n  'core.module.layout.not-found.title': '404 - Page not found',\n  'core.module.layout.not-found.message':\n    \"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.\",\n  'core.module.layout.not-found.back': 'Go back',\n\n  // ---- Module: layout (home page) ----\n  'core.module.layout.home.tab-name': 'Home',\n  'core.module.layout.home.feature.data': 'Data',\n  'core.module.layout.home.feature.reports': 'Reports',\n  'core.module.layout.home.feature.users': 'Users',\n  'core.module.layout.home.feature.workflow': 'Workflow',\n  'core.module.layout.home.feature.audit': 'Audit',\n  'core.module.layout.home.feature.integration': 'Integration',\n\n  // ---- Module: layout (mock fallback when SD_LAYOUT_CONFIGURATION is not provided) ----\n  'core.module.layout.mock.user.full-name': 'Demo User',\n\n  // ---- Module: generic (generic-select) ----\n  'core.module.generic.generic-select.detail-link': 'details',\n} as const;\n","import type { EN_MESSAGES } from './en';\n\nexport const JA_MESSAGES: Record<keyof typeof EN_MESSAGES, string> = {\n  'core.common.cancel': 'キャンセル',\n  'core.common.close': '閉じる',\n  'core.common.reload': 'ページを再読み込み',\n  'core.test.greet': 'こんにちは {name}さん',\n\n  // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----\n  'core.validator.email.name': 'メールアドレス',\n  'core.validator.email.error': 'メールアドレスの形式が正しくありません',\n  'core.validator.phone.name': '電話番号',\n  'core.validator.phone.error': '電話番号の形式が正しくありません',\n  // Legacy aliases\n  'core.validator.phone-vn.name': 'VN電話番号',\n  'core.validator.phone-vn.error': 'ベトナムの電話番号の形式が正しくありません',\n  'core.validator.cccd.name': '個人番号',\n  'core.validator.cccd.error': '個人番号の形式が正しくありません（12桁）',\n  'core.validator.id-vn.name': '個人番号 / パスポート',\n  'core.validator.id-vn.error': '個人番号またはパスポート番号の形式が正しくありません',\n  'core.validator.vn-phone.name': 'VN電話番号',\n  'core.validator.vn-phone.error': 'ベトナムの電話番号の形式が正しくありません',\n  'core.validator.vn-id.name': '個人番号',\n  'core.validator.vn-id.error': '個人番号の形式が正しくありません（12桁）',\n  'core.validator.passport.name': 'パスポート',\n  'core.validator.passport.error': 'パスポート番号の形式が正しくありません（英字1文字 + 数字7桁）',\n  'core.validator.vn-id-or-passport.name': '個人番号 / パスポート',\n  'core.validator.vn-id-or-passport.error': '個人番号またはパスポート番号の形式が正しくありません',\n  'core.validator.time.name': '時刻',\n  'core.validator.time.error': '時刻の形式が正しくありません（HH:mm 形式）',\n  'core.validator.url.name': 'URL',\n  'core.validator.url.error': 'URLの形式が正しくありません',\n  'core.validator.domain.name': 'ドメイン',\n  'core.validator.domain.error': 'ドメインの形式が正しくありません',\n  'core.validator.ipv4.name': 'IPv4',\n  'core.validator.ipv4.error': 'IPv4アドレスの形式が正しくありません',\n  'core.validator.ipv6.name': 'IPv6',\n  'core.validator.ipv6.error': 'IPv6アドレスの形式が正しくありません',\n  'core.validator.image-url.name': '画像URL',\n  'core.validator.image-url.error': '画像URLの形式が正しくありません',\n  'core.validator.slug.name': 'スラッグ',\n  'core.validator.slug.error': 'スラッグの形式が正しくありません',\n  'core.validator.number.name': '数値',\n  'core.validator.number.error': '数値の形式が正しくありません',\n  'core.validator.integer.name': '整数',\n  'core.validator.integer.error': '整数の形式が正しくありません',\n  'core.validator.decimal.name': '小数',\n  'core.validator.decimal.error': '小数の形式が正しくありません',\n  'core.validator.positive-number.name': '正の数',\n  'core.validator.positive-number.error': '正の数を入力してください',\n  'core.validator.uuid.name': 'UUID',\n  'core.validator.uuid.error': 'UUIDの形式が正しくありません',\n  'core.validator.code-16.name': '16文字コード',\n  'core.validator.code-16.error': '16文字コードの形式が正しくありません',\n  'core.validator.code-32.name': '32文字コード',\n  'core.validator.code-32.error': '32文字コードの形式が正しくありません',\n  'core.validator.hex-color.name': 'HEXカラー',\n  'core.validator.hex-color.error': 'HEXカラーの形式が正しくありません',\n  'core.validator.base64.name': 'Base64',\n  'core.validator.base64.error': 'Base64文字列の形式が正しくありません',\n\n  // ---- Operators (operator.model.ts) ----\n  'core.operator.equal.display': '等しい',\n  'core.operator.not-equal.display': '等しくない',\n  'core.operator.greater-than.display': 'より大きい',\n  'core.operator.less-than.display': 'より小さい',\n  'core.operator.greater-or-equal.display': '以上',\n  'core.operator.less-or-equal.display': '以下',\n  'core.operator.contain.display': '含む',\n  'core.operator.not-contain.display': '含まない',\n  'core.operator.start-with.display': 'で始まる',\n  'core.operator.not-start-with.display': 'で始まらない',\n  'core.operator.end-with.display': 'で終わる',\n  'core.operator.not-end-with.display': 'で終わらない',\n  'core.operator.in.display': 'いずれかに一致',\n  'core.operator.not-in.display': 'いずれにも一致しない',\n  'core.operator.between.display': '範囲内',\n  'core.operator.null.display': '空である',\n  'core.operator.not-null.display': '空でない',\n\n  // ---- Global error handler ----\n  'core.handler.global-error.update-title': '新しいシステムアップデートがあります',\n  'core.handler.global-error.update-body':\n    '現在のバージョンが古いため、リソースを読み込めませんでした。\\nOKを押してページを再読み込みしてください。',\n\n  // ---- Interceptor: no-internet ----\n  'core.interceptor.no-internet.offline': 'ネットワーク接続がありません。接続を待機中...',\n  'core.interceptor.no-internet.cors-error': 'サーバーに接続できません（CORSまたは設定エラー）。',\n  'core.interceptor.no-internet.maintenance': 'サーバーはメンテナンス中です。しばらくしてから再度お試しください。',\n  'core.interceptor.no-internet.restored': '接続が復旧しました。',\n\n  // ---- Service: excel ----\n  'core.excel.cannot-read-file': 'ファイルの内容を読み取れませんでした',\n  'core.excel.no-sheet': 'Excelファイルにデータシートがありません',\n\n  // ---- Service: docx ----\n  'core.docx.invalid-format': '形式が正しくありません。DOCまたはDOCX形式のテンプレートを選択してください',\n  'core.docx.size-exceeded': 'テンプレートファイルのサイズが上限を超えています。もう一度お試しください',\n  'core.docx.convert-error': 'DOCXファイルの変換中にエラーが発生しました',\n\n  // ---- Service: notify (toast) ----\n  'core.notify.type.success': '成功',\n  'core.notify.type.info': '情報',\n  'core.notify.type.warning': '警告',\n  'core.notify.type.error': 'エラー',\n  'core.notify.show-more': 'もっと見る ({count})',\n  'core.notify.show-less': '折りたたむ',\n\n  // ---- Service: confirm ----\n  'core.confirm.title': '確認',\n  'core.confirm.yes': 'OK',\n  'core.confirm.no': 'キャンセル',\n  'core.confirm.yes-short': 'はい',\n  'core.confirm.no-short': 'いいえ',\n\n  // ---- Directive: hover-copy ----\n  'core.directive.hover-copy.tooltip': 'コピー',\n\n  // ---- Forms: input ----\n  'core.form.input.required': '入力してください',\n  'core.form.input.maxlength': '最大文字数: {max}',\n  'core.form.input.invalid-pattern': '形式が正しくありません',\n  'core.form.input.exceeded': '最大文字数を超えています',\n  'core.form.input.mask-incomplete': '値が未完成です',\n  'core.form.input.mask-invalid': '使用できない文字が含まれています',\n\n  // ---- Forms: autocomplete ----\n  'core.form.autocomplete.required': '入力してください',\n\n  // ---- Forms: chip ----\n  'core.form.chip.required': '入力してください',\n  'core.form.chip.minlength': '{min}件以上入力してください',\n  'core.form.chip.maxlength': '{max}件以内で入力してください',\n\n  // ---- Forms: chip-calendar ----\n  'core.form.chip-calendar.required': '入力してください',\n  'core.form.chip-calendar.minlength': '{min}件以上入力してください',\n  'core.form.chip-calendar.maxlength': '{max}件以内で入力してください',\n\n  // ---- Forms: date ----\n  'core.form.date.required': '入力してください',\n  'core.form.date.min-date': '最小日付: {date}',\n  'core.form.date.max-date': '最大日付: {date}',\n  'core.form.date.parse-error': '解析エラー: {text}',\n  'core.form.date.invalid-format': '形式が正しくありません',\n\n  // ---- Forms: date-range ----\n  'core.form.date-range.required': '入力してください',\n  'core.form.date-range.invalid-min': '開始日が無効です（下限を下回っています）',\n  'core.form.date-range.invalid-max': '終了日が無効です（上限を超えています）',\n  'core.form.date-range.from': '開始',\n  'core.form.date-range.to': '～',\n\n  // ---- Forms: datetime ----\n  'core.form.datetime.required': '入力してください',\n  'core.form.datetime.min-date': '最小日付: {date}',\n  'core.form.datetime.max-date': '最大日付: {date}',\n  'core.form.datetime.invalid-format': '形式が正しくありません',\n  'core.form.datetime.now': '現在',\n  'core.form.datetime.confirm': '確定',\n\n  // ---- Forms: entity-picker / tree-select ----\n  'core.form.entity-picker.placeholder': 'エンティティを選択',\n  'core.form.entity-picker.modal-title': 'エンティティを選択',\n  'core.form.entity-picker.value': '値',\n  'core.form.entity-picker.clear': '選択をクリア',\n  'core.form.entity-picker.add': '追加',\n  'core.form.entity-picker.cancel': 'キャンセル',\n  'core.form.entity-picker.apply': '適用',\n  'core.form.tree-select.placeholder': 'ツリー項目を選択',\n  'core.form.tree-select.modal-title': 'ツリー項目を選択',\n  'core.form.tree-select.clear': '選択をクリア',\n  'core.form.tree-select.search': 'ツリーを検索',\n  'core.form.tree-select.cancel': 'キャンセル',\n  'core.form.tree-select.apply': '適用',\n  'core.component.tree.retry': '再試行',\n  'core.service.unsaved-changes.message': '未保存の変更があります。破棄して続行しますか？',\n  'core.component.job-progress.status.idle': '準備完了',\n  'core.component.job-progress.status.queued': '待機中',\n  'core.component.job-progress.status.running': '処理中',\n  'core.component.job-progress.status.succeeded': '完了',\n  'core.component.job-progress.status.failed': '失敗',\n  'core.component.job-progress.status.cancelled': 'キャンセル済み',\n  'core.component.job-progress.cancel': 'キャンセル',\n  'core.component.job-progress.retry': '再試行',\n  'core.component.audit-diff.label': '監査変更',\n  'core.component.audit-diff.field': '項目',\n  'core.component.audit-diff.before': '変更前',\n  'core.component.audit-diff.after': '変更後',\n  'core.component.audit-diff.empty': '変更はありません',\n  'core.component.audit-diff.kind.added': '追加',\n  'core.component.audit-diff.kind.removed': '削除',\n  'core.component.audit-diff.kind.changed': '変更',\n  'core.component.audit-diff.kind.unchanged': '未変更',\n  'core.component.audit-diff.value.label': '値',\n  'core.component.audit-diff.value.not-set': '未設定',\n  'core.component.audit-diff.value.undefined': '未定義',\n  'core.component.audit-diff.value.null': 'Null',\n  'core.component.audit-diff.value.true': 'はい',\n  'core.component.audit-diff.value.false': 'いいえ',\n\n  // ---- Forms: time ----\n  'core.form.time.required': '時刻を入力してください',\n  'core.form.time.invalid': 'HH:mm形式の有効な時刻を入力してください',\n  'core.form.time.min': '時刻は{min}以降にしてください',\n  'core.form.time.max': '時刻は{max}以前にしてください',\n  'core.form.time.step': '時刻は{step}分間隔で入力してください',\n  'core.form.time.open-picker': '時刻選択を開く',\n  'core.form.time.confirm': '確定',\n  'core.form.time.clear': '時刻をクリア',\n\n  // ---- Forms: time-range ----\n  'core.form.time-range.required': '開始時刻と終了時刻を入力してください',\n  'core.form.time-range.incomplete': '両方の時刻を入力するか、オープン範囲を有効にしてください',\n  'core.form.time-range.range': '開始時刻は終了時刻以前にしてください',\n  'core.form.time-range.invalid': 'HH:mm形式の有効な時刻を入力してください',\n  'core.form.time-range.min': '時刻は{min}以降にしてください',\n  'core.form.time-range.max': '時刻は{max}以前にしてください',\n  'core.form.time-range.step': '時刻は{step}分間隔で入力してください',\n  'core.form.time-range.from': '開始',\n  'core.form.time-range.to': '終了',\n  'core.form.time-range.clear': '時間範囲をクリア',\n\n  // ---- Forms: time-spinner ----\n  'core.form.time-spinner.hour': '時',\n  'core.form.time-spinner.minute': '分',\n  'core.form.time-spinner.second': '秒',\n  'core.form.time-spinner.increase-hour': '時を増やす',\n  'core.form.time-spinner.decrease-hour': '時を減らす',\n  'core.form.time-spinner.increase-minute': '分を増やす',\n  'core.form.time-spinner.decrease-minute': '分を減らす',\n  'core.form.time-spinner.increase-second': '秒を増やす',\n  'core.form.time-spinner.decrease-second': '秒を減らす',\n\n  // ---- Forms: input-number ----\n  'core.form.input-number.required': '入力してください',\n  'core.form.input-number.min': '{min}以上の値を入力してください',\n  'core.form.input-number.max': '{max}以下の値を入力してください',\n\n  // ---- Forms: radio ----\n  'core.form.radio.required': '選択してください',\n\n  // ---- Forms: switch ----\n  'core.form.switch.on': 'オン',\n  'core.form.switch.off': 'オフ',\n\n  // ---- Forms: checkbox ----\n  'core.form.checkbox.checked': 'はい',\n  'core.form.checkbox.unchecked': 'いいえ',\n\n  // ---- Forms: select ----\n  'core.form.select.required': '選択してください',\n\n  // ---- Forms: textarea ----\n  'core.form.textarea.required': '入力してください',\n  'core.form.textarea.maxlength': '最大文字数: {max}',\n  'core.form.textarea.invalid-pattern': '形式が正しくありません',\n  'core.form.textarea.exceeded': '最大文字数を超えています',\n\n  // ---- Component: editor ----\n  'core.component.editor.required': '内容を入力してください',\n  'core.component.editor.maxlength': '最大文字数: {max}',\n  'core.component.editor.image.invalid-format': 'ファイル形式 \".{format}\" は許可されていません。許可される形式: {allowed}',\n  'core.component.editor.image.size-exceeded': 'ファイルサイズ {sizeMB}MB は上限の {maxSizeMB}MB を超えています',\n  'core.component.editor.image.min-width': '画像の幅 {width}px は最小値 {min}px を下回っています',\n  'core.component.editor.image.min-height': '画像の高さ {height}px は最小値 {min}px を下回っています',\n  'core.component.editor.image.max-width': '画像の幅 {width}px は上限 {max}px を超えています',\n  'core.component.editor.image.max-height': '画像の高さ {height}px は上限 {max}px を超えています',\n  'core.component.editor.image.max-per-selection': '一度に選択できる画像は最大{max}枚です',\n\n  // ---- Component: document-builder ----\n  'core.component.document-builder.page-number.current': '現在のページ番号',\n  'core.component.document-builder.page-number.total': '総ページ数',\n  'core.component.document-builder.ck-comment.label': 'コメント',\n  'core.component.document-builder.ck-comment.text-too-long': 'テキストが長すぎます（{length}文字）。最大{max}文字です。',\n  'core.component.document-builder.variable.not-allowed': 'テキストへの変数の追加は許可されていません',\n  'core.component.document-builder.variable.invalid-data': '変数データが正しくありません',\n\n  // ---- Component: form-builder ----\n  'core.component.form-builder.field-key': 'フィールドキー',\n  'core.component.form-builder.display': '表示',\n  'core.component.form-builder.general': '一般',\n  'core.component.form-builder.visible-when': '表示条件',\n  'core.component.form-builder.required': '必須',\n  'core.component.form-builder.label': 'ラベル',\n  'core.component.form-builder.disabled': '無効',\n  'core.component.form-builder.disabled-when': '無効化条件',\n  'core.component.form-builder.hidden-when': '非表示条件',\n  'core.component.form-builder.validation': 'バリデーション',\n  'core.component.form-builder.required-when': '必須条件',\n  'core.component.form-builder.confirm': '確認',\n  'core.component.form-builder.delete': '削除',\n  'core.component.form-builder.save': '保存',\n  'core.component.form-builder.hint': 'ヒント',\n  'core.component.form-builder.parameter': 'パラメータ',\n  'core.component.form-builder.add-field': 'フィールドを追加',\n  'core.component.form-builder.data': 'データ',\n  'core.component.form-builder.query-condition': 'クエリ条件',\n  'core.component.form-builder.set-query-value': 'クエリ値を設定',\n  'core.component.form-builder.value-source-field': 'ソースフィールド',\n  'core.component.form-builder.assign-parameter': 'パラメータを割り当て',\n  'core.component.form-builder.template-data': 'テンプレートデータ',\n  'core.component.form-builder.set-expression': '式を設定',\n  'core.component.form-builder.condition-group': '条件グループ',\n  'core.component.form-builder.condition': '条件',\n  'core.component.form-builder.layout': 'レイアウト',\n  'core.component.form-builder.maxlength': '最大文字数',\n  'core.component.form-builder.assign-parameter-value': 'パラメータ値を割り当て',\n  'core.component.form-builder.parameter-name': 'パラメータ名',\n  'core.component.form-builder.parameter-value': 'パラメータ値',\n  'core.component.form-builder.assign-value': '値を割り当て',\n  'core.component.form-builder.add-data': 'データを追加',\n  'core.component.form-builder.data-api': 'APIデータ',\n  'core.component.form-builder.data-static': '静的データ',\n  'core.component.form-builder.set-on-change-assign': '変更時の割り当てを設定',\n  'core.component.form-builder.target-field': '対象フィールド',\n  'core.component.form-builder.target-value': '対象値',\n  'core.component.form-builder.column-data': '列データ',\n  'core.component.form-builder.add-column': '列を追加',\n  'core.component.form-builder.column-config': '列設定',\n  'core.component.form-builder.column-name': '列名',\n  'core.component.form-builder.width': '幅',\n  'core.component.form-builder.data-type': 'データ型',\n  'core.component.form-builder.show-when-true': 'TRUEのとき表示',\n  'core.component.form-builder.show-when-false': 'FALSEのとき表示',\n  'core.component.form-builder.column-list': '列一覧',\n  'core.component.form-builder.yes-no': 'はい/いいえ',\n  'core.component.form-builder.config-validation-error-warning': 'エラー/警告のバリデーションを設定',\n  'core.component.form-builder.message-type': 'メッセージ種別',\n  'core.component.form-builder.message-display': '表示メッセージ',\n  'core.component.form-builder.condition-expression': '条件式',\n  'core.component.form-builder.add-validation': 'バリデーションを追加',\n  'core.component.form-builder.expression': '式',\n  'core.component.form-builder.available-methods': '利用可能なメソッド',\n  'core.component.form-builder.format': 'フォーマット',\n  'core.component.form-builder.time': '時刻',\n  'core.component.form-builder.content': '内容',\n  'core.component.form-builder.min': '最小',\n  'core.component.form-builder.max': '最大',\n  'core.component.form-builder.vertical': '縦',\n  'core.component.form-builder.multiple': '複数選択',\n  'core.component.form-builder.default-value': 'デフォルト値',\n  'core.component.form-builder.type': '種別',\n  'core.component.form-builder.file': 'ファイル',\n  'core.component.form-builder.image': '画像',\n  'core.component.form-builder.max-files': 'ファイル/画像の最大数',\n  'core.component.form-builder.size-mb': 'サイズ (MB)',\n  'core.component.form-builder.format-example': 'フォーマット (例: png,jpg ...)',\n  'core.component.form-builder.source-mobile': 'ソース (モバイル)',\n  'core.component.form-builder.config-variable': '変数を設定',\n  'core.component.form-builder.config-validation-warning-error': '警告/エラーのバリデーションを設定',\n  'core.component.form-builder.back-to-design': 'デザインに戻る',\n  'core.component.form-builder.preview': 'プレビュー',\n  'core.component.form-builder.drag-vertically': '上下にドラッグ',\n  'core.component.form-builder.unset-readonly': '読み取り専用を解除',\n  'core.component.form-builder.set-readonly': '読み取り専用',\n  'core.component.form-builder.duplicate': '複製',\n  'core.component.form-builder.show': '表示',\n  'core.component.form-builder.hide': '非表示',\n  'core.component.form-builder.flex': 'フレックス',\n  'core.component.form-builder.display-label': '表示ラベル',\n  'core.component.form-builder.attribute': '属性',\n  'core.component.form-builder.add-variable': '変数を追加',\n  'core.component.form-builder.add-new': '新規追加',\n  'core.component.form-builder.detail': '詳細',\n  'core.component.form-builder.create-update': '作成/更新',\n  'core.component.form-builder.default': 'デフォルト',\n  'core.component.form-builder.show-more': 'もっと見る',\n  'core.component.form-builder.show-less': '折りたたむ',\n  'core.component.inform.show-more': 'もっと見る',\n  'core.component.inform.show-less': '折りたたむ',\n  'core.component.data-state.loading.title': '読み込み中',\n  'core.component.data-state.loading.message': 'データを読み込んでいます。しばらくお待ちください。',\n  'core.component.data-state.empty.title': 'データがありません',\n  'core.component.data-state.empty.message': '表示するデータはまだありません。',\n  'core.component.data-state.error.title': 'データを読み込めません',\n  'core.component.data-state.error.message': 'エラーが発生しました。もう一度お試しください。',\n  'core.component.data-state.forbidden.title': 'アクセスが拒否されました',\n  'core.component.data-state.forbidden.message': 'このコンテンツを表示する権限がありません。',\n  'core.component.data-state.retry': '再試行',\n  'core.component.form-builder.row-overflow': '合計サイズが12列を超えるため、この行に移動できません',\n  'core.component.form-builder.upload-source.all': 'すべて',\n  'core.component.form-builder.upload-source.photo-library': 'ライブラリから選択',\n  'core.component.form-builder.upload-source.capture': '写真を撮影',\n  // Form-builder UI v2 (M3 redesign)\n  'core.component.form-builder.components': 'コンポーネント',\n  'core.component.form-builder.search-components': 'コンポーネントを検索…',\n  'core.component.form-builder.view-json': 'JSONを表示',\n  'core.component.form-builder.design': 'デザイン',\n  'core.component.form-builder.preview-runtime': 'プレビュー · ランタイム',\n  'core.component.form-builder.cancel': 'キャンセル',\n  'core.component.form-builder.submit': '送信',\n  'core.component.form-builder.empty-title': 'コンポーネントをここにドラッグして開始',\n  'core.component.form-builder.empty-hint': '左パネルからフィールドをドラッグしてフォームを構築するか、次を押します:',\n  'core.component.form-builder.conditional': '条件付き',\n  'core.component.form-builder.group-drop-here': 'フィールドをここにドロップしてグループに追加',\n  'core.component.form-builder.edit-group': 'グループを編集',\n  'core.component.form-builder.group-empty-hint': '「詳細」をクリックしてフィールドを追加',\n  'core.component.form-builder.hidden': '非表示',\n  'core.component.form-builder.read-only': '読み取り専用',\n  'core.component.form-builder.untitled': '無題',\n  'core.component.form-builder.no-selection-title': '選択なし',\n  'core.component.form-builder.no-selection-hint': 'キャンバスでコンポーネントを選択して属性を編集します。',\n  'core.component.form-builder.group-children': '子要素',\n  'core.component.form-builder.group-icon': 'アイコン',\n  'core.component.form-builder.group-accent-color': 'アクセントカラー',\n  'core.component.form-builder.group-no-children': 'フィールドがまだありません。このグループにフィールドを追加またはドラッグしてください。',\n  'core.component.form-builder.break': '改行',\n\n  // ---- Component: code-editor ----\n  'core.component.code-editor.copied': 'コピーしました！',\n  'core.component.code-editor.copy': 'コードをコピー',\n\n  // ---- Component: history ----\n  'core.component.history.by': '実行者',\n\n  // ---- Component: import-excel ----\n  'core.component.import-excel.title': 'Excelデータをインポート',\n  'core.component.import-excel.see-all': 'すべて表示',\n  'core.component.import-excel.valid-rows': '有効な行数',\n  'core.component.import-excel.error-rows': 'エラー行数',\n  'core.component.import-excel.warning-rows': '警告行数',\n  'core.component.import-excel.valid-data': '有効なデータ',\n  'core.component.import-excel.download-template-tooltip': 'クリックしてテンプレートをダウンロード',\n  'core.component.import-excel.upload': 'アップロード',\n  'core.component.import-excel.download': 'ダウンロード',\n  'core.component.import-excel.confirm-save': '確認して保存',\n  'core.component.import-excel.status': 'ステータス',\n  'core.component.import-excel.no-data-upload': 'アップロードデータがありません',\n  'core.component.import-excel.click-here-template': 'ここをクリックしてテンプレートをダウンロード',\n  'core.component.import-excel.no-data-in-file': 'ファイルにデータがありません',\n  'core.component.import-excel.row-limit': 'アップロード上限は{limit}行です',\n  'core.component.import-excel.required': '必須データ',\n  'core.component.import-excel.min-length': '最小文字数: {min}',\n  'core.component.import-excel.max-length': '最大文字数: {max}',\n  'core.component.import-excel.not-a-number': '{value} は有効な数値ではありません',\n  'core.component.import-excel.below-min': '{value} は最小値 {min} を下回っています',\n  'core.component.import-excel.above-max': '{value} は最大値 {max} を超えています',\n  'core.component.import-excel.invalid-bool': '有効な値を入力してください (true, false, 1, 0)',\n  'core.component.import-excel.invalid-value': '値 {value} は正しくありません',\n  'core.component.import-excel.value-not-in-list': '値 {value} は許可されたリスト [{list}] に含まれていません',\n  'core.component.import-excel.invalid-date-format': '日付 {value} はフォーマット {format} と一致しません',\n  'core.component.import-excel.generic-error': 'エラーが発生しました',\n  'core.component.import-excel.notify-title': 'お知らせ',\n  'core.component.import-excel.message-column': 'メッセージ',\n  'core.component.import-excel.success': '成功',\n\n  // ---- Component: preview-image ----\n  'core.component.preview-image.no-image': '画像情報がありません',\n  'core.component.preview-image.title': '画像プレビュー',\n  'core.component.preview-image.no-image-hint': '表示する画像がありません',\n  'core.component.preview-image.load-error': '画像を読み込めませんでした',\n  'core.component.preview-image.load-error-hint': '画像ファイルが削除されたか、パスが無効である可能性があります',\n  'core.component.preview-image.retry': '再試行',\n  'core.component.preview-image.close': '閉じる',\n  'core.component.preview-image.prev': '前の画像',\n  'core.component.preview-image.next': '次の画像',\n  'core.component.preview-image.zoom-in': '拡大',\n  'core.component.preview-image.zoom-out': '縮小',\n  'core.component.preview-image.fit': '画面に合わせる',\n  'core.component.preview-image.rotate': '回転',\n  'core.component.preview-image.download': 'ダウンロード',\n  'core.component.preview-image.fullscreen': '全画面表示',\n  'core.component.preview-image.loading': '画像を読み込み中...',\n  'core.component.preview-image.kbd-hint-nav': '画像切替',\n  'core.component.preview-image.kbd-hint-close': '閉じる',\n\n  // ---- Component: preview-pdf ----\n  'core.component.preview-pdf.title': 'ドキュメントを表示',\n  'core.component.preview-pdf.close': '閉じる',\n  'core.component.preview-pdf.pages-count': '{count} ページ',\n  'core.component.preview-pdf.tab.thumbnails': 'ページ',\n  'core.component.preview-pdf.tab.outline': '目次',\n  'core.component.preview-pdf.tab.search': '検索',\n  'core.component.preview-pdf.first-page': '最初のページ',\n  'core.component.preview-pdf.prev-page': '前のページ',\n  'core.component.preview-pdf.next-page': '次のページ',\n  'core.component.preview-pdf.last-page': '最後のページ',\n  'core.component.preview-pdf.zoom-in': '拡大',\n  'core.component.preview-pdf.zoom-out': '縮小',\n  'core.component.preview-pdf.fit-page': 'ページに合わせる',\n  'core.component.preview-pdf.fit-width': '幅に合わせる',\n  'core.component.preview-pdf.actual-size': '実際のサイズ',\n  'core.component.preview-pdf.rotate': '回転',\n  'core.component.preview-pdf.scroll-page': '単ページ',\n  'core.component.preview-pdf.scroll-continuous': '連続スクロール',\n  'core.component.preview-pdf.print': '印刷',\n  'core.component.preview-pdf.download': 'ダウンロード',\n  'core.component.preview-pdf.fullscreen': '全画面',\n  'core.component.preview-pdf.toggle-sidebar': 'サイドバー表示切替',\n  'core.component.preview-pdf.page-of': '{current} / {total} ページ',\n  'core.component.preview-pdf.empty.title': 'ドキュメントがありません',\n  'core.component.preview-pdf.empty.subtitle': '表示する PDF ファイルがまだありません',\n  'core.component.preview-pdf.loading': 'ドキュメントを読み込み中...',\n  'core.component.preview-pdf.loading.page': 'ページ {current} / {total} を処理中',\n  'core.component.preview-pdf.error.invalid.title': 'ドキュメントを読み込めません',\n  'core.component.preview-pdf.error.invalid.body': 'PDF ファイルが破損している可能性があります。ファイルを確認してください。',\n  'core.component.preview-pdf.error.password.title': '保護されたドキュメント',\n  'core.component.preview-pdf.error.password.body': 'この PDF ファイルを開くにはパスワードが必要です。',\n  'core.component.preview-pdf.error.network.title': '接続できません',\n  'core.component.preview-pdf.error.network.body': 'サーバーからファイルを読み込めません。後でもう一度お試しください。',\n  'core.component.preview-pdf.error.unknown.title': 'エラーが発生しました',\n  'core.component.preview-pdf.error.unknown.body': 'もう一度試すか、元のファイルをダウンロードしてご覧ください。',\n  'core.component.preview-pdf.error.retry': '再試行',\n  'core.component.preview-pdf.error.download-raw': '元のファイルをダウンロード',\n  'core.component.preview-pdf.search': '検索',\n  'core.component.preview-pdf.search-placeholder': 'ドキュメント内を検索...',\n  'core.component.preview-pdf.search-case': '大文字小文字を区別',\n  'core.component.preview-pdf.search-whole': '単語単位で一致',\n  'core.component.preview-pdf.search-no-results': '見つかりません',\n  'core.component.preview-pdf.search-results-count': '「{term}」の検索結果 {count} 件',\n  'core.component.preview-pdf.search-truncated': '最初の {count} 件を表示しています。検索条件を絞り込んでください。',\n  'core.component.preview-pdf.search-prev': '前の結果',\n  'core.component.preview-pdf.search-next': '次の結果',\n  'core.component.preview-pdf.search-close': '検索を閉じる',\n\n  // ---- Component: table ----\n  'core.component.table.setup': 'テーブル設定',\n  'core.component.table.column-header': '列ヘッダー',\n  'core.component.table.width': '幅',\n  'core.component.table.fixed': '固定',\n  'core.component.table.char-limit': '文字数制限',\n  'core.component.table.skip': 'スキップ',\n  'core.component.table.apply': '適用',\n  'core.component.table.filter': 'フィルター',\n  'core.component.table.clear-selection': '選択を解除',\n  'core.component.table.customize': 'カスタマイズ',\n  'core.component.table.search': '検索',\n  'core.component.table.reload': '再読み込み',\n  'core.component.table.setup-short': '設定',\n  'core.component.table.no-results': '一致する結果がありません',\n  'core.component.table.no-results-hint': '別の条件で検索またはフィルターしてください',\n  'core.component.table.choose-filter-hint': 'まずフィルターを選択してください',\n  'core.component.table.no-data': 'データがありません',\n  'core.component.table.export-excel': 'Excelエクスポート',\n  'core.component.table.export-csv': 'CSVエクスポート',\n  'core.component.table.showing': '表示中:',\n  'core.component.table.paginator.first-page': '最初のページ',\n  'core.component.table.paginator.last-page': '最後のページ',\n  'core.component.table.paginator.items-per-page': '表示中',\n  'core.component.table.paginator.next-page': '次のページ',\n  'core.component.table.paginator.previous-page': '前のページ',\n  'core.component.table.error-occurred': 'エラーが発生しました',\n  'core.component.table.not-an-array': 'データが配列ではありません',\n  'core.component.table.config.confirm-reset': 'すべての設定をデフォルトに戻しますか',\n  'core.component.table.popup-export.select-columns': 'エクスポートする列を選択してください',\n  'core.component.table.selector-action.default-msg': '件選択中',\n  'core.component.tab-router.too-many-tabs': 'タブを開きすぎています。',\n\n  // ---- Component: upload-file ----\n  'core.component.upload-file.upload': 'ファイルをアップロード',\n  'core.component.upload-file.error-occurred': 'エラーが発生しました',\n  'core.component.upload-file.please-upload': 'ファイル/画像をアップロードしてください',\n  'core.component.upload-file.desc-format-and-size': 'フォーマット: {exts}、最大: {maxSize}MB',\n  'core.component.upload-file.desc-format': 'フォーマット: {exts}',\n  'core.component.upload-file.desc-max-size': '最大: {maxSize}MB',\n  'core.component.upload-file.not-image': '[{name}] アップロードされたファイルは画像ではありません',\n  'core.component.upload-file.invalid-format': '[{name}] アップロードされたファイルの形式が正しくありません: {exts}',\n  'core.component.upload-file.size-exceeded': '[{name}] 最大ファイルサイズ: {maxSize} MB',\n  'core.component.upload-file.upload-failed': 'ファイルのアップロード中にエラーが発生しました',\n  'core.component.upload-file.too-many-files': 'ファイルの選択数が多すぎます。件数を確認してください',\n  'core.component.upload-file.confirm-delete-message': 'このファイルを削除しますか？この操作は取り消せません',\n  'core.component.upload-file.confirm-delete-title': '削除の確認',\n  'core.component.upload-file.confirm-yes': '確認',\n  'core.component.upload-file.confirm-no': 'キャンセル',\n  'core.component.upload-file.no-configuration':\n    'SD_UPLOAD_FILE_CONFIGURATION をインジェクトするか、コンポーネントに [upload] を直接渡してください',\n  'core.component.upload-file.no-configuration-key':\n    \"key='{key}' に対応するアップロード設定が見つかりません。プロバイダーを確認するか [upload] を直接渡してください\",\n  'core.component.upload-file.preview-title': '画像プレビュー',\n\n  // ---- Module: layout (sidebar / user menu) ----\n  'core.module.layout.user.change-password': 'パスワード変更',\n  'core.module.layout.user.logout': 'ログアウト',\n  'core.module.layout.user.update-profile': 'プロフィールを更新',\n  'core.module.layout.user.setting': '設定',\n  'core.module.layout.user.notification': '通知',\n  'core.module.layout.sidebar.search': '検索',\n  'core.module.layout.sidebar.toggle': 'サイドバーを切り替える',\n\n  // ---- Module: layout (greeting + weekday) ----\n  'core.module.layout.greeting.hello': 'こんにちは、{name}さん',\n  'core.module.layout.weekday.0': '日曜日',\n  'core.module.layout.weekday.1': '月曜日',\n  'core.module.layout.weekday.2': '火曜日',\n  'core.module.layout.weekday.3': '水曜日',\n  'core.module.layout.weekday.4': '木曜日',\n  'core.module.layout.weekday.5': '金曜日',\n  'core.module.layout.weekday.6': '土曜日',\n  'core.module.layout.today-info.format': '{weekday}、{date}',\n\n  // ---- Module: layout (forbidden page) ----\n  'core.module.layout.forbidden.title': 'アクセスが拒否されました',\n  'core.module.layout.forbidden.message':\n    'このページにアクセスする権限がありません。管理者にお問い合わせいただくか、ホームページに戻ってください',\n  'core.module.layout.forbidden.back-home': 'ホームに戻る',\n\n  // ---- Module: layout (not-found page) ----\n  'core.module.layout.not-found.title': '404 - ページが見つかりません',\n  'core.module.layout.not-found.message':\n    'お探しのページは存在しないか、削除されました。URLを確認するか、ホームページに戻って続行してください。',\n  'core.module.layout.not-found.back': '戻る',\n\n  // ---- Module: layout (home page) ----\n  'core.module.layout.home.tab-name': 'ホーム',\n  'core.module.layout.home.feature.data': 'データ',\n  'core.module.layout.home.feature.reports': 'レポート',\n  'core.module.layout.home.feature.users': 'ユーザー',\n  'core.module.layout.home.feature.workflow': 'ワークフロー',\n  'core.module.layout.home.feature.audit': '監査',\n  'core.module.layout.home.feature.integration': '連携',\n\n  // ---- Module: layout (mock fallback when SD_LAYOUT_CONFIGURATION is not provided) ----\n  'core.module.layout.mock.user.full-name': 'デモユーザー',\n\n  // ---- Module: generic (generic-select) ----\n  'core.module.generic.generic-select.detail-link': '詳細',\n};\n","import type { EN_MESSAGES } from './en';\n\nexport const KO_MESSAGES: Record<keyof typeof EN_MESSAGES, string> = {\n  'core.common.cancel': '취소',\n  'core.common.close': '닫기',\n  'core.common.reload': '페이지 새로고침',\n  'core.test.greet': '안녕하세요 {name}님',\n\n  // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----\n  'core.validator.email.name': '이메일',\n  'core.validator.email.error': '올바르지 않은 이메일 형식입니다',\n  'core.validator.phone.name': '전화번호',\n  'core.validator.phone.error': '올바르지 않은 전화번호 형식입니다',\n  // Legacy aliases\n  'core.validator.phone-vn.name': 'VN 전화번호',\n  'core.validator.phone-vn.error': '올바르지 않은 베트남 전화번호 형식입니다',\n  'core.validator.cccd.name': '주민번호',\n  'core.validator.cccd.error': '올바르지 않은 주민번호 형식입니다 (12자리)',\n  'core.validator.id-vn.name': '주민번호 / 여권',\n  'core.validator.id-vn.error': '올바르지 않은 주민번호 또는 여권번호입니다',\n  'core.validator.vn-phone.name': 'VN 전화번호',\n  'core.validator.vn-phone.error': '올바르지 않은 베트남 전화번호 형식입니다',\n  'core.validator.vn-id.name': '주민번호',\n  'core.validator.vn-id.error': '올바르지 않은 주민번호 형식입니다 (12자리)',\n  'core.validator.passport.name': '여권',\n  'core.validator.passport.error': '올바르지 않은 여권번호입니다 (영문 1자 + 숫자 7자리)',\n  'core.validator.vn-id-or-passport.name': '주민번호 / 여권',\n  'core.validator.vn-id-or-passport.error': '올바르지 않은 주민번호 또는 여권번호입니다',\n  'core.validator.time.name': '시간',\n  'core.validator.time.error': '올바르지 않은 시간 형식입니다 (HH:mm 형식)',\n  'core.validator.url.name': 'URL',\n  'core.validator.url.error': '올바르지 않은 URL 형식입니다',\n  'core.validator.domain.name': '도메인',\n  'core.validator.domain.error': '올바르지 않은 도메인 형식입니다',\n  'core.validator.ipv4.name': 'IPv4',\n  'core.validator.ipv4.error': '올바르지 않은 IPv4 주소입니다',\n  'core.validator.ipv6.name': 'IPv6',\n  'core.validator.ipv6.error': '올바르지 않은 IPv6 주소입니다',\n  'core.validator.image-url.name': '이미지 URL',\n  'core.validator.image-url.error': '올바르지 않은 이미지 URL입니다',\n  'core.validator.slug.name': '슬러그',\n  'core.validator.slug.error': '올바르지 않은 슬러그 형식입니다',\n  'core.validator.number.name': '숫자',\n  'core.validator.number.error': '올바르지 않은 숫자 형식입니다',\n  'core.validator.integer.name': '정수',\n  'core.validator.integer.error': '올바르지 않은 정수 형식입니다',\n  'core.validator.decimal.name': '소수',\n  'core.validator.decimal.error': '올바르지 않은 소수 형식입니다',\n  'core.validator.positive-number.name': '양수',\n  'core.validator.positive-number.error': '양수여야 합니다',\n  'core.validator.uuid.name': 'UUID',\n  'core.validator.uuid.error': '올바르지 않은 UUID 형식입니다',\n  'core.validator.code-16.name': '16자 코드',\n  'core.validator.code-16.error': '올바르지 않은 16자 코드입니다',\n  'core.validator.code-32.name': '32자 코드',\n  'core.validator.code-32.error': '올바르지 않은 32자 코드입니다',\n  'core.validator.hex-color.name': 'HEX 색상',\n  'core.validator.hex-color.error': '올바르지 않은 HEX 색상 형식입니다',\n  'core.validator.base64.name': 'Base64',\n  'core.validator.base64.error': '올바르지 않은 Base64 문자열입니다',\n\n  // ---- Operators (operator.model.ts) ----\n  'core.operator.equal.display': '같음',\n  'core.operator.not-equal.display': '같지 않음',\n  'core.operator.greater-than.display': '초과',\n  'core.operator.less-than.display': '미만',\n  'core.operator.greater-or-equal.display': '이상',\n  'core.operator.less-or-equal.display': '이하',\n  'core.operator.contain.display': '포함',\n  'core.operator.not-contain.display': '포함하지 않음',\n  'core.operator.start-with.display': '~로 시작',\n  'core.operator.not-start-with.display': '~로 시작하지 않음',\n  'core.operator.end-with.display': '~로 끝',\n  'core.operator.not-end-with.display': '~로 끝나지 않음',\n  'core.operator.in.display': '~중 하나',\n  'core.operator.not-in.display': '~중 하나가 아님',\n  'core.operator.between.display': '범위 내',\n  'core.operator.null.display': '비어 있음',\n  'core.operator.not-null.display': '비어 있지 않음',\n\n  // ---- Global error handler ----\n  'core.handler.global-error.update-title': '새로운 시스템 업데이트가 있습니다',\n  'core.handler.global-error.update-body': '현재 버전이 오래되어 리소스를 불러올 수 없습니다.\\n확인을 누르면 페이지가 새로고침됩니다.',\n\n  // ---- Interceptor: no-internet ----\n  'core.interceptor.no-internet.offline': '네트워크 연결이 없습니다. 연결을 기다리는 중...',\n  'core.interceptor.no-internet.cors-error': '서버에 연결할 수 없습니다 (CORS 또는 설정 오류).',\n  'core.interceptor.no-internet.maintenance': '서버 점검 중입니다. 잠시 후 다시 시도해 주세요.',\n  'core.interceptor.no-internet.restored': '연결이 복구되었습니다.',\n\n  // ---- Service: excel ----\n  'core.excel.cannot-read-file': '파일 내용을 읽을 수 없습니다',\n  'core.excel.no-sheet': 'Excel 파일에 데이터 시트가 없습니다',\n\n  // ---- Service: docx ----\n  'core.docx.invalid-format': '형식이 올바르지 않습니다. DOC 또는 DOCX 형식의 템플릿을 선택해 주세요',\n  'core.docx.size-exceeded': '템플릿 파일 크기가 지원 한도를 초과했습니다. 다시 시도해 주세요',\n  'core.docx.convert-error': 'DOCX 파일 변환 중 오류가 발생했습니다',\n\n  // ---- Service: notify (toast) ----\n  'core.notify.type.success': '성공',\n  'core.notify.type.info': '정보',\n  'core.notify.type.warning': '경고',\n  'core.notify.type.error': '오류',\n  'core.notify.show-more': '더 보기 ({count})',\n  'core.notify.show-less': '접기',\n\n  // ---- Service: confirm ----\n  'core.confirm.title': '확인',\n  'core.confirm.yes': '확인',\n  'core.confirm.no': '취소',\n  'core.confirm.yes-short': '예',\n  'core.confirm.no-short': '아니오',\n\n  // ---- Directive: hover-copy ----\n  'core.directive.hover-copy.tooltip': '복사',\n\n  // ---- Forms: input ----\n  'core.form.input.required': '정보를 입력해 주세요',\n  'core.form.input.maxlength': '최대 글자수: {max}',\n  'core.form.input.invalid-pattern': '형식이 올바르지 않습니다',\n  'core.form.input.exceeded': '최대 글자수를 초과했습니다',\n  'core.form.input.mask-incomplete': '값이 완전하지 않습니다',\n  'core.form.input.mask-invalid': '허용되지 않는 문자가 포함되어 있습니다',\n\n  // ---- Forms: autocomplete ----\n  'core.form.autocomplete.required': '정보를 입력해 주세요',\n\n  // ---- Forms: chip ----\n  'core.form.chip.required': '정보를 입력해 주세요',\n  'core.form.chip.minlength': '최소 {min}개의 값을 입력해 주세요',\n  'core.form.chip.maxlength': '최대 {max}개의 값을 입력해 주세요',\n\n  // ---- Forms: chip-calendar ----\n  'core.form.chip-calendar.required': '정보를 입력해 주세요',\n  'core.form.chip-calendar.minlength': '최소 {min}개의 값을 입력해 주세요',\n  'core.form.chip-calendar.maxlength': '최대 {max}개의 값을 입력해 주세요',\n\n  // ---- Forms: date ----\n  'core.form.date.required': '정보를 입력해 주세요',\n  'core.form.date.min-date': '최소 날짜: {date}',\n  'core.form.date.max-date': '최대 날짜: {date}',\n  'core.form.date.parse-error': '구문 분석 오류: {text}',\n  'core.form.date.invalid-format': '형식이 올바르지 않습니다',\n\n  // ---- Forms: date-range ----\n  'core.form.date-range.required': '정보를 입력해 주세요',\n  'core.form.date-range.invalid-min': '시작일이 올바르지 않습니다 (한도 미만)',\n  'core.form.date-range.invalid-max': '종료일이 올바르지 않습니다 (한도 초과)',\n  'core.form.date-range.from': '시작',\n  'core.form.date-range.to': '~',\n\n  // ---- Forms: datetime ----\n  'core.form.datetime.required': '정보를 입력해 주세요',\n  'core.form.datetime.min-date': '최소 날짜: {date}',\n  'core.form.datetime.max-date': '최대 날짜: {date}',\n  'core.form.datetime.invalid-format': '형식이 올바르지 않습니다',\n  'core.form.datetime.now': '지금',\n  'core.form.datetime.confirm': '확인',\n\n  // ---- Forms: entity-picker / tree-select ----\n  'core.form.entity-picker.placeholder': '엔터티 선택',\n  'core.form.entity-picker.modal-title': '엔터티 선택',\n  'core.form.entity-picker.value': '값',\n  'core.form.entity-picker.clear': '선택 지우기',\n  'core.form.entity-picker.add': '추가',\n  'core.form.entity-picker.cancel': '취소',\n  'core.form.entity-picker.apply': '적용',\n  'core.form.tree-select.placeholder': '트리 항목 선택',\n  'core.form.tree-select.modal-title': '트리 항목 선택',\n  'core.form.tree-select.clear': '선택 지우기',\n  'core.form.tree-select.search': '트리 검색',\n  'core.form.tree-select.cancel': '취소',\n  'core.form.tree-select.apply': '적용',\n  'core.component.tree.retry': '다시 시도',\n  'core.service.unsaved-changes.message': '저장하지 않은 변경 사항이 있습니다. 변경을 버리고 계속할까요?',\n  'core.component.job-progress.status.idle': '준비됨',\n  'core.component.job-progress.status.queued': '대기 중',\n  'core.component.job-progress.status.running': '진행 중',\n  'core.component.job-progress.status.succeeded': '완료됨',\n  'core.component.job-progress.status.failed': '실패',\n  'core.component.job-progress.status.cancelled': '취소됨',\n  'core.component.job-progress.cancel': '취소',\n  'core.component.job-progress.retry': '다시 시도',\n  'core.component.audit-diff.label': '감사 변경 사항',\n  'core.component.audit-diff.field': '필드',\n  'core.component.audit-diff.before': '변경 전',\n  'core.component.audit-diff.after': '변경 후',\n  'core.component.audit-diff.empty': '변경 사항 없음',\n  'core.component.audit-diff.kind.added': '추가됨',\n  'core.component.audit-diff.kind.removed': '삭제됨',\n  'core.component.audit-diff.kind.changed': '변경됨',\n  'core.component.audit-diff.kind.unchanged': '변경 없음',\n  'core.component.audit-diff.value.label': '값',\n  'core.component.audit-diff.value.not-set': '설정 안 됨',\n  'core.component.audit-diff.value.undefined': '정의되지 않음',\n  'core.component.audit-diff.value.null': 'Null',\n  'core.component.audit-diff.value.true': '예',\n  'core.component.audit-diff.value.false': '아니요',\n\n  // ---- Forms: time ----\n  'core.form.time.required': '시간을 입력해 주세요',\n  'core.form.time.invalid': 'HH:mm 형식의 올바른 시간을 입력해 주세요',\n  'core.form.time.min': '시간은 {min}보다 빠를 수 없습니다',\n  'core.form.time.max': '시간은 {max}보다 늦을 수 없습니다',\n  'core.form.time.step': '시간은 {step}분 간격에 맞아야 합니다',\n  'core.form.time.open-picker': '시간 선택기 열기',\n  'core.form.time.confirm': '확인',\n  'core.form.time.clear': '시간 지우기',\n\n  // ---- Forms: time-range ----\n  'core.form.time-range.required': '시작 시간과 종료 시간을 모두 입력해 주세요',\n  'core.form.time-range.incomplete': '두 시간을 모두 입력하거나 열린 범위를 활성화해 주세요',\n  'core.form.time-range.range': '시작 시간은 종료 시간보다 늦을 수 없습니다',\n  'core.form.time-range.invalid': 'HH:mm 형식의 올바른 시간을 입력해 주세요',\n  'core.form.time-range.min': '시간은 {min}보다 빠를 수 없습니다',\n  'core.form.time-range.max': '시간은 {max}보다 늦을 수 없습니다',\n  'core.form.time-range.step': '시간은 {step}분 간격에 맞아야 합니다',\n  'core.form.time-range.from': '시작',\n  'core.form.time-range.to': '종료',\n  'core.form.time-range.clear': '시간 범위 지우기',\n\n  // ---- Forms: time-spinner ----\n  'core.form.time-spinner.hour': '시',\n  'core.form.time-spinner.minute': '분',\n  'core.form.time-spinner.second': '초',\n  'core.form.time-spinner.increase-hour': '시 증가',\n  'core.form.time-spinner.decrease-hour': '시 감소',\n  'core.form.time-spinner.increase-minute': '분 증가',\n  'core.form.time-spinner.decrease-minute': '분 감소',\n  'core.form.time-spinner.increase-second': '초 증가',\n  'core.form.time-spinner.decrease-second': '초 감소',\n\n  // ---- Forms: input-number ----\n  'core.form.input-number.required': '정보를 입력해 주세요',\n  'core.form.input-number.min': '값은 {min} 이상이어야 합니다',\n  'core.form.input-number.max': '값은 {max} 이하여야 합니다',\n\n  // ---- Forms: radio ----\n  'core.form.radio.required': '선택해 주세요',\n\n  // ---- Forms: switch ----\n  'core.form.switch.on': '켜짐',\n  'core.form.switch.off': '꺼짐',\n\n  // ---- Forms: checkbox ----\n  'core.form.checkbox.checked': '예',\n  'core.form.checkbox.unchecked': '아니오',\n\n  // ---- Forms: select ----\n  'core.form.select.required': '선택해 주세요',\n\n  // ---- Forms: textarea ----\n  'core.form.textarea.required': '정보를 입력해 주세요',\n  'core.form.textarea.maxlength': '최대 글자수: {max}',\n  'core.form.textarea.invalid-pattern': '형식이 올바르지 않습니다',\n  'core.form.textarea.exceeded': '최대 글자수를 초과했습니다',\n\n  // ---- Component: editor ----\n  'core.component.editor.required': '내용을 입력해 주세요',\n  'core.component.editor.maxlength': '최대 글자수: {max}',\n  'core.component.editor.image.invalid-format': '파일 형식 \".{format}\" 은(는) 허용되지 않습니다. 허용 형식: {allowed}',\n  'core.component.editor.image.size-exceeded': '파일 크기 {sizeMB}MB가 한도 {maxSizeMB}MB를 초과합니다',\n  'core.component.editor.image.min-width': '이미지 너비 {width}px가 최소값 {min}px 미만입니다',\n  'core.component.editor.image.min-height': '이미지 높이 {height}px가 최소값 {min}px 미만입니다',\n  'core.component.editor.image.max-width': '이미지 너비 {width}px가 한도 {max}px를 초과합니다',\n  'core.component.editor.image.max-height': '이미지 높이 {height}px가 한도 {max}px를 초과합니다',\n  'core.component.editor.image.max-per-selection': '한 번에 최대 {max}장의 이미지를 선택할 수 있습니다',\n\n  // ---- Component: document-builder ----\n  'core.component.document-builder.page-number.current': '현재 페이지 번호',\n  'core.component.document-builder.page-number.total': '전체 페이지 수',\n  'core.component.document-builder.ck-comment.label': '댓글',\n  'core.component.document-builder.ck-comment.text-too-long': '텍스트가 너무 깁니다 ({length}자). 최대 {max}자입니다.',\n  'core.component.document-builder.variable.not-allowed': '텍스트에 변수를 추가할 수 없습니다',\n  'core.component.document-builder.variable.invalid-data': '변수 데이터가 올바르지 않습니다',\n\n  // ---- Component: form-builder ----\n  'core.component.form-builder.field-key': '필드 키',\n  'core.component.form-builder.display': '표시',\n  'core.component.form-builder.general': '일반',\n  'core.component.form-builder.visible-when': '표시 조건',\n  'core.component.form-builder.required': '필수',\n  'core.component.form-builder.label': '라벨',\n  'core.component.form-builder.disabled': '비활성',\n  'core.component.form-builder.disabled-when': '비활성 조건',\n  'core.component.form-builder.hidden-when': '숨김 조건',\n  'core.component.form-builder.validation': '유효성 검사',\n  'core.component.form-builder.required-when': '필수 조건',\n  'core.component.form-builder.confirm': '확인',\n  'core.component.form-builder.delete': '삭제',\n  'core.component.form-builder.save': '저장',\n  'core.component.form-builder.hint': '힌트',\n  'core.component.form-builder.parameter': '매개변수',\n  'core.component.form-builder.add-field': '필드 추가',\n  'core.component.form-builder.data': '데이터',\n  'core.component.form-builder.query-condition': '쿼리 조건',\n  'core.component.form-builder.set-query-value': '쿼리 값 설정',\n  'core.component.form-builder.value-source-field': '소스 필드',\n  'core.component.form-builder.assign-parameter': '매개변수 할당',\n  'core.component.form-builder.template-data': '템플릿 데이터',\n  'core.component.form-builder.set-expression': '식 설정',\n  'core.component.form-builder.condition-group': '조건 그룹',\n  'core.component.form-builder.condition': '조건',\n  'core.component.form-builder.layout': '레이아웃',\n  'core.component.form-builder.maxlength': '최대 글자수',\n  'core.component.form-builder.assign-parameter-value': '매개변수 값 할당',\n  'core.component.form-builder.parameter-name': '매개변수 이름',\n  'core.component.form-builder.parameter-value': '매개변수 값',\n  'core.component.form-builder.assign-value': '값 할당',\n  'core.component.form-builder.add-data': '데이터 추가',\n  'core.component.form-builder.data-api': 'API 데이터',\n  'core.component.form-builder.data-static': '정적 데이터',\n  'core.component.form-builder.set-on-change-assign': '변경 시 값 할당 설정',\n  'core.component.form-builder.target-field': '대상 필드',\n  'core.component.form-builder.target-value': '대상 값',\n  'core.component.form-builder.column-data': '열 데이터',\n  'core.component.form-builder.add-column': '열 추가',\n  'core.component.form-builder.column-config': '열 설정',\n  'core.component.form-builder.column-name': '열 이름',\n  'core.component.form-builder.width': '너비',\n  'core.component.form-builder.data-type': '데이터 유형',\n  'core.component.form-builder.show-when-true': 'TRUE일 때 표시',\n  'core.component.form-builder.show-when-false': 'FALSE일 때 표시',\n  'core.component.form-builder.column-list': '열 목록',\n  'core.component.form-builder.yes-no': '예/아니오',\n  'core.component.form-builder.config-validation-error-warning': '오류/경고 유효성 검사 설정',\n  'core.component.form-builder.message-type': '메시지 유형',\n  'core.component.form-builder.message-display': '표시 메시지',\n  'core.component.form-builder.condition-expression': '조건식',\n  'core.component.form-builder.add-validation': '유효성 검사 추가',\n  'core.component.form-builder.expression': '식',\n  'core.component.form-builder.available-methods': '사용 가능한 메서드',\n  'core.component.form-builder.format': '형식',\n  'core.component.form-builder.time': '시간',\n  'core.component.form-builder.content': '내용',\n  'core.component.form-builder.min': '최소',\n  'core.component.form-builder.max': '최대',\n  'core.component.form-builder.vertical': '세로',\n  'core.component.form-builder.multiple': '다중 선택',\n  'core.component.form-builder.default-value': '기본값',\n  'core.component.form-builder.type': '유형',\n  'core.component.form-builder.file': '파일',\n  'core.component.form-builder.image': '이미지',\n  'core.component.form-builder.max-files': '최대 파일/이미지 수',\n  'core.component.form-builder.size-mb': '크기 (MB)',\n  'core.component.form-builder.format-example': '형식 (예: png,jpg ...)',\n  'core.component.form-builder.source-mobile': '소스 (모바일)',\n  'core.component.form-builder.config-variable': '변수 설정',\n  'core.component.form-builder.config-validation-warning-error': '경고/오류 유효성 검사 설정',\n  'core.component.form-builder.back-to-design': '디자인으로 돌아가기',\n  'core.component.form-builder.preview': '미리보기',\n  'core.component.form-builder.drag-vertically': '위/아래로 드래그',\n  'core.component.form-builder.unset-readonly': '읽기 전용 해제',\n  'core.component.form-builder.set-readonly': '읽기 전용',\n  'core.component.form-builder.duplicate': '복제',\n  'core.component.form-builder.show': '표시',\n  'core.component.form-builder.hide': '숨기기',\n  'core.component.form-builder.flex': '플렉스',\n  'core.component.form-builder.display-label': '표시 라벨',\n  'core.component.form-builder.attribute': '속성',\n  'core.component.form-builder.add-variable': '변수 추가',\n  'core.component.form-builder.add-new': '새로 추가',\n  'core.component.form-builder.detail': '상세',\n  'core.component.form-builder.create-update': '생성/수정',\n  'core.component.form-builder.default': '기본',\n  'core.component.form-builder.show-more': '더 보기',\n  'core.component.form-builder.show-less': '접기',\n  'core.component.inform.show-more': '더 보기',\n  'core.component.inform.show-less': '접기',\n  'core.component.data-state.loading.title': '불러오는 중',\n  'core.component.data-state.loading.message': '데이터를 불러오는 동안 잠시 기다려 주세요.',\n  'core.component.data-state.empty.title': '데이터 없음',\n  'core.component.data-state.empty.message': '표시할 데이터가 아직 없습니다.',\n  'core.component.data-state.error.title': '데이터를 불러올 수 없음',\n  'core.component.data-state.error.message': '오류가 발생했습니다. 다시 시도해 주세요.',\n  'core.component.data-state.forbidden.title': '접근 거부됨',\n  'core.component.data-state.forbidden.message': '이 콘텐츠를 볼 권한이 없습니다.',\n  'core.component.data-state.retry': '다시 시도',\n  'core.component.form-builder.row-overflow': '전체 크기가 12열을 초과하여 이 행으로 이동할 수 없습니다',\n  'core.component.form-builder.upload-source.all': '전체',\n  'core.component.form-builder.upload-source.photo-library': '라이브러리에서 선택',\n  'core.component.form-builder.upload-source.capture': '사진 촬영',\n  // Form-builder UI v2 (M3 redesign)\n  'core.component.form-builder.components': '컴포넌트',\n  'core.component.form-builder.search-components': '컴포넌트 검색…',\n  'core.component.form-builder.view-json': 'JSON 보기',\n  'core.component.form-builder.design': '디자인',\n  'core.component.form-builder.preview-runtime': '미리보기 · 런타임',\n  'core.component.form-builder.cancel': '취소',\n  'core.component.form-builder.submit': '제출',\n  'core.component.form-builder.empty-title': '여기에 컴포넌트를 끌어다 놓아 시작',\n  'core.component.form-builder.empty-hint': '왼쪽 패널에서 필드를 드래그하여 양식을 만들거나 다음을 누르세요:',\n  'core.component.form-builder.conditional': '조건부',\n  'core.component.form-builder.group-drop-here': '필드를 여기에 놓아 이 그룹에 추가',\n  'core.component.form-builder.edit-group': '그룹 편집',\n  'core.component.form-builder.group-empty-hint': '상세를 클릭하여 그룹에 필드 추가',\n  'core.component.form-builder.hidden': '숨김',\n  'core.component.form-builder.read-only': '읽기 전용',\n  'core.component.form-builder.untitled': '제목 없음',\n  'core.component.form-builder.no-selection-title': '선택 항목 없음',\n  'core.component.form-builder.no-selection-hint': '캔버스에서 컴포넌트를 선택하여 속성을 편집하세요.',\n  'core.component.form-builder.group-children': '하위 요소',\n  'core.component.form-builder.group-icon': '아이콘',\n  'core.component.form-builder.group-accent-color': '강조 색상',\n  'core.component.form-builder.group-no-children': '필드가 아직 없습니다. 이 그룹에 필드를 추가하거나 드래그하세요.',\n  'core.component.form-builder.break': '줄 바꿈',\n\n  // ---- Component: code-editor ----\n  'core.component.code-editor.copied': '복사되었습니다!',\n  'core.component.code-editor.copy': '코드 복사',\n\n  // ---- Component: history ----\n  'core.component.history.by': '작성자',\n\n  // ---- Component: import-excel ----\n  'core.component.import-excel.title': 'Excel 데이터 가져오기',\n  'core.component.import-excel.see-all': '전체 보기',\n  'core.component.import-excel.valid-rows': '유효한 행',\n  'core.component.import-excel.error-rows': '오류 행',\n  'core.component.import-excel.warning-rows': '경고 행',\n  'core.component.import-excel.valid-data': '유효한 데이터',\n  'core.component.import-excel.download-template-tooltip': '클릭하여 템플릿 다운로드',\n  'core.component.import-excel.upload': '업로드',\n  'core.component.import-excel.download': '다운로드',\n  'core.component.import-excel.confirm-save': '확인 및 저장',\n  'core.component.import-excel.status': '상태',\n  'core.component.import-excel.no-data-upload': '업로드된 데이터가 없습니다',\n  'core.component.import-excel.click-here-template': '여기를 클릭하여 템플릿 다운로드',\n  'core.component.import-excel.no-data-in-file': '파일에 데이터가 없습니다',\n  'core.component.import-excel.row-limit': '업로드 한도는 {limit}행입니다',\n  'core.component.import-excel.required': '필수 데이터',\n  'core.component.import-excel.min-length': '최소 문자열 길이: {min}',\n  'core.component.import-excel.max-length': '최대 문자열 길이: {max}',\n  'core.component.import-excel.not-a-number': '{value} 은(는) 유효한 숫자가 아닙니다',\n  'core.component.import-excel.below-min': '{value} 은(는) 최소값 {min} 미만입니다',\n  'core.component.import-excel.above-max': '{value} 은(는) 최대값 {max} 초과입니다',\n  'core.component.import-excel.invalid-bool': '유효한 값을 입력해 주세요 (true, false, 1, 0)',\n  'core.component.import-excel.invalid-value': '값 {value} 이(가) 올바르지 않습니다',\n  'core.component.import-excel.value-not-in-list': '값 {value} 이(가) 허용 목록 [{list}]에 없습니다',\n  'core.component.import-excel.invalid-date-format': '날짜 {value} 이(가) 형식 {format} 과(와) 일치하지 않습니다',\n  'core.component.import-excel.generic-error': '오류가 발생했습니다',\n  'core.component.import-excel.notify-title': '알림',\n  'core.component.import-excel.message-column': '메시지',\n  'core.component.import-excel.success': '성공',\n\n  // ---- Component: preview-image ----\n  'core.component.preview-image.no-image': '이미지 정보가 없습니다',\n  'core.component.preview-image.title': '이미지 미리보기',\n  'core.component.preview-image.no-image-hint': '표시할 이미지가 없습니다',\n  'core.component.preview-image.load-error': '이미지를 불러올 수 없습니다',\n  'core.component.preview-image.load-error-hint': '이미지 파일이 삭제되었거나 경로가 유효하지 않을 수 있습니다',\n  'core.component.preview-image.retry': '다시 시도',\n  'core.component.preview-image.close': '닫기',\n  'core.component.preview-image.prev': '이전 이미지',\n  'core.component.preview-image.next': '다음 이미지',\n  'core.component.preview-image.zoom-in': '확대',\n  'core.component.preview-image.zoom-out': '축소',\n  'core.component.preview-image.fit': '화면에 맞춤',\n  'core.component.preview-image.rotate': '회전',\n  'core.component.preview-image.download': '다운로드',\n  'core.component.preview-image.fullscreen': '전체 화면',\n  'core.component.preview-image.loading': '이미지를 불러오는 중...',\n  'core.component.preview-image.kbd-hint-nav': '이미지 이동',\n  'core.component.preview-image.kbd-hint-close': '닫기',\n\n  // ---- Component: preview-pdf ----\n  'core.component.preview-pdf.title': '문서 보기',\n  'core.component.preview-pdf.close': '닫기',\n  'core.component.preview-pdf.pages-count': '{count} 페이지',\n  'core.component.preview-pdf.tab.thumbnails': '페이지',\n  'core.component.preview-pdf.tab.outline': '목차',\n  'core.component.preview-pdf.tab.search': '검색',\n  'core.component.preview-pdf.first-page': '첫 페이지',\n  'core.component.preview-pdf.prev-page': '이전 페이지',\n  'core.component.preview-pdf.next-page': '다음 페이지',\n  'core.component.preview-pdf.last-page': '마지막 페이지',\n  'core.component.preview-pdf.zoom-in': '확대',\n  'core.component.preview-pdf.zoom-out': '축소',\n  'core.component.preview-pdf.fit-page': '페이지에 맞춤',\n  'core.component.preview-pdf.fit-width': '너비에 맞춤',\n  'core.component.preview-pdf.actual-size': '실제 크기',\n  'core.component.preview-pdf.rotate': '회전',\n  'core.component.preview-pdf.scroll-page': '한 페이지',\n  'core.component.preview-pdf.scroll-continuous': '연속 스크롤',\n  'core.component.preview-pdf.print': '인쇄',\n  'core.component.preview-pdf.download': '다운로드',\n  'core.component.preview-pdf.fullscreen': '전체 화면',\n  'core.component.preview-pdf.toggle-sidebar': '사이드바 전환',\n  'core.component.preview-pdf.page-of': '페이지 {current} / {total}',\n  'core.component.preview-pdf.empty.title': '문서가 없습니다',\n  'core.component.preview-pdf.empty.subtitle': '아직 표시할 PDF 파일이 없습니다',\n  'core.component.preview-pdf.loading': '문서를 불러오는 중...',\n  'core.component.preview-pdf.loading.page': '페이지 {current} / {total} 처리 중',\n  'core.component.preview-pdf.error.invalid.title': '문서를 불러올 수 없습니다',\n  'core.component.preview-pdf.error.invalid.body': 'PDF 파일이 손상되었을 수 있습니다. 파일을 확인하세요.',\n  'core.component.preview-pdf.error.password.title': '보호된 문서',\n  'core.component.preview-pdf.error.password.body': '이 PDF 파일을 열려면 비밀번호가 필요합니다.',\n  'core.component.preview-pdf.error.network.title': '연결할 수 없습니다',\n  'core.component.preview-pdf.error.network.body': '서버에서 파일을 불러올 수 없습니다. 나중에 다시 시도하세요.',\n  'core.component.preview-pdf.error.unknown.title': '오류가 발생했습니다',\n  'core.component.preview-pdf.error.unknown.body': '다시 시도하거나 원본 파일을 다운로드하여 확인하세요.',\n  'core.component.preview-pdf.error.retry': '다시 시도',\n  'core.component.preview-pdf.error.download-raw': '원본 다운로드',\n  'core.component.preview-pdf.search': '검색',\n  'core.component.preview-pdf.search-placeholder': '문서에서 검색...',\n  'core.component.preview-pdf.search-case': '대소문자 구분',\n  'core.component.preview-pdf.search-whole': '단어 단위',\n  'core.component.preview-pdf.search-no-results': '결과 없음',\n  'core.component.preview-pdf.search-results-count': '\"{term}\"에 대한 결과 {count}개',\n  'core.component.preview-pdf.search-truncated': '처음 {count}개의 결과를 표시합니다. 검색어를 구체화하세요.',\n  'core.component.preview-pdf.search-prev': '이전 결과',\n  'core.component.preview-pdf.search-next': '다음 결과',\n  'core.component.preview-pdf.search-close': '검색 닫기',\n\n  // ---- Component: table ----\n  'core.component.table.setup': '테이블 설정',\n  'core.component.table.column-header': '열 머리글',\n  'core.component.table.width': '너비',\n  'core.component.table.fixed': '고정',\n  'core.component.table.char-limit': '글자수 제한',\n  'core.component.table.skip': '건너뛰기',\n  'core.component.table.apply': '적용',\n  'core.component.table.filter': '필터',\n  'core.component.table.clear-selection': '선택 해제',\n  'core.component.table.customize': '사용자 지정',\n  'core.component.table.search': '검색',\n  'core.component.table.reload': '새로고침',\n  'core.component.table.setup-short': '설정',\n  'core.component.table.no-results': '검색 결과가 없습니다',\n  'core.component.table.no-results-hint': '다른 조건으로 검색하거나 필터링해 주세요',\n  'core.component.table.choose-filter-hint': '시작하려면 필터를 선택해 주세요',\n  'core.component.table.no-data': '데이터가 없습니다',\n  'core.component.table.export-excel': 'Excel 내보내기',\n  'core.component.table.export-csv': 'CSV 내보내기',\n  'core.component.table.showing': '표시 중:',\n  'core.component.table.paginator.first-page': '첫 페이지',\n  'core.component.table.paginator.last-page': '마지막 페이지',\n  'core.component.table.paginator.items-per-page': '표시 중',\n  'core.component.table.paginator.next-page': '다음 페이지',\n  'core.component.table.paginator.previous-page': '이전 페이지',\n  'core.component.table.error-occurred': '오류가 발생했습니다',\n  'core.component.table.not-an-array': '데이터가 배열이 아닙니다',\n  'core.component.table.config.confirm-reset': '모든 설정을 기본값으로 초기화하시겠습니까',\n  'core.component.table.popup-export.select-columns': '내보낼 열을 선택해 주세요',\n  'core.component.table.selector-action.default-msg': '개 선택됨',\n  'core.component.tab-router.too-many-tabs': '너무 많은 탭이 열려 있습니다.',\n\n  // ---- Component: upload-file ----\n  'core.component.upload-file.upload': '파일 업로드',\n  'core.component.upload-file.error-occurred': '오류가 발생했습니다',\n  'core.component.upload-file.please-upload': '파일/이미지를 업로드해 주세요',\n  'core.component.upload-file.desc-format-and-size': '형식: {exts}, 최대: {maxSize}MB',\n  'core.component.upload-file.desc-format': '형식: {exts}',\n  'core.component.upload-file.desc-max-size': '최대: {maxSize}MB',\n  'core.component.upload-file.not-image': '[{name}] 업로드한 파일이 이미지가 아닙니다',\n  'core.component.upload-file.invalid-format': '[{name}] 업로드한 파일의 형식이 올바르지 않습니다: {exts}',\n  'core.component.upload-file.size-exceeded': '[{name}] 최대 파일 크기: {maxSize} MB',\n  'core.component.upload-file.upload-failed': '파일 업로드 중 오류가 발생했습니다',\n  'core.component.upload-file.too-many-files': '파일을 너무 많이 선택했습니다. 개수를 확인해 주세요',\n  'core.component.upload-file.confirm-delete-message': '이 파일을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다',\n  'core.component.upload-file.confirm-delete-title': '삭제 확인',\n  'core.component.upload-file.confirm-yes': '확인',\n  'core.component.upload-file.confirm-no': '취소',\n  'core.component.upload-file.no-configuration': 'SD_UPLOAD_FILE_CONFIGURATION 을 inject 하거나 컴포넌트에 [upload] 를 직접 전달해 주세요',\n  'core.component.upload-file.no-configuration-key':\n    \"key='{key}' 에 대한 업로드 설정을 찾을 수 없습니다. provider 를 확인하거나 [upload] 를 직접 전달해 주세요\",\n  'core.component.upload-file.preview-title': '이미지 미리보기',\n\n  // ---- Module: layout (sidebar / user menu) ----\n  'core.module.layout.user.change-password': '비밀번호 변경',\n  'core.module.layout.user.logout': '로그아웃',\n  'core.module.layout.user.update-profile': '프로필 수정',\n  'core.module.layout.user.setting': '설정',\n  'core.module.layout.user.notification': '알림',\n  'core.module.layout.sidebar.search': '검색',\n  'core.module.layout.sidebar.toggle': '사이드바 전환',\n\n  // ---- Module: layout (greeting + weekday) ----\n  'core.module.layout.greeting.hello': '안녕하세요, {name}님',\n  'core.module.layout.weekday.0': '일요일',\n  'core.module.layout.weekday.1': '월요일',\n  'core.module.layout.weekday.2': '화요일',\n  'core.module.layout.weekday.3': '수요일',\n  'core.module.layout.weekday.4': '목요일',\n  'core.module.layout.weekday.5': '금요일',\n  'core.module.layout.weekday.6': '토요일',\n  'core.module.layout.today-info.format': '{weekday}, {date}',\n\n  // ---- Module: layout (forbidden page) ----\n  'core.module.layout.forbidden.title': '접근이 거부되었습니다',\n  'core.module.layout.forbidden.message': '이 페이지에 접근할 권한이 없습니다. 관리자에게 문의하거나 홈으로 돌아가 주세요',\n  'core.module.layout.forbidden.back-home': '홈으로 돌아가기',\n\n  // ---- Module: layout (not-found page) ----\n  'core.module.layout.not-found.title': '404 - 페이지를 찾을 수 없습니다',\n  'core.module.layout.not-found.message':\n    '찾으시는 페이지가 존재하지 않거나 삭제되었습니다. URL을 확인하거나 홈으로 돌아가 계속 진행해 주세요.',\n  'core.module.layout.not-found.back': '돌아가기',\n\n  // ---- Module: layout (home page) ----\n  'core.module.layout.home.tab-name': '홈',\n  'core.module.layout.home.feature.data': '데이터',\n  'core.module.layout.home.feature.reports': '리포트',\n  'core.module.layout.home.feature.users': '사용자',\n  'core.module.layout.home.feature.workflow': '워크플로우',\n  'core.module.layout.home.feature.audit': '감사',\n  'core.module.layout.home.feature.integration': '연계',\n\n  // ---- Module: layout (mock fallback when SD_LAYOUT_CONFIGURATION is not provided) ----\n  'core.module.layout.mock.user.full-name': '데모 사용자',\n\n  // ---- Module: generic (generic-select) ----\n  'core.module.generic.generic-select.detail-link': '상세',\n};\n","import type { EN_MESSAGES } from './en';\n\nexport const VI_MESSAGES: Record<keyof typeof EN_MESSAGES, string> = {\n  'core.common.cancel': 'Hủy',\n  'core.common.close': 'Đóng',\n  'core.common.reload': 'Tải lại trang',\n  'core.test.greet': 'Xin chào {name}',\n\n  // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----\n  'core.validator.email.name': 'Email',\n  'core.validator.email.error': 'Email không hợp lệ',\n  'core.validator.phone.name': 'SĐT',\n  'core.validator.phone.error': 'Số điện thoại không hợp lệ',\n  // Legacy aliases — pattern.model.ts cũ vẫn dùng các key này\n  'core.validator.phone-vn.name': 'SĐT VN',\n  'core.validator.phone-vn.error': 'SĐT Việt Nam không hợp lệ',\n  'core.validator.cccd.name': 'CCCD',\n  'core.validator.cccd.error': 'CCCD không hợp lệ (12 chữ số)',\n  'core.validator.id-vn.name': 'CCCD / Hộ chiếu',\n  'core.validator.id-vn.error': 'CCCD hoặc Hộ chiếu không hợp lệ',\n  'core.validator.vn-phone.name': 'SĐT VN',\n  'core.validator.vn-phone.error': 'SĐT Việt Nam không hợp lệ',\n  'core.validator.vn-id.name': 'CCCD',\n  'core.validator.vn-id.error': 'CCCD không hợp lệ (12 chữ số)',\n  'core.validator.passport.name': 'Hộ chiếu',\n  'core.validator.passport.error': 'Hộ chiếu không hợp lệ (1 chữ cái + 7 chữ số)',\n  'core.validator.vn-id-or-passport.name': 'CCCD / Hộ chiếu',\n  'core.validator.vn-id-or-passport.error': 'CCCD hoặc Hộ chiếu không hợp lệ',\n  'core.validator.time.name': 'Giờ',\n  'core.validator.time.error': 'Giờ không hợp lệ (định dạng HH:mm)',\n  'core.validator.url.name': 'URL',\n  'core.validator.url.error': 'URL không hợp lệ',\n  'core.validator.domain.name': 'Tên miền',\n  'core.validator.domain.error': 'Tên miền không hợp lệ',\n  'core.validator.ipv4.name': 'IPv4',\n  'core.validator.ipv4.error': 'Địa chỉ IPv4 không hợp lệ',\n  'core.validator.ipv6.name': 'IPv6',\n  'core.validator.ipv6.error': 'Địa chỉ IPv6 không hợp lệ',\n  'core.validator.image-url.name': 'URL ảnh',\n  'core.validator.image-url.error': 'URL ảnh không hợp lệ',\n  'core.validator.slug.name': 'Slug',\n  'core.validator.slug.error': 'Slug không hợp lệ',\n  'core.validator.number.name': 'Số',\n  'core.validator.number.error': 'Số không hợp lệ',\n  'core.validator.integer.name': 'Số nguyên',\n  'core.validator.integer.error': 'Số nguyên không hợp lệ',\n  'core.validator.decimal.name': 'Số thập phân',\n  'core.validator.decimal.error': 'Số thập phân không hợp lệ',\n  'core.validator.positive-number.name': 'Số dương',\n  'core.validator.positive-number.error': 'Phải là số dương',\n  'core.validator.uuid.name': 'UUID',\n  'core.validator.uuid.error': 'UUID không hợp lệ',\n  'core.validator.code-16.name': 'Mã 16 ký tự',\n  'core.validator.code-16.error': 'Mã 16 ký tự không hợp lệ',\n  'core.validator.code-32.name': 'Mã 32 ký tự',\n  'core.validator.code-32.error': 'Mã 32 ký tự không hợp lệ',\n  'core.validator.hex-color.name': 'Mã màu HEX',\n  'core.validator.hex-color.error': 'Mã màu HEX không hợp lệ',\n  'core.validator.base64.name': 'Base64',\n  'core.validator.base64.error': 'Chuỗi Base64 không hợp lệ',\n\n  // ---- Operators (operator.model.ts) ----\n  'core.operator.equal.display': 'Bằng',\n  'core.operator.not-equal.display': 'Không bằng',\n  'core.operator.greater-than.display': 'Lớn hơn',\n  'core.operator.less-than.display': 'Nhỏ hơn',\n  'core.operator.greater-or-equal.display': 'Lớn hơn, hoặc bằng',\n  'core.operator.less-or-equal.display': 'Nhỏ hơn, hoặc bằng',\n  'core.operator.contain.display': 'Chứa',\n  'core.operator.not-contain.display': 'Không chứa',\n  'core.operator.start-with.display': 'Bắt đầu bởi',\n  'core.operator.not-start-with.display': 'Không bắt đầu bởi',\n  'core.operator.end-with.display': 'Kết thúc bởi',\n  'core.operator.not-end-with.display': 'Không kết thúc bởi',\n  'core.operator.in.display': 'Nằm trong',\n  'core.operator.not-in.display': 'Không nằm trong',\n  'core.operator.between.display': 'Trong khoảng',\n  'core.operator.null.display': 'Là rỗng',\n  'core.operator.not-null.display': 'Không rỗng',\n\n  // ---- Global error handler ----\n  'core.handler.global-error.update-title': 'HỆ THỐNG CÓ BẢN CẬP NHẬT MỚI',\n  'core.handler.global-error.update-body': 'Phiên bản hiện tại đã cũ và không tải được tài nguyên.\\nVui lòng bấm OK để tải lại trang.',\n\n  // ---- Interceptor: no-internet ----\n  'core.interceptor.no-internet.offline': 'Không có kết nối mạng. Đang chờ kết nối...',\n  'core.interceptor.no-internet.cors-error': 'Không thể kết nối đến máy chủ (Lỗi CORS hoặc cấu hình).',\n  'core.interceptor.no-internet.maintenance': 'Máy chủ đang bảo trì. Vui lòng thử lại sau!',\n  'core.interceptor.no-internet.restored': 'Kết nối đã được khôi phục!',\n\n  // ---- Service: excel ----\n  'core.excel.cannot-read-file': 'Không đọc được nội dung file',\n  'core.excel.no-sheet': 'File Excel không có sheet dữ liệu',\n\n  // ---- Service: docx ----\n  'core.docx.invalid-format': 'Định dạng không hợp lệ. Vui lòng chọn Mẫu có định dạng DOC hoặc DOCX',\n  'core.docx.size-exceeded': 'Kích thước tệp mẫu vượt quá tiêu chuẩn hỗ trợ của hệ thống. Vui lòng thử lại',\n  'core.docx.convert-error': 'Có lỗi xảy ra khi chuyển đổi file DOCX',\n\n  // ---- Service: notify (toast) ----\n  'core.notify.type.success': 'Thành công',\n  'core.notify.type.info': 'Thông tin',\n  'core.notify.type.warning': 'Cảnh báo',\n  'core.notify.type.error': 'Lỗi',\n  'core.notify.show-more': 'Hiện thêm ({count})',\n  'core.notify.show-less': 'Thu gọn',\n\n  // ---- Service: confirm ----\n  'core.confirm.title': 'Xác nhận',\n  'core.confirm.yes': 'Đồng ý',\n  'core.confirm.no': 'Hủy bỏ',\n  'core.confirm.yes-short': 'Có',\n  'core.confirm.no-short': 'Không',\n\n  // ---- Directive: hover-copy ----\n  'core.directive.hover-copy.tooltip': 'Sao chép',\n\n  // ---- Forms: input ----\n  'core.form.input.required': 'Vui lòng nhập thông tin',\n  'core.form.input.maxlength': 'Số ký tự tối đa: {max}',\n  'core.form.input.invalid-pattern': 'Định dạng không hợp lệ',\n  'core.form.input.exceeded': 'Vượt quá số ký tự tối đa',\n  'core.form.input.mask-incomplete': 'Giá trị chưa đầy đủ',\n  'core.form.input.mask-invalid': 'Giá trị chứa ký tự không hợp lệ',\n\n  // ---- Forms: autocomplete ----\n  'core.form.autocomplete.required': 'Vui lòng nhập thông tin',\n\n  // ---- Forms: chip ----\n  'core.form.chip.required': 'Vui lòng nhập thông tin',\n  'core.form.chip.minlength': 'Vui lòng nhập ít nhất {min} giá trị',\n  'core.form.chip.maxlength': 'Vui lòng nhập tối đa {max} giá trị',\n\n  // ---- Forms: chip-calendar ----\n  'core.form.chip-calendar.required': 'Vui lòng nhập thông tin',\n  'core.form.chip-calendar.minlength': 'Vui lòng nhập ít nhất {min} giá trị',\n  'core.form.chip-calendar.maxlength': 'Vui lòng nhập tối đa {max} giá trị',\n\n  // ---- Forms: date ----\n  'core.form.date.required': 'Vui lòng nhập thông tin',\n  'core.form.date.min-date': 'Ngày nhỏ nhất: {date}',\n  'core.form.date.max-date': 'Ngày lớn nhất: {date}',\n  'core.form.date.parse-error': 'Lỗi phân tích: {text}',\n  'core.form.date.invalid-format': 'Sai định dạng',\n\n  // ---- Forms: date-range ----\n  'core.form.date-range.required': 'Vui lòng nhập thông tin',\n  'core.form.date-range.invalid-min': 'Ngày bắt đầu không hợp lệ (nhỏ hơn giới hạn)',\n  'core.form.date-range.invalid-max': 'Ngày kết thúc không hợp lệ (lớn hơn giới hạn)',\n  'core.form.date-range.from': 'Từ',\n  'core.form.date-range.to': 'đến',\n\n  // ---- Forms: datetime ----\n  'core.form.datetime.required': 'Vui lòng nhập thông tin',\n  'core.form.datetime.min-date': 'Ngày nhỏ nhất: {date}',\n  'core.form.datetime.max-date': 'Ngày lớn nhất: {date}',\n  'core.form.datetime.invalid-format': 'Sai định dạng',\n  'core.form.datetime.now': 'Bây giờ',\n  'core.form.datetime.confirm': 'Xác nhận',\n\n  // ---- Forms: entity-picker / tree-select ----\n  'core.form.entity-picker.placeholder': 'Chọn đối tượng',\n  'core.form.entity-picker.modal-title': 'Chọn đối tượng',\n  'core.form.entity-picker.value': 'Giá trị',\n  'core.form.entity-picker.clear': 'Xóa lựa chọn',\n  'core.form.entity-picker.add': 'Thêm mới',\n  'core.form.entity-picker.cancel': 'Hủy',\n  'core.form.entity-picker.apply': 'Áp dụng',\n  'core.form.tree-select.placeholder': 'Chọn mục cây',\n  'core.form.tree-select.modal-title': 'Chọn mục cây',\n  'core.form.tree-select.clear': 'Xóa lựa chọn',\n  'core.form.tree-select.search': 'Tìm kiếm cây',\n  'core.form.tree-select.cancel': 'Hủy',\n  'core.form.tree-select.apply': 'Áp dụng',\n  'core.component.tree.retry': 'Thử lại',\n  'core.service.unsaved-changes.message': 'Bạn có thay đổi chưa lưu. Bỏ thay đổi và tiếp tục?',\n  'core.component.job-progress.status.idle': 'Sẵn sàng',\n  'core.component.job-progress.status.queued': 'Đang chờ',\n  'core.component.job-progress.status.running': 'Đang thực hiện',\n  'core.component.job-progress.status.succeeded': 'Hoàn tất',\n  'core.component.job-progress.status.failed': 'Thất bại',\n  'core.component.job-progress.status.cancelled': 'Đã hủy',\n  'core.component.job-progress.cancel': 'Hủy',\n  'core.component.job-progress.retry': 'Thử lại',\n  'core.component.audit-diff.label': 'Thay đổi kiểm toán',\n  'core.component.audit-diff.field': 'Trường',\n  'core.component.audit-diff.before': 'Trước',\n  'core.component.audit-diff.after': 'Sau',\n  'core.component.audit-diff.empty': 'Không có thay đổi',\n  'core.component.audit-diff.kind.added': 'Đã thêm',\n  'core.component.audit-diff.kind.removed': 'Đã xóa',\n  'core.component.audit-diff.kind.changed': 'Đã đổi',\n  'core.component.audit-diff.kind.unchanged': 'Không đổi',\n  'core.component.audit-diff.value.label': 'Giá trị',\n  'core.component.audit-diff.value.not-set': 'Chưa thiết lập',\n  'core.component.audit-diff.value.undefined': 'Không xác định',\n  'core.component.audit-diff.value.null': 'Rỗng',\n  'core.component.audit-diff.value.true': 'Có',\n  'core.component.audit-diff.value.false': 'Không',\n\n  // ---- Forms: time ----\n  'core.form.time.required': 'Vui lòng nhập giờ',\n  'core.form.time.invalid': 'Vui lòng nhập giờ hợp lệ theo định dạng HH:mm',\n  'core.form.time.min': 'Giờ không được sớm hơn {min}',\n  'core.form.time.max': 'Giờ không được muộn hơn {max}',\n  'core.form.time.step': 'Giờ phải theo khoảng {step} phút',\n  'core.form.time.open-picker': 'Mở bộ chọn giờ',\n  'core.form.time.confirm': 'Xác nhận',\n  'core.form.time.clear': 'Xóa giờ',\n\n  // ---- Forms: time-range ----\n  'core.form.time-range.required': 'Vui lòng nhập cả giờ bắt đầu và kết thúc',\n  'core.form.time-range.incomplete': 'Nhập đủ hai đầu hoặc bật khoảng thời gian mở',\n  'core.form.time-range.range': 'Giờ bắt đầu không được sau giờ kết thúc',\n  'core.form.time-range.invalid': 'Vui lòng nhập giờ hợp lệ theo định dạng HH:mm',\n  'core.form.time-range.min': 'Các mốc giờ không được sớm hơn {min}',\n  'core.form.time-range.max': 'Các mốc giờ không được muộn hơn {max}',\n  'core.form.time-range.step': 'Các mốc giờ phải theo khoảng {step} phút',\n  'core.form.time-range.from': 'Từ',\n  'core.form.time-range.to': 'Đến',\n  'core.form.time-range.clear': 'Xóa khoảng giờ',\n\n  // ---- Forms: time-spinner ----\n  'core.form.time-spinner.hour': 'Giờ',\n  'core.form.time-spinner.minute': 'Phút',\n  'core.form.time-spinner.second': 'Giây',\n  'core.form.time-spinner.increase-hour': 'Tăng giờ',\n  'core.form.time-spinner.decrease-hour': 'Giảm giờ',\n  'core.form.time-spinner.increase-minute': 'Tăng phút',\n  'core.form.time-spinner.decrease-minute': 'Giảm phút',\n  'core.form.time-spinner.increase-second': 'Tăng giây',\n  'core.form.time-spinner.decrease-second': 'Giảm giây',\n\n  // ---- Forms: input-number ----\n  'core.form.input-number.required': 'Vui lòng nhập thông tin',\n  'core.form.input-number.min': 'Giá trị không được nhỏ hơn {min}',\n  'core.form.input-number.max': 'Giá trị không được lớn hơn {max}',\n\n  // ---- Forms: radio ----\n  'core.form.radio.required': 'Vui lòng nhập thông tin',\n\n  // ---- Forms: switch ----\n  'core.form.switch.on': 'Bật',\n  'core.form.switch.off': 'Tắt',\n\n  // ---- Forms: checkbox ----\n  'core.form.checkbox.checked': 'Có',\n  'core.form.checkbox.unchecked': 'Không',\n\n  // ---- Forms: select ----\n  'core.form.select.required': 'Vui lòng nhập thông tin',\n\n  // ---- Forms: textarea ----\n  'core.form.textarea.required': 'Vui lòng nhập thông tin',\n  'core.form.textarea.maxlength': 'Số ký tự tối đa: {max}',\n  'core.form.textarea.invalid-pattern': 'Định dạng không hợp lệ',\n  'core.form.textarea.exceeded': 'Vượt quá số ký tự tối đa',\n\n  // ---- Component: editor ----\n  'core.component.editor.required': 'Vui lòng nhập nội dung',\n  'core.component.editor.maxlength': 'Số ký tự tối đa: {max}',\n  'core.component.editor.image.invalid-format': 'Định dạng file \".{format}\" không được phép. Các định dạng hợp lệ: {allowed}',\n  'core.component.editor.image.size-exceeded': 'Dung lượng file {sizeMB}MB vượt quá giới hạn {maxSizeMB}MB',\n  'core.component.editor.image.min-width': 'Chiều rộng ảnh {width}px nhỏ hơn giới hạn tối thiểu {min}px',\n  'core.component.editor.image.min-height': 'Chiều cao ảnh {height}px nhỏ hơn giới hạn tối thiểu {min}px',\n  'core.component.editor.image.max-width': 'Chiều rộng ảnh {width}px vượt quá giới hạn {max}px',\n  'core.component.editor.image.max-height': 'Chiều cao ảnh {height}px vượt quá giới hạn {max}px',\n  'core.component.editor.image.max-per-selection': 'Chỉ được phép chọn tối đa {max} ảnh mỗi lần',\n\n  // ---- Component: document-builder ----\n  'core.component.document-builder.page-number.current': 'Số trang hiện tại',\n  'core.component.document-builder.page-number.total': 'Tổng số trang',\n  'core.component.document-builder.ck-comment.label': 'Bình luận',\n  'core.component.document-builder.ck-comment.text-too-long': 'Văn bản quá dài ({length} ký tự). Tối đa {max} ký tự.',\n  'core.component.document-builder.variable.not-allowed': 'Không cho phép thêm variable vào văn bản',\n  'core.component.document-builder.variable.invalid-data': 'Dữ liệu variable không hợp lệ',\n\n  // ---- Component: form-builder ----\n  'core.component.form-builder.field-key': 'Trường dữ liệu',\n  'core.component.form-builder.display': 'Hiển thị',\n  'core.component.form-builder.general': 'Thông tin chung',\n  'core.component.form-builder.visible-when': 'Hiển thị khi',\n  'core.component.form-builder.required': 'Bắt buộc',\n  'core.component.form-builder.label': 'Tên hiển thị',\n  'core.component.form-builder.disabled': 'Vô hiệu',\n  'core.component.form-builder.disabled-when': 'Vô hiệu khi',\n  'core.component.form-builder.hidden-when': 'Ẩn khi',\n  'core.component.form-builder.validation': 'Ràng buộc',\n  'core.component.form-builder.required-when': 'Bắt buộc khi',\n  'core.component.form-builder.confirm': 'Xác nhận',\n  'core.component.form-builder.delete': 'Xóa',\n  'core.component.form-builder.save': 'Lưu',\n  'core.component.form-builder.hint': 'Gợi ý',\n  'core.component.form-builder.parameter': 'Tham số',\n  'core.component.form-builder.add-field': 'Thêm trường',\n  'core.component.form-builder.data': 'Dữ liệu',\n  'core.component.form-builder.query-condition': 'Điều kiện truy vấn',\n  'core.component.form-builder.set-query-value': 'Thiết lập giá trị truy vấn',\n  'core.component.form-builder.value-source-field': 'Trường lấy giá trị',\n  'core.component.form-builder.assign-parameter': 'Gán tham số',\n  'core.component.form-builder.template-data': 'Dữ liệu mẫu',\n  'core.component.form-builder.set-expression': 'Thiết lập biểu thức',\n  'core.component.form-builder.condition-group': 'Nhóm điều kiện',\n  'core.component.form-builder.condition': 'Điều kiện',\n  'core.component.form-builder.layout': 'Bố cục',\n  'core.component.form-builder.maxlength': 'Ký tự tối đa',\n  'core.component.form-builder.assign-parameter-value': 'Gán giá trị Tham số',\n  'core.component.form-builder.parameter-name': 'Tên tham số',\n  'core.component.form-builder.parameter-value': 'Giá trị tương ứng',\n  'core.component.form-builder.assign-value': 'Gán giá trị',\n  'core.component.form-builder.add-data': 'Thêm dữ liệu',\n  'core.component.form-builder.data-api': 'Dữ liệu API',\n  'core.component.form-builder.data-static': 'Dữ liệu tĩnh',\n  'core.component.form-builder.set-on-change-assign': 'Thiết lập gán giá trị khi thay đổi',\n  'core.component.form-builder.target-field': 'Trường muốn gán giá trị',\n  'core.component.form-builder.target-value': 'Giá trị muốn gán',\n  'core.component.form-builder.column-data': 'Dữ liệu cột',\n  'core.component.form-builder.add-column': 'Thêm cột',\n  'core.component.form-builder.column-config': 'Cấu hình cột',\n  'core.component.form-builder.column-name': 'Tên cột',\n  'core.component.form-builder.width': 'Chiều rộng',\n  'core.component.form-builder.data-type': 'Loại dữ liệu',\n  'core.component.form-builder.show-when-true': 'Hiển thị khi TRUE',\n  'core.component.form-builder.show-when-false': 'Hiển thị khi FALSE',\n  'core.component.form-builder.column-list': 'Danh sách cột',\n  'core.component.form-builder.yes-no': 'Có/Không',\n  'core.component.form-builder.config-validation-error-warning': 'Cấu hình xác thực lỗi/cảnh báo',\n  'core.component.form-builder.message-type': 'Loại thông báo',\n  'core.component.form-builder.message-display': 'Thông báo hiển thị',\n  'core.component.form-builder.condition-expression': 'Biểu thức điều kiện',\n  'core.component.form-builder.add-validation': 'Thêm xác thực',\n  'core.component.form-builder.expression': 'Biểu thức',\n  'core.component.form-builder.available-methods': 'Phương thức sẵn có',\n  'core.component.form-builder.format': 'Định dạng',\n  'core.component.form-builder.time': 'Thời điểm',\n  'core.component.form-builder.content': 'Nội dung',\n  'core.component.form-builder.min': 'Giá trị nhỏ nhất',\n  'core.component.form-builder.max': 'Giá trị lớn nhất',\n  'core.component.form-builder.vertical': 'Dọc',\n  'core.component.form-builder.multiple': 'Chọn nhiều',\n  'core.component.form-builder.default-value': 'Giá trị mặc định',\n  'core.component.form-builder.type': 'Loại',\n  'core.component.form-builder.file': 'Tệp',\n  'core.component.form-builder.image': 'Ảnh',\n  'core.component.form-builder.max-files': 'SL tệp/ảnh tối đa',\n  'core.component.form-builder.size-mb': 'Dung lượng (Mb)',\n  'core.component.form-builder.format-example': 'Định dạng (VD: png,jpg ...)',\n  'core.component.form-builder.source-mobile': 'Nguồn (mobile)',\n  'core.component.form-builder.config-variable': 'Cấu hình biến',\n  'core.component.form-builder.config-validation-warning-error': 'Cấu hình xác thực cảnh báo/lỗi',\n  'core.component.form-builder.back-to-design': 'Trở về thiết kế',\n  'core.component.form-builder.preview': 'Xem thử',\n  'core.component.form-builder.drag-vertically': 'Kéo lên / xuống',\n  'core.component.form-builder.unset-readonly': 'Bỏ chỉ xem',\n  'core.component.form-builder.set-readonly': 'Chỉ xem',\n  'core.component.form-builder.duplicate': 'Nhân bản',\n  'core.component.form-builder.show': 'Hiện',\n  'core.component.form-builder.hide': 'Ẩn',\n  'core.component.form-builder.flex': 'Co dãn',\n  'core.component.form-builder.display-label': 'Nhãn hiển thị',\n  'core.component.form-builder.attribute': 'Thuộc tính',\n  'core.component.form-builder.add-variable': 'Thêm biến',\n  'core.component.form-builder.add-new': 'Thêm mới',\n  'core.component.form-builder.detail': 'Chi tiết',\n  'core.component.form-builder.create-update': 'Tạo mới/cập nhật',\n  'core.component.form-builder.default': 'Mặc định',\n  'core.component.form-builder.show-more': 'Xem thêm',\n  'core.component.form-builder.show-less': 'Thu gọn',\n  'core.component.inform.show-more': 'Xem thêm',\n  'core.component.inform.show-less': 'Thu gọn',\n  'core.component.data-state.loading.title': 'Đang tải',\n  'core.component.data-state.loading.message': 'Vui lòng chờ trong khi dữ liệu được tải.',\n  'core.component.data-state.empty.title': 'Chưa có dữ liệu',\n  'core.component.data-state.empty.message': 'Hiện chưa có dữ liệu để hiển thị.',\n  'core.component.data-state.error.title': 'Không thể tải dữ liệu',\n  'core.component.data-state.error.message': 'Đã xảy ra lỗi. Vui lòng thử lại.',\n  'core.component.data-state.forbidden.title': 'Không có quyền truy cập',\n  'core.component.data-state.forbidden.message': 'Bạn không có quyền xem nội dung này.',\n  'core.component.data-state.retry': 'Thử lại',\n  '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',\n  'core.component.form-builder.upload-source.all': 'Tất cả',\n  'core.component.form-builder.upload-source.photo-library': 'Chọn từ thư viện',\n  'core.component.form-builder.upload-source.capture': 'Chụp ảnh',\n  // Form-builder UI v2 (M3 redesign)\n  'core.component.form-builder.components': 'Components',\n  'core.component.form-builder.search-components': 'Tìm component…',\n  'core.component.form-builder.view-json': 'Xem JSON',\n  'core.component.form-builder.design': 'Thiết kế',\n  'core.component.form-builder.preview-runtime': 'Xem trước · Runtime',\n  'core.component.form-builder.cancel': 'Hủy',\n  'core.component.form-builder.submit': 'Gửi',\n  'core.component.form-builder.empty-title': 'Kéo component vào đây để bắt đầu',\n  'core.component.form-builder.empty-hint': 'Tạo form bằng cách kéo các trường từ panel bên trái, hoặc nhấn',\n  'core.component.form-builder.conditional': 'Có điều kiện',\n  'core.component.form-builder.group-drop-here': 'Kéo trường vào đây để thêm vào group',\n  'core.component.form-builder.edit-group': 'Thiết kế group',\n  'core.component.form-builder.group-empty-hint': 'Bấm Chi tiết để thêm trường vào group',\n  'core.component.form-builder.hidden': 'Đã ẩn',\n  'core.component.form-builder.read-only': 'Chỉ đọc',\n  'core.component.form-builder.untitled': 'Chưa đặt tên',\n  'core.component.form-builder.no-selection-title': 'Chưa chọn component nào',\n  'core.component.form-builder.no-selection-hint': 'Chọn một component trên canvas để chỉnh sửa thuộc tính.',\n  'core.component.form-builder.group-children': 'Thành phần con',\n  'core.component.form-builder.group-icon': 'Icon',\n  'core.component.form-builder.group-accent-color': 'Màu nhấn',\n  'core.component.form-builder.group-no-children': 'Chưa có trường nào. Thêm hoặc kéo trường vào group này.',\n  'core.component.form-builder.break': 'Ngắt dòng',\n\n  // ---- Component: code-editor ----\n  'core.component.code-editor.copied': 'Đã copy!',\n  'core.component.code-editor.copy': 'Copy code',\n\n  // ---- Component: history ----\n  'core.component.history.by': 'Bởi',\n\n  // ---- Component: import-excel ----\n  'core.component.import-excel.title': 'Nhập dữ liệu Excel',\n  'core.component.import-excel.see-all': 'Xem tất cả',\n  'core.component.import-excel.valid-rows': 'Số dòng dữ liệu hợp lệ',\n  'core.component.import-excel.error-rows': 'Số dòng dữ liệu có lỗi',\n  'core.component.import-excel.warning-rows': 'Số dòng dữ liệu có cảnh báo',\n  'core.component.import-excel.valid-data': 'Dữ liệu hợp lệ',\n  'core.component.import-excel.download-template-tooltip': 'Nhấn để tải tệp mẫu về máy',\n  'core.component.import-excel.upload': 'Tải lên',\n  'core.component.import-excel.download': 'Tải về',\n  'core.component.import-excel.confirm-save': 'Xác nhận & Lưu',\n  'core.component.import-excel.status': 'Trạng thái',\n  'core.component.import-excel.no-data-upload': 'Chưa có dữ liệu tải lên',\n  'core.component.import-excel.click-here-template': 'Nhấn vào đây để tải tệp mẫu',\n  'core.component.import-excel.no-data-in-file': 'Tệp tin không có dữ liệu',\n  'core.component.import-excel.row-limit': 'Giới hạn tải lên {limit} dòng',\n  'core.component.import-excel.required': 'Dữ liệu bắt buộc',\n  'core.component.import-excel.min-length': 'Độ dài chuỗi tối thiểu: {min}',\n  'core.component.import-excel.max-length': 'Độ dài chuỗi tối đa: {max}',\n  'core.component.import-excel.not-a-number': '{value} không phải số hợp lệ',\n  'core.component.import-excel.below-min': '{value} không thỏa giá trị tối thiểu: {min}',\n  'core.component.import-excel.above-max': '{value} không thỏa giá trị tối đa: {max}',\n  'core.component.import-excel.invalid-bool': 'Vui lòng nhập giá trị hợp lệ true, false, 1, 0',\n  'core.component.import-excel.invalid-value': 'Giá trị {value} không hợp lệ',\n  'core.component.import-excel.value-not-in-list': 'Giá trị {value} không thuộc danh sách cho phép [{list}]',\n  'core.component.import-excel.invalid-date-format': 'Ngày {value} không đúng định dạng {format}',\n  'core.component.import-excel.generic-error': 'Có lỗi xảy ra',\n  'core.component.import-excel.notify-title': 'Thông báo',\n  'core.component.import-excel.message-column': 'Thông báo',\n  'core.component.import-excel.success': 'Thành công',\n\n  // ---- Component: preview-image ----\n  'core.component.preview-image.no-image': 'Không có thông tin ảnh',\n  'core.component.preview-image.title': 'Xem ảnh',\n  'core.component.preview-image.no-image-hint': 'Chưa có ảnh nào để hiển thị',\n  'core.component.preview-image.load-error': 'Không tải được ảnh',\n  'core.component.preview-image.load-error-hint': 'File ảnh có thể đã bị xóa hoặc đường dẫn không hợp lệ',\n  'core.component.preview-image.retry': 'Thử lại',\n  'core.component.preview-image.close': 'Đóng',\n  'core.component.preview-image.prev': 'Ảnh trước',\n  'core.component.preview-image.next': 'Ảnh tiếp theo',\n  'core.component.preview-image.zoom-in': 'Phóng to',\n  'core.component.preview-image.zoom-out': 'Thu nhỏ',\n  'core.component.preview-image.fit': 'Vừa khung',\n  'core.component.preview-image.rotate': 'Xoay',\n  'core.component.preview-image.download': 'Tải xuống',\n  'core.component.preview-image.fullscreen': 'Toàn màn hình',\n  'core.component.preview-image.loading': 'Đang tải ảnh...',\n  'core.component.preview-image.kbd-hint-nav': 'chuyển ảnh',\n  'core.component.preview-image.kbd-hint-close': 'đóng',\n\n  // ---- Component: preview-pdf ----\n  'core.component.preview-pdf.title': 'Xem tài liệu',\n  'core.component.preview-pdf.close': 'Đóng',\n  'core.component.preview-pdf.pages-count': '{count} trang',\n  'core.component.preview-pdf.tab.thumbnails': 'Trang',\n  'core.component.preview-pdf.tab.outline': 'Mục lục',\n  'core.component.preview-pdf.tab.search': 'Tìm',\n  'core.component.preview-pdf.first-page': 'Trang đầu',\n  'core.component.preview-pdf.prev-page': 'Trang trước',\n  'core.component.preview-pdf.next-page': 'Trang tiếp',\n  'core.component.preview-pdf.last-page': 'Trang cuối',\n  'core.component.preview-pdf.zoom-in': 'Phóng to',\n  'core.component.preview-pdf.zoom-out': 'Thu nhỏ',\n  'core.component.preview-pdf.fit-page': 'Vừa trang',\n  'core.component.preview-pdf.fit-width': 'Vừa rộng',\n  'core.component.preview-pdf.actual-size': 'Kích thước thật',\n  'core.component.preview-pdf.rotate': 'Xoay',\n  'core.component.preview-pdf.scroll-page': 'Từng trang',\n  'core.component.preview-pdf.scroll-continuous': 'Cuộn liên tục',\n  'core.component.preview-pdf.print': 'In',\n  'core.component.preview-pdf.download': 'Tải xuống',\n  'core.component.preview-pdf.fullscreen': 'Toàn màn hình',\n  'core.component.preview-pdf.toggle-sidebar': 'Hiện/ẩn thanh bên',\n  'core.component.preview-pdf.page-of': 'trang {current} / {total}',\n  'core.component.preview-pdf.empty.title': 'Không có tài liệu',\n  'core.component.preview-pdf.empty.subtitle': 'Chưa có file PDF nào để hiển thị',\n  'core.component.preview-pdf.loading': 'Đang tải tài liệu...',\n  'core.component.preview-pdf.loading.page': 'Đang xử lý trang {current} / {total}',\n  'core.component.preview-pdf.error.invalid.title': 'Không tải được tài liệu',\n  'core.component.preview-pdf.error.invalid.body': 'File PDF có thể bị hỏng. Vui lòng kiểm tra lại file.',\n  'core.component.preview-pdf.error.password.title': 'Tài liệu được bảo vệ',\n  'core.component.preview-pdf.error.password.body': 'File PDF này yêu cầu mật khẩu để mở.',\n  'core.component.preview-pdf.error.network.title': 'Không kết nối được',\n  'core.component.preview-pdf.error.network.body': 'Không thể tải file từ máy chủ. Vui lòng thử lại sau.',\n  'core.component.preview-pdf.error.unknown.title': 'Đã có lỗi xảy ra',\n  'core.component.preview-pdf.error.unknown.body': 'Vui lòng thử lại hoặc tải file gốc về để xem.',\n  'core.component.preview-pdf.error.retry': 'Thử lại',\n  'core.component.preview-pdf.error.download-raw': 'Tải file gốc',\n  'core.component.preview-pdf.search': 'Tìm kiếm',\n  'core.component.preview-pdf.search-placeholder': 'Tìm trong tài liệu...',\n  'core.component.preview-pdf.search-case': 'Phân biệt hoa thường',\n  'core.component.preview-pdf.search-whole': 'Từ nguyên',\n  'core.component.preview-pdf.search-no-results': 'Không tìm thấy',\n  'core.component.preview-pdf.search-results-count': '{count} kết quả cho \"{term}\"',\n  '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.',\n  'core.component.preview-pdf.search-prev': 'Kết quả trước',\n  'core.component.preview-pdf.search-next': 'Kết quả tiếp',\n  'core.component.preview-pdf.search-close': 'Đóng tìm kiếm',\n\n  // ---- Component: table ----\n  'core.component.table.setup': 'Thiết lập bảng',\n  'core.component.table.column-header': 'Tiêu đề cột',\n  'core.component.table.width': 'Rộng',\n  'core.component.table.fixed': 'Cố định',\n  'core.component.table.char-limit': 'Giới hạn ký tự',\n  'core.component.table.skip': 'Bỏ qua',\n  'core.component.table.apply': 'Áp dụng',\n  'core.component.table.filter': 'Bộ lọc',\n  'core.component.table.clear-selection': 'Xóa lựa chọn',\n  'core.component.table.customize': 'Tùy chỉnh',\n  'core.component.table.search': 'Tìm kiếm',\n  'core.component.table.reload': 'Tải lại',\n  'core.component.table.setup-short': 'Thiết lập',\n  'core.component.table.no-results': 'Không có kết quả phù hợp',\n  'core.component.table.no-results-hint': 'Vui lòng tìm kiếm hoặc lọc theo tiêu chí khác',\n  'core.component.table.choose-filter-hint': 'Vui lòng chọn bộ lọc để bắt đầu',\n  'core.component.table.no-data': 'Chưa có dữ liệu',\n  'core.component.table.export-excel': 'Xuất excel',\n  'core.component.table.export-csv': 'Xuất CSV',\n  'core.component.table.showing': 'Đang hiển thị:',\n  'core.component.table.paginator.first-page': 'Trang đầu',\n  'core.component.table.paginator.last-page': 'Trang cuối',\n  'core.component.table.paginator.items-per-page': 'Đang hiển thị',\n  'core.component.table.paginator.next-page': 'Trang sau',\n  'core.component.table.paginator.previous-page': 'Trang trước',\n  'core.component.table.error-occurred': 'Có lỗi xảy ra',\n  'core.component.table.not-an-array': 'Dữ liệu không phải là một mảng',\n  'core.component.table.config.confirm-reset': 'Xác nhận đưa tất cả thiết lập về mặc định',\n  'core.component.table.popup-export.select-columns': 'Vui lòng chọn cột dữ liệu để xuất',\n  'core.component.table.selector-action.default-msg': 'dữ liệu được chọn',\n  'core.component.tab-router.too-many-tabs': 'Bạn đã mở quá nhiều tab.',\n\n  // ---- Component: upload-file ----\n  'core.component.upload-file.upload': 'Tải file',\n  'core.component.upload-file.error-occurred': 'Có lỗi xảy ra',\n  'core.component.upload-file.please-upload': 'Vui lòng tải lên tệp/ảnh',\n  'core.component.upload-file.desc-format-and-size': 'Định dạng: {exts} và tối đa: {maxSize}MB',\n  'core.component.upload-file.desc-format': 'Định dạng: {exts}',\n  'core.component.upload-file.desc-max-size': 'Tối đa: {maxSize}MB',\n  'core.component.upload-file.not-image': '[{name}] Tệp tải lên không phải là ảnh',\n  'core.component.upload-file.invalid-format': '[{name}] Tệp tải lên không đúng định dạng: {exts}',\n  'core.component.upload-file.size-exceeded': '[{name}] Kích thước tệp tối đa: {maxSize} MB',\n  'core.component.upload-file.upload-failed': 'Có lỗi xảy ra trong quá trình tải lên tệp',\n  'core.component.upload-file.too-many-files': 'Bạn đã chọn quá nhiều file. Vui lòng kiểm tra lại số lượng',\n  'core.component.upload-file.confirm-delete-message': 'Bạn có muốn xóa file này không? Thao tác này không thể hoàn tác',\n  'core.component.upload-file.confirm-delete-title': 'Xác nhận xóa?',\n  'core.component.upload-file.confirm-yes': 'Xác nhận',\n  'core.component.upload-file.confirm-no': 'Hủy',\n  'core.component.upload-file.no-configuration':\n    'Vui lòng inject SD_UPLOAD_FILE_CONFIGURATION hoặc truyền [upload] trực tiếp vào component',\n  'core.component.upload-file.no-configuration-key':\n    \"Không tìm thấy upload configuration theo key='{key}'. Vui lòng kiểm tra providers hoặc truyền [upload] trực tiếp\",\n  'core.component.upload-file.preview-title': 'Xem ảnh',\n\n  // ---- Module: layout (sidebar / user menu) ----\n  'core.module.layout.user.change-password': 'Đổi mật khẩu',\n  'core.module.layout.user.logout': 'Đăng xuất',\n  'core.module.layout.user.update-profile': 'Chỉnh sửa hồ sơ',\n  'core.module.layout.user.setting': 'Thiết lập',\n  'core.module.layout.user.notification': 'Thông báo',\n  'core.module.layout.sidebar.search': 'Tìm kiếm',\n  'core.module.layout.sidebar.toggle': 'Thu gọn hoặc mở rộng thanh điều hướng',\n\n  // ---- Module: layout (greeting + weekday) ----\n  'core.module.layout.greeting.hello': 'Xin chào, {name}',\n  'core.module.layout.weekday.0': 'Chủ Nhật',\n  'core.module.layout.weekday.1': 'Thứ 2',\n  'core.module.layout.weekday.2': 'Thứ 3',\n  'core.module.layout.weekday.3': 'Thứ 4',\n  'core.module.layout.weekday.4': 'Thứ 5',\n  'core.module.layout.weekday.5': 'Thứ 6',\n  'core.module.layout.weekday.6': 'Thứ 7',\n  'core.module.layout.today-info.format': '{weekday}, ngày {date}',\n\n  // ---- Module: layout (forbidden page) ----\n  'core.module.layout.forbidden.title': 'Không được phép truy cập',\n  'core.module.layout.forbidden.message': 'Bạn không có quyền truy cập vào trang này. Liên hệ với quản trị viên hoặc quay lại trang chủ',\n  'core.module.layout.forbidden.back-home': 'Quay lại trang chủ',\n\n  // ---- Module: layout (not-found page) ----\n  'core.module.layout.not-found.title': '404 - Trang không tồn tại',\n  'core.module.layout.not-found.message':\n    'Trang bạn tìm không tồn tại hoặc đã bị xóa. Vui lòng kiểm tra lại địa chỉ URL hoặc quay lại trang chủ để tiếp tục.',\n  'core.module.layout.not-found.back': 'Quay trở lại',\n\n  // ---- Module: layout (home page) ----\n  'core.module.layout.home.tab-name': 'Trang chủ',\n  'core.module.layout.home.feature.data': 'Dữ liệu',\n  'core.module.layout.home.feature.reports': 'Báo cáo',\n  'core.module.layout.home.feature.users': 'Người dùng',\n  'core.module.layout.home.feature.workflow': 'Quy trình',\n  'core.module.layout.home.feature.audit': 'Kiểm toán',\n  'core.module.layout.home.feature.integration': 'Tích hợp',\n\n  // ---- Module: layout (mock fallback khi không provide SD_LAYOUT_CONFIGURATION) ----\n  'core.module.layout.mock.user.full-name': 'Người dùng demo',\n\n  // ---- Module: generic (generic-select) ----\n  'core.module.generic.generic-select.detail-link': 'chi tiết',\n};\n","import type { EN_MESSAGES } from './en';\n\nexport const ZH_MESSAGES: Record<keyof typeof EN_MESSAGES, string> = {\n  'core.common.cancel': '取消',\n  'core.common.close': '关闭',\n  'core.common.reload': '重新加载页面',\n  'core.test.greet': '你好 {name}',\n\n  // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----\n  'core.validator.email.name': '邮箱',\n  'core.validator.email.error': '邮箱格式不正确',\n  'core.validator.phone.name': '电话',\n  'core.validator.phone.error': '电话号码格式不正确',\n  // Legacy aliases\n  'core.validator.phone-vn.name': '越南电话',\n  'core.validator.phone-vn.error': '越南电话号码格式不正确',\n  'core.validator.cccd.name': '身份证号',\n  'core.validator.cccd.error': '身份证号格式不正确（12位数字）',\n  'core.validator.id-vn.name': '身份证 / 护照',\n  'core.validator.id-vn.error': '身份证或护照号码格式不正确',\n  'core.validator.vn-phone.name': '越南电话',\n  'core.validator.vn-phone.error': '越南电话号码格式不正确',\n  'core.validator.vn-id.name': '身份证号',\n  'core.validator.vn-id.error': '身份证号格式不正确（12位数字）',\n  'core.validator.passport.name': '护照',\n  'core.validator.passport.error': '护照号码格式不正确（1个字母 + 7位数字）',\n  'core.validator.vn-id-or-passport.name': '身份证 / 护照',\n  'core.validator.vn-id-or-passport.error': '身份证或护照号码格式不正确',\n  'core.validator.time.name': '时间',\n  'core.validator.time.error': '时间格式不正确（HH:mm 格式）',\n  'core.validator.url.name': 'URL',\n  'core.validator.url.error': 'URL 格式不正确',\n  'core.validator.domain.name': '域名',\n  'core.validator.domain.error': '域名格式不正确',\n  'core.validator.ipv4.name': 'IPv4',\n  'core.validator.ipv4.error': 'IPv4 地址格式不正确',\n  'core.validator.ipv6.name': 'IPv6',\n  'core.validator.ipv6.error': 'IPv6 地址格式不正确',\n  'core.validator.image-url.name': '图片 URL',\n  'core.validator.image-url.error': '图片 URL 格式不正确',\n  'core.validator.slug.name': 'Slug',\n  'core.validator.slug.error': 'Slug 格式不正确',\n  'core.validator.number.name': '数字',\n  'core.validator.number.error': '数字格式不正确',\n  'core.validator.integer.name': '整数',\n  'core.validator.integer.error': '整数格式不正确',\n  'core.validator.decimal.name': '小数',\n  'core.validator.decimal.error': '小数格式不正确',\n  'core.validator.positive-number.name': '正数',\n  'core.validator.positive-number.error': '必须为正数',\n  'core.validator.uuid.name': 'UUID',\n  'core.validator.uuid.error': 'UUID 格式不正确',\n  'core.validator.code-16.name': '16 位代码',\n  'core.validator.code-16.error': '16 位代码格式不正确',\n  'core.validator.code-32.name': '32 位代码',\n  'core.validator.code-32.error': '32 位代码格式不正确',\n  'core.validator.hex-color.name': 'HEX 颜色',\n  'core.validator.hex-color.error': 'HEX 颜色格式不正确',\n  'core.validator.base64.name': 'Base64',\n  'core.validator.base64.error': 'Base64 字符串格式不正确',\n\n  // ---- Operators (operator.model.ts) ----\n  'core.operator.equal.display': '等于',\n  'core.operator.not-equal.display': '不等于',\n  'core.operator.greater-than.display': '大于',\n  'core.operator.less-than.display': '小于',\n  'core.operator.greater-or-equal.display': '大于或等于',\n  'core.operator.less-or-equal.display': '小于或等于',\n  'core.operator.contain.display': '包含',\n  'core.operator.not-contain.display': '不包含',\n  'core.operator.start-with.display': '开始于',\n  'core.operator.not-start-with.display': '不开始于',\n  'core.operator.end-with.display': '结束于',\n  'core.operator.not-end-with.display': '不结束于',\n  'core.operator.in.display': '属于',\n  'core.operator.not-in.display': '不属于',\n  'core.operator.between.display': '介于之间',\n  'core.operator.null.display': '为空',\n  'core.operator.not-null.display': '不为空',\n\n  // ---- Global error handler ----\n  'core.handler.global-error.update-title': '系统有新的更新',\n  'core.handler.global-error.update-body': '当前版本已过期，无法加载资源。\\n请点击确定重新加载页面。',\n\n  // ---- Interceptor: no-internet ----\n  'core.interceptor.no-internet.offline': '没有网络连接，等待连接中...',\n  'core.interceptor.no-internet.cors-error': '无法连接到服务器（CORS 或配置错误）。',\n  'core.interceptor.no-internet.maintenance': '服务器正在维护中，请稍后再试。',\n  'core.interceptor.no-internet.restored': '网络连接已恢复。',\n\n  // ---- Service: excel ----\n  'core.excel.cannot-read-file': '无法读取文件内容',\n  'core.excel.no-sheet': 'Excel 文件没有数据表',\n\n  // ---- Service: docx ----\n  'core.docx.invalid-format': '格式不正确，请选择 DOC 或 DOCX 格式的模板',\n  'core.docx.size-exceeded': '模板文件大小超出支持范围，请重试',\n  'core.docx.convert-error': '转换 DOCX 文件时发生错误',\n\n  // ---- Service: notify (toast) ----\n  'core.notify.type.success': '成功',\n  'core.notify.type.info': '信息',\n  'core.notify.type.warning': '警告',\n  'core.notify.type.error': '错误',\n  'core.notify.show-more': '显示更多 ({count})',\n  'core.notify.show-less': '收起',\n\n  // ---- Service: confirm ----\n  'core.confirm.title': '确认',\n  'core.confirm.yes': '确定',\n  'core.confirm.no': '取消',\n  'core.confirm.yes-short': '是',\n  'core.confirm.no-short': '否',\n\n  // ---- Directive: hover-copy ----\n  'core.directive.hover-copy.tooltip': '复制',\n\n  // ---- Forms: input ----\n  'core.form.input.required': '请输入内容',\n  'core.form.input.maxlength': '最大字符数: {max}',\n  'core.form.input.invalid-pattern': '格式不正确',\n  'core.form.input.exceeded': '已超过最大字符数',\n  'core.form.input.mask-incomplete': '输入值不完整',\n  'core.form.input.mask-invalid': '输入值包含无效字符',\n\n  // ---- Forms: autocomplete ----\n  'core.form.autocomplete.required': '请输入内容',\n\n  // ---- Forms: chip ----\n  'core.form.chip.required': '请输入内容',\n  'core.form.chip.minlength': '请至少输入 {min} 个值',\n  'core.form.chip.maxlength': '最多输入 {max} 个值',\n\n  // ---- Forms: chip-calendar ----\n  'core.form.chip-calendar.required': '请输入内容',\n  'core.form.chip-calendar.minlength': '请至少输入 {min} 个值',\n  'core.form.chip-calendar.maxlength': '最多输入 {max} 个值',\n\n  // ---- Forms: date ----\n  'core.form.date.required': '请输入内容',\n  'core.form.date.min-date': '最小日期: {date}',\n  'core.form.date.max-date': '最大日期: {date}',\n  'core.form.date.parse-error': '解析错误: {text}',\n  'core.form.date.invalid-format': '格式不正确',\n\n  // ---- Forms: date-range ----\n  'core.form.date-range.required': '请输入内容',\n  'core.form.date-range.invalid-min': '开始日期无效（低于限制）',\n  'core.form.date-range.invalid-max': '结束日期无效（高于限制）',\n  'core.form.date-range.from': '从',\n  'core.form.date-range.to': '至',\n\n  // ---- Forms: datetime ----\n  'core.form.datetime.required': '请输入内容',\n  'core.form.datetime.min-date': '最小日期: {date}',\n  'core.form.datetime.max-date': '最大日期: {date}',\n  'core.form.datetime.invalid-format': '格式不正确',\n  'core.form.datetime.now': '现在',\n  'core.form.datetime.confirm': '确认',\n\n  // ---- Forms: entity-picker / tree-select ----\n  'core.form.entity-picker.placeholder': '选择实体',\n  'core.form.entity-picker.modal-title': '选择实体',\n  'core.form.entity-picker.value': '值',\n  'core.form.entity-picker.clear': '清除选择',\n  'core.form.entity-picker.add': '添加',\n  'core.form.entity-picker.cancel': '取消',\n  'core.form.entity-picker.apply': '应用',\n  'core.form.tree-select.placeholder': '选择树节点',\n  'core.form.tree-select.modal-title': '选择树节点',\n  'core.form.tree-select.clear': '清除选择',\n  'core.form.tree-select.search': '搜索树',\n  'core.form.tree-select.cancel': '取消',\n  'core.form.tree-select.apply': '应用',\n  'core.component.tree.retry': '重试',\n  'core.service.unsaved-changes.message': '您有未保存的更改。是否放弃更改并继续？',\n  'core.component.job-progress.status.idle': '就绪',\n  'core.component.job-progress.status.queued': '排队中',\n  'core.component.job-progress.status.running': '进行中',\n  'core.component.job-progress.status.succeeded': '已完成',\n  'core.component.job-progress.status.failed': '失败',\n  'core.component.job-progress.status.cancelled': '已取消',\n  'core.component.job-progress.cancel': '取消',\n  'core.component.job-progress.retry': '重试',\n  'core.component.audit-diff.label': '审计变更',\n  'core.component.audit-diff.field': '字段',\n  'core.component.audit-diff.before': '变更前',\n  'core.component.audit-diff.after': '变更后',\n  'core.component.audit-diff.empty': '没有变更',\n  'core.component.audit-diff.kind.added': '已添加',\n  'core.component.audit-diff.kind.removed': '已删除',\n  'core.component.audit-diff.kind.changed': '已更改',\n  'core.component.audit-diff.kind.unchanged': '未更改',\n  'core.component.audit-diff.value.label': '值',\n  'core.component.audit-diff.value.not-set': '未设置',\n  'core.component.audit-diff.value.undefined': '未定义',\n  'core.component.audit-diff.value.null': '空值',\n  'core.component.audit-diff.value.true': '是',\n  'core.component.audit-diff.value.false': '否',\n\n  // ---- Forms: time ----\n  'core.form.time.required': '请输入时间',\n  'core.form.time.invalid': '请输入 HH:mm 格式的有效时间',\n  'core.form.time.min': '时间不得早于 {min}',\n  'core.form.time.max': '时间不得晚于 {max}',\n  'core.form.time.step': '时间必须符合 {step} 分钟间隔',\n  'core.form.time.open-picker': '打开时间选择器',\n  'core.form.time.confirm': '确认',\n  'core.form.time.clear': '清除时间',\n\n  // ---- Forms: time-range ----\n  'core.form.time-range.required': '请输入开始和结束时间',\n  'core.form.time-range.incomplete': '请输入两个时间，或启用开放时间范围',\n  'core.form.time-range.range': '开始时间不得晚于结束时间',\n  'core.form.time-range.invalid': '请输入 HH:mm 格式的有效时间',\n  'core.form.time-range.min': '时间不得早于 {min}',\n  'core.form.time-range.max': '时间不得晚于 {max}',\n  'core.form.time-range.step': '时间必须符合 {step} 分钟间隔',\n  'core.form.time-range.from': '开始',\n  'core.form.time-range.to': '结束',\n  'core.form.time-range.clear': '清除时间范围',\n\n  // ---- Forms: time-spinner ----\n  'core.form.time-spinner.hour': '时',\n  'core.form.time-spinner.minute': '分',\n  'core.form.time-spinner.second': '秒',\n  'core.form.time-spinner.increase-hour': '增加小时',\n  'core.form.time-spinner.decrease-hour': '减少小时',\n  'core.form.time-spinner.increase-minute': '增加分钟',\n  'core.form.time-spinner.decrease-minute': '减少分钟',\n  'core.form.time-spinner.increase-second': '增加秒',\n  'core.form.time-spinner.decrease-second': '减少秒',\n\n  // ---- Forms: input-number ----\n  'core.form.input-number.required': '请输入内容',\n  'core.form.input-number.min': '值不能小于 {min}',\n  'core.form.input-number.max': '值不能大于 {max}',\n\n  // ---- Forms: radio ----\n  'core.form.radio.required': '请选择',\n\n  // ---- Forms: switch ----\n  'core.form.switch.on': '开',\n  'core.form.switch.off': '关',\n\n  // ---- Forms: checkbox ----\n  'core.form.checkbox.checked': '是',\n  'core.form.checkbox.unchecked': '否',\n\n  // ---- Forms: select ----\n  'core.form.select.required': '请选择',\n\n  // ---- Forms: textarea ----\n  'core.form.textarea.required': '请输入内容',\n  'core.form.textarea.maxlength': '最大字符数: {max}',\n  'core.form.textarea.invalid-pattern': '格式不正确',\n  'core.form.textarea.exceeded': '已超过最大字符数',\n\n  // ---- Component: editor ----\n  'core.component.editor.required': '请输入内容',\n  'core.component.editor.maxlength': '最大字符数: {max}',\n  'core.component.editor.image.invalid-format': '不允许的文件格式 \".{format}\"。允许的格式: {allowed}',\n  'core.component.editor.image.size-exceeded': '文件大小 {sizeMB}MB 超过限制 {maxSizeMB}MB',\n  'core.component.editor.image.min-width': '图片宽度 {width}px 低于最小值 {min}px',\n  'core.component.editor.image.min-height': '图片高度 {height}px 低于最小值 {min}px',\n  'core.component.editor.image.max-width': '图片宽度 {width}px 超过限制 {max}px',\n  'core.component.editor.image.max-height': '图片高度 {height}px 超过限制 {max}px',\n  'core.component.editor.image.max-per-selection': '每次最多选择 {max} 张图片',\n\n  // ---- Component: document-builder ----\n  'core.component.document-builder.page-number.current': '当前页码',\n  'core.component.document-builder.page-number.total': '总页数',\n  'core.component.document-builder.ck-comment.label': '评论',\n  'core.component.document-builder.ck-comment.text-too-long': '文本过长（{length} 字符）。最多 {max} 字符。',\n  'core.component.document-builder.variable.not-allowed': '不允许在文本中添加变量',\n  'core.component.document-builder.variable.invalid-data': '变量数据无效',\n\n  // ---- Component: form-builder ----\n  'core.component.form-builder.field-key': '字段键',\n  'core.component.form-builder.display': '显示',\n  'core.component.form-builder.general': '常规',\n  'core.component.form-builder.visible-when': '显示条件',\n  'core.component.form-builder.required': '必填',\n  'core.component.form-builder.label': '标签',\n  'core.component.form-builder.disabled': '禁用',\n  'core.component.form-builder.disabled-when': '禁用条件',\n  'core.component.form-builder.hidden-when': '隐藏条件',\n  'core.component.form-builder.validation': '校验',\n  'core.component.form-builder.required-when': '必填条件',\n  'core.component.form-builder.confirm': '确认',\n  'core.component.form-builder.delete': '删除',\n  'core.component.form-builder.save': '保存',\n  'core.component.form-builder.hint': '提示',\n  'core.component.form-builder.parameter': '参数',\n  'core.component.form-builder.add-field': '添加字段',\n  'core.component.form-builder.data': '数据',\n  'core.component.form-builder.query-condition': '查询条件',\n  'core.component.form-builder.set-query-value': '设置查询值',\n  'core.component.form-builder.value-source-field': '取值字段',\n  'core.component.form-builder.assign-parameter': '分配参数',\n  'core.component.form-builder.template-data': '模板数据',\n  'core.component.form-builder.set-expression': '设置表达式',\n  'core.component.form-builder.condition-group': '条件组',\n  'core.component.form-builder.condition': '条件',\n  'core.component.form-builder.layout': '布局',\n  'core.component.form-builder.maxlength': '最大字符数',\n  'core.component.form-builder.assign-parameter-value': '分配参数值',\n  'core.component.form-builder.parameter-name': '参数名',\n  'core.component.form-builder.parameter-value': '参数值',\n  'core.component.form-builder.assign-value': '赋值',\n  'core.component.form-builder.add-data': '添加数据',\n  'core.component.form-builder.data-api': 'API 数据',\n  'core.component.form-builder.data-static': '静态数据',\n  'core.component.form-builder.set-on-change-assign': '设置变更时赋值',\n  'core.component.form-builder.target-field': '目标字段',\n  'core.component.form-builder.target-value': '目标值',\n  'core.component.form-builder.column-data': '列数据',\n  'core.component.form-builder.add-column': '添加列',\n  'core.component.form-builder.column-config': '列配置',\n  'core.component.form-builder.column-name': '列名',\n  'core.component.form-builder.width': '宽度',\n  'core.component.form-builder.data-type': '数据类型',\n  'core.component.form-builder.show-when-true': '为 TRUE 时显示',\n  'core.component.form-builder.show-when-false': '为 FALSE 时显示',\n  'core.component.form-builder.column-list': '列列表',\n  'core.component.form-builder.yes-no': '是/否',\n  'core.component.form-builder.config-validation-error-warning': '配置错误/警告校验',\n  'core.component.form-builder.message-type': '消息类型',\n  'core.component.form-builder.message-display': '显示消息',\n  'core.component.form-builder.condition-expression': '条件表达式',\n  'core.component.form-builder.add-validation': '添加校验',\n  'core.component.form-builder.expression': '表达式',\n  'core.component.form-builder.available-methods': '可用方法',\n  'core.component.form-builder.format': '格式',\n  'core.component.form-builder.time': '时间',\n  'core.component.form-builder.content': '内容',\n  'core.component.form-builder.min': '最小值',\n  'core.component.form-builder.max': '最大值',\n  'core.component.form-builder.vertical': '垂直',\n  'core.component.form-builder.multiple': '多选',\n  'core.component.form-builder.default-value': '默认值',\n  'core.component.form-builder.type': '类型',\n  'core.component.form-builder.file': '文件',\n  'core.component.form-builder.image': '图片',\n  'core.component.form-builder.max-files': '最大文件/图片数',\n  'core.component.form-builder.size-mb': '大小 (MB)',\n  'core.component.form-builder.format-example': '格式（例如: png,jpg ...）',\n  'core.component.form-builder.source-mobile': '来源（移动端）',\n  'core.component.form-builder.config-variable': '配置变量',\n  'core.component.form-builder.config-validation-warning-error': '配置警告/错误校验',\n  'core.component.form-builder.back-to-design': '返回设计',\n  'core.component.form-builder.preview': '预览',\n  'core.component.form-builder.drag-vertically': '上下拖动',\n  'core.component.form-builder.unset-readonly': '取消只读',\n  'core.component.form-builder.set-readonly': '只读',\n  'core.component.form-builder.duplicate': '复制',\n  'core.component.form-builder.show': '显示',\n  'core.component.form-builder.hide': '隐藏',\n  'core.component.form-builder.flex': '弹性',\n  'core.component.form-builder.display-label': '显示标签',\n  'core.component.form-builder.attribute': '属性',\n  'core.component.form-builder.add-variable': '添加变量',\n  'core.component.form-builder.add-new': '新增',\n  'core.component.form-builder.detail': '详情',\n  'core.component.form-builder.create-update': '新建/更新',\n  'core.component.form-builder.default': '默认',\n  'core.component.form-builder.show-more': '查看更多',\n  'core.component.form-builder.show-less': '收起',\n  'core.component.inform.show-more': '展开',\n  'core.component.inform.show-less': '收起',\n  'core.component.data-state.loading.title': '正在加载',\n  'core.component.data-state.loading.message': '正在加载数据，请稍候。',\n  'core.component.data-state.empty.title': '暂无数据',\n  'core.component.data-state.empty.message': '目前没有可显示的数据。',\n  'core.component.data-state.error.title': '无法加载数据',\n  'core.component.data-state.error.message': '发生错误，请重试。',\n  'core.component.data-state.forbidden.title': '访问被拒绝',\n  'core.component.data-state.forbidden.message': '您没有权限查看此内容。',\n  'core.component.data-state.retry': '重试',\n  'core.component.form-builder.row-overflow': '无法移动到该行，因为总宽度超过 12 列',\n  'core.component.form-builder.upload-source.all': '全部',\n  'core.component.form-builder.upload-source.photo-library': '从相册选择',\n  'core.component.form-builder.upload-source.capture': '拍照',\n  // Form-builder UI v2 (M3 redesign)\n  'core.component.form-builder.components': '组件',\n  'core.component.form-builder.search-components': '搜索组件…',\n  'core.component.form-builder.view-json': '查看 JSON',\n  'core.component.form-builder.design': '设计',\n  'core.component.form-builder.preview-runtime': '预览 · 运行时',\n  'core.component.form-builder.cancel': '取消',\n  'core.component.form-builder.submit': '提交',\n  'core.component.form-builder.empty-title': '拖动组件到此处开始',\n  'core.component.form-builder.empty-hint': '从左侧面板拖动字段构建表单,或按',\n  'core.component.form-builder.conditional': '条件',\n  'core.component.form-builder.group-drop-here': '将字段拖到此处以添加到该分组',\n  'core.component.form-builder.edit-group': '编辑分组',\n  'core.component.form-builder.group-empty-hint': '点击详情以向该分组添加字段',\n  'core.component.form-builder.hidden': '已隐藏',\n  'core.component.form-builder.read-only': '只读',\n  'core.component.form-builder.untitled': '未命名',\n  'core.component.form-builder.no-selection-title': '未选中任何项',\n  'core.component.form-builder.no-selection-hint': '在画布上选择一个组件以编辑其属性。',\n  'core.component.form-builder.group-children': '子项',\n  'core.component.form-builder.group-icon': '图标',\n  'core.component.form-builder.group-accent-color': '强调色',\n  'core.component.form-builder.group-no-children': '尚无字段。请向此分组添加或拖入字段。',\n  'core.component.form-builder.break': '换行',\n\n  // ---- Component: code-editor ----\n  'core.component.code-editor.copied': '已复制！',\n  'core.component.code-editor.copy': '复制代码',\n\n  // ---- Component: history ----\n  'core.component.history.by': '操作人',\n\n  // ---- Component: import-excel ----\n  'core.component.import-excel.title': '导入 Excel 数据',\n  'core.component.import-excel.see-all': '查看全部',\n  'core.component.import-excel.valid-rows': '有效行数',\n  'core.component.import-excel.error-rows': '错误行数',\n  'core.component.import-excel.warning-rows': '警告行数',\n  'core.component.import-excel.valid-data': '有效数据',\n  'core.component.import-excel.download-template-tooltip': '点击下载模板',\n  'core.component.import-excel.upload': '上传',\n  'core.component.import-excel.download': '下载',\n  'core.component.import-excel.confirm-save': '确认并保存',\n  'core.component.import-excel.status': '状态',\n  'core.component.import-excel.no-data-upload': '未上传任何数据',\n  'core.component.import-excel.click-here-template': '点击此处下载模板',\n  'core.component.import-excel.no-data-in-file': '文件中没有数据',\n  'core.component.import-excel.row-limit': '上传上限为 {limit} 行',\n  'core.component.import-excel.required': '必填数据',\n  'core.component.import-excel.min-length': '最小字符串长度: {min}',\n  'core.component.import-excel.max-length': '最大字符串长度: {max}',\n  'core.component.import-excel.not-a-number': '{value} 不是有效的数字',\n  'core.component.import-excel.below-min': '{value} 低于最小值: {min}',\n  'core.component.import-excel.above-max': '{value} 高于最大值: {max}',\n  'core.component.import-excel.invalid-bool': '请输入有效值 (true, false, 1, 0)',\n  'core.component.import-excel.invalid-value': '值 {value} 无效',\n  'core.component.import-excel.value-not-in-list': '值 {value} 不在允许列表 [{list}] 中',\n  'core.component.import-excel.invalid-date-format': '日期 {value} 不符合格式 {format}',\n  'core.component.import-excel.generic-error': '发生错误',\n  'core.component.import-excel.notify-title': '通知',\n  'core.component.import-excel.message-column': '消息',\n  'core.component.import-excel.success': '成功',\n\n  // ---- Component: preview-image ----\n  'core.component.preview-image.no-image': '没有图片信息',\n  'core.component.preview-image.title': '图片预览',\n  'core.component.preview-image.no-image-hint': '暂无可显示的图片',\n  'core.component.preview-image.load-error': '无法加载图片',\n  'core.component.preview-image.load-error-hint': '图片文件可能已被删除或路径无效',\n  'core.component.preview-image.retry': '重试',\n  'core.component.preview-image.close': '关闭',\n  'core.component.preview-image.prev': '上一张',\n  'core.component.preview-image.next': '下一张',\n  'core.component.preview-image.zoom-in': '放大',\n  'core.component.preview-image.zoom-out': '缩小',\n  'core.component.preview-image.fit': '适应屏幕',\n  'core.component.preview-image.rotate': '旋转',\n  'core.component.preview-image.download': '下载',\n  'core.component.preview-image.fullscreen': '全屏',\n  'core.component.preview-image.loading': '正在加载图片...',\n  'core.component.preview-image.kbd-hint-nav': '切换图片',\n  'core.component.preview-image.kbd-hint-close': '关闭',\n\n  // ---- Component: preview-pdf ----\n  'core.component.preview-pdf.title': '查看文档',\n  'core.component.preview-pdf.close': '关闭',\n  'core.component.preview-pdf.pages-count': '{count} 页',\n  'core.component.preview-pdf.tab.thumbnails': '页面',\n  'core.component.preview-pdf.tab.outline': '目录',\n  'core.component.preview-pdf.tab.search': '查找',\n  'core.component.preview-pdf.first-page': '首页',\n  'core.component.preview-pdf.prev-page': '上一页',\n  'core.component.preview-pdf.next-page': '下一页',\n  'core.component.preview-pdf.last-page': '末页',\n  'core.component.preview-pdf.zoom-in': '放大',\n  'core.component.preview-pdf.zoom-out': '缩小',\n  'core.component.preview-pdf.fit-page': '适合页面',\n  'core.component.preview-pdf.fit-width': '适合宽度',\n  'core.component.preview-pdf.actual-size': '实际大小',\n  'core.component.preview-pdf.rotate': '旋转',\n  'core.component.preview-pdf.scroll-page': '单页',\n  'core.component.preview-pdf.scroll-continuous': '连续滚动',\n  'core.component.preview-pdf.print': '打印',\n  'core.component.preview-pdf.download': '下载',\n  'core.component.preview-pdf.fullscreen': '全屏',\n  'core.component.preview-pdf.toggle-sidebar': '切换侧边栏',\n  'core.component.preview-pdf.page-of': '第 {current} / {total} 页',\n  'core.component.preview-pdf.empty.title': '没有文档',\n  'core.component.preview-pdf.empty.subtitle': '尚无可显示的 PDF 文件',\n  'core.component.preview-pdf.loading': '正在加载文档...',\n  'core.component.preview-pdf.loading.page': '正在处理第 {current} / {total} 页',\n  'core.component.preview-pdf.error.invalid.title': '无法加载文档',\n  'core.component.preview-pdf.error.invalid.body': 'PDF 文件可能已损坏。请检查文件。',\n  'core.component.preview-pdf.error.password.title': '受保护的文档',\n  'core.component.preview-pdf.error.password.body': '此 PDF 文件需要密码才能打开。',\n  'core.component.preview-pdf.error.network.title': '无法连接',\n  'core.component.preview-pdf.error.network.body': '无法从服务器加载文件。请稍后再试。',\n  'core.component.preview-pdf.error.unknown.title': '发生错误',\n  'core.component.preview-pdf.error.unknown.body': '请重试或下载原始文件查看。',\n  'core.component.preview-pdf.error.retry': '重试',\n  'core.component.preview-pdf.error.download-raw': '下载原始文件',\n  'core.component.preview-pdf.search': '搜索',\n  'core.component.preview-pdf.search-placeholder': '在文档中搜索...',\n  'core.component.preview-pdf.search-case': '区分大小写',\n  'core.component.preview-pdf.search-whole': '全词匹配',\n  'core.component.preview-pdf.search-no-results': '未找到结果',\n  'core.component.preview-pdf.search-results-count': '关于 \"{term}\" 的 {count} 个结果',\n  'core.component.preview-pdf.search-truncated': '正在显示前 {count} 个匹配项。请缩小搜索范围。',\n  'core.component.preview-pdf.search-prev': '上一个结果',\n  'core.component.preview-pdf.search-next': '下一个结果',\n  'core.component.preview-pdf.search-close': '关闭搜索',\n\n  // ---- Component: table ----\n  'core.component.table.setup': '表格设置',\n  'core.component.table.column-header': '列标题',\n  'core.component.table.width': '宽度',\n  'core.component.table.fixed': '固定',\n  'core.component.table.char-limit': '字符限制',\n  'core.component.table.skip': '跳过',\n  'core.component.table.apply': '应用',\n  'core.component.table.filter': '筛选',\n  'core.component.table.clear-selection': '清除选择',\n  'core.component.table.customize': '自定义',\n  'core.component.table.search': '搜索',\n  'core.component.table.reload': '刷新',\n  'core.component.table.setup-short': '设置',\n  'core.component.table.no-results': '未找到匹配结果',\n  'core.component.table.no-results-hint': '请使用其他条件搜索或筛选',\n  'core.component.table.choose-filter-hint': '请先选择筛选条件',\n  'core.component.table.no-data': '暂无数据',\n  'core.component.table.export-excel': '导出 Excel',\n  'core.component.table.export-csv': '导出 CSV',\n  'core.component.table.showing': '显示:',\n  'core.component.table.paginator.first-page': '首页',\n  'core.component.table.paginator.last-page': '末页',\n  'core.component.table.paginator.items-per-page': '显示',\n  'core.component.table.paginator.next-page': '下一页',\n  'core.component.table.paginator.previous-page': '上一页',\n  'core.component.table.error-occurred': '发生错误',\n  'core.component.table.not-an-array': '数据不是数组',\n  'core.component.table.config.confirm-reset': '确认将所有设置恢复为默认值',\n  'core.component.table.popup-export.select-columns': '请选择要导出的列',\n  'core.component.table.selector-action.default-msg': '项已选择',\n  'core.component.tab-router.too-many-tabs': '您已打开过多标签页。',\n\n  // ---- Component: upload-file ----\n  'core.component.upload-file.upload': '上传文件',\n  'core.component.upload-file.error-occurred': '发生错误',\n  'core.component.upload-file.please-upload': '请上传文件/图片',\n  'core.component.upload-file.desc-format-and-size': '格式: {exts}，最大: {maxSize}MB',\n  'core.component.upload-file.desc-format': '格式: {exts}',\n  'core.component.upload-file.desc-max-size': '最大: {maxSize}MB',\n  'core.component.upload-file.not-image': '[{name}] 上传的文件不是图片',\n  'core.component.upload-file.invalid-format': '[{name}] 上传的文件格式不正确: {exts}',\n  'core.component.upload-file.size-exceeded': '[{name}] 最大文件大小: {maxSize} MB',\n  'core.component.upload-file.upload-failed': '文件上传过程中发生错误',\n  'core.component.upload-file.too-many-files': '所选文件数量过多，请检查数量',\n  'core.component.upload-file.confirm-delete-message': '是否要删除此文件？此操作无法撤销',\n  'core.component.upload-file.confirm-delete-title': '确认删除？',\n  'core.component.upload-file.confirm-yes': '确认',\n  'core.component.upload-file.confirm-no': '取消',\n  'core.component.upload-file.no-configuration': '请注入 SD_UPLOAD_FILE_CONFIGURATION 或将 [upload] 直接传入组件',\n  'core.component.upload-file.no-configuration-key': \"未找到 key='{key}' 对应的上传配置。请检查 providers 或直接传入 [upload]\",\n  'core.component.upload-file.preview-title': '图片预览',\n\n  // ---- Module: layout (sidebar / user menu) ----\n  'core.module.layout.user.change-password': '修改密码',\n  'core.module.layout.user.logout': '退出登录',\n  'core.module.layout.user.update-profile': '更新个人资料',\n  'core.module.layout.user.setting': '设置',\n  'core.module.layout.user.notification': '通知',\n  'core.module.layout.sidebar.search': '搜索',\n  'core.module.layout.sidebar.toggle': '切换侧边栏',\n\n  // ---- Module: layout (greeting + weekday) ----\n  'core.module.layout.greeting.hello': '你好，{name}',\n  'core.module.layout.weekday.0': '星期日',\n  'core.module.layout.weekday.1': '星期一',\n  'core.module.layout.weekday.2': '星期二',\n  'core.module.layout.weekday.3': '星期三',\n  'core.module.layout.weekday.4': '星期四',\n  'core.module.layout.weekday.5': '星期五',\n  'core.module.layout.weekday.6': '星期六',\n  'core.module.layout.today-info.format': '{weekday}，{date}',\n\n  // ---- Module: layout (forbidden page) ----\n  'core.module.layout.forbidden.title': '禁止访问',\n  'core.module.layout.forbidden.message': '您没有访问此页面的权限。请联系管理员或返回首页',\n  'core.module.layout.forbidden.back-home': '返回首页',\n\n  // ---- Module: layout (not-found page) ----\n  'core.module.layout.not-found.title': '404 - 页面未找到',\n  'core.module.layout.not-found.message': '您正在查找的页面不存在或已被移除。请检查 URL 或返回首页继续。',\n  'core.module.layout.not-found.back': '返回',\n\n  // ---- Module: layout (home page) ----\n  'core.module.layout.home.tab-name': '首页',\n  'core.module.layout.home.feature.data': '数据',\n  'core.module.layout.home.feature.reports': '报表',\n  'core.module.layout.home.feature.users': '用户',\n  'core.module.layout.home.feature.workflow': '流程',\n  'core.module.layout.home.feature.audit': '审计',\n  'core.module.layout.home.feature.integration': '集成',\n\n  // ---- Module: layout (mock fallback when SD_LAYOUT_CONFIGURATION is not provided) ----\n  'core.module.layout.mock.user.full-name': '演示用户',\n\n  // ---- Module: generic (generic-select) ----\n  'core.module.generic.generic-select.detail-link': '详情',\n};\n","import { EN_MESSAGES } from './en';\nimport { JA_MESSAGES } from './ja';\nimport { KO_MESSAGES } from './ko';\nimport { VI_MESSAGES } from './vi';\nimport { ZH_MESSAGES } from './zh';\nimport type { Language } from './i18n.types';\n\nexport const I18N_MESSAGES: Record<Language, Readonly<Record<string, string>>> = {\n  vi: VI_MESSAGES,\n  en: EN_MESSAGES,\n  ja: JA_MESSAGES,\n  ko: KO_MESSAGES,\n  zh: ZH_MESSAGES,\n};\n","import { computed, inject, Injectable, signal, Signal, WritableSignal } from '@angular/core';\nimport { ISdCoreConfiguration, SD_CORE_CONFIGURATION } from '@sdcorejs/angular/configurations';\nimport { I18N_MESSAGES } from './i18n.messages';\nimport { I18N_STORAGE_KEY } from './i18n.token';\nimport { SUPPORTED_LANGUAGES, I18nParams, Language } from './i18n.types';\n\n@Injectable({ providedIn: 'root' })\nexport class I18nService {\n  readonly #config = inject<ISdCoreConfiguration | null>(SD_CORE_CONFIGURATION, { optional: true });\n  // Custom catalog (signal) — non-null khi user cấu hình `language: () => I18nCatalog`.\n  // Khi non-null, `messages` computed sẽ ưu tiên trả về catalog này thay vì I18N_MESSAGES[lang].\n  // PHẢI khai báo TRƯỚC `#language` vì `#resolveInitial()` chạy trong initializer của `#language`\n  // và có thể gọi `this.#customMessages.set(...)` (sync custom catalog path).\n  readonly #customMessages: WritableSignal<Readonly<Record<string, string>> | null> = signal(null);\n  readonly #language: WritableSignal<Language> = signal(this.#resolveInitial());\n  readonly #warned = new Set<string>();\n\n  readonly language: Signal<Language> = this.#language.asReadonly();\n  readonly messages: Signal<Readonly<Record<string, string>>> = computed(() => {\n    const custom = this.#customMessages();\n    if (custom) return custom;\n    return I18N_MESSAGES[this.#language()];\n  });\n\n  // Đổi ngôn ngữ require reload trang (model \"reload trên đổi\"). Pipe `translate` là pure\n  // nên không tự cập nhật runtime — phải reload để cache pipe được rebuild với messages mới.\n  // Test có thể pass `{ reload: false }` để tránh reload page trong Karma.\n  setLanguage(lang: Language, opts: { reload?: boolean } = { reload: true }): void {\n    if (!SUPPORTED_LANGUAGES.includes(lang)) return;\n    if (this.#language() === lang && !this.#customMessages()) return; // no-op if same and not in custom mode\n    // User chọn 'vi'/'en' rõ ràng -> clear custom mode (override custom provider)\n    this.#customMessages.set(null);\n    try {\n      localStorage.setItem(I18N_STORAGE_KEY, lang);\n    } catch {\n      /* ignore */\n    }\n    this.#language.set(lang);\n    if (opts.reload && typeof window !== 'undefined') {\n      window.location.reload();\n    }\n  }\n\n  t(key: string, params?: I18nParams): string {\n    // Đọc từ computed `messages()` để hỗ trợ cả custom catalog lẫn built-in lang.\n    const raw = this.messages()[key] ?? this.#fallback(key);\n    return this.#interpolate(raw, params);\n  }\n\n  #fallback(key: string): string {\n    const vi = I18N_MESSAGES.vi[key];\n    if (vi !== undefined) {\n      this.#warnOnce(`[I18n] Missing key in ${this.#language()}: ${key} (fallback to vi)`);\n      return vi;\n    }\n    this.#warnOnce(`[I18n] Missing key: ${key}`);\n    return key;\n  }\n\n  #interpolate(raw: string, params?: I18nParams): string {\n    if (!params) return raw;\n    return raw.replace(/\\{(\\w+)\\}/g, (m, name) => (name in params ? String(params[name]) : m));\n  }\n\n  #warnOnce(msg: string): void {\n    if (this.#warned.has(msg)) return;\n    this.#warned.add(msg);\n    console.warn(msg);\n  }\n\n  #resolveInitial(): Language {\n    // 1) localStorage (only 'vi'/'en' supported there) — luôn ưu tiên cao nhất\n    try {\n      const stored = localStorage.getItem(I18N_STORAGE_KEY) as Language | null;\n      if (stored && SUPPORTED_LANGUAGES.includes(stored)) return stored;\n    } catch {\n      /* ignore */\n    }\n\n    const configured = this.#config?.language;\n\n    // 2) function — custom language provider (sync only)\n    if (typeof configured === 'function') {\n      this.#loadCustom(configured);\n      return 'vi'; // language() vẫn báo 'vi' trong custom mode; messages() ưu tiên #customMessages\n    }\n\n    // 3) string — built-in lang\n    if (configured && SUPPORTED_LANGUAGES.includes(configured as Language)) return configured as Language;\n\n    // 4) default\n    return 'vi';\n  }\n\n  #loadCustom(fn: () => Record<string, string>): void {\n    try {\n      const catalog = fn();\n      this.#customMessages.set(catalog);\n    } catch (err) {\n      console.warn('[I18n] Custom language fn threw:', err);\n    }\n  }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { I18nService } from './i18n.service';\nimport { I18nParams } from './i18n.types';\n\n@Pipe({ name: 'translate', standalone: true })\nexport class TranslatePipe implements PipeTransform {\n  readonly #i18n = inject(I18nService);\n\n  transform(key: string, params?: I18nParams): string {\n    return this.#i18n.t(key, params);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}