import type { BaseError } from '@intlify/shared'; import { CompileError } from '@intlify/message-compiler'; import { CompileErrorCodes } from '@intlify/message-compiler'; import type { CompileOptions } from '@intlify/message-compiler'; import { createCompileError } from '@intlify/message-compiler'; import type { IntlifyDevToolsEmitter } from '@intlify/devtools-types'; import type { IntlifyDevToolsHookPayloads } from '@intlify/devtools-types'; import type { IntlifyDevToolsHooks } from '@intlify/devtools-types'; import { ResourceNode } from '@intlify/message-compiler'; import type { VueDevToolsEmitter } from '@intlify/devtools-types'; declare type __ResourceFormatPath = Key extends string ? T[Key] extends Record ? `${Key}` : never : never; export declare type __ResourcePath = Key extends string ? T[Key] extends Record ? `${Key}.${__ResourcePath> & string}` | `${Key}.${Exclude & string}` : never : never; export declare const AST_NODE_PROPS_KEYS: string[]; export declare function clearCompileCache(): void; /* Excluded from this release type: clearDateTimeFormat */ /* Excluded from this release type: clearNumberFormat */ export declare function compile(message: MessageSource, context: MessageCompilerContext): MessageFunction; export { CompileError } export { CompileErrorCodes } export declare const CORE_ERROR_CODES_EXTEND_POINT = 24; export declare const CORE_WARN_CODES_EXTEND_POINT = 8; export declare interface CoreCommonContext { cid: number; version: string; locale: Locales; fallbackLocale: FallbackLocales>; missing: CoreMissingHandler | null; missingWarn: boolean | RegExp; fallbackWarn: boolean | RegExp; fallbackFormat: boolean; unresolving: boolean; localeFallbacker: LocaleFallbacker; onWarn(msg: string, err?: Error): void; } export declare type CoreContext> | PickupLocales> | PickupLocales>, Locales = IsNever extends true ? LocaleType extends LocaleDetector | Locale ? LocaleType : Locale : ResourceLocales> = CoreCommonContext & CoreTranslationContext, Message> & CoreDateTimeContext> & CoreNumberContext> & { fallbackContext?: CoreContext; }; export declare interface CoreDateTimeContext { datetimeFormats: { [K in keyof DateTimeFormats]: DateTimeFormats[K]; }; } export declare interface CoreError extends BaseError { } export declare const CoreErrorCodes: { readonly INVALID_ARGUMENT: 17; readonly INVALID_DATE_ARGUMENT: 18; readonly INVALID_ISO_DATE_ARGUMENT: 19; readonly NOT_SUPPORT_NON_STRING_MESSAGE: 20; readonly NOT_SUPPORT_LOCALE_PROMISE_VALUE: 21; readonly NOT_SUPPORT_LOCALE_ASYNC_FUNCTION: 22; readonly NOT_SUPPORT_LOCALE_TYPE: 23; }; export declare type CoreErrorCodes = (typeof CoreErrorCodes)[keyof typeof CoreErrorCodes]; export declare interface CoreInternalContext { __datetimeFormatters: Map; __numberFormatters: Map; __localeChainCache?: Map; __v_emitter?: VueDevToolsEmitter; __meta: MetaInfo; } export declare interface CoreInternalOptions { __datetimeFormatters?: Map; __numberFormatters?: Map; __v_emitter?: VueDevToolsEmitter; __meta?: MetaInfo; } export declare type CoreMissingHandler = (context: CoreContext, locale: Locale, key: Path, type: CoreMissingType, ...values: unknown[]) => string | void; export declare type CoreMissingType = 'translate' | 'datetime format' | 'number format' | 'translate exists'; export declare interface CoreNumberContext { numberFormats: { [K in keyof NumberFormats]: NumberFormats[K]; }; } export declare interface CoreOptions = LocaleMessages, _DateTimeFormats extends DateTimeFormats = DateTimeFormats, _NumberFormats extends NumberFormats = NumberFormats> { version?: string; locale?: Locale | LocaleDetector; fallbackLocale?: FallbackLocale; messages?: { [K in keyof _Messages]: MessageSchema; }; datetimeFormats?: { [K in keyof _DateTimeFormats]: DateTimeSchema; }; numberFormats?: { [K in keyof _NumberFormats]: NumberSchema; }; modifiers?: LinkedModifiers; pluralRules?: PluralizationRules; missing?: CoreMissingHandler; missingWarn?: boolean | RegExp; fallbackWarn?: boolean | RegExp; fallbackFormat?: boolean; unresolving?: boolean; postTranslation?: PostTranslationHandler; processor?: MessageProcessor; warnHtmlMessage?: boolean; escapeParameter?: boolean; messageCompiler?: MessageCompiler; messageResolver?: MessageResolver; localeFallbacker?: LocaleFallbacker; fallbackContext?: CoreContext; onWarn?: (msg: string, err?: Error) => void; } export declare interface CoreTranslationContext { messages: { [K in keyof Messages]: Messages[K]; }; modifiers: LinkedModifiers; pluralRules?: PluralizationRules; postTranslation: PostTranslationHandler | null; processor: MessageProcessor | null; warnHtmlMessage: boolean; escapeParameter: boolean; messageCompiler: MessageCompiler | null; messageResolver: MessageResolver; } export declare const CoreWarnCodes: { readonly NOT_FOUND_KEY: 1; readonly FALLBACK_TO_TRANSLATE: 2; readonly CANNOT_FORMAT_NUMBER: 3; readonly FALLBACK_TO_NUMBER_FORMAT: 4; readonly CANNOT_FORMAT_DATE: 5; readonly FALLBACK_TO_DATE_FORMAT: 6; readonly EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: 7; }; export declare type CoreWarnCodes = (typeof CoreWarnCodes)[keyof typeof CoreWarnCodes]; export { createCompileError } export declare function createCoreContext = CoreOptions, Messages extends Record = Options['messages'] extends Record ? Options['messages'] : {}, DateTimeFormats extends Record = Options['datetimeFormats'] extends Record ? Options['datetimeFormats'] : {}, NumberFormats extends Record = Options['numberFormats'] extends Record ? Options['numberFormats'] : {}, LocaleType = Locale | LocaleDetector>(options: Options): CoreContext; export declare function createCoreContext, LocaleParams> = CoreOptions, LocaleParams>, Messages extends Record = NonNullable extends Record ? NonNullable : {}, DateTimeFormats extends Record = NonNullable extends Record ? NonNullable : {}, NumberFormats extends Record = NonNullable extends Record ? NonNullable : {}, LocaleType = Locale | LocaleDetector>(options: Options): CoreContext; export declare function createCoreError(code: CoreErrorCodes): CoreError; export declare function createMessageContext(options?: MessageContextOptions): MessageContext; /** * number */ export declare type CurrencyDisplay = 'symbol' | 'code' | 'name'; export declare interface CurrencyNumberFormatOptions extends Intl.NumberFormatOptions { style: 'currency'; currency: string; currencyDisplay?: CurrencyDisplay; localeMatcher?: LocaleMatcher; formatMatcher?: FormatMatcher; } /** * `datetime` function overloads */ export declare function datetime, Message = string>(context: Context, value: number | string | Date): string | number | Intl.DateTimeFormatPart[]; export declare function datetime, Value extends number | string | Date = number, Key extends string = string, ResourceKeys extends PickupFormatKeys = PickupFormatKeys, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | DateTimeOptions): string | number | Intl.DateTimeFormatPart[]; export declare function datetime, Value extends number | string | Date = number, Key extends string = string, ResourceKeys extends PickupFormatKeys = PickupFormatKeys, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | DateTimeOptions, locale: Context['locale']): string | number | Intl.DateTimeFormatPart[]; export declare function datetime, Value extends number | string | Date = number, Key extends string = string, ResourceKeys extends PickupFormatKeys = PickupFormatKeys, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | DateTimeOptions, override: Intl.DateTimeFormatOptions): string | number | Intl.DateTimeFormatPart[]; export declare function datetime, Value extends number | string | Date = number, Key extends string = string, ResourceKeys extends PickupFormatKeys = PickupFormatKeys, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | DateTimeOptions, locale: Context['locale'], override: Intl.DateTimeFormatOptions): string | number | Intl.DateTimeFormatPart[]; /* Excluded from this release type: DATETIME_FORMAT_OPTIONS_KEYS */ export declare type DateTimeDigital = 'numeric' | '2-digit'; export declare type DateTimeFormat = { [key: string]: DateTimeFormatOptions; }; export declare type DateTimeFormatOptions = Intl.DateTimeFormatOptions | SpecificDateTimeFormatOptions; export declare type DateTimeFormats = LocaleRecord, Schema>; /** * datetime */ export declare type DateTimeHumanReadable = 'long' | 'short' | 'narrow'; /** * # datetime * * ## usages: * // for example `context.datetimeFormats` below * 'en-US': { * short: { * year: 'numeric', month: '2-digit', day: '2-digit', * hour: '2-digit', minute: '2-digit' * } * }, * 'ja-JP': { ... } * * // datetimeable value only * datetime(context, value) * * // key argument * datetime(context, value, 'short') * * // key & locale argument * datetime(context, value, 'short', 'ja-JP') * * // object sytle argument * datetime(context, value, { key: 'short', locale: 'ja-JP' }) * * // suppress localize miss warning option, override context.missingWarn * datetime(context, value, { key: 'short', locale: 'ja-JP', missingWarn: false }) * * // suppress localize fallback warning option, override context.fallbackWarn * datetime(context, value, { key: 'short', locale: 'ja-JP', fallbackWarn: false }) * * // if you specify `part` options, you can get an array of objects containing the formatted datetime in parts * datetime(context, value, { key: 'short', part: true }) * * // orverride context.datetimeFormats[locale] options with functino options * datetime(cnotext, value, 'short', { year: '2-digit' }) * datetime(cnotext, value, 'short', 'ja-JP', { year: '2-digit' }) * datetime(context, value, { key: 'short', part: true, year: '2-digit' }) */ /** * DateTime options * * @remarks * Options for Datetime formatting API * * @VueI18nGeneral */ export declare interface DateTimeOptions extends Intl.DateTimeFormatOptions, LocaleOptions { /** * @remarks * The target format key */ key?: Key; /** * @remarks * Whether suppress warnings outputted when localization fails */ missingWarn?: boolean; /** * @remarks * Whether do resolve on format keys when your language lacks a formatting for a key */ fallbackWarn?: boolean; /** * @remarks * Whether to use [Intel.DateTimeFormat#formatToParts](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts) */ part?: boolean; } export declare const DEFAULT_LOCALE = "en-US"; export declare const DEFAULT_MESSAGE_DATA_TYPE = "text"; export declare type DefaultCoreLocaleMessageSchema> = IsEmptyObject extends true ? LocaleMessage : Schema; /** * The type definition of Locale Message for `@intlify/core-base` package * * @remarks * The typealias is used to strictly define the type of the Locale message. * * @example * ```ts * // type.d.ts (`.d.ts` file at your app) * import { DefineCoreLocaleMessage } from '@intlify/core-base' * * declare module '@intlify/core-base' { * export interface DefineCoreLocaleMessage { * title: string * menu: { * login: string * } * } * } * ``` * * @VueI18nGeneral */ export declare interface DefineCoreLocaleMessage extends LocaleMessage { } export declare type EmptyObject = { [emptyObjectSymbol]?: never; }; declare const emptyObjectSymbol: unique symbol; export declare type ExtractToStringKey = Extract; /** @VueI18nGeneral */ export declare type FallbackLocale = Locale | Locale[] | { [locale in string]: Locale[]; } | false; export declare type FallbackLocales = Locales | Array | { [locale in string]: Array>>; } | false; /** * Fallback with locale chain * * @remarks * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default. * * @param ctx - A {@link CoreContext | context} * @param fallback - A {@link FallbackLocale | fallback locale} * @param start - A starting {@link Locale | locale} * * @returns Fallback locales * * @VueI18nSee [Fallbacking](../guide/essentials/fallback) * * @VueI18nGeneral */ export declare function fallbackWithLocaleChain(ctx: CoreContext, fallback: FallbackLocale, start: Locale): Locale[]; /** * Fallback with simple implemenation * * @remarks * A fallback locale function implemented with a simple fallback algorithm. * * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify. * * @param ctx - A {@link CoreContext | context} * @param fallback - A {@link FallbackLocale | fallback locale} * @param start - A starting {@link Locale | locale} * * @returns Fallback locales * * @VueI18nGeneral */ export declare function fallbackWithSimple(ctx: CoreContext, fallback: FallbackLocale, start: Locale): Locale[]; export declare type First = T[0]; export declare type FormatMatcher = 'basic' | 'best fit'; export declare type FormattedNumberPart = { type: FormattedNumberPartType; value: string; }; export declare type FormattedNumberPartType = 'currency' | 'decimal' | 'fraction' | 'group' | 'infinity' | 'integer' | 'literal' | 'minusSign' | 'nan' | 'plusSign' | 'percentSign'; /** * Generated locale which resolves to `never` if left unset */ export declare type GeneratedLocale = GeneratedTypeConfig extends Record<'locale', infer CustomLocale> ? CustomLocale : never; /** * * The interface used for narrowing types using generated types. * * @remarks * * The type generated by 3rd party (e.g. nuxt/i18n) * * @example * ```ts * // generated-i18n-types.d.ts (`.d.ts` file at your app) * * declare module '@intlify/core-base' { * interface GeneratedTypeConfig { * locale: "en" | "ja" * } * } * ``` */ export declare interface GeneratedTypeConfig { } export declare const getAdditionalMeta: () => MetaInfo | null; export declare function getDevToolsHook(): IntlifyDevToolsEmitter | null; export declare const getFallbackContext: () => CoreContext | null; /* Excluded from this release type: getLocale */ export declare function getWarnMessage(code: CoreWarnCodes, ...args: unknown[]): string; /* Excluded from this release type: handleMissing */ export declare function initI18nDevTools(i18n: unknown, version: string, meta?: Record): void; /* Excluded from this release type: isAlmostSameLocale */ export declare type IsEmptyObject = T extends { [emptyObjectSymbol]?: never; } ? true : false; /* Excluded from this release type: isImplicitFallback */ export declare function isMessageAST(val: unknown): val is ResourceNode; export declare const isMessageFunction: (val: unknown) => val is MessageFunction; export declare type IsNever = [T] extends [never] ? true : false; export declare type IsObject = IsTuple extends true ? false : [T] extends [object] ? true : false; export declare type IsRecord = IsTuple extends true ? false : [T] extends [Record] ? true : false; /* Excluded from this release type: isTranslateFallbackWarn */ /* Excluded from this release type: isTranslateMissingWarn */ export declare type IsTuple = IsNever extends true ? false : T extends readonly any[] ? number extends T['length'] ? false : true : false; export declare type IsUnion = T extends B ? [B] extends [T] ? false : true : never; export declare type JsonPaths = Key extends string ? T[Key] extends Record ? `${Key}.${JsonPaths}` : `${Key}` : never; export declare type LastInUnion = UnionToIntersection 0 : never> extends (x: infer L) => 0 ? L : never; /** @VueI18nGeneral */ export declare type LinkedModifiers = { [key: string]: LinkedModify; }; export declare type LinkedModify = (value: T, type: string) => MessageType; export declare interface LinkedOptions { /** * The message type of linked message */ type?: string; /** * The modifier of linked message */ modifier?: string; } /** @VueI18nGeneral */ export declare type Locale = IsNever extends true ? string : GeneratedLocale; /** @VueI18nGeneral */ export declare interface LocaleDetector { (...args: Args): Locale | Promise; resolvedOnce?: boolean; } /** * The locale fallbacker * * @VueI18nGeneral */ export declare type LocaleFallbacker = (ctx: CoreContext, fallback: FallbackLocale, start: Locale) => Locale[]; export declare type LocaleMatcher = 'lookup' | 'best fit'; /** @VueI18nGeneral */ export declare type LocaleMessage = Record>; /** @VueI18nGeneral */ export declare type LocaleMessageDictionary = { [K in keyof T]: LocaleMessageType; }; /** @VueI18nGeneral */ export declare type LocaleMessages = LocaleRecord, Schema>; /** @VueI18nGeneral */ export declare type LocaleMessageType = T extends string ? string : T extends () => Promise ? LocaleMessageDictionary : T extends (...args: infer Arguments) => any ? (...args: Arguments) => ReturnType : T extends Record ? LocaleMessageDictionary : T extends Array ? { [K in keyof T]: T[K]; } : T; /** @VueI18nGeneral */ export declare type LocaleMessageValue = LocaleMessageDictionary | string; /** @VueI18nGeneral */ export declare interface LocaleOptions { /** * @remarks * The locale of localization */ locale?: Locales | LocaleDetector; } export declare type LocaleParams = T extends IsUnion ? { messages: T; datetimeFormats: T; numberFormats: T; } : T extends { messages?: infer M; datetimeFormats?: infer D; numberFormats?: infer N; } ? { messages: LocaleParamsType; datetimeFormats: LocaleParamsType; numberFormats: LocaleParamsType; } : T extends string ? { messages: T; datetimeFormats: T; numberFormats: T; } : { messages: Default; datetimeFormats: Default; numberFormats: Default; }; declare type LocaleParamsType = T extends IsUnion ? T : T extends string ? T : R; export declare type LocaleRecord = { [K in T[number]]: R; }; /** * The message compiler * * @param message - A resolved message that ususally will be passed the string. if you can transform to it with bundler, will be passed the AST. * @param context - A message context {@link MessageCompilerContext} * * @returns A {@link MessageFunction} * * @VueI18nGeneral */ export declare type MessageCompiler = (message: MessageSource, context: MessageCompilerContext) => MessageFunction; /** * The context that will pass the message compiler. * * @VueI18nGeneral */ export declare type MessageCompilerContext = Pick & { /** * Whether to allow the use locale messages of HTML formatting. */ warnHtmlMessage?: boolean; /** * The resolved locale message key */ key: string; /** * The locale */ locale: Locale; }; /** * The message context. * * @VueI18nGeneral */ export declare interface MessageContext { /** * Resolve message value from list. * * @param index - An index of message values. * * @returns A resolved message value. * * @example * ```js * const messages = { * en: { * greeting: ({ list }) => `hello, ${list(0)}!` * } * } * ``` */ list(index: number): unknown; /** * Resolve message value from named. * * @param key - A key of message value. * * @returns A resolved message value. * * @example * ```js * const messages = { * en: { * greeting: ({ named }) => `hello, ${named('name')}!` * } * } * ``` */ named(key: string): unknown; /** * Resolve message with plural index. * * @remarks * That's resolved with plural index with translation function. * * @param messages - the messages, that is resolved with plural index with translation function. * * @returns A resolved message. * * @example * ```js * const messages = { * en: { * car: ({ plural }) => plural(['car', 'cars']), * apple: ({ plural, named }) => * plural([ * 'no apples', * 'one apple', * `${named('count')} apples` * ]) * } * } * ``` */ plural(messages: T[]): T; /** * Resolve linked message. * * @param key - A message key * @param modifier - A modifier * * @returns A resolve message. */ linked(key: Path, modifier?: string): MessageType; /** * Overloaded `linked` * * @param key - A message key * @param modifier - A modifier * @param type - A message type * * @returns A resolve message. */ linked(key: Path, modifier?: string, type?: string): MessageType; /** * Overloaded `linked` * * @param key - A message key * @param optoins - An {@link LinkedOptions | linked options} * * @returns A resolve message. */ linked(key: Path, optoins?: LinkedOptions): MessageType; /* Excluded from this release type: message */ /** * The message type to be handled by the message function. * * @remarks * Usually `text`, you need to return **string** in message function. */ type: string; /* Excluded from this release type: interpolate */ /* Excluded from this release type: normalize */ /** * The message values. * * @remarks * The message values are the argument values passed from translation function, such as `$t`, `t`, or `translate`. * * @example * vue-i18n `$t` (or `t`) case: * ```html *

{{ $t('greeting', { name: 'DIO' }) }}

* ``` * * `@intlify/core` (`@intlify/core-base`) `translate` case: * ```js * translate(context, 'foo.bar', ['dio']) // `['dio']` is message values * ``` */ values: Record; } export declare interface MessageContextOptions { parent?: MessageContext; locale?: string; list?: unknown[]; named?: NamedValue; modifiers?: LinkedModifiers; pluralIndex?: number; pluralRules?: PluralizationRules; messages?: MessageFunctions | MessageResolveFunction; processor?: MessageProcessor; } /** * The Message Function. * * @param ctx - A {@link MessageContext} * * @return A resolved format message, that is string type basically. * * @VueI18nGeneral */ export declare type MessageFunction = MessageFunctionCallable | MessageFunctionInternal; export declare type MessageFunctionCallable = (ctx: MessageContext) => MessageFunctionReturn; export declare type MessageFunctionInternal = { (ctx: MessageContext): MessageFunctionReturn; key?: string; locale?: string; source?: string; }; /** @VueI18nGeneral */ export declare type MessageFunctionReturn = T extends string ? MessageType : MessageType[]; export declare type MessageFunctions = Record>; export declare type MessageInterpolate = (val: unknown) => MessageType; export declare type MessageNormalize = (values: MessageType[]) => MessageFunctionReturn; export declare interface MessageProcessor { type?: string; interpolate?: MessageInterpolate; normalize?: MessageNormalize; } export declare type MessageResolveFunction = (key: string, useLinked: boolean) => MessageFunction; /** @VueI18nGeneral */ export declare type MessageResolver = (obj: unknown, path: Path) => PathValue; export declare type MessageType = T extends string ? string : StringConvertable; export declare interface MetaInfo { [field: string]: unknown; } export declare const MISSING_RESOLVE_VALUE = ""; /** @VueI18nGeneral */ export declare type NamedValue = T & Record; export declare const NOT_REOSLVED = -1; /** * `number` function overloads */ export declare function number, Message = string>(context: Context, value: number): string | number | Intl.NumberFormatPart[]; export declare function number, Value extends number = number, Key extends string = string, ResourceKeys extends PickupFormatKeys = PickupFormatKeys, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | NumberOptions): string | number | Intl.NumberFormatPart[]; export declare function number, Value extends number = number, Key extends string = string, ResourceKeys extends PickupFormatKeys = PickupFormatKeys, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | NumberOptions, locale: Context['locale']): string | number | Intl.NumberFormatPart[]; export declare function number, Value extends number = number, Key extends string = string, ResourceKeys extends PickupFormatKeys = PickupFormatKeys, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | NumberOptions, override: Intl.NumberFormatOptions): string | number | Intl.NumberFormatPart[]; export declare function number, Value extends number = number, Key extends string = string, ResourceKeys extends PickupFormatKeys = PickupFormatKeys, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | NumberOptions, locale: Context['locale'], override: Intl.NumberFormatOptions): string | number | Intl.NumberFormatPart[]; /* Excluded from this release type: NUMBER_FORMAT_OPTIONS_KEYS */ export declare type NumberFormat = { [key: string]: NumberFormatOptions; }; export declare type NumberFormatOptions = Intl.NumberFormatOptions | SpecificNumberFormatOptions | CurrencyNumberFormatOptions; export declare type NumberFormats = LocaleRecord, Schema>; export declare type NumberFormatToPartsResult = { [index: number]: FormattedNumberPart; }; /** * # number * * ## usages * // for example `context.numberFormats` below * 'en-US': { * 'currency': { * style: 'currency', currency: 'USD', currencyDisplay: 'symbol' * } * }, * 'ja-JP: { ... } * * // value only * number(context, value) * * // key argument * number(context, value, 'currency') * * // key & locale argument * number(context, value, 'currency', 'ja-JP') * * // object sytle argument * number(context, value, { key: 'currency', locale: 'ja-JP' }) * * // suppress localize miss warning option, override context.missingWarn * number(context, value, { key: 'currency', locale: 'ja-JP', missingWarn: false }) * * // suppress localize fallback warning option, override context.fallbackWarn * number(context, value, { key: 'currency', locale: 'ja-JP', fallbackWarn: false }) * * // if you specify `part` options, you can get an array of objects containing the formatted number in parts * number(context, value, { key: 'currenty', part: true }) * * // orverride context.numberFormats[locale] options with functino options * number(cnotext, value, 'currency', { year: '2-digit' }) * number(cnotext, value, 'currency', 'ja-JP', { year: '2-digit' }) * number(context, value, { key: 'currenty', locale: 'ja-JP', part: true, year: '2-digit'}) */ /** * Number Options * * @remarks * Options for Number formatting API * * @VueI18nGeneral */ export declare interface NumberOptions extends Intl.NumberFormatOptions, LocaleOptions { /** * @remarks * The target format key */ key?: Key; /** * @remarks * Whether suppress warnings outputted when localization fails */ missingWarn?: boolean; /** * @remarks * Whether do resolve on format keys when your language lacks a formatting for a key */ fallbackWarn?: boolean; /** * @remarks * Whether to use [Intel.NumberFormat#formatToParts](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts) */ part?: boolean; } /** * Parse a string path into an array of segments */ export declare function parse(path: Path): string[] | undefined; /* Excluded from this release type: parseDateTimeArgs */ /* Excluded from this release type: parseNumberArgs */ /* Excluded from this release type: parseTranslateArgs */ /** @VueI18nGeneral */ export declare type Path = string; /** @VueI18nGeneral */ export declare type PathValue = string | number | boolean | Function | null | { [key: string]: PathValue; } | PathValue[]; export declare type PickupFallbackLocales = T[number] | `${T[number]}!`; export declare type PickupFormatKeys, K = keyof T> = K extends string ? ResourceFormatPath : never; export declare type PickupFormatPathKeys = ResourceFormatPath; export declare type PickupKeys, K = keyof T> = K extends string ? ResourcePath : never; export declare type PickupLocales, K = keyof T> = K extends string ? K : never; export declare type PickupPaths = ResourcePath; export declare type PluralizationProps = { n?: number; count?: number; }; export declare type PluralizationRule = (choice: number, choicesLength: number, orgRule?: PluralizationRule) => number; /** @VueI18nGeneral */ export declare type PluralizationRules = { [locale: string]: PluralizationRule; }; /** @VueI18nGeneral */ export declare type PostTranslationHandler = (translated: MessageFunctionReturn, key: string) => MessageFunctionReturn; /** * Register the locale fallbacker * * @param fallbacker - A {@link LocaleFallbacker} function * * @VueI18nGeneral */ export declare function registerLocaleFallbacker(fallbacker: LocaleFallbacker): void; export declare function registerMessageCompiler(compiler: MessageCompiler): void; /** * Register the message resolver * * @param resolver - A {@link MessageResolver} function * * @VueI18nGeneral */ export declare function registerMessageResolver(resolver: MessageResolver): void; export declare type RemovedIndexResources = RemoveIndexSignature<{ [K in keyof T]: T[K]; }>; export declare type RemoveIndexSignature = { [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K]; }; /* Excluded from this release type: resolveLocale */ /** * message resolver * * @remarks * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default. * * @param obj - A target object to be resolved with path * @param path - A {@link Path | path} to resolve the value of message * * @returns A resolved {@link PathValue | path value} * * @VueI18nGeneral */ export declare function resolveValue(obj: unknown, path: Path): PathValue; /** * key-value message resolver * * @remarks * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved * * @param obj - A target object to be resolved with path * @param path - A {@link Path | path} to resolve the value of message * * @returns A resolved {@link PathValue | path value} * * @VueI18nGeneral */ export declare function resolveWithKeyValue(obj: unknown, path: Path): PathValue; export declare type ResourceFormatPath = _ResourceFormatPath extends string | keyof T ? _ResourceFormatPath : keyof T; declare type _ResourceFormatPath = __ResourceFormatPath | keyof T; export { ResourceNode } export declare type ResourcePath = _ResourcePath extends string | keyof T ? _ResourcePath : keyof T; export declare type _ResourcePath = __ResourcePath | keyof T; export declare type ResourceValue> = P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? Rest extends ResourcePath ? ResourceValue : never : never : P extends keyof T ? T[P] : never; export declare type SchemaParams = T extends readonly any[] ? { message: First; datetime: DateTimeFormat; number: NumberFormat; } : T extends { message?: infer M; datetime?: infer D; number?: infer N; } ? { message: M extends LocaleMessage ? M : LocaleMessage; datetime: D extends DateTimeFormat ? D : DateTimeFormat; number: N extends NumberFormat ? N : NumberFormat; } : { message: LocaleMessage; datetime: DateTimeFormat; number: NumberFormat; }; export declare const setAdditionalMeta: (meta: MetaInfo | null) => void; export declare function setDevToolsHook(hook: IntlifyDevToolsEmitter | null): void; export declare const setFallbackContext: (context: CoreContext | null) => void; export declare interface SpecificDateTimeFormatOptions extends Intl.DateTimeFormatOptions { year?: DateTimeDigital; month?: DateTimeDigital | DateTimeHumanReadable; day?: DateTimeDigital; hour?: DateTimeDigital; minute?: DateTimeDigital; second?: DateTimeDigital; weekday?: DateTimeHumanReadable; era?: DateTimeHumanReadable; timeZoneName?: 'long' | 'short'; localeMatcher?: LocaleMatcher; formatMatcher?: FormatMatcher; } export declare interface SpecificNumberFormatOptions extends Intl.NumberFormatOptions { style?: 'decimal' | 'percent'; currency?: string; currencyDisplay?: CurrencyDisplay; localeMatcher?: LocaleMatcher; formatMatcher?: FormatMatcher; } /** * weather the type `T` is able to convert to string with `toString` method */ export declare type StringConvertable> = IsNever extends true ? T extends boolean ? T : T extends Function ? T : IsObject extends true ? T : unknown : T; /** * TODO: * this type should be used (refactored) at `translate` type definition * (Unfortunately, using this type will result in key completion failure due to type mismatch...) */ /** * `translate` function overloads */ export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, plural: number): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, plural: number): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, plural: number, options: TranslateOptions): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, defaultMsg: string): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, defaultMsg: string, options: TranslateOptions): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, list: unknown[]): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, list: unknown[], plural: number): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, list: unknown[], defaultMsg: string): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, list: unknown[], options: TranslateOptions): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, named: NamedValue): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, named: NamedValue, plural: number): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, named: NamedValue, defaultMsg: string): MessageFunctionReturn | number; export declare function translate, Key extends string = string, DefinedLocaleMessage extends RemovedIndexResources = RemovedIndexResources, CoreMessages = IsEmptyObject extends false ? PickupPaths<{ [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]; }> : never, ContextMessages = IsEmptyObject extends false ? PickupKeys : never, ResourceKeys extends CoreMessages | ContextMessages = IsNever extends false ? IsNever extends false ? CoreMessages | ContextMessages : CoreMessages : IsNever extends false ? ContextMessages : never, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction, named: NamedValue, options: TranslateOptions): MessageFunctionReturn | number; export declare const translateDevTools: (payloads: IntlifyDevToolsHookPayloads[IntlifyDevToolsHooks]) => void | null; /** * # translate * * ## usages: * // for example, locale messages key * { 'foo.bar': 'hi {0} !' or 'hi {name} !' } * * // no argument, context & path only * translate(context, 'foo.bar') * * // list argument * translate(context, 'foo.bar', ['kazupon']) * * // named argument * translate(context, 'foo.bar', { name: 'kazupon' }) * * // plural choice number * translate(context, 'foo.bar', 2) * * // plural choice number with name argument * translate(context, 'foo.bar', { name: 'kazupon' }, 2) * * // default message argument * translate(context, 'foo.bar', 'this is default message') * * // default message with named argument * translate(context, 'foo.bar', { name: 'kazupon' }, 'Hello {name} !') * * // use key as default message * translate(context, 'hi {0} !', ['kazupon'], { default: true }) * * // locale option, override context.locale * translate(context, 'foo.bar', { name: 'kazupon' }, { locale: 'ja' }) * * // suppress localize miss warning option, override context.missingWarn * translate(context, 'foo.bar', { name: 'kazupon' }, { missingWarn: false }) * * // suppress localize fallback warning option, override context.fallbackWarn * translate(context, 'foo.bar', { name: 'kazupon' }, { fallbackWarn: false }) * * // escape parameter option, override context.escapeParameter * translate(context, 'foo.bar', { name: 'kazupon' }, { escapeParameter: true }) */ /** * Translate Options * * @remarks * Options for Translation API * * @VueI18nGeneral */ export declare interface TranslateOptions extends LocaleOptions { /** * @remarks * List interpolation */ list?: unknown[]; /** * @remarks * Named interpolation */ named?: NamedValue; /** * @remarks * Plulralzation choice number */ plural?: number; /** * @remarks * Default message when is occurred translation missing */ default?: string | boolean; /** * @remarks * Whether suppress warnings outputted when localization fails */ missingWarn?: boolean; /** * @remarks * Whether do template interpolation on translation keys when your language lacks a translation for a key */ fallbackWarn?: boolean; /** * @remarks * Whether do escape parameter for list or named interpolation values */ escapeParameter?: boolean; /** * @remarks * Whether the message has been resolved */ resolvedMessage?: boolean; } export declare type TranslationsPaths = K extends string ? JsonPaths : never; export declare type UnionToIntersection = (U extends any ? (arg: U) => void : never) extends (arg: infer I) => void ? I : never; export declare type UnionToTuple> = [U] extends [never] ? [] : [...UnionToTuple>, Last]; /* Excluded from this release type: updateFallbackLocale */ /* Excluded from this release type: VERSION */ export { }