import { Language } from '@sdcorejs/angular/models';
export { Language, SUPPORTED_LANGUAGES } from '@sdcorejs/angular/models';
import * as i0 from '@angular/core';
import { Signal, PipeTransform } from '@angular/core';

declare const I18N_STORAGE_KEY = "sd-core.language";

declare const EN_MESSAGES: {
    readonly 'core.common.cancel': "Cancel";
    readonly 'core.common.close': "Close";
    readonly 'core.common.reload': "Reload page";
    readonly 'core.test.greet': "Hello {name}";
    readonly 'core.validator.email.name': "Email";
    readonly 'core.validator.email.error': "Invalid email";
    readonly 'core.validator.phone.name': "Phone";
    readonly 'core.validator.phone.error': "Invalid phone number";
    readonly 'core.validator.phone-vn.name': "VN phone";
    readonly 'core.validator.phone-vn.error': "Invalid Vietnamese phone number";
    readonly 'core.validator.cccd.name': "National ID";
    readonly 'core.validator.cccd.error': "Invalid national ID (12 digits)";
    readonly 'core.validator.id-vn.name': "National ID / Passport";
    readonly 'core.validator.id-vn.error': "Invalid national ID or passport";
    readonly 'core.validator.vn-phone.name': "VN phone";
    readonly 'core.validator.vn-phone.error': "Invalid Vietnamese phone number";
    readonly 'core.validator.vn-id.name': "National ID";
    readonly 'core.validator.vn-id.error': "Invalid national ID (12 digits)";
    readonly 'core.validator.passport.name': "Passport";
    readonly 'core.validator.passport.error': "Invalid passport (1 letter + 7 digits)";
    readonly 'core.validator.vn-id-or-passport.name': "National ID / Passport";
    readonly 'core.validator.vn-id-or-passport.error': "Invalid national ID or passport";
    readonly 'core.validator.time.name': "Time";
    readonly 'core.validator.time.error': "Invalid time (format HH:mm)";
    readonly 'core.validator.url.name': "URL";
    readonly 'core.validator.url.error': "Invalid URL";
    readonly 'core.validator.domain.name': "Domain";
    readonly 'core.validator.domain.error': "Invalid domain";
    readonly 'core.validator.ipv4.name': "IPv4";
    readonly 'core.validator.ipv4.error': "Invalid IPv4 address";
    readonly 'core.validator.ipv6.name': "IPv6";
    readonly 'core.validator.ipv6.error': "Invalid IPv6 address";
    readonly 'core.validator.image-url.name': "Image URL";
    readonly 'core.validator.image-url.error': "Invalid image URL";
    readonly 'core.validator.slug.name': "Slug";
    readonly 'core.validator.slug.error': "Invalid slug";
    readonly 'core.validator.number.name': "Number";
    readonly 'core.validator.number.error': "Invalid number";
    readonly 'core.validator.integer.name': "Integer";
    readonly 'core.validator.integer.error': "Invalid integer";
    readonly 'core.validator.decimal.name': "Decimal";
    readonly 'core.validator.decimal.error': "Invalid decimal number";
    readonly 'core.validator.positive-number.name': "Positive number";
    readonly 'core.validator.positive-number.error': "Must be a positive number";
    readonly 'core.validator.uuid.name': "UUID";
    readonly 'core.validator.uuid.error': "Invalid UUID";
    readonly 'core.validator.code-16.name': "16-char code";
    readonly 'core.validator.code-16.error': "Invalid 16-character code";
    readonly 'core.validator.code-32.name': "32-char code";
    readonly 'core.validator.code-32.error': "Invalid 32-character code";
    readonly 'core.validator.hex-color.name': "Hex color";
    readonly 'core.validator.hex-color.error': "Invalid hex color";
    readonly 'core.validator.base64.name': "Base64";
    readonly 'core.validator.base64.error': "Invalid Base64 string";
    readonly 'core.operator.equal.display': "Equal";
    readonly 'core.operator.not-equal.display': "Not equal";
    readonly 'core.operator.greater-than.display': "Greater than";
    readonly 'core.operator.less-than.display': "Less than";
    readonly 'core.operator.greater-or-equal.display': "Greater than or equal";
    readonly 'core.operator.less-or-equal.display': "Less than or equal";
    readonly 'core.operator.contain.display': "Contains";
    readonly 'core.operator.not-contain.display': "Does not contain";
    readonly 'core.operator.start-with.display': "Starts with";
    readonly 'core.operator.not-start-with.display': "Does not start with";
    readonly 'core.operator.end-with.display': "Ends with";
    readonly 'core.operator.not-end-with.display': "Does not end with";
    readonly 'core.operator.in.display': "In";
    readonly 'core.operator.not-in.display': "Not in";
    readonly 'core.operator.between.display': "Between";
    readonly 'core.operator.null.display': "Is empty";
    readonly 'core.operator.not-null.display': "Is not empty";
    readonly 'core.handler.global-error.update-title': "A NEW SYSTEM UPDATE IS AVAILABLE";
    readonly 'core.handler.global-error.update-body': "The current version is outdated and could not load resources.\nPlease press OK to reload the page.";
    readonly 'core.interceptor.no-internet.offline': "No network connection. Waiting for connection...";
    readonly 'core.interceptor.no-internet.cors-error': "Cannot connect to server (CORS or configuration error).";
    readonly 'core.interceptor.no-internet.maintenance': "Server is under maintenance. Please try again later.";
    readonly 'core.interceptor.no-internet.restored': "Connection restored.";
    readonly 'core.excel.cannot-read-file': "Could not read file content";
    readonly 'core.excel.no-sheet': "Excel file has no data sheet";
    readonly 'core.docx.invalid-format': "Invalid format. Please select a template in DOC or DOCX format";
    readonly 'core.docx.size-exceeded': "Template file size exceeds the supported limit. Please try again";
    readonly 'core.docx.convert-error': "An error occurred while converting the DOCX file";
    readonly 'core.notify.type.success': "Success";
    readonly 'core.notify.type.info': "Information";
    readonly 'core.notify.type.warning': "Warning";
    readonly 'core.notify.type.error': "Error";
    readonly 'core.notify.show-more': "Show more ({count})";
    readonly 'core.notify.show-less': "Show less";
    readonly 'core.confirm.title': "Confirm";
    readonly 'core.confirm.yes': "OK";
    readonly 'core.confirm.no': "Cancel";
    readonly 'core.confirm.yes-short': "Yes";
    readonly 'core.confirm.no-short': "No";
    readonly 'core.directive.hover-copy.tooltip': "Copy";
    readonly 'core.form.input.required': "Please enter information";
    readonly 'core.form.input.maxlength': "Maximum characters: {max}";
    readonly 'core.form.input.invalid-pattern': "Invalid format";
    readonly 'core.form.input.exceeded': "Exceeded maximum characters";
    readonly 'core.form.autocomplete.required': "Please enter information";
    readonly 'core.form.chip.required': "Please enter information";
    readonly 'core.form.chip.minlength': "Please enter at least {min} values";
    readonly 'core.form.chip.maxlength': "Please enter at most {max} values";
    readonly 'core.form.chip-calendar.required': "Please enter information";
    readonly 'core.form.chip-calendar.minlength': "Please enter at least {min} values";
    readonly 'core.form.chip-calendar.maxlength': "Please enter at most {max} values";
    readonly 'core.form.date.required': "Please enter information";
    readonly 'core.form.date.min-date': "Minimum date: {date}";
    readonly 'core.form.date.max-date': "Maximum date: {date}";
    readonly 'core.form.date.parse-error': "Parse error: {text}";
    readonly 'core.form.date.invalid-format': "Invalid format";
    readonly 'core.form.date-range.required': "Please enter information";
    readonly 'core.form.date-range.invalid-min': "Start date is invalid (below limit)";
    readonly 'core.form.date-range.invalid-max': "End date is invalid (above limit)";
    readonly 'core.form.date-range.from': "From";
    readonly 'core.form.date-range.to': "to";
    readonly 'core.form.datetime.required': "Please enter information";
    readonly 'core.form.datetime.min-date': "Minimum date: {date}";
    readonly 'core.form.datetime.max-date': "Maximum date: {date}";
    readonly 'core.form.datetime.invalid-format': "Invalid format";
    readonly 'core.form.datetime.now': "Now";
    readonly 'core.form.datetime.confirm': "Confirm";
    readonly 'core.form.time-spinner.hour': "Hour";
    readonly 'core.form.time-spinner.minute': "Minute";
    readonly 'core.form.time-spinner.second': "Second";
    readonly 'core.form.time-spinner.increase-hour': "Increase hour";
    readonly 'core.form.time-spinner.decrease-hour': "Decrease hour";
    readonly 'core.form.time-spinner.increase-minute': "Increase minute";
    readonly 'core.form.time-spinner.decrease-minute': "Decrease minute";
    readonly 'core.form.time-spinner.increase-second': "Increase second";
    readonly 'core.form.time-spinner.decrease-second': "Decrease second";
    readonly 'core.form.input-number.required': "Please enter information";
    readonly 'core.form.input-number.min': "Value must not be less than {min}";
    readonly 'core.form.input-number.max': "Value must not be greater than {max}";
    readonly 'core.form.radio.required': "Please enter information";
    readonly 'core.form.switch.on': "On";
    readonly 'core.form.switch.off': "Off";
    readonly 'core.form.checkbox.checked': "Yes";
    readonly 'core.form.checkbox.unchecked': "No";
    readonly 'core.form.select.required': "Please enter information";
    readonly 'core.form.textarea.required': "Please enter information";
    readonly 'core.form.textarea.maxlength': "Maximum characters: {max}";
    readonly 'core.form.textarea.invalid-pattern': "Invalid format";
    readonly 'core.form.textarea.exceeded': "Exceeded maximum characters";
    readonly 'core.component.editor.required': "Please enter content";
    readonly 'core.component.editor.maxlength': "Maximum characters: {max}";
    readonly 'core.component.editor.image.invalid-format': "File format \".{format}\" is not allowed. Allowed formats: {allowed}";
    readonly 'core.component.editor.image.size-exceeded': "File size {sizeMB}MB exceeds the limit of {maxSizeMB}MB";
    readonly 'core.component.editor.image.min-width': "Image width {width}px is below the minimum of {min}px";
    readonly 'core.component.editor.image.min-height': "Image height {height}px is below the minimum of {min}px";
    readonly 'core.component.editor.image.max-width': "Image width {width}px exceeds the limit of {max}px";
    readonly 'core.component.editor.image.max-height': "Image height {height}px exceeds the limit of {max}px";
    readonly 'core.component.editor.image.max-per-selection': "You can select at most {max} images per selection";
    readonly 'core.component.document-builder.page-number.current': "Current page number";
    readonly 'core.component.document-builder.page-number.total': "Total pages";
    readonly 'core.component.document-builder.ck-comment.label': "Comment";
    readonly 'core.component.document-builder.ck-comment.text-too-long': "Text too long ({length} characters). Maximum {max} characters.";
    readonly 'core.component.document-builder.variable.not-allowed': "Adding variable to the text is not allowed";
    readonly 'core.component.document-builder.variable.invalid-data': "Invalid variable data";
    readonly 'core.component.form-builder.field-key': "Field key";
    readonly 'core.component.form-builder.display': "Display";
    readonly 'core.component.form-builder.general': "General";
    readonly 'core.component.form-builder.visible-when': "Visible when";
    readonly 'core.component.form-builder.required': "Required";
    readonly 'core.component.form-builder.label': "Label";
    readonly 'core.component.form-builder.disabled': "Disabled";
    readonly 'core.component.form-builder.disabled-when': "Disabled when";
    readonly 'core.component.form-builder.hidden-when': "Hidden when";
    readonly 'core.component.form-builder.validation': "Validation";
    readonly 'core.component.form-builder.required-when': "Required when";
    readonly 'core.component.form-builder.confirm': "Confirm";
    readonly 'core.component.form-builder.delete': "Delete";
    readonly 'core.component.form-builder.save': "Save";
    readonly 'core.component.form-builder.hint': "Hint";
    readonly 'core.component.form-builder.parameter': "Parameters";
    readonly 'core.component.form-builder.add-field': "Add field";
    readonly 'core.component.form-builder.data': "Data";
    readonly 'core.component.form-builder.query-condition': "Query condition";
    readonly 'core.component.form-builder.set-query-value': "Set query value";
    readonly 'core.component.form-builder.value-source-field': "Source field";
    readonly 'core.component.form-builder.assign-parameter': "Assign parameter";
    readonly 'core.component.form-builder.template-data': "Template data";
    readonly 'core.component.form-builder.set-expression': "Set expression";
    readonly 'core.component.form-builder.condition-group': "Condition group";
    readonly 'core.component.form-builder.condition': "Condition";
    readonly 'core.component.form-builder.layout': "Layout";
    readonly 'core.component.form-builder.maxlength': "Maximum characters";
    readonly 'core.component.form-builder.assign-parameter-value': "Assign parameter value";
    readonly 'core.component.form-builder.parameter-name': "Parameter name";
    readonly 'core.component.form-builder.parameter-value': "Parameter value";
    readonly 'core.component.form-builder.assign-value': "Assign value";
    readonly 'core.component.form-builder.add-data': "Add data";
    readonly 'core.component.form-builder.data-api': "API data";
    readonly 'core.component.form-builder.data-static': "Static data";
    readonly 'core.component.form-builder.set-on-change-assign': "Set value-on-change";
    readonly 'core.component.form-builder.target-field': "Target field";
    readonly 'core.component.form-builder.target-value': "Target value";
    readonly 'core.component.form-builder.column-data': "Column data";
    readonly 'core.component.form-builder.add-column': "Add column";
    readonly 'core.component.form-builder.column-config': "Column config";
    readonly 'core.component.form-builder.column-name': "Column name";
    readonly 'core.component.form-builder.width': "Width";
    readonly 'core.component.form-builder.data-type': "Data type";
    readonly 'core.component.form-builder.show-when-true': "Show when TRUE";
    readonly 'core.component.form-builder.show-when-false': "Show when FALSE";
    readonly 'core.component.form-builder.column-list': "Column list";
    readonly 'core.component.form-builder.yes-no': "Yes/No";
    readonly 'core.component.form-builder.config-validation-error-warning': "Configure validation error/warning";
    readonly 'core.component.form-builder.message-type': "Message type";
    readonly 'core.component.form-builder.message-display': "Display message";
    readonly 'core.component.form-builder.condition-expression': "Condition expression";
    readonly 'core.component.form-builder.add-validation': "Add validation";
    readonly 'core.component.form-builder.expression': "Expression";
    readonly 'core.component.form-builder.available-methods': "Available methods";
    readonly 'core.component.form-builder.format': "Format";
    readonly 'core.component.form-builder.time': "Time";
    readonly 'core.component.form-builder.content': "Content";
    readonly 'core.component.form-builder.min': "Minimum";
    readonly 'core.component.form-builder.max': "Maximum";
    readonly 'core.component.form-builder.vertical': "Vertical";
    readonly 'core.component.form-builder.multiple': "Multiple selection";
    readonly 'core.component.form-builder.default-value': "Default value";
    readonly 'core.component.form-builder.type': "Type";
    readonly 'core.component.form-builder.file': "File";
    readonly 'core.component.form-builder.image': "Image";
    readonly 'core.component.form-builder.max-files': "Max files/images";
    readonly 'core.component.form-builder.size-mb': "Size (MB)";
    readonly 'core.component.form-builder.format-example': "Format (e.g. png,jpg ...)";
    readonly 'core.component.form-builder.source-mobile': "Source (mobile)";
    readonly 'core.component.form-builder.config-variable': "Configure variables";
    readonly 'core.component.form-builder.config-validation-warning-error': "Configure validation warning/error";
    readonly 'core.component.form-builder.back-to-design': "Back to design";
    readonly 'core.component.form-builder.preview': "Preview";
    readonly 'core.component.form-builder.drag-vertically': "Drag up/down";
    readonly 'core.component.form-builder.unset-readonly': "Remove read-only";
    readonly 'core.component.form-builder.set-readonly': "Read-only";
    readonly 'core.component.form-builder.duplicate': "Duplicate";
    readonly 'core.component.form-builder.show': "Show";
    readonly 'core.component.form-builder.hide': "Hide";
    readonly 'core.component.form-builder.flex': "Flex";
    readonly 'core.component.form-builder.display-label': "Display label";
    readonly 'core.component.form-builder.attribute': "Attribute";
    readonly 'core.component.form-builder.add-variable': "Add variable";
    readonly 'core.component.form-builder.add-new': "Add new";
    readonly 'core.component.form-builder.detail': "Details";
    readonly 'core.component.form-builder.create-update': "Create/update";
    readonly 'core.component.form-builder.default': "Default";
    readonly 'core.component.form-builder.show-more': "Show more";
    readonly 'core.component.form-builder.show-less': "Show less";
    readonly 'core.component.inform.show-more': "Show more";
    readonly 'core.component.inform.show-less': "Show less";
    readonly 'core.component.form-builder.row-overflow': "Cannot move to this row because the total size exceeds 12 columns";
    readonly 'core.component.form-builder.upload-source.all': "All";
    readonly 'core.component.form-builder.upload-source.photo-library': "Pick from library";
    readonly 'core.component.form-builder.upload-source.capture': "Take photo";
    readonly 'core.component.form-builder.components': "Components";
    readonly 'core.component.form-builder.search-components': "Search components…";
    readonly 'core.component.form-builder.view-json': "View JSON";
    readonly 'core.component.form-builder.design': "Design";
    readonly 'core.component.form-builder.preview-runtime': "Preview · Runtime";
    readonly 'core.component.form-builder.cancel': "Cancel";
    readonly 'core.component.form-builder.submit': "Submit";
    readonly 'core.component.form-builder.empty-title': "Drag components here to start";
    readonly 'core.component.form-builder.empty-hint': "Build your form by dragging fields from the left panel, or press";
    readonly 'core.component.form-builder.conditional': "Conditional";
    readonly 'core.component.form-builder.group-drop-here': "Drop a field here to add it to this group";
    readonly 'core.component.form-builder.edit-group': "Edit group";
    readonly 'core.component.form-builder.group-empty-hint': "Click Details to add fields to this group";
    readonly 'core.component.form-builder.hidden': "Hidden";
    readonly 'core.component.form-builder.read-only': "Read only";
    readonly 'core.component.form-builder.untitled': "Untitled";
    readonly 'core.component.form-builder.no-selection-title': "Nothing selected";
    readonly 'core.component.form-builder.no-selection-hint': "Select a component on the canvas to edit its attributes.";
    readonly 'core.component.form-builder.group-children': "Children";
    readonly 'core.component.form-builder.group-icon': "Icon";
    readonly 'core.component.form-builder.group-accent-color': "Accent color";
    readonly 'core.component.form-builder.group-no-children': "No fields yet. Add or drag fields into this group.";
    readonly 'core.component.form-builder.break': "Break";
    readonly 'core.component.code-editor.copied': "Copied!";
    readonly 'core.component.code-editor.copy': "Copy code";
    readonly 'core.component.history.by': "By";
    readonly 'core.component.import-excel.title': "Import Excel data";
    readonly 'core.component.import-excel.see-all': "See all";
    readonly 'core.component.import-excel.valid-rows': "Valid rows";
    readonly 'core.component.import-excel.error-rows': "Error rows";
    readonly 'core.component.import-excel.warning-rows': "Warning rows";
    readonly 'core.component.import-excel.valid-data': "Valid data";
    readonly 'core.component.import-excel.download-template-tooltip': "Click to download template";
    readonly 'core.component.import-excel.upload': "Upload";
    readonly 'core.component.import-excel.download': "Download";
    readonly 'core.component.import-excel.confirm-save': "Confirm & Save";
    readonly 'core.component.import-excel.status': "Status";
    readonly 'core.component.import-excel.no-data-upload': "No data uploaded";
    readonly 'core.component.import-excel.click-here-template': "Click here to download template";
    readonly 'core.component.import-excel.no-data-in-file': "File has no data";
    readonly 'core.component.import-excel.row-limit': "Upload limit is {limit} rows";
    readonly 'core.component.import-excel.required': "Required data";
    readonly 'core.component.import-excel.min-length': "Minimum string length: {min}";
    readonly 'core.component.import-excel.max-length': "Maximum string length: {max}";
    readonly 'core.component.import-excel.not-a-number': "{value} is not a valid number";
    readonly 'core.component.import-excel.below-min': "{value} is below the minimum value: {min}";
    readonly 'core.component.import-excel.above-max': "{value} is above the maximum value: {max}";
    readonly 'core.component.import-excel.invalid-bool': "Please enter a valid value (true, false, 1, 0)";
    readonly 'core.component.import-excel.invalid-value': "Value {value} is invalid";
    readonly 'core.component.import-excel.value-not-in-list': "Value {value} is not in the allowed list [{list}]";
    readonly 'core.component.import-excel.invalid-date-format': "Date {value} does not match format {format}";
    readonly 'core.component.import-excel.generic-error': "An error occurred";
    readonly 'core.component.import-excel.notify-title': "Notification";
    readonly 'core.component.import-excel.message-column': "Message";
    readonly 'core.component.import-excel.success': "Success";
    readonly 'core.component.preview-image.no-image': "No image information";
    readonly 'core.component.preview-image.title': "Preview image";
    readonly 'core.component.preview-image.no-image-hint': "There are no images to display";
    readonly 'core.component.preview-image.load-error': "Failed to load image";
    readonly 'core.component.preview-image.load-error-hint': "The image may have been deleted or the path is invalid";
    readonly 'core.component.preview-image.retry': "Retry";
    readonly 'core.component.preview-image.close': "Close";
    readonly 'core.component.preview-image.prev': "Previous image";
    readonly 'core.component.preview-image.next': "Next image";
    readonly 'core.component.preview-image.zoom-in': "Zoom in";
    readonly 'core.component.preview-image.zoom-out': "Zoom out";
    readonly 'core.component.preview-image.fit': "Fit to screen";
    readonly 'core.component.preview-image.rotate': "Rotate";
    readonly 'core.component.preview-image.download': "Download";
    readonly 'core.component.preview-image.fullscreen': "Fullscreen";
    readonly 'core.component.preview-image.loading': "Loading image...";
    readonly 'core.component.preview-image.kbd-hint-nav': "navigate";
    readonly 'core.component.preview-image.kbd-hint-close': "close";
    readonly 'core.component.preview-pdf.title': "Preview document";
    readonly 'core.component.preview-pdf.close': "Close";
    readonly 'core.component.preview-pdf.pages-count': "{count} pages";
    readonly 'core.component.preview-pdf.tab.thumbnails': "Pages";
    readonly 'core.component.preview-pdf.tab.outline': "Outline";
    readonly 'core.component.preview-pdf.tab.search': "Find";
    readonly 'core.component.preview-pdf.first-page': "First page";
    readonly 'core.component.preview-pdf.prev-page': "Previous page";
    readonly 'core.component.preview-pdf.next-page': "Next page";
    readonly 'core.component.preview-pdf.last-page': "Last page";
    readonly 'core.component.preview-pdf.zoom-in': "Zoom in";
    readonly 'core.component.preview-pdf.zoom-out': "Zoom out";
    readonly 'core.component.preview-pdf.fit-page': "Fit page";
    readonly 'core.component.preview-pdf.fit-width': "Fit width";
    readonly 'core.component.preview-pdf.actual-size': "Actual size";
    readonly 'core.component.preview-pdf.rotate': "Rotate";
    readonly 'core.component.preview-pdf.scroll-page': "Single page";
    readonly 'core.component.preview-pdf.scroll-continuous': "Continuous scroll";
    readonly 'core.component.preview-pdf.print': "Print";
    readonly 'core.component.preview-pdf.download': "Download";
    readonly 'core.component.preview-pdf.fullscreen': "Fullscreen";
    readonly 'core.component.preview-pdf.toggle-sidebar': "Toggle sidebar";
    readonly 'core.component.preview-pdf.page-of': "page {current} / {total}";
    readonly 'core.component.preview-pdf.empty.title': "No document";
    readonly 'core.component.preview-pdf.empty.subtitle': "No PDF file to display yet";
    readonly 'core.component.preview-pdf.loading': "Loading document...";
    readonly 'core.component.preview-pdf.loading.page': "Processing page {current} / {total}";
    readonly 'core.component.preview-pdf.error.invalid.title': "Failed to load document";
    readonly 'core.component.preview-pdf.error.invalid.body': "The PDF file may be corrupted. Please check the file.";
    readonly 'core.component.preview-pdf.error.password.title': "Document is protected";
    readonly 'core.component.preview-pdf.error.password.body': "This PDF file requires a password to open.";
    readonly 'core.component.preview-pdf.error.network.title': "Cannot connect";
    readonly 'core.component.preview-pdf.error.network.body': "Unable to load the file from the server. Please try again later.";
    readonly 'core.component.preview-pdf.error.unknown.title': "An error occurred";
    readonly 'core.component.preview-pdf.error.unknown.body': "Please retry or download the original file to view it.";
    readonly 'core.component.preview-pdf.error.retry': "Retry";
    readonly 'core.component.preview-pdf.error.download-raw': "Download original";
    readonly 'core.component.preview-pdf.deferred.outline': "Outline will be added in a future version.";
    readonly 'core.component.preview-pdf.deferred.search': "Search will be added in a future version.";
    readonly 'core.component.preview-pdf.search': "Search";
    readonly 'core.component.preview-pdf.search-placeholder': "Search in document...";
    readonly 'core.component.preview-pdf.search-case': "Match case";
    readonly 'core.component.preview-pdf.search-whole': "Whole word";
    readonly 'core.component.preview-pdf.search-no-results': "No results";
    readonly 'core.component.preview-pdf.search-results-count': "{count} results for \"{term}\"";
    readonly 'core.component.preview-pdf.search-prev': "Previous match";
    readonly 'core.component.preview-pdf.search-next': "Next match";
    readonly 'core.component.preview-pdf.search-close': "Close search";
    readonly 'core.component.table.setup': "Table setup";
    readonly 'core.component.table.column-header': "Column header";
    readonly 'core.component.table.width': "Width";
    readonly 'core.component.table.fixed': "Fixed";
    readonly 'core.component.table.char-limit': "Character limit";
    readonly 'core.component.table.skip': "Skip";
    readonly 'core.component.table.apply': "Apply";
    readonly 'core.component.table.filter': "Filter";
    readonly 'core.component.table.clear-selection': "Clear selection";
    readonly 'core.component.table.customize': "Customize";
    readonly 'core.component.table.search': "Search";
    readonly 'core.component.table.reload': "Reload";
    readonly 'core.component.table.setup-short': "Setup";
    readonly 'core.component.table.no-results': "No results found";
    readonly 'core.component.table.no-results-hint': "Please search or filter with different criteria";
    readonly 'core.component.table.choose-filter-hint': "Please choose a filter to start";
    readonly 'core.component.table.no-data': "No data";
    readonly 'core.component.table.export-excel': "Export Excel";
    readonly 'core.component.table.export-csv': "Export CSV";
    readonly 'core.component.table.showing': "Showing:";
    readonly 'core.component.table.paginator.first-page': "First page";
    readonly 'core.component.table.paginator.last-page': "Last page";
    readonly 'core.component.table.paginator.items-per-page': "Showing";
    readonly 'core.component.table.paginator.next-page': "Next page";
    readonly 'core.component.table.paginator.previous-page': "Previous page";
    readonly 'core.component.table.error-occurred': "An error occurred";
    readonly 'core.component.table.not-an-array': "Data is not an array";
    readonly 'core.component.table.config.confirm-reset': "Confirm reset all settings to defaults";
    readonly 'core.component.table.popup-export.select-columns': "Please select columns to export";
    readonly 'core.component.table.selector-action.default-msg': "items selected";
    readonly 'core.component.tab-router.too-many-tabs': "You have opened too many tabs.";
    readonly 'core.component.upload-file.upload': "Upload file";
    readonly 'core.component.upload-file.error-occurred': "An error occurred";
    readonly 'core.component.upload-file.please-upload': "Please upload a file/image";
    readonly 'core.component.upload-file.desc-format-and-size': "Format: {exts} and up to: {maxSize}MB";
    readonly 'core.component.upload-file.desc-format': "Format: {exts}";
    readonly 'core.component.upload-file.desc-max-size': "Up to: {maxSize}MB";
    readonly 'core.component.upload-file.not-image': "[{name}] Uploaded file is not an image";
    readonly 'core.component.upload-file.invalid-format': "[{name}] Uploaded file has invalid format: {exts}";
    readonly 'core.component.upload-file.size-exceeded': "[{name}] Max file size: {maxSize} MB";
    readonly 'core.component.upload-file.upload-failed': "An error occurred during file upload";
    readonly 'core.component.upload-file.too-many-files': "You selected too many files. Please check the count";
    readonly 'core.component.upload-file.confirm-delete-message': "Do you want to delete this file? This action cannot be undone";
    readonly 'core.component.upload-file.confirm-delete-title': "Confirm delete?";
    readonly 'core.component.upload-file.confirm-yes': "Confirm";
    readonly 'core.component.upload-file.confirm-no': "Cancel";
    readonly 'core.component.upload-file.no-configuration': "Please inject SD_UPLOAD_FILE_CONFIGURATION or pass [upload] directly into the component";
    readonly 'core.component.upload-file.no-configuration-key': "No upload configuration found for key='{key}'. Please check providers or pass [upload] directly";
    readonly 'core.component.upload-file.preview-title': "Preview image";
    readonly 'core.module.layout.user.change-password': "Change password";
    readonly 'core.module.layout.user.logout': "Sign out";
    readonly 'core.module.layout.sidebar.search': "Search";
    readonly 'core.module.layout.greeting.hello': "Hello, {name}";
    readonly 'core.module.layout.weekday.0': "Sunday";
    readonly 'core.module.layout.weekday.1': "Monday";
    readonly 'core.module.layout.weekday.2': "Tuesday";
    readonly 'core.module.layout.weekday.3': "Wednesday";
    readonly 'core.module.layout.weekday.4': "Thursday";
    readonly 'core.module.layout.weekday.5': "Friday";
    readonly 'core.module.layout.weekday.6': "Saturday";
    readonly 'core.module.layout.today-info.format': "{weekday}, {date}";
    readonly 'core.module.layout.forbidden.title': "Access denied";
    readonly 'core.module.layout.forbidden.message': "You don't have permission to access this page. Please contact your administrator or go back to the home page";
    readonly 'core.module.layout.forbidden.back-home': "Back to home";
    readonly 'core.module.layout.not-found.title': "404 - Page not found";
    readonly 'core.module.layout.not-found.message': "The page you're looking for doesn't exist or has been removed. Please check the URL or go back to the home page to continue.";
    readonly 'core.module.layout.not-found.back': "Go back";
    readonly 'core.module.layout.home.tab-name': "Home";
    readonly 'core.module.layout.home.feature.data': "Data";
    readonly 'core.module.layout.home.feature.reports': "Reports";
    readonly 'core.module.layout.home.feature.users': "Users";
    readonly 'core.module.layout.home.feature.workflow': "Workflow";
    readonly 'core.module.layout.home.feature.audit': "Audit";
    readonly 'core.module.layout.home.feature.integration': "Integration";
    readonly 'core.module.layout.mock.user.full-name': "Demo User";
    readonly 'core.module.generic.generic-select.detail-link': "details";
};

