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 {};