core-base.d.ts 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187
  1. import type { BaseError } from '@intlify/shared';
  2. import { CompileError } from '@intlify/message-compiler';
  3. import { CompileErrorCodes } from '@intlify/message-compiler';
  4. import type { CompileOptions } from '@intlify/message-compiler';
  5. import type { CoreMissingType as CoreMissingType_2 } from '@intlify/core-base';
  6. import { createCompileError } from '@intlify/message-compiler';
  7. import type { Emittable } from '@intlify/shared';
  8. import type { Locale as Locale_2 } from '@intlify/core-base';
  9. import type { MessageFunction as MessageFunction_2 } from '@intlify/core-base';
  10. import type { Path as Path_2 } from '@intlify/core-base';
  11. import type { PathValue as PathValue_2 } from '@intlify/core-base';
  12. import { ResourceNode } from '@intlify/message-compiler';
  13. import type { ResourceNode as ResourceNode_2 } from '@intlify/core-base';
  14. declare type __ResourceFormatPath<T, Key extends keyof T> = Key extends string ? T[Key] extends Record<string, any> ? `${Key}` : never : never;
  15. export declare type __ResourcePath<T, Key extends keyof T> = Key extends string ? T[Key] extends Record<string, any> ? `${Key}.${__ResourcePath<T[Key], Exclude<keyof T[Key], keyof any[]>> & string}` | `${Key}.${Exclude<keyof T[Key], keyof any[]> & string}` : never : never;
  16. declare type AdditionalPayloads = {
  17. meta?: Record<string, unknown>;
  18. };
  19. export declare function clearCompileCache(): void;
  20. /* Excluded from this release type: clearDateTimeFormat */
  21. /* Excluded from this release type: clearNumberFormat */
  22. export declare function compile<Message = string, MessageSource = string | ResourceNode>(message: MessageSource, context: MessageCompilerContext): MessageFunction<Message>;
  23. export { CompileError }
  24. export { CompileErrorCodes }
  25. export declare const compileToFunction: <Message = string, MessageSource = string | ResourceNode>(message: MessageSource, context: MessageCompilerContext) => MessageFunction<Message>;
  26. export declare interface CoreCommonContext<Message = string, Locales = 'en-US'> {
  27. cid: number;
  28. version: string;
  29. locale: Locales;
  30. fallbackLocale: FallbackLocales<Locales>;
  31. missing: CoreMissingHandler<Message> | null;
  32. missingWarn: boolean | RegExp;
  33. fallbackWarn: boolean | RegExp;
  34. fallbackFormat: boolean;
  35. unresolving: boolean;
  36. localeFallbacker: LocaleFallbacker;
  37. onWarn(msg: string, err?: Error): void;
  38. }
  39. export declare type CoreContext<Message = string, Messages = {}, DateTimeFormats = {}, NumberFormats = {}, LocaleType = Locale, ResourceLocales = PickupLocales<NonNullable<Messages>> | PickupLocales<NonNullable<DateTimeFormats>> | PickupLocales<NonNullable<NumberFormats>>, Locales = LocaleType extends LocaleDetector ? Locale : [ResourceLocales] extends [never] ? Locale : ResourceLocales> = CoreCommonContext<Message, Locales> & CoreTranslationContext<NonNullable<Messages>, Message> & CoreDateTimeContext<NonNullable<DateTimeFormats>> & CoreNumberContext<NonNullable<NumberFormats>> & {
  40. fallbackContext?: CoreContext<Message, Messages, DateTimeFormats, NumberFormats, LocaleType, ResourceLocales, Locales>;
  41. };
  42. export declare interface CoreDateTimeContext<DateTimeFormats = {}> {
  43. datetimeFormats: {
  44. [K in keyof DateTimeFormats]: DateTimeFormats[K];
  45. };
  46. }
  47. export declare interface CoreError extends BaseError {
  48. }
  49. export declare const CoreErrorCodes: {
  50. readonly INVALID_ARGUMENT: 17;
  51. readonly INVALID_DATE_ARGUMENT: number;
  52. readonly INVALID_ISO_DATE_ARGUMENT: number;
  53. readonly NOT_SUPPORT_NON_STRING_MESSAGE: number;
  54. readonly __EXTEND_POINT__: number;
  55. };
  56. export declare type CoreErrorCodes = (typeof CoreErrorCodes)[keyof typeof CoreErrorCodes];
  57. export declare interface CoreInternalContext {
  58. __datetimeFormatters: Map<string, Intl.DateTimeFormat>;
  59. __numberFormatters: Map<string, Intl.NumberFormat>;
  60. __localeChainCache?: Map<Locale, Locale[]>;
  61. __v_emitter?: VueDevToolsEmitter;
  62. __meta: MetaInfo;
  63. }
  64. export declare interface CoreInternalOptions {
  65. __datetimeFormatters?: Map<string, Intl.DateTimeFormat>;
  66. __numberFormatters?: Map<string, Intl.NumberFormat>;
  67. __v_emitter?: VueDevToolsEmitter;
  68. __meta?: MetaInfo;
  69. }
  70. export declare type CoreMissingHandler<Message = string> = (context: CoreContext<Message>, locale: Locale, key: Path, type: CoreMissingType, ...values: unknown[]) => string | void;
  71. export declare type CoreMissingType = 'translate' | 'datetime format' | 'number format';
  72. export declare interface CoreNumberContext<NumberFormats = {}> {
  73. numberFormats: {
  74. [K in keyof NumberFormats]: NumberFormats[K];
  75. };
  76. }
  77. export declare interface CoreOptions<Message = string, Schema extends {
  78. message?: unknown;
  79. datetime?: unknown;
  80. number?: unknown;
  81. } = {
  82. message: LocaleMessage<Message>;
  83. datetime: DateTimeFormat;
  84. number: NumberFormat;
  85. }, Locales extends {
  86. messages: unknown;
  87. datetimeFormats: unknown;
  88. numberFormats: unknown;
  89. } | string = Locale, MessagesLocales = Locales extends {
  90. messages: infer M;
  91. } ? M : Locales extends string ? Locales : Locale, DateTimeFormatsLocales = Locales extends {
  92. datetimeFormats: infer D;
  93. } ? D : Locales extends string ? Locales : Locale, NumberFormatsLocales = Locales extends {
  94. numberFormats: infer N;
  95. } ? N : Locales extends string ? Locales : Locale, MessageSchema = Schema extends {
  96. message: infer M;
  97. } ? M : LocaleMessage<Message>, DateTimeSchema = Schema extends {
  98. datetime: infer D;
  99. } ? D : DateTimeFormat, NumberSchema = Schema extends {
  100. number: infer N;
  101. } ? N : NumberFormat, _Messages extends LocaleMessages<MessageSchema, MessagesLocales, Message> = LocaleMessages<MessageSchema, MessagesLocales, Message>, _DateTimeFormats extends DateTimeFormats<DateTimeSchema, DateTimeFormatsLocales> = DateTimeFormats<DateTimeSchema, DateTimeFormatsLocales>, _NumberFormats extends NumberFormats<NumberSchema, NumberFormatsLocales> = NumberFormats<NumberSchema, NumberFormatsLocales>> {
  102. version?: string;
  103. locale?: Locale | LocaleDetector;
  104. fallbackLocale?: FallbackLocale;
  105. messages?: {
  106. [K in keyof _Messages]: MessageSchema;
  107. };
  108. datetimeFormats?: {
  109. [K in keyof _DateTimeFormats]: DateTimeSchema;
  110. };
  111. numberFormats?: {
  112. [K in keyof _NumberFormats]: NumberSchema;
  113. };
  114. modifiers?: LinkedModifiers<Message>;
  115. pluralRules?: PluralizationRules;
  116. missing?: CoreMissingHandler<Message>;
  117. missingWarn?: boolean | RegExp;
  118. fallbackWarn?: boolean | RegExp;
  119. fallbackFormat?: boolean;
  120. unresolving?: boolean;
  121. postTranslation?: PostTranslationHandler<Message>;
  122. processor?: MessageProcessor<Message>;
  123. warnHtmlMessage?: boolean;
  124. escapeParameter?: boolean;
  125. messageCompiler?: MessageCompiler<Message, string | ResourceNode>;
  126. messageResolver?: MessageResolver;
  127. localeFallbacker?: LocaleFallbacker;
  128. fallbackContext?: CoreContext<Message, MessagesLocales, DateTimeFormatsLocales, NumberFormatsLocales>;
  129. onWarn?: (msg: string, err?: Error) => void;
  130. }
  131. export declare interface CoreTranslationContext<Messages = {}, Message = string> {
  132. messages: {
  133. [K in keyof Messages]: Messages[K];
  134. };
  135. modifiers: LinkedModifiers<Message>;
  136. pluralRules?: PluralizationRules;
  137. postTranslation: PostTranslationHandler<Message> | null;
  138. processor: MessageProcessor<Message> | null;
  139. warnHtmlMessage: boolean;
  140. escapeParameter: boolean;
  141. messageCompiler: MessageCompiler<Message, string | ResourceNode> | null;
  142. messageResolver: MessageResolver;
  143. }
  144. export declare const CoreWarnCodes: {
  145. readonly NOT_FOUND_KEY: 1;
  146. readonly FALLBACK_TO_TRANSLATE: 2;
  147. readonly CANNOT_FORMAT_NUMBER: 3;
  148. readonly FALLBACK_TO_NUMBER_FORMAT: 4;
  149. readonly CANNOT_FORMAT_DATE: 5;
  150. readonly FALLBACK_TO_DATE_FORMAT: 6;
  151. readonly EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: 7;
  152. readonly __EXTEND_POINT__: 8;
  153. };
  154. export declare type CoreWarnCodes = (typeof CoreWarnCodes)[keyof typeof CoreWarnCodes];
  155. export { createCompileError }
  156. export declare function createCoreContext<Message = string, Options extends CoreOptions<Message> = CoreOptions<Message>, Messages extends Record<string, any> = Options['messages'] extends Record<string, any> ? Options['messages'] : {}, DateTimeFormats extends Record<string, any> = Options['datetimeFormats'] extends Record<string, any> ? Options['datetimeFormats'] : {}, NumberFormats extends Record<string, any> = Options['numberFormats'] extends Record<string, any> ? Options['numberFormats'] : {}, LocaleType extends LocaleDetector | Locale = NonNullable<Options['locale']> extends LocaleDetector ? LocaleDetector : Locale>(options: Options): CoreContext<Message, Messages, DateTimeFormats, NumberFormats, LocaleType>;
  157. export declare function createCoreContext<Schema = LocaleMessage, Locales = 'en-US', Message = string, Options extends CoreOptions<Message, SchemaParams<Schema, Message>, LocaleParams<Locales>> = CoreOptions<Message, SchemaParams<Schema, Message>, LocaleParams<Locales>>, Messages extends Record<string, any> = NonNullable<Options['messages']> extends Record<string, any> ? NonNullable<Options['messages']> : {}, DateTimeFormats extends Record<string, any> = NonNullable<Options['datetimeFormats']> extends Record<string, any> ? NonNullable<Options['datetimeFormats']> : {}, NumberFormats extends Record<string, any> = NonNullable<Options['numberFormats']> extends Record<string, any> ? NonNullable<Options['numberFormats']> : {}, LocaleType extends LocaleDetector | Locale = NonNullable<Options['locale']> extends LocaleDetector ? LocaleDetector : Locale>(options: Options): CoreContext<Message, Messages, DateTimeFormats, NumberFormats, LocaleType>;
  158. export declare function createCoreError(code: CoreErrorCodes): CoreError;
  159. export declare function createMessageContext<T = string, N = {}>(options?: MessageContextOptions<T, N>): MessageContext<T>;
  160. /**
  161. * number
  162. */
  163. export declare type CurrencyDisplay = 'symbol' | 'code' | 'name';
  164. export declare interface CurrencyNumberFormatOptions extends Intl.NumberFormatOptions {
  165. style: 'currency';
  166. currency: string;
  167. currencyDisplay?: CurrencyDisplay;
  168. localeMatcher?: LocaleMatcher;
  169. formatMatcher?: FormatMatcher;
  170. }
  171. /**
  172. * `datetime` function overloads
  173. */
  174. export declare function datetime<Context extends CoreContext<Message, {}, {}, {}>, Message = string>(context: Context, value: number | string | Date): string | number | Intl.DateTimeFormatPart[];
  175. export declare function datetime<Context extends CoreContext<Message, {}, {}, {}>, Value extends number | string | Date = number, Key extends string = string, ResourceKeys extends PickupFormatKeys<Context['datetimeFormats']> = PickupFormatKeys<Context['datetimeFormats']>, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | DateTimeOptions<Key | ResourceKeys, Context['locale']>): string | number | Intl.DateTimeFormatPart[];
  176. export declare function datetime<Context extends CoreContext<Message, {}, {}, {}>, Value extends number | string | Date = number, Key extends string = string, ResourceKeys extends PickupFormatKeys<Context['datetimeFormats']> = PickupFormatKeys<Context['datetimeFormats']>, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | DateTimeOptions<Key | ResourceKeys, Context['locale']>, locale: Context['locale']): string | number | Intl.DateTimeFormatPart[];
  177. export declare function datetime<Context extends CoreContext<Message, {}, {}, {}>, Value extends number | string | Date = number, Key extends string = string, ResourceKeys extends PickupFormatKeys<Context['datetimeFormats']> = PickupFormatKeys<Context['datetimeFormats']>, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | DateTimeOptions<Key | ResourceKeys, Context['locale']>, override: Intl.DateTimeFormatOptions): string | number | Intl.DateTimeFormatPart[];
  178. export declare function datetime<Context extends CoreContext<Message, {}, {}, {}>, Value extends number | string | Date = number, Key extends string = string, ResourceKeys extends PickupFormatKeys<Context['datetimeFormats']> = PickupFormatKeys<Context['datetimeFormats']>, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | DateTimeOptions<Key | ResourceKeys, Context['locale']>, locale: Context['locale'], override: Intl.DateTimeFormatOptions): string | number | Intl.DateTimeFormatPart[];
  179. /* Excluded from this release type: DATETIME_FORMAT_OPTIONS_KEYS */
  180. export declare type DateTimeDigital = 'numeric' | '2-digit';
  181. export declare type DateTimeFormat = {
  182. [key: string]: DateTimeFormatOptions;
  183. };
  184. export declare type DateTimeFormatOptions = Intl.DateTimeFormatOptions | SpecificDateTimeFormatOptions;
  185. export declare type DateTimeFormats<Schema = DateTimeFormat, Locales = Locale> = LocaleRecord<UnionToTuple<Locales>, Schema>;
  186. /**
  187. * datetime
  188. */
  189. export declare type DateTimeHumanReadable = 'long' | 'short' | 'narrow';
  190. /**
  191. * # datetime
  192. *
  193. * ## usages:
  194. * // for example `context.datetimeFormats` below
  195. * 'en-US': {
  196. * short: {
  197. * year: 'numeric', month: '2-digit', day: '2-digit',
  198. * hour: '2-digit', minute: '2-digit'
  199. * }
  200. * },
  201. * 'ja-JP': { ... }
  202. *
  203. * // datetimeable value only
  204. * datetime(context, value)
  205. *
  206. * // key argument
  207. * datetime(context, value, 'short')
  208. *
  209. * // key & locale argument
  210. * datetime(context, value, 'short', 'ja-JP')
  211. *
  212. * // object sytle argument
  213. * datetime(context, value, { key: 'short', locale: 'ja-JP' })
  214. *
  215. * // suppress localize miss warning option, override context.missingWarn
  216. * datetime(context, value, { key: 'short', locale: 'ja-JP', missingWarn: false })
  217. *
  218. * // suppress localize fallback warning option, override context.fallbackWarn
  219. * datetime(context, value, { key: 'short', locale: 'ja-JP', fallbackWarn: false })
  220. *
  221. * // if you specify `part` options, you can get an array of objects containing the formatted datetime in parts
  222. * datetime(context, value, { key: 'short', part: true })
  223. *
  224. * // orverride context.datetimeFormats[locale] options with functino options
  225. * datetime(cnotext, value, 'short', { year: '2-digit' })
  226. * datetime(cnotext, value, 'short', 'ja-JP', { year: '2-digit' })
  227. * datetime(context, value, { key: 'short', part: true, year: '2-digit' })
  228. */
  229. /**
  230. * DateTime options
  231. *
  232. * @remarks
  233. * Options for Datetime formatting API
  234. *
  235. * @VueI18nGeneral
  236. */
  237. export declare interface DateTimeOptions<Key = string, Locales = Locale> extends Intl.DateTimeFormatOptions, LocaleOptions<Locales> {
  238. /**
  239. * @remarks
  240. * The target format key
  241. */
  242. key?: Key;
  243. /**
  244. * @remarks
  245. * Whether suppress warnings outputted when localization fails
  246. */
  247. missingWarn?: boolean;
  248. /**
  249. * @remarks
  250. * Whether do resolve on format keys when your language lacks a formatting for a key
  251. */
  252. fallbackWarn?: boolean;
  253. /**
  254. * @remarks
  255. * Whether to use [Intel.DateTimeFormat#formatToParts](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)
  256. */
  257. part?: boolean;
  258. }
  259. export declare const DEFAULT_LOCALE = "en-US";
  260. export declare const DEFAULT_MESSAGE_DATA_TYPE = "text";
  261. declare type ExtractToStringFunction<T> = T[ExtractToStringKey<T>];
  262. declare type ExtractToStringKey<T> = Extract<keyof T, 'toString'>;
  263. /** @VueI18nGeneral */
  264. export declare type FallbackLocale = Locale | Locale[] | {
  265. [locale in string]: Locale[];
  266. } | false;
  267. export declare type FallbackLocales<Locales = 'en-US'> = Locales | Array<Locales> | {
  268. [locale in string]: Array<PickupFallbackLocales<UnionToTuple<Locales>>>;
  269. } | false;
  270. /**
  271. * Fallback with locale chain
  272. *
  273. * @remarks
  274. * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.
  275. *
  276. * @param ctx - A {@link CoreContext | context}
  277. * @param fallback - A {@link FallbackLocale | fallback locale}
  278. * @param start - A starting {@link Locale | locale}
  279. *
  280. * @returns Fallback locales
  281. *
  282. * @VueI18nSee [Fallbacking](../guide/essentials/fallback)
  283. *
  284. * @VueI18nGeneral
  285. */
  286. export declare function fallbackWithLocaleChain<Message = string>(ctx: CoreContext<Message>, fallback: FallbackLocale, start: Locale): Locale[];
  287. /**
  288. * Fallback with simple implemenation
  289. *
  290. * @remarks
  291. * A fallback locale function implemented with a simple fallback algorithm.
  292. *
  293. * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.
  294. *
  295. * @param ctx - A {@link CoreContext | context}
  296. * @param fallback - A {@link FallbackLocale | fallback locale}
  297. * @param start - A starting {@link Locale | locale}
  298. *
  299. * @returns Fallback locales
  300. *
  301. * @VueI18nGeneral
  302. */
  303. export declare function fallbackWithSimple<Message = string>(ctx: CoreContext<Message>, fallback: FallbackLocale, start: Locale): Locale[];
  304. export declare type First<T extends readonly any[]> = T[0];
  305. export declare type FormatMatcher = 'basic' | 'best fit';
  306. export declare type FormattedNumberPart = {
  307. type: FormattedNumberPartType;
  308. value: string;
  309. };
  310. export declare type FormattedNumberPartType = 'currency' | 'decimal' | 'fraction' | 'group' | 'infinity' | 'integer' | 'literal' | 'minusSign' | 'nan' | 'plusSign' | 'percentSign';
  311. export declare const getAdditionalMeta: () => MetaInfo | null;
  312. export declare function getDevToolsHook(): IntlifyDevToolsEmitter | null;
  313. export declare const getFallbackContext: () => CoreContext | null;
  314. /* Excluded from this release type: getLocale */
  315. export declare function getWarnMessage(code: CoreWarnCodes, ...args: unknown[]): string;
  316. /* Excluded from this release type: handleMissing */
  317. export declare function initI18nDevTools(i18n: unknown, version: string, meta?: Record<string, unknown>): void;
  318. declare type IntlifyDevToolsEmitter = Emittable<IntlifyDevToolsEmitterHooks>;
  319. declare type IntlifyDevToolsEmitterHooks = {
  320. [IntlifyDevToolsHooks.I18nInit]: IntlifyDevToolsHookPayloads[IntlifyDevToolsHooks.I18nInit];
  321. [IntlifyDevToolsHooks.FunctionTranslate]: IntlifyDevToolsHookPayloads[IntlifyDevToolsHooks.FunctionTranslate];
  322. };
  323. declare type IntlifyDevToolsHookPayloads = {
  324. [IntlifyDevToolsHooks.I18nInit]: {
  325. timestamp: number;
  326. i18n: unknown;
  327. version: string;
  328. } & AdditionalPayloads;
  329. [IntlifyDevToolsHooks.FunctionTranslate]: {
  330. timestamp: number;
  331. message: string | number;
  332. key: string;
  333. locale: string;
  334. format?: string;
  335. } & AdditionalPayloads;
  336. };
  337. declare const enum IntlifyDevToolsHooks {
  338. I18nInit = "i18n:init",
  339. FunctionTranslate = "function:translate"
  340. }
  341. export declare type IsEmptyObject<T> = [keyof T] extends [never] ? true : false;
  342. export declare const isMessageAST: (val: unknown) => val is ResourceNode;
  343. export declare const isMessageFunction: <T>(val: unknown) => val is MessageFunction<T>;
  344. export declare type IsNever<T> = [T] extends [never] ? true : false;
  345. /* Excluded from this release type: isTranslateFallbackWarn */
  346. /* Excluded from this release type: isTranslateMissingWarn */
  347. export declare type IsUnion<T, B = T> = T extends B ? [B] extends [T] ? false : true : never;
  348. export declare type LastInUnion<U> = UnionToIntersection<U extends unknown ? (x: U) => 0 : never> extends (x: infer L) => 0 ? L : never;
  349. /** @VueI18nGeneral */
  350. export declare type LinkedModifiers<T = string> = {
  351. [key: string]: LinkedModify<T>;
  352. };
  353. export declare type LinkedModify<T = string> = (value: T, type: string) => MessageType<T>;
  354. export declare interface LinkedOptions {
  355. /**
  356. * The message type of linked message
  357. */
  358. type?: string;
  359. /**
  360. * The modifier of linked message
  361. */
  362. modifier?: string;
  363. }
  364. /** @VueI18nGeneral */
  365. export declare type Locale = string;
  366. /** @VueI18nGeneral */
  367. export declare interface LocaleDetector {
  368. (): Locale;
  369. resolvedOnce?: boolean;
  370. }
  371. /**
  372. * The locale fallbacker
  373. *
  374. * @VueI18nGeneral
  375. */
  376. export declare type LocaleFallbacker = <Message = string>(ctx: CoreContext<Message>, fallback: FallbackLocale, start: Locale) => Locale[];
  377. export declare type LocaleMatcher = 'lookup' | 'best fit';
  378. /** @VueI18nGeneral */
  379. export declare type LocaleMessage<Message = string> = Record<string, LocaleMessageValue<Message>>;
  380. /** @VueI18nGeneral */
  381. export declare type LocaleMessageDictionary<T, Message = string> = {
  382. [K in keyof T]: LocaleMessageType<T[K], Message>;
  383. };
  384. /** @VueI18nGeneral */
  385. export declare type LocaleMessages<Schema, Locales = Locale, Message = string> = LocaleRecord<UnionToTuple<Locales>, Schema>;
  386. /** @VueI18nGeneral */
  387. export declare type LocaleMessageType<T, Message = string> = T extends string ? string : T extends () => Promise<infer P> ? LocaleMessageDictionary<P, Message> : T extends (...args: infer Arguments) => any ? (...args: Arguments) => ReturnType<T> : T extends Record<string, unknown> ? LocaleMessageDictionary<T, Message> : T extends Array<T> ? {
  388. [K in keyof T]: T[K];
  389. } : T;
  390. /** @VueI18nGeneral */
  391. export declare type LocaleMessageValue<Message = string> = LocaleMessageDictionary<any, Message> | string;
  392. /** @VueI18nGeneral */
  393. export declare interface LocaleOptions<Locales = Locale> {
  394. /**
  395. * @remarks
  396. * The locale of localization
  397. */
  398. locale?: Locales | LocaleDetector;
  399. }
  400. export declare type LocaleParams<T, Default = 'en-US'> = T extends IsUnion<T> ? {
  401. messages: T;
  402. datetimeFormats: T;
  403. numberFormats: T;
  404. } : T extends {
  405. messages?: infer M;
  406. datetimeFormats?: infer D;
  407. numberFormats?: infer N;
  408. } ? {
  409. messages: LocaleParamsType<M, Default>;
  410. datetimeFormats: LocaleParamsType<D, Default>;
  411. numberFormats: LocaleParamsType<N, Default>;
  412. } : T extends string ? {
  413. messages: T;
  414. datetimeFormats: T;
  415. numberFormats: T;
  416. } : {
  417. messages: Default;
  418. datetimeFormats: Default;
  419. numberFormats: Default;
  420. };
  421. declare type LocaleParamsType<T, R> = T extends IsUnion<T> ? T : T extends string ? T : R;
  422. export declare type LocaleRecord<T extends any[], R> = {
  423. [K in T[number]]: R;
  424. };
  425. /**
  426. * The message compiler
  427. *
  428. * @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.
  429. * @param context - A message context {@link MessageCompilerContext}
  430. *
  431. * @returns A {@link MessageFunction}
  432. *
  433. * @VueI18nGeneral
  434. */
  435. export declare type MessageCompiler<Message = string, MessageSource = string | ResourceNode> = (message: MessageSource, context: MessageCompilerContext) => MessageFunction<Message>;
  436. /**
  437. * The context that will pass the message compiler.
  438. *
  439. * @VueI18nGeneral
  440. */
  441. export declare type MessageCompilerContext = Pick<CompileOptions, 'onError' | 'onCacheKey'> & {
  442. /**
  443. * Whether to allow the use locale messages of HTML formatting.
  444. */
  445. warnHtmlMessage?: boolean;
  446. /**
  447. * The resolved locale message key
  448. */
  449. key: string;
  450. /**
  451. * The locale
  452. */
  453. locale: Locale;
  454. };
  455. /**
  456. * The message context.
  457. *
  458. * @VueI18nGeneral
  459. */
  460. export declare interface MessageContext<T = string> {
  461. /**
  462. * Resolve message value from list.
  463. *
  464. * @param index - An index of message values.
  465. *
  466. * @returns A resolved message value.
  467. *
  468. * @example
  469. * ```js
  470. * const messages = {
  471. * en: {
  472. * greeting: ({ list }) => `hello, ${list(0)}!`
  473. * }
  474. * }
  475. * ```
  476. */
  477. list(index: number): unknown;
  478. /**
  479. * Resolve message value from named.
  480. *
  481. * @param key - A key of message value.
  482. *
  483. * @returns A resolved message value.
  484. *
  485. * @example
  486. * ```js
  487. * const messages = {
  488. * en: {
  489. * greeting: ({ named }) => `hello, ${named('name')}!`
  490. * }
  491. * }
  492. * ```
  493. */
  494. named(key: string): unknown;
  495. /**
  496. * Resolve message with plural index.
  497. *
  498. * @remarks
  499. * That's resolved with plural index with translation function.
  500. *
  501. * @param messages - the messages, that is resolved with plural index with translation function.
  502. *
  503. * @returns A resolved message.
  504. *
  505. * @example
  506. * ```js
  507. * const messages = {
  508. * en: {
  509. * car: ({ plural }) => plural(['car', 'cars']),
  510. * apple: ({ plural, named }) =>
  511. * plural([
  512. * 'no apples',
  513. * 'one apple',
  514. * `${named('count')} apples`
  515. * ])
  516. * }
  517. * }
  518. * ```
  519. */
  520. plural(messages: T[]): T;
  521. /**
  522. * Resolve linked message.
  523. *
  524. * @param key - A message key
  525. * @param modifier - A modifier
  526. *
  527. * @returns A resolve message.
  528. */
  529. linked(key: Path, modifier?: string): MessageType<T>;
  530. /**
  531. * Overloaded `linked`
  532. *
  533. * @param key - A message key
  534. * @param modifier - A modifier
  535. * @param type - A message type
  536. *
  537. * @returns A resolve message.
  538. */
  539. linked(key: Path, modifier?: string, type?: string): MessageType<T>;
  540. /**
  541. * Overloaded `linked`
  542. *
  543. * @param key - A message key
  544. * @param optoins - An {@link LinkedOptions | linked options}
  545. *
  546. * @returns A resolve message.
  547. */
  548. linked(key: Path, optoins?: LinkedOptions): MessageType<T>;
  549. /* Excluded from this release type: message */
  550. /**
  551. * The message type to be handled by the message function.
  552. *
  553. * @remarks
  554. * Usually `text`, you need to return **string** in message function.
  555. */
  556. type: string;
  557. /* Excluded from this release type: interpolate */
  558. /* Excluded from this release type: normalize */
  559. /**
  560. * The message values.
  561. *
  562. * @remarks
  563. * The message values are the argument values passed from translation fucntion, such as `$t`, `t`, or `translate`.
  564. *
  565. * @example
  566. * vue-i18n `$t` (or `t`) case:
  567. * ```html
  568. * <p>{{ $t('greeting', { name: 'DIO' }) }}</p> <!-- `{ name: 'DIO' }` is message vlaues -->
  569. * ```
  570. *
  571. * `@intlify/core` (`@intlify/core-base`) `translate` case:
  572. * ```js
  573. * translate(context, 'foo.bar', ['dio']) // `['dio']` is message values
  574. * ```
  575. */
  576. values: Record<string, unknown>;
  577. }
  578. export declare interface MessageContextOptions<T = string, N = {}> {
  579. parent?: MessageContext<T>;
  580. locale?: string;
  581. list?: unknown[];
  582. named?: NamedValue<N>;
  583. modifiers?: LinkedModifiers<T>;
  584. pluralIndex?: number;
  585. pluralRules?: PluralizationRules;
  586. messages?: MessageFunctions<T> | MessageResolveFunction<T>;
  587. processor?: MessageProcessor<T>;
  588. }
  589. /**
  590. * The Message Function.
  591. *
  592. * @param ctx - A {@link MessageContext}
  593. *
  594. * @return A resolved format message, that is string type basically.
  595. *
  596. * @VueI18nGeneral
  597. */
  598. export declare type MessageFunction<T = string> = MessageFunctionCallable | MessageFunctionInternal<T>;
  599. export declare type MessageFunctionCallable = <T = string>(ctx: MessageContext<T>) => MessageFunctionReturn<T>;
  600. export declare type MessageFunctionInternal<T = string> = {
  601. (ctx: MessageContext<T>): MessageFunctionReturn<T>;
  602. key?: string;
  603. locale?: string;
  604. source?: string;
  605. };
  606. /** @VueI18nGeneral */
  607. export declare type MessageFunctionReturn<T = string> = T extends string ? MessageType<T> : MessageType<T>[];
  608. export declare type MessageFunctions<T = string> = Record<string, MessageFunction<T>>;
  609. export declare type MessageInterpolate<T = string> = (val: unknown) => MessageType<T>;
  610. export declare type MessageNormalize<T = string> = (values: MessageType<T>[]) => MessageFunctionReturn<T>;
  611. export declare interface MessageProcessor<T = string> {
  612. type?: string;
  613. interpolate?: MessageInterpolate<T>;
  614. normalize?: MessageNormalize<T>;
  615. }
  616. export declare type MessageResolveFunction<T = string> = (key: string) => MessageFunction<T>;
  617. /** @VueI18nGeneral */
  618. export declare type MessageResolver = (obj: unknown, path: Path) => PathValue;
  619. export declare type MessageType<T = string> = T extends string ? string : StringConvertable<T>;
  620. export declare interface MetaInfo {
  621. [field: string]: unknown;
  622. }
  623. export declare const MISSING_RESOLVE_VALUE = "";
  624. /** @VueI18nGeneral */
  625. export declare type NamedValue<T = {}> = T & Record<string, unknown>;
  626. export declare const NOT_REOSLVED = -1;
  627. /**
  628. * `number` function overloads
  629. */
  630. export declare function number<Context extends CoreContext<Message, {}, {}, {}>, Message = string>(context: Context, value: number): string | number | Intl.NumberFormatPart[];
  631. export declare function number<Context extends CoreContext<Message, {}, {}, {}>, Value extends number = number, Key extends string = string, ResourceKeys extends PickupFormatKeys<Context['numberFormats']> = PickupFormatKeys<Context['numberFormats']>, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | NumberOptions<Key | ResourceKeys, Context['locale']>): string | number | Intl.NumberFormatPart[];
  632. export declare function number<Context extends CoreContext<Message, {}, {}, {}>, Value extends number = number, Key extends string = string, ResourceKeys extends PickupFormatKeys<Context['numberFormats']> = PickupFormatKeys<Context['numberFormats']>, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | NumberOptions<Key | ResourceKeys, Context['locale']>, locale: Context['locale']): string | number | Intl.NumberFormatPart[];
  633. export declare function number<Context extends CoreContext<Message, {}, {}, {}>, Value extends number = number, Key extends string = string, ResourceKeys extends PickupFormatKeys<Context['numberFormats']> = PickupFormatKeys<Context['numberFormats']>, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | NumberOptions<Key | ResourceKeys, Context['locale']>, override: Intl.NumberFormatOptions): string | number | Intl.NumberFormatPart[];
  634. export declare function number<Context extends CoreContext<Message, {}, {}, {}>, Value extends number = number, Key extends string = string, ResourceKeys extends PickupFormatKeys<Context['numberFormats']> = PickupFormatKeys<Context['numberFormats']>, Message = string>(context: Context, value: Value, keyOrOptions: Key | ResourceKeys | NumberOptions<Key | ResourceKeys, Context['locale']>, locale: Context['locale'], override: Intl.NumberFormatOptions): string | number | Intl.NumberFormatPart[];
  635. /* Excluded from this release type: NUMBER_FORMAT_OPTIONS_KEYS */
  636. export declare type NumberFormat = {
  637. [key: string]: NumberFormatOptions;
  638. };
  639. export declare type NumberFormatOptions = Intl.NumberFormatOptions | SpecificNumberFormatOptions | CurrencyNumberFormatOptions;
  640. export declare type NumberFormats<Schema = NumberFormat, Locales = Locale> = LocaleRecord<UnionToTuple<Locales>, Schema>;
  641. export declare type NumberFormatToPartsResult = {
  642. [index: number]: FormattedNumberPart;
  643. };
  644. /**
  645. * # number
  646. *
  647. * ## usages
  648. * // for example `context.numberFormats` below
  649. * 'en-US': {
  650. * 'currency': {
  651. * style: 'currency', currency: 'USD', currencyDisplay: 'symbol'
  652. * }
  653. * },
  654. * 'ja-JP: { ... }
  655. *
  656. * // value only
  657. * number(context, value)
  658. *
  659. * // key argument
  660. * number(context, value, 'currency')
  661. *
  662. * // key & locale argument
  663. * number(context, value, 'currency', 'ja-JP')
  664. *
  665. * // object sytle argument
  666. * number(context, value, { key: 'currency', locale: 'ja-JP' })
  667. *
  668. * // suppress localize miss warning option, override context.missingWarn
  669. * number(context, value, { key: 'currency', locale: 'ja-JP', missingWarn: false })
  670. *
  671. * // suppress localize fallback warning option, override context.fallbackWarn
  672. * number(context, value, { key: 'currency', locale: 'ja-JP', fallbackWarn: false })
  673. *
  674. * // if you specify `part` options, you can get an array of objects containing the formatted number in parts
  675. * number(context, value, { key: 'currenty', part: true })
  676. *
  677. * // orverride context.numberFormats[locale] options with functino options
  678. * number(cnotext, value, 'currency', { year: '2-digit' })
  679. * number(cnotext, value, 'currency', 'ja-JP', { year: '2-digit' })
  680. * number(context, value, { key: 'currenty', locale: 'ja-JP', part: true, year: '2-digit'})
  681. */
  682. /**
  683. * Number Options
  684. *
  685. * @remarks
  686. * Options for Number formatting API
  687. *
  688. * @VueI18nGeneral
  689. */
  690. export declare interface NumberOptions<Key = string, Locales = Locale> extends Intl.NumberFormatOptions, LocaleOptions<Locales> {
  691. /**
  692. * @remarks
  693. * The target format key
  694. */
  695. key?: Key;
  696. /**
  697. * @remarks
  698. * Whether suppress warnings outputted when localization fails
  699. */
  700. missingWarn?: boolean;
  701. /**
  702. * @remarks
  703. * Whether do resolve on format keys when your language lacks a formatting for a key
  704. */
  705. fallbackWarn?: boolean;
  706. /**
  707. * @remarks
  708. * Whether to use [Intel.NumberFormat#formatToParts](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)
  709. */
  710. part?: boolean;
  711. }
  712. /**
  713. * Parse a string path into an array of segments
  714. */
  715. export declare function parse(path: Path): string[] | undefined;
  716. /* Excluded from this release type: parseDateTimeArgs */
  717. /* Excluded from this release type: parseNumberArgs */
  718. /* Excluded from this release type: parseTranslateArgs */
  719. /** @VueI18nGeneral */
  720. export declare type Path = string;
  721. /** @VueI18nGeneral */
  722. export declare type PathValue = string | number | boolean | Function | null | {
  723. [key: string]: PathValue;
  724. } | PathValue[];
  725. export declare type PickupFallbackLocales<T extends any[]> = T[number] | `${T[number]}!`;
  726. export declare type PickupFormatKeys<T extends Record<string, any>, K = keyof T> = K extends string ? ResourceFormatPath<T[K]> : never;
  727. export declare type PickupFormatPathKeys<T extends object> = ResourceFormatPath<T>;
  728. export declare type PickupKeys<T extends Record<string, any>, K = keyof T> = K extends string ? ResourcePath<T[K]> : never;
  729. export declare type PickupLocales<T extends Record<string, any>, K = keyof T> = K extends string ? K : never;
  730. export declare type PickupPaths<T extends object> = ResourcePath<T>;
  731. export declare type PluralizationProps = {
  732. n?: number;
  733. count?: number;
  734. };
  735. export declare type PluralizationRule = (choice: number, choicesLength: number, orgRule?: PluralizationRule) => number;
  736. /** @VueI18nGeneral */
  737. export declare type PluralizationRules = {
  738. [locale: string]: PluralizationRule;
  739. };
  740. /** @VueI18nGeneral */
  741. export declare type PostTranslationHandler<Message = string> = (translated: MessageFunctionReturn<Message>, key: string) => MessageFunctionReturn<Message>;
  742. /**
  743. * Register the locale fallbacker
  744. *
  745. * @param fallbacker - A {@link LocaleFallbacker} function
  746. *
  747. * @VueI18nGeneral
  748. */
  749. export declare function registerLocaleFallbacker(fallbacker: LocaleFallbacker): void;
  750. export declare function registerMessageCompiler<Message>(compiler: MessageCompiler<Message, string | ResourceNode>): void;
  751. /**
  752. * Register the message resolver
  753. *
  754. * @param resolver - A {@link MessageResolver} function
  755. *
  756. * @VueI18nGeneral
  757. */
  758. export declare function registerMessageResolver(resolver: MessageResolver): void;
  759. export declare type RemoveIndexSignature<T> = {
  760. [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
  761. };
  762. /* Excluded from this release type: resolveLocale */
  763. /**
  764. * message resolver
  765. *
  766. * @remarks
  767. * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.
  768. *
  769. * @param obj - A target object to be resolved with path
  770. * @param path - A {@link Path | path} to resolve the value of message
  771. *
  772. * @returns A resolved {@link PathValue | path value}
  773. *
  774. * @VueI18nGeneral
  775. */
  776. export declare function resolveValue(obj: unknown, path: Path): PathValue;
  777. /**
  778. * key-value message resolver
  779. *
  780. * @remarks
  781. * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved
  782. *
  783. * @param obj - A target object to be resolved with path
  784. * @param path - A {@link Path | path} to resolve the value of message
  785. *
  786. * @returns A resolved {@link PathValue | path value}
  787. *
  788. * @VueI18nGeneral
  789. */
  790. export declare function resolveWithKeyValue(obj: unknown, path: Path): PathValue;
  791. export declare type ResourceFormatPath<T> = _ResourceFormatPath<T> extends string | keyof T ? _ResourceFormatPath<T> : keyof T;
  792. declare type _ResourceFormatPath<T> = __ResourceFormatPath<T, keyof T> | keyof T;
  793. export { ResourceNode }
  794. export declare type ResourcePath<T> = _ResourcePath<T> extends string | keyof T ? _ResourcePath<T> : keyof T;
  795. export declare type _ResourcePath<T> = __ResourcePath<T, keyof T> | keyof T;
  796. export declare type ResourceValue<T, P extends ResourcePath<T>> = P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? Rest extends ResourcePath<T[Key]> ? ResourceValue<T[Key], Rest> : never : never : P extends keyof T ? T[P] : never;
  797. export declare type SchemaParams<T, Message = string> = T extends readonly any[] ? {
  798. message: First<T>;
  799. datetime: DateTimeFormat;
  800. number: NumberFormat;
  801. } : T extends {
  802. message?: infer M;
  803. datetime?: infer D;
  804. number?: infer N;
  805. } ? {
  806. message: M extends LocaleMessage<Message> ? M : LocaleMessage<Message>;
  807. datetime: D extends DateTimeFormat ? D : DateTimeFormat;
  808. number: N extends NumberFormat ? N : NumberFormat;
  809. } : {
  810. message: LocaleMessage<Message>;
  811. datetime: DateTimeFormat;
  812. number: NumberFormat;
  813. };
  814. export declare const setAdditionalMeta: (meta: MetaInfo | null) => void;
  815. export declare function setDevToolsHook(hook: IntlifyDevToolsEmitter | null): void;
  816. export declare const setFallbackContext: (context: CoreContext | null) => void;
  817. export declare interface SpecificDateTimeFormatOptions extends Intl.DateTimeFormatOptions {
  818. year?: DateTimeDigital;
  819. month?: DateTimeDigital | DateTimeHumanReadable;
  820. day?: DateTimeDigital;
  821. hour?: DateTimeDigital;
  822. minute?: DateTimeDigital;
  823. second?: DateTimeDigital;
  824. weekday?: DateTimeHumanReadable;
  825. era?: DateTimeHumanReadable;
  826. timeZoneName?: 'long' | 'short';
  827. localeMatcher?: LocaleMatcher;
  828. formatMatcher?: FormatMatcher;
  829. }
  830. export declare interface SpecificNumberFormatOptions extends Intl.NumberFormatOptions {
  831. style?: 'decimal' | 'percent';
  832. currency?: string;
  833. currencyDisplay?: CurrencyDisplay;
  834. localeMatcher?: LocaleMatcher;
  835. formatMatcher?: FormatMatcher;
  836. }
  837. declare type StringConvertable<T> = ExtractToStringKey<T> extends never ? unknown : ExtractToStringFunction<T> extends (...args: any) => string ? T : unknown;
  838. /**
  839. * `translate` function overloads
  840. */
  841. export declare function translate<Context extends CoreContext<Message>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>): MessageFunctionReturn<Message> | number;
  842. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, plural: number): MessageFunctionReturn<Message> | number;
  843. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, plural: number, options: TranslateOptions<Context['locale']>): MessageFunctionReturn<Message> | number;
  844. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, defaultMsg: string): MessageFunctionReturn<Message> | number;
  845. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, defaultMsg: string, options: TranslateOptions<Context['locale']>): MessageFunctionReturn<Message> | number;
  846. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, list: unknown[]): MessageFunctionReturn<Message> | number;
  847. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, list: unknown[], plural: number): MessageFunctionReturn<Message> | number;
  848. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, list: unknown[], defaultMsg: string): MessageFunctionReturn<Message> | number;
  849. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, list: unknown[], options: TranslateOptions<Context['locale']>): MessageFunctionReturn<Message> | number;
  850. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, named: NamedValue): MessageFunctionReturn<Message> | number;
  851. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, named: NamedValue, plural: number): MessageFunctionReturn<Message> | number;
  852. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, named: NamedValue, defaultMsg: string): MessageFunctionReturn<Message> | number;
  853. export declare function translate<Context extends CoreContext<Message, {}, {}, {}>, Key extends string = string, ResourceKeys extends PickupKeys<Context['messages']> = PickupKeys<Context['messages']>, Message = string>(context: Context, key: Key | ResourceKeys | number | MessageFunction<Message>, named: NamedValue, options: TranslateOptions<Context['locale']>): MessageFunctionReturn<Message> | number;
  854. export declare const translateDevTools: (payloads: IntlifyDevToolsHookPayloads[IntlifyDevToolsHooks]) => void | null;
  855. /**
  856. * # translate
  857. *
  858. * ## usages:
  859. * // for example, locale messages key
  860. * { 'foo.bar': 'hi {0} !' or 'hi {name} !' }
  861. *
  862. * // no argument, context & path only
  863. * translate(context, 'foo.bar')
  864. *
  865. * // list argument
  866. * translate(context, 'foo.bar', ['kazupon'])
  867. *
  868. * // named argument
  869. * translate(context, 'foo.bar', { name: 'kazupon' })
  870. *
  871. * // plural choice number
  872. * translate(context, 'foo.bar', 2)
  873. *
  874. * // plural choice number with name argument
  875. * translate(context, 'foo.bar', { name: 'kazupon' }, 2)
  876. *
  877. * // default message argument
  878. * translate(context, 'foo.bar', 'this is default message')
  879. *
  880. * // default message with named argument
  881. * translate(context, 'foo.bar', { name: 'kazupon' }, 'Hello {name} !')
  882. *
  883. * // use key as default message
  884. * translate(context, 'hi {0} !', ['kazupon'], { default: true })
  885. *
  886. * // locale option, override context.locale
  887. * translate(context, 'foo.bar', { name: 'kazupon' }, { locale: 'ja' })
  888. *
  889. * // suppress localize miss warning option, override context.missingWarn
  890. * translate(context, 'foo.bar', { name: 'kazupon' }, { missingWarn: false })
  891. *
  892. * // suppress localize fallback warning option, override context.fallbackWarn
  893. * translate(context, 'foo.bar', { name: 'kazupon' }, { fallbackWarn: false })
  894. *
  895. * // escape parameter option, override context.escapeParameter
  896. * translate(context, 'foo.bar', { name: 'kazupon' }, { escapeParameter: true })
  897. */
  898. /**
  899. * Translate Options
  900. *
  901. * @remarks
  902. * Options for Translation API
  903. *
  904. * @VueI18nGeneral
  905. */
  906. export declare interface TranslateOptions<Locales = Locale> extends LocaleOptions<Locales> {
  907. /**
  908. * @remarks
  909. * List interpolation
  910. */
  911. list?: unknown[];
  912. /**
  913. * @remarks
  914. * Named interpolation
  915. */
  916. named?: NamedValue;
  917. /**
  918. * @remarks
  919. * Plulralzation choice number
  920. */
  921. plural?: number;
  922. /**
  923. * @remarks
  924. * Default message when is occurred translation missing
  925. */
  926. default?: string | boolean;
  927. /**
  928. * @remarks
  929. * Whether suppress warnings outputted when localization fails
  930. */
  931. missingWarn?: boolean;
  932. /**
  933. * @remarks
  934. * Whether do template interpolation on translation keys when your language lacks a translation for a key
  935. */
  936. fallbackWarn?: boolean;
  937. /**
  938. * @remarks
  939. * Whether do escape parameter for list or named interpolation values
  940. */
  941. escapeParameter?: boolean;
  942. /**
  943. * @remarks
  944. * Whether the message has been resolved
  945. */
  946. resolvedMessage?: boolean;
  947. }
  948. export declare type UnionToIntersection<U> = (U extends any ? (arg: U) => void : never) extends (arg: infer I) => void ? I : never;
  949. export declare type UnionToTuple<U, Last = LastInUnion<U>> = [U] extends [never] ? [] : [...UnionToTuple<Exclude<U, Last>>, Last];
  950. /* Excluded from this release type: updateFallbackLocale */
  951. /* Excluded from this release type: VERSION */
  952. declare type VueDevToolsEmitter = Emittable<VueDevToolsEmitterEvents>;
  953. declare type VueDevToolsEmitterEvents = {
  954. [VueDevToolsTimelineEvents.COMPILE_ERROR]: VueDevToolsTimelineEventPayloads[VueDevToolsTimelineEvents.COMPILE_ERROR];
  955. [VueDevToolsTimelineEvents.MISSING]: VueDevToolsTimelineEventPayloads[VueDevToolsTimelineEvents.MISSING];
  956. [VueDevToolsTimelineEvents.FALBACK]: VueDevToolsTimelineEventPayloads[VueDevToolsTimelineEvents.FALBACK];
  957. [VueDevToolsTimelineEvents.MESSAGE_RESOLVE]: VueDevToolsTimelineEventPayloads[VueDevToolsTimelineEvents.MESSAGE_RESOLVE];
  958. [VueDevToolsTimelineEvents.MESSAGE_COMPILATION]: VueDevToolsTimelineEventPayloads[VueDevToolsTimelineEvents.MESSAGE_COMPILATION];
  959. [VueDevToolsTimelineEvents.MESSAGE_EVALUATION]: VueDevToolsTimelineEventPayloads[VueDevToolsTimelineEvents.MESSAGE_EVALUATION];
  960. };
  961. declare type VueDevToolsTimelineEventPayloads = {
  962. [VueDevToolsTimelineEvents.COMPILE_ERROR]: {
  963. message: string;
  964. error: string;
  965. start?: number;
  966. end?: number;
  967. groupId?: string;
  968. };
  969. [VueDevToolsTimelineEvents.MISSING]: {
  970. locale: Locale_2;
  971. key: Path_2;
  972. type: CoreMissingType_2;
  973. groupId?: string;
  974. };
  975. [VueDevToolsTimelineEvents.FALBACK]: {
  976. key: Path_2;
  977. type: CoreMissingType_2;
  978. from?: Locale_2;
  979. to: Locale_2 | 'global';
  980. groupId?: string;
  981. };
  982. [VueDevToolsTimelineEvents.MESSAGE_RESOLVE]: {
  983. type: VueDevToolsTimelineEvents.MESSAGE_RESOLVE;
  984. key: Path_2;
  985. message: PathValue_2;
  986. time: number;
  987. groupId?: string;
  988. };
  989. [VueDevToolsTimelineEvents.MESSAGE_COMPILATION]: {
  990. type: VueDevToolsTimelineEvents.MESSAGE_COMPILATION;
  991. message: string | ResourceNode_2 | MessageFunction_2;
  992. time: number;
  993. groupId?: string;
  994. };
  995. [VueDevToolsTimelineEvents.MESSAGE_EVALUATION]: {
  996. type: VueDevToolsTimelineEvents.MESSAGE_EVALUATION;
  997. value: unknown;
  998. time: number;
  999. groupId?: string;
  1000. };
  1001. };
  1002. declare const enum VueDevToolsTimelineEvents {
  1003. COMPILE_ERROR = "compile-error",
  1004. MISSING = "missing",
  1005. FALBACK = "fallback",
  1006. MESSAGE_RESOLVE = "message-resolve",
  1007. MESSAGE_COMPILATION = "message-compilation",
  1008. MESSAGE_EVALUATION = "message-evaluation"
  1009. }
  1010. export { }