import type { FlattenKeys, GetByString, Split, UnionToIntersection } from 'utilium'; /** * Add translations to a locale. * Note that translations are rendered as HTML, only replacements are escaped. */ export declare function extendLocale(locale: string, data: object): void; declare let currentLoaded: { readonly AccessControlDialog: { readonly named_title: "Permissions for {name}"; readonly owner: "Owner"; readonly title: "Permissions"; readonly remove: "Remove"; readonly toast_removed: "Removed access"; readonly public_target: "Everyone"; readonly add_public: "Add Public Access"; readonly placeholder: "Add users and roles"; }; readonly AppMenu: { readonly failed: "Couldn't load apps."; readonly none: "No apps available."; }; readonly AppPreferences: { readonly title: "Preferences for {name}"; readonly save: "Save"; readonly toast_saved: "Preferences saved"; readonly dialog_toggle: "Settings"; }; readonly Discovery: { readonly no_results: "No results"; }; readonly Login: { readonly email: "Email"; readonly register: "Register instead"; }; readonly Logout: { readonly back: "Take me back"; readonly question: "Are you sure you want to log out?"; }; readonly Register: { readonly email: "Email"; readonly login: "Login instead"; readonly name: "Display Name"; }; readonly SessionList: { readonly created: "Created {date}"; readonly current: "Current"; readonly elevated: "Elevated"; readonly expires: "Expires {date}"; readonly logout_all_question: "Are you sure you want to log out all sessions?"; readonly logout_all_submit: "Logout All Sessions"; readonly logout_all_trigger: "Logout All"; readonly logout_single: "Are you sure you want to log out this session?"; }; readonly Upload: { readonly upload: "Upload"; }; readonly UserCard: { readonly you: "(You)"; }; readonly UserMenu: { readonly account: "Your Account"; readonly admin: "Administration"; }; readonly Version: { readonly error: "Latest unknown"; readonly latest: "Latest"; readonly upgrade: "{latest} available"; }; readonly ZodInput: { readonly invalid_type: "Invalid input type: {type}"; }; readonly generic: { readonly action_irreversible: "This action can't be undone."; readonly cancel: "Cancel"; readonly change: "Change"; readonly create: "Create"; readonly delete: "Delete"; readonly done: "Done"; readonly email: "Email"; readonly loading: "Loading..."; readonly login: "Login"; readonly logout: "Logout"; readonly no: "No"; readonly none: "None"; readonly ok: "Okay"; readonly preferences: "Preferences"; readonly register: "Register"; readonly rename: "Rename"; readonly sessions: "Sessions"; readonly share: "Share"; readonly success: "Success"; readonly unknown: "Unknown"; readonly unnamed: "Unnamed"; readonly username: "Name"; readonly yes: "Yes"; }; readonly page: { readonly account: { readonly delete_account: "Delete Account"; readonly delete_account_confirm: "Are you sure you want to delete your account?"; readonly edit_email: "Email Address"; readonly edit_name: "What do you want to be called?"; readonly email_verified_on: "Email verified on {date}"; readonly greeting: "Welcome, {name}"; readonly passkeys: { readonly backed_up: "This passkey is backed up"; readonly create: "Create"; readonly created: "Created {date}"; readonly delete: "Delete"; readonly delete_confirm: "Are you sure you want to delete this passkey?"; readonly edit_name: "Passkey Name"; readonly min_one: "You must have at least one passkey"; readonly multi_device: "Multiple devices"; readonly name_type_error: "Passkey name must be a string"; readonly not_backed_up: "This passkey is not backed up"; readonly rename: "Rename"; readonly single_device: "Single device"; readonly title: "Passkeys"; }; readonly personal_info: "Personal Information"; readonly pfp: { readonly update: "Upload"; readonly remove: "Remove"; readonly toast_removed: "Profile picture removed"; readonly toast_updated: "Profile picture updated"; }; readonly preferences: "Preferences"; readonly sessions: "Sessions"; readonly title: "Your Account"; readonly user_id: "User ID"; readonly user_id_hint: "This is your UUID. It can't be changed."; readonly verification_sent: "Verification email sent"; readonly verify: "Verify"; }; readonly admin: { readonly heading: "Administration"; readonly tab: { readonly dashboard: "Dashboard"; readonly users: "Users"; readonly config: "Configuration"; readonly plugins: "Plugins"; readonly audit: "Audit Log"; }; readonly toast: { readonly suspended: "User suspended"; readonly unsuspended: "User un-suspended"; readonly user_updated: "User updated"; }; readonly audit: { readonly any: "Any"; readonly apply: "Apply"; readonly error_stack: "Error Stack"; readonly event_heading: "Audit Event"; readonly event_title: "Admin — Audit Log Event #{id}"; readonly extra_data: "Extra Data"; readonly filter: { readonly event: "Event Name:"; readonly severity: "Minimum Severity:"; readonly since: "Since:"; readonly source: "Source:"; readonly tags: "Tags:"; readonly until: "Until:"; readonly user: "User UUID:"; }; readonly filters: "Filters"; readonly heading: "Audit Log"; readonly invalid_filter: "Invalid Filter:"; readonly name: "Name"; readonly no_events: "No audit log events found"; readonly reset: "Reset"; readonly severity: "Severity"; readonly source: "Source"; readonly tags: "Tags"; readonly timestamp: "Timestamp"; readonly title: "Admin — Audit Log"; readonly user: "User"; readonly uuid: "UUID"; }; readonly config: { readonly active: "Active Configuration"; readonly loaded_files: "Loaded Files"; readonly title: "Admin — Configuration"; }; readonly dashboard: { readonly audit_link: "Audit Log"; readonly config_files: "{count} files loaded."; readonly config_link: "Configuration"; readonly plugins_link: "Plugins"; readonly plugins_loaded: "{count} plugins loaded."; readonly stats: "{users} users, {sessions} sessions, {passkeys} passkeys."; readonly title: "Admin — Dashboard"; readonly users_link: "Users"; }; readonly plugins: { readonly author: "Author:"; readonly configuration: "Configuration"; readonly heading: "Plugins"; readonly loaded_from: "Loaded from"; readonly none: "No plugins loaded."; readonly provided_apps: "Provided apps:"; readonly title: "Admin — Plugins"; }; readonly users: { readonly admin_tag: "Admin"; readonly administrator: "Administrator"; readonly attributes: "Attributes"; readonly audit: "Audit"; readonly back: "Back to all users"; readonly create: "Create User"; readonly created_title: "New User Created"; readonly created_url: "They can log in using this URL:"; readonly default_image: "Default"; readonly delete_confirm: "Are you sure you want to delete this user?"; readonly delete_user: "Delete User"; readonly display_name: "Display Name"; readonly email_not_verified: "not verified"; readonly email_verified: "verified {date}"; readonly heading: "Users"; readonly manage: "Manage"; readonly manage_heading: "User Management"; readonly manage_title: "Admin — User Management"; readonly none: "No users!"; readonly profile_image: "Profile Image"; readonly registered: "Registered"; readonly roles: "Roles"; readonly suspend: "Suspend"; readonly suspended: "Suspended"; readonly tags: "Tags"; readonly title: "Admin — Users"; readonly unsuspend: "Unsuspend"; readonly uuid: "UUID"; }; }; readonly login: { readonly client: { readonly authorize: "Authorize"; readonly confirm: "Are you sure you want to log in to this local client?"; readonly success: "Login successful! You can close this tab."; readonly title: "Local Client Login"; }; readonly failed: "Login Failed"; }; }; readonly location: { readonly country: "Country"; readonly subdivision: "State / province"; readonly locality: "City / town"; readonly postal_code: "Postal code"; readonly street1: "Street address"; readonly street2: "Street address line 2"; }; readonly audit_severity: readonly ["Emergency", "Alert", "Critical", "Error", "Warning", "Notice", "Info", "Debug"]; readonly preference: { readonly debug: "Debug mode"; }; }; /** * Current locale */ export declare let currentLocale: string; export declare function countryName(code: string): string | undefined; export declare function dateField(name: string): string | undefined; export declare function conjoin(list: Iterable): string; export declare function disjoin(list: Iterable): string; export declare let currentMonthNames: string[]; type _locale = typeof currentLoaded; export interface Locale extends _locale { } export interface ReplacementOptions { $default?: string; /** Whether to treat the replacement as HTML */ $html?: boolean; } type _ArgsValue = UnionToIntersection<{ [I in keyof V]: Split extends [infer Name extends string, string] ? { [N in Name]: string | number | bigint | boolean; } : {}; }[keyof V & number]>; type Replacements = ReplacementOptions & (GetByString extends string ? _ArgsValue & string, '{'>> : Record); type ReplacementsArgs = {} extends Replacements ? [replacements?: Replacements] : [replacements: Replacements]; export declare function useLocale(newLocale: string): void; export declare function escape(text: string): string; /** * Get localized text for a given translation key * @example * ```ts * text(`example.translation.key.${dynamicPart}`, { a: 1, b: 2 }); * ``` */ export declare function text>(key: K, ...args: ReplacementsArgs): string; export {};