type I18nKey = keyof typeof EN_MESSAGES;
type I18nParams = Record<string, string | number>;
/**
 * I18nCatalog — full catalog of messages keyed by I18nKey.
 *
 * Tip: hover over EN_MESSAGES['key'] to see the EN reference value when typing a custom catalog.
 *
 * Example:
 *   import type { I18nCatalog } from '@sdcorejs/angular/i18n';
 *   const myCustom: I18nCatalog = {
 *     'core.common.cancel': 'Annuler',
 *     // ... must provide all keys
 *   };
 */
type I18nCatalog = Record<I18nKey, string>;
/**
 * Custom language provider. Returns a complete I18nCatalog synchronously.
 *
 * Sync-only by design: keeping the resolution path synchronous lets `t()` return the
 * correct value on the very first call (no microtask flash of 'vi' fallback) and keeps
 * the pipe pure. If you need to load a catalog from an API, fetch it before
 * bootstrapping Angular and pass the already-resolved object here.
 *
 * Example:
 *   const config: ISdCoreConfiguration = { language: () => ({ ...myCatalog }) };
 */
type CustomLanguageProvider = () => I18nCatalog;

declare const I18N_MESSAGES: Record<Language, Readonly<Record<string, string>>>;

declare class I18nService {
    #private;
    readonly language: Signal<Language>;
    readonly messages: Signal<Readonly<Record<string, string>>>;
    setLanguage(lang: Language, opts?: {
        reload?: boolean;
    }): void;
    t(key: string, params?: I18nParams): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<I18nService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<I18nService>;
}

declare class TranslatePipe implements PipeTransform {
    #private;
    transform(key: string, params?: I18nParams): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<TranslatePipe, never>;
    static ɵpipe: i0.ɵɵPipeDeclaration<TranslatePipe, "translate", true>;
}

export { I18N_MESSAGES, I18N_STORAGE_KEY, I18nService, TranslatePipe };
export type { CustomLanguageProvider, I18nCatalog, I18nKey, I18nParams };
