Skip to content

Composition API

Composer

Composer interfaces

Signature:

typescript
export interface Composer<Messages extends Record<string, any> = {}, DateTimeFormats extends Record<string, any> = {}, NumberFormats extends Record<string, any> = {}, OptionLocale = Locale, ResourceLocales = PickupLocales<NonNullable<Messages>> | PickupLocales<NonNullable<DateTimeFormats>> | PickupLocales<NonNullable<NumberFormats>>, Locales = Locale extends GeneratedLocale ? GeneratedLocale : OptionLocale extends Locale ? IsNever<ResourceLocales> extends true ? Locale : ResourceLocales : OptionLocale | ResourceLocales> extends ComposerCustom

Details

This is the interface for being used for Vue 3 Composition API.

availableLocales

Signature:

typescript
readonly availableLocales: ComputedRef<Locales[]>;

Details

The list of available locales in messages in lexical order.

d

Datetime formatting

Signature:

typescript
d: ComposerDateTimeFormatting<DateTimeFormats, Locales, RemoveIndexSignature<{
        [K in keyof DefineDateTimeFormat]: DefineDateTimeFormat[K];
    }>>;

Details

About details functions, See the ComposerDateTimeFormatting

datetimeFormats

Signature:

typescript
readonly datetimeFormats: ComputedRef<{
        [K in keyof DateTimeFormats]: DateTimeFormats[K];
    }>;

Details

The datetime formats of localization.

See about:

escapeParameter

Signature:

typescript
escapeParameter: boolean;

Details

Whether interpolation parameters are escaped before the message is translated.

See about:

fallbackFormat

Signature:

typescript
fallbackFormat: boolean;

Details

Whether suppress warnings when falling back to either fallbackLocale or root.

See about:

fallbackLocale

Signature:

typescript
fallbackLocale: WritableComputedRef<FallbackLocales<Locales>>;

Details

The current fallback locales this Composer instance is using.

See about:

fallbackRoot

Signature:

typescript
fallbackRoot: boolean;

Details

Whether to fall back to root level (global scope) localization when localization fails.

See about:

fallbackWarn

Signature:

typescript
fallbackWarn: boolean | RegExp;

Details

Whether suppress fall back warnings when localization fails.

See about:

id

Signature:

typescript
id: number;

Details

Instance ID.

inheritLocale

Signature:

typescript
inheritLocale: boolean;

Details

Whether inherit the root level locale to the component localization locale.

See about:

isGlobal

Signature:

typescript
readonly isGlobal: boolean;

Details

Whether this composer instance is global or not

locale

Signature:

typescript
locale: WritableComputedRef<Locales>;

Details

The current locale this Composer instance is using.

If the locale contains a territory and a dialect, this locale contains an implicit fallback.

See about:

messages

Signature:

typescript
readonly messages: ComputedRef<{
        [K in keyof Messages]: Messages[K];
    }>;

Details

The locale messages of localization.

See about:

missingWarn

Signature:

typescript
missingWarn: boolean | RegExp;

Details

Whether suppress warnings outputted when localization fails.

See about:

modifiers

Signature:

typescript
readonly modifiers: LinkedModifiers<VueMessageType>;

Details

Custom Modifiers for linked messages.

See about:

n

Number Formatting

Signature:

typescript
n: ComposerNumberFormatting<NumberFormats, Locales, RemoveIndexSignature<{
        [K in keyof DefineNumberFormat]: DefineNumberFormat[K];
    }>>;

Details

About details functions, See the ComposerNumberFormatting

numberFormats

Signature:

typescript
readonly numberFormats: ComputedRef<{
        [K in keyof NumberFormats]: NumberFormats[K];
    }>;

Details

The number formats of localization.

See about:

pluralRules

Signature:

typescript
readonly pluralRules: PluralizationRules;

Details

A set of rules for word pluralization

See about:

rt

Resolve locale message translation

Signature:

typescript
rt: ComposerResolveLocaleMessageTranslation<Locales>;

Details

About details functions, See the ComposerResolveLocaleMessageTranslation

t

Locale message translation

Signature:

typescript
t: ComposerTranslation<Messages, Locales, RemoveIndexSignature<{
        [K in keyof DefineLocaleMessage]: DefineLocaleMessage[K];
    }>>;

Details

About details functions, See the ComposerTranslation

warnHtmlMessage

Signature:

typescript
warnHtmlMessage: boolean;

Details

Whether to allow the use locale messages of HTML formatting.

If you set false, will check the locale messages on the Composer instance.

If you are specified true, a warning will be output at console.

See about:

getDateTimeFormat(locale)

Get datetime format

Signature:

typescript
getDateTimeFormat<DateTimeSchema extends Record<string, any> = never, LocaleSchema extends string = string, Locale extends PickupLocales<NonNullable<DateTimeFormats>> = PickupLocales<NonNullable<DateTimeFormats>>, Return = IsNever<DateTimeSchema> extends true ? IsEmptyObject<DateTimeFormats> extends true ? RemoveIndexSignature<{
        [K in keyof DefineDateTimeFormat]: DefineDateTimeFormat[K];
    }> : NonNullable<DateTimeFormats>[Locale] : DateTimeSchema>(locale: LocaleSchema | Locale): Return;

Type Parameters

ParameterDescription
DateTimeSchemaThe datetime format schema, default never

Details

get datetime format from Composer instance .

Parameters

ParameterTypeDescription
localeLocaleSchema | LocaleA target locale

Returns

Datetime format

getLocaleMessage(locale)

Get locale message

Signature:

typescript
getLocaleMessage<MessageSchema extends LocaleMessage<VueMessageType> = never, LocaleSchema extends string = string, Locale extends PickupLocales<NonNullable<Messages>> = PickupLocales<NonNullable<Messages>>, Return = IsNever<MessageSchema> extends true ? IsEmptyObject<Messages> extends true ? RemoveIndexSignature<{
        [K in keyof DefineLocaleMessage]: DefineLocaleMessage[K];
    }> : NonNullable<Messages>[Locale] : MessageSchema>(locale: LocaleSchema | Locale): Return;

Type Parameters

ParameterDescription
MessageSchemaThe locale message schema, default never

Details

get locale message from Composer instance .

Parameters

ParameterTypeDescription
localeLocaleSchema | LocaleA target locale

Returns

Locale messages

getMissingHandler()

Get missing handler

Signature:

typescript
getMissingHandler(): MissingHandler | null;

Parameters

ParameterTypeDescription

Returns

MissingHandler

getNumberFormat(locale)

Get number format

Signature:

typescript
getNumberFormat<NumberSchema extends Record<string, any> = never, LocaleSchema extends string = string, Locale extends PickupLocales<NonNullable<NumberFormats>> = PickupLocales<NonNullable<NumberFormats>>, Return = IsNever<NumberSchema> extends true ? IsEmptyObject<NumberFormats> extends true ? RemoveIndexSignature<{
        [K in keyof DefineNumberFormat]: DefineNumberFormat[K];
    }> : NonNullable<NumberFormats>[Locale] : NumberSchema>(locale: LocaleSchema | Locale): Return;

Type Parameters

ParameterDescription
NumberSchemaThe number format schema, default never

Details

get number format from Composer instance .

Parameters

ParameterTypeDescription
localeLocaleSchema | LocaleA target locale

Returns

Number format

getPostTranslationHandler()

Get post translation handler

Signature:

typescript
getPostTranslationHandler(): PostTranslationHandler<VueMessageType> | null;

Parameters

ParameterTypeDescription

Returns

mergeDateTimeFormat(locale, format)

Merge datetime format

Signature:

typescript
mergeDateTimeFormat<DateTimeSchema extends Record<string, any> = never, LocaleSchema extends string = string, Locale extends PickupLocales<NonNullable<DateTimeFormats>> = PickupLocales<NonNullable<DateTimeFormats>>, Formats = IsNever<DateTimeSchema> extends true ? Record<string, any> : DateTimeSchema>(locale: LocaleSchema | Locale, format: Formats): void;

Type Parameters

ParameterDescription
DateTimeSchemaThe datetime format schema, default never

Details

Merge datetime format to Composer instance .

Parameters

ParameterTypeDescription
localeLocaleSchema | LocaleA target locale
formatFormatsA target datetime format

mergeLocaleMessage(locale, message)

Merge locale message

Signature:

typescript
mergeLocaleMessage<MessageSchema extends LocaleMessage<VueMessageType> = never, LocaleSchema extends string = string, Locale extends PickupLocales<NonNullable<Messages>> = PickupLocales<NonNullable<Messages>>, Message = IsNever<MessageSchema> extends true ? Record<string, any> : MessageSchema>(locale: LocaleSchema | Locale, message: Message): void;

Type Parameters

ParameterDescription
MessageSchemaThe locale message schema, default never

Details

Merge locale message to Composer instance .

Parameters

ParameterTypeDescription
localeLocaleSchema | LocaleA target locale
messageMessageA message

mergeNumberFormat(locale, format)

Merge number format

Signature:

typescript
mergeNumberFormat<NumberSchema extends Record<string, any> = never, LocaleSchema extends string = string, Locale extends PickupLocales<NonNullable<NumberFormats>> = PickupLocales<NonNullable<NumberFormats>>, Formats = IsNever<NumberSchema> extends true ? Record<string, any> : NumberSchema>(locale: LocaleSchema | Locale, format: Formats): void;

Type Parameters

ParameterDescription
NumberSchemaThe number format schema, default never

Details

Merge number format to Composer instance .

Parameters

ParameterTypeDescription
localeLocaleSchema | LocaleA target locale
formatFormatsA target number format

setDateTimeFormat(locale, format)

Set datetime format

Signature:

typescript
setDateTimeFormat<DateTimeSchema extends Record<string, any> = never, LocaleSchema extends string = string, Locale extends PickupLocales<NonNullable<DateTimeFormats>> = PickupLocales<NonNullable<DateTimeFormats>>, FormatsType = IsNever<DateTimeSchema> extends true ? IsEmptyObject<DateTimeFormats> extends true ? RemoveIndexSignature<{
        [K in keyof DefineDateTimeFormat]: DefineDateTimeFormat[K];
    }> : NonNullable<DateTimeFormats>[Locale] : DateTimeSchema, Formats extends FormatsType = FormatsType>(locale: LocaleSchema | Locale, format: Formats): void;

Type Parameters

ParameterDescription
DateTimeSchemaThe datetime format schema, default never

Details

Set datetime format to Composer instance .

Parameters

ParameterTypeDescription
localeLocaleSchema | LocaleA target locale
formatFormatsA target datetime format

setLocaleMessage(locale, message)

Set locale message

Signature:

typescript
setLocaleMessage<MessageSchema extends LocaleMessage<VueMessageType> = never, LocaleSchema extends string = string, Locale extends PickupLocales<NonNullable<Messages>> = PickupLocales<NonNullable<Messages>>, MessageType = IsNever<MessageSchema> extends true ? IsEmptyObject<Messages> extends true ? RemoveIndexSignature<{
        [K in keyof DefineLocaleMessage]: DefineLocaleMessage[K];
    }> : NonNullable<Messages>[Locale] : MessageSchema, Message extends MessageType = MessageType>(locale: LocaleSchema | Locale, message: Message): void;

Type Parameters

ParameterDescription
MessageSchemaThe locale message schema, default never

Details

Set locale message to Composer instance .

Parameters

ParameterTypeDescription
localeLocaleSchema | LocaleA target locale
messageMessageA message

setMissingHandler(handler)

Set missing handler

Signature:

typescript
setMissingHandler(handler: MissingHandler | null): void;

Parameters

ParameterTypeDescription
handlerMissingHandler | nullA MissingHandler

setNumberFormat(locale, format)

Set number format

Signature:

typescript
setNumberFormat<NumberSchema extends Record<string, any> = never, LocaleSchema extends string = string, Locale extends PickupLocales<NonNullable<NumberFormats>> = PickupLocales<NonNullable<NumberFormats>>, FormatsType = IsNever<NumberSchema> extends true ? IsEmptyObject<NumberFormats> extends true ? RemoveIndexSignature<{
        [K in keyof DefineNumberFormat]: DefineNumberFormat[K];
    }> : NonNullable<NumberFormats>[Locale] : NumberSchema, Formats extends FormatsType = FormatsType>(locale: LocaleSchema | Locale, format: Formats): void;

Type Parameters

ParameterDescription
NumberSchemaThe number format schema, default never

Details

Set number format to Composer instance .

Parameters

ParameterTypeDescription
localeLocaleSchema | LocaleA target locale
formatFormatsA target number format

setPostTranslationHandler(handler)

Set post translation handler

Signature:

typescript
setPostTranslationHandler(handler: PostTranslationHandler<VueMessageType> | null): void;

Parameters

ParameterTypeDescription
handlerPostTranslationHandler<VueMessageType> | nullA

te(key, locale)

Translation locale message exist

Signature:

typescript
te<Str extends string, Key extends PickupKeys<Messages> = PickupKeys<Messages>>(key: Str | Key, locale?: Locales): boolean;

Details

whether do exist locale message on Composer instance .

If you specified locale, check the locale messages of locale.

Parameters

ParameterTypeDescription
keyStr | KeyA target locale message key
localeLocalesA locale, it will be used over than global scope or local scope

Returns

If found locale message, true, else false, Note that false is returned even if the value present in the key is not translatable, yet if translateExistCompatible is set to true, it will return true if the key is available, even if the value is not translatable.

tm(key)

Locale messages getter

Signature:

typescript
tm<Key extends string, ResourceKeys extends PickupKeys<Messages> = PickupKeys<Messages>, Locale extends PickupLocales<NonNullable<Messages>> = PickupLocales<NonNullable<Messages>>, Target = IsEmptyObject<Messages> extends false ? NonNullable<Messages>[Locale] : RemoveIndexSignature<{
        [K in keyof DefineLocaleMessage]: DefineLocaleMessage[K];
    }>, Return = ResourceKeys extends ResourcePath<Target> ? ResourceValue<Target, ResourceKeys> : Record<string, any>>(key: Key | ResourceKeys): Return;

Details

If I18nScope 'local' or Some UseI18nOptions are specified at useI18n, it’s translated in preferentially local scope locale messages than global scope locale messages.

Based on the current locale, locale messages will be returned from Composer instance messages.

If you change the locale, the locale messages returned will also correspond to the locale.

If there are no locale messages for the given key in the composer instance messages, they will be returned with fallbacking.

[!WARNING] You need to use rt for the locale message returned by tm. see the rt details.

Parameters

ParameterTypeDescription
keyKey | ResourceKeysA target locale message key

Returns

Locale messages

Examples

template block:

html
<div class="container">
  <template v-for="content in tm('contents')">
    <h2>{{ rt(content.title) }}</h2>
    <p v-for="paragraph in content.paragraphs">
     {{ rt(paragraph) }}
    </p>
  </template>
</div>

script block:

js
import { defineComponent } from 'vue
import { useI18n } from 'vue-i18n'

export default defineComponent({
  setup() {
    const { rt, tm } = useI18n({
      messages: {
        en: {
          contents: [
            {
              title: 'Title1',
              // ...
              paragraphs: [
                // ...
              ]
            }
          ]
        }
      }
      // ...
    })
    // ...
    return { ... , rt, tm }
  }
})

ComposerAdditionalOptions

Composer additional options for useI18n

Signature:

typescript
export interface ComposerAdditionalOptions

Details

ComposerAdditionalOptions is extend for ComposerOptions, so you can specify these options.

useScope

ComposerCustom

The type custom definition of Composer

Signature:

typescript
export interface ComposerCustom

Details

The interface that can extend Composer.

The type defined by 3rd party (e.g. nuxt/i18n)

Examples

ts
// vue-i18n.d.ts (`.d.ts` file at your app)

declare module 'vue-i18n' {
  interface ComposerCustom {
    localeCodes: string[]
  }
}

ComposerDateTimeFormatting

Datetime formatting functions

Signature:

typescript
export interface ComposerDateTimeFormatting<DateTimeFormats extends Record<string, any> = {}, Locales = 'en-US', DefinedDateTimeFormat extends RemovedIndexResources<DefineDateTimeFormat> = RemovedIndexResources<DefineDateTimeFormat>, C = IsEmptyObject<DefinedDateTimeFormat> extends false ? PickupFormatPathKeys<{
    [K in keyof DefinedDateTimeFormat]: DefinedDateTimeFormat[K];
}> : never, M = IsEmptyObject<DateTimeFormats> extends false ? PickupFormatKeys<DateTimeFormats> : never, ResourceKeys extends C | M = IsNever<C> extends false ? IsNever<M> extends false ? C | M : C : IsNever<M> extends false ? M : never>

Details

This is the interface for Composer

(value: number | Date | string): string;

Datetime formatting

Signature:

typescript
(value: number | Date | string): string;

Details

If this is used in a reactive context, it will re-evaluate once the locale changes.

If 'local' or Some UseI18nOptions are specified at useI18n, it’s translated in preferentially local scope datetime formats than global scope datetime formats.

If not, then it’s formatted with global scope datetime formats.

See about:

Parameters

ParameterTypeDescription
valuenumber | Date | stringA value, timestamp number or Date instance or ISO 8601 string

Returns

Formatted value

(value: Value, keyOrOptions: OptionsType): IsPart<OptionsType> extends true ? Intl.DateTimeFormatPart[] : string;

Datetime formatting

Signature:

typescript
<Value extends number | Date | string = number, Key extends string = string, OptionsType extends Key | ResourceKeys | DateTimeOptions<Key | ResourceKeys, Locales> = Key | ResourceKeys | DateTimeOptions<Key | ResourceKeys, Locales>>(value: Value, keyOrOptions: OptionsType): IsPart<OptionsType> extends true ? Intl.DateTimeFormatPart[] : string;

Details

Overloaded d.

In this overloaded d, format in datetime format for a key registered in datetime formats.

Parameters

ParameterTypeDescription
valueValueA value, timestamp number or Date instance or ISO 8601 string
keyOrOptionsOptionsTypeA key of datetime formats, or additional for datetime formatting

Returns

Formatted value

(value: Value, keyOrOptions: OptionsType, locale: Locales): IsPart<OptionsType> extends true ? Intl.DateTimeFormatPart[] : string;

Datetime formatting

Signature:

typescript
<Value extends number | Date | string = number, Key extends string = string, OptionsType extends Key | ResourceKeys | DateTimeOptions<Key | ResourceKeys, Locales> = Key | ResourceKeys | DateTimeOptions<Key | ResourceKeys, Locales>>(value: Value, keyOrOptions: OptionsType, locale: Locales): IsPart<OptionsType> extends true ? Intl.DateTimeFormatPart[] : string;

Details

Overloaded d.

In this overloaded d, format in datetime format for a key registered in datetime formats at target locale

Parameters

ParameterTypeDescription
valueValueA value, timestamp number or Date instance or ISO 8601 string
keyOrOptionsOptionsTypeA key of datetime formats, or additional for datetime formatting
localeLocalesA locale, it will be used over than global scope or local scope.

Returns

Formatted value

ComposerNumberFormatting

Number formatting functions

Signature:

typescript
export interface ComposerNumberFormatting<NumberFormats extends Record<string, any> = {}, Locales = 'en-US', DefinedNumberFormat extends RemovedIndexResources<DefineNumberFormat> = RemovedIndexResources<DefineNumberFormat>, C = IsEmptyObject<DefinedNumberFormat> extends false ? PickupFormatPathKeys<{
    [K in keyof DefinedNumberFormat]: DefinedNumberFormat[K];
}> : never, M = IsEmptyObject<NumberFormats> extends false ? PickupFormatKeys<NumberFormats> : never, ResourceKeys extends C | M = IsNever<C> extends false ? IsNever<M> extends false ? C | M : C : IsNever<M> extends false ? M : never>

Details

This is the interface for Composer

(value: number): string;

Number Formatting

Signature:

typescript
(value: number): string;

Details

If this is used in a reactive context, it will re-evaluate once the locale changes.

If 'local' or Some UseI18nOptions are specified at useI18n, it’s translated in preferentially local scope datetime formats than global scope datetime formats.

If not, then it’s formatted with global scope number formats.

See about:

Parameters

ParameterTypeDescription
valuenumberA number value

Returns

Formatted value

(value: number, keyOrOptions: OptionsType): IsPart<OptionsType> extends true ? Intl.NumberFormatPart[] : string;

Number Formatting

Signature:

typescript
<Key extends string = string, OptionsType extends Key | ResourceKeys | NumberOptions<Key | ResourceKeys, Locales> = Key | ResourceKeys | NumberOptions<Key | ResourceKeys, Locales>>(value: number, keyOrOptions: OptionsType): IsPart<OptionsType> extends true ? Intl.NumberFormatPart[] : string;

Details

Overloaded n.

In this overloaded n, format in number format for a key registered in number formats.

Parameters

ParameterTypeDescription
valuenumberA number value
keyOrOptionsOptionsTypeA key of number formats, or additional for number formatting

Returns

Formatted value

(value: number, keyOrOptions: OptionsType, locale: Locales): IsPart<OptionsType> extends true ? Intl.NumberFormatPart[] : string;

Number Formatting

Signature:

typescript
<Key extends string = string, OptionsType extends Key | ResourceKeys | NumberOptions<Key | ResourceKeys, Locales> = Key | ResourceKeys | NumberOptions<Key | ResourceKeys, Locales>>(value: number, keyOrOptions: OptionsType, locale: Locales): IsPart<OptionsType> extends true ? Intl.NumberFormatPart[] : string;

Details

Overloaded n.

In this overloaded n, format in number format for a key registered in number formats at target locale.

Parameters

ParameterTypeDescription
valuenumberA number value
keyOrOptionsOptionsTypeA key of number formats, or additional for number formatting
localeLocalesA locale, it will be used over than global scope or local scope.

Returns

Formatted value

ComposerOptions

Composer Options

Signature:

typescript
export interface ComposerOptions<Schema extends {
    message?: unknown;
    datetime?: unknown;
    number?: unknown;
} = {
    message: DefaultLocaleMessageSchema;
    datetime: DefaultDateTimeFormatSchema;
    number: DefaultNumberFormatSchema;
}, Locales extends {
    messages: unknown;
    datetimeFormats: unknown;
    numberFormats: unknown;
} | string = Locale, MessagesLocales = Locales extends {
    messages: infer M;
} ? M : Locales extends string ? Locales : Locale, DateTimeFormatsLocales = Locales extends {
    datetimeFormats: infer D;
} ? D : Locales extends string ? Locales : Locale, NumberFormatsLocales = Locales extends {
    numberFormats: infer N;
} ? N : Locales extends string ? Locales : Locale, MessageSchema = Schema extends {
    message: infer M;
} ? M : DefaultLocaleMessageSchema, DateTimeSchema = Schema extends {
    datetime: infer D;
} ? D : DefaultDateTimeFormatSchema, NumberSchema = Schema extends {
    number: infer N;
} ? N : DefaultNumberFormatSchema, _Messages extends LocaleMessages<MessageSchema, MessagesLocales, VueMessageType> = LocaleMessages<MessageSchema, MessagesLocales, VueMessageType>, _DateTimeFormats extends DateTimeFormatsType<DateTimeSchema, DateTimeFormatsLocales> = DateTimeFormatsType<DateTimeSchema, DateTimeFormatsLocales>, _NumberFormats extends NumberFormatsType<NumberSchema, NumberFormatsLocales> = NumberFormatsType<NumberSchema, NumberFormatsLocales>>

Details

This is options to create composer.

datetime

datetimeFormats

escapeParameter

Signature:

typescript
escapeParameter?: boolean;

Details

If escapeParameter is configured as true then interpolation parameters are escaped before the message is translated.

This is useful when translation output is used in v-html and the translation resource contains html markup (e.g. around a user-provided value).

This usage pattern mostly occurs when passing precomputed text strings into UI components.

The escape process involves replacing the following symbols with their respective HTML character entities: <, >, ", '.

Setting escapeParameter as true should not break existing functionality but provides a safeguard against a subtle type of XSS attack vectors.

See about:

false

fallbackFormat

Signature:

typescript
fallbackFormat?: boolean;

Details

Whether do template interpolation on translation keys when your language lacks a translation for a key.

If true, skip writing templates for your "base" language; the keys are your templates.

See about:

false

fallbackLocale

Signature:

typescript
fallbackLocale?: FallbackLocale;

Details

The locale of fallback localization.

For more complex fallback definitions see fallback.

See about:

The default 'en-US' for the locale if it's not specified, or it's locale value

fallbackRoot

Signature:

typescript
fallbackRoot?: boolean;

Details

In the component localization, whether to fallback to root level (global scope) localization when localization fails.

If false, it's not fallback to root.

See about:

true

fallbackWarn

Signature:

typescript
fallbackWarn?: boolean | RegExp;

Details

Whether suppress warnings when falling back to either fallbackLocale or root.

If false, suppress fall back warnings.

If you use regular expression, you can suppress fallback warnings that it match with translation key (e.g. t).

See about:

true

flatJson

Signature:

typescript
flatJson?: boolean;

Details

Allow use flat json messages or not

false

inheritLocale

Signature:

typescript
inheritLocale?: boolean;

Details

Whether inheritance the root level locale to the component localization locale.

If false, regardless of the root level locale, localize for each component locale.

See about:

true

locale

Signature:

typescript
locale?: Locale;

Details

The locale of localization.

If the locale contains a territory and a dialect, this locale contains an implicit fallback.

See about:

'en-US'

message

messageCompiler

Signature:

typescript
messageCompiler?: MessageCompiler;

Details

A compiler for custom message format.

If not specified, the vue-i18n default message compiler will be used.

You will need to implement your own message compiler that returns Message Functions

Examples

Here is an example of how to custom message compiler with intl-messageformat

js
import { createI18n } from 'vue-i18n'
import IntlMessageFormat from 'intl-messageformat'

function messageCompiler(message, { locale, key, onError }) {
  if (typeof message === 'string') {
    // You can tune your message compiler performance more with your cache strategy or also memoization at here
    const formatter = new IntlMessageFormat(message, locale)
    return ctx => formatter.format(ctx.values)
  } else {
    // If you would like to support it for AST,
    // You need to transform locale mesages such as `json`, `yaml`, etc. with the bundle plugin.
    onError && onError(new Error('not support for AST'))
    return () => key // return default with `key`
  }
}

// call with I18n option
const i18n = createI18n({
  locale: 'ja',
  messageCompiler, // set your message compiler
  messages: {
    en: {
      hello: 'hello world!',
      greeting: 'hi, {name}!',
      // ICU Message format
      photo: `You have {numPhotos, plural,
        =0 {no photos.}
        =1 {one photo.}
        other {# photos.}
      }`
    },
  }
})

// the below your something to do ...
// ...

[!TIP] 🆕 v9.3+

[!WARNING] The Custom Message Format is an experimental feature. It may receive breaking changes or be removed in the future.

See about:

undefined

messageResolver

Signature:

typescript
messageResolver?: MessageResolver;

Details

A message resolver to resolve .

If not specified, the vue-i18n internal message resolver will be used by default.

You need to implement a message resolver yourself that supports the following requirements:

  • Resolve the message using the locale message of passed as the first argument of the message resolver, and the path passed as the second argument.

  • If the message could not be resolved, you need to return null.

  • If you will be returned null, the message resolver will also be called on fallback if is enabled, so the message will need to be resolved as well.

The message resolver is called indirectly by the following APIs:


Examples

Here is an example of how to set it up using your createI18n:

js
import { createI18n } from 'vue-i18n'

// your message resolver
function messageResolver(obj, path) {
  // simple message resolving!
  const msg = obj[path]
  return msg != null ? msg : null
}

// call with I18n option
const i18n = createI18n({
  locale: 'ja',
  messageResolver, // set your message resolver
  messages: {
    en: { ... },
    ja: { ... }
  }
})

// the below your something to do ...
// ...

[!TIP] 🆕 v9.2+

[!WARNING] If you use the message resolver, the setting will be ignored. That is, you need to resolve the flat JSON by yourself.

See about:

undefined

messages

missing

Signature:

typescript
missing?: MissingHandler;

Details

A handler for localization missing.

The handler gets called with the localization target locale, localization path key, the Vue instance and values.

If missing handler is assigned, and occurred localization missing, it's not warned.

null

missingWarn

Signature:

typescript
missingWarn?: boolean | RegExp;

Details

Whether suppress warnings outputted when localization fails.

If false, suppress localization fail warnings.

If you use regular expression, you can suppress localization fail warnings that it match with translation key (e.g. t).

See about:

true

modifiers

Signature:

typescript
modifiers?: LinkedModifiers<VueMessageType>;

Details

Custom Modifiers for linked messages.

See about:

number

numberFormats

pluralRules

Signature:

typescript
pluralRules?: PluralizationRules;

Details

A set of rules for word pluralization

See about:

{}

postTranslation

Signature:

typescript
postTranslation?: PostTranslationHandler<VueMessageType>;

Details

A handler for post processing of translation.

The handler gets after being called with the t.

This handler is useful if you want to filter on translated text such as space trimming.

null

warnHtmlMessage

Signature:

typescript
warnHtmlMessage?: boolean;

Details

Whether to allow the use locale messages of HTML formatting.

See the warnHtmlMessage property.

See about:

true

ComposerResolveLocaleMessageTranslation

Resolve locale message translation functions

Signature:

typescript
export interface ComposerResolveLocaleMessageTranslation<Locales = 'en-US'>

Details

This is the interface for Composer

(message: MessageFunction<VueMessageType> | VueMessageType): string;

Resolve locale message translation

Signature:

typescript
(message: MessageFunction<VueMessageType> | VueMessageType): string;

Details

If this is used in a reactive context, it will re-evaluate once the locale changes.

If 'local' or Some UseI18nOptions are specified at useI18n, it’s translated in preferentially local scope locale messages than global scope locale messages.

If not, then it’s translated with global scope locale messages.

[!TIP] The use-case for rt is for programmatic locale messages translation with using tm, v-for, javascript for statement.

[!WARNING] rt differs from t in that it processes the locale message directly, not the key of the locale message. There is no internal fallback with rt. You need to understand and use the structure of the locale message returned by tm.

See about:

Parameters

ParameterTypeDescription
messageMessageFunction<VueMessageType> | VueMessageTypeA target locale message to be resolved. You will need to specify the locale message returned by tm.

Returns

Translated message

(message: MessageFunction<VueMessageType> | VueMessageType, plural: number, options?: TranslateOptions<Locales>): string;

Resolve locale message translation for plurals

Signature:

typescript
(message: MessageFunction<VueMessageType> | VueMessageType, plural: number, options?: TranslateOptions<Locales>): string;

Details

Overloaded rt.

In this overloaded rt, return a pluralized translation message.

[!TIP] The use-case for rt is for programmatic locale messages translation with using tm, v-for, javascript for statement.

[!WARNING] rt differs from t in that it processes the locale message directly, not the key of the locale message. There is no internal fallback with rt. You need to understand and use the structure of the locale message returned by tm.

See about:

Parameters

ParameterTypeDescription
messageMessageFunction<VueMessageType> | VueMessageTypeA target locale message to be resolved. You will need to specify the locale message returned by tm.
pluralnumberWhich plural string to get. 1 returns the first one.
optionsTranslateOptions<Locales>Additional for translation

Returns

Translated message

(message: MessageFunction<VueMessageType> | VueMessageType, list: unknown[], options?: TranslateOptions<Locales>): string;

Resolve locale message translation for list interpolations

Signature:

typescript
(message: MessageFunction<VueMessageType> | VueMessageType, list: unknown[], options?: TranslateOptions<Locales>): string;

Details

Overloaded rt.

In this overloaded rt, return a pluralized translation message.

[!TIP] The use-case for rt is for programmatic locale messages translation with using tm, v-for, javascript for statement.

[!WARNING] rt differs from t in that it processes the locale message directly, not the key of the locale message. There is no internal fallback with rt. You need to understand and use the structure of the locale message returned by tm.

See about:

Parameters

ParameterTypeDescription
messageMessageFunction<VueMessageType> | VueMessageTypeA target locale message to be resolved. You will need to specify the locale message returned by tm.
listunknown[]A values of list interpolation.
optionsTranslateOptions<Locales>Additional for translation

Returns

Translated message

(message: MessageFunction<VueMessageType> | VueMessageType, named: NamedValue, options?: TranslateOptions<Locales>): string;

Resolve locale message translation for named interpolations

Signature:

typescript
(message: MessageFunction<VueMessageType> | VueMessageType, named: NamedValue, options?: TranslateOptions<Locales>): string;

Details

Overloaded rt.

In this overloaded rt, for each placeholder x, the locale messages should contain a {x} token.

[!TIP] The use-case for rt is for programmatic locale messages translation with using tm, v-for, javascript for statement.

[!WARNING] rt differs from t in that it processes the locale message directly, not the key of the locale message. There is no internal fallback with rt. You need to understand and use the structure of the locale message returned by tm.

See about:

Parameters

ParameterTypeDescription
messageMessageFunction<VueMessageType> | VueMessageTypeA target locale message to be resolved. You will need to specify the locale message returned by tm.
namedNamedValueA values of named interpolation.
optionsTranslateOptions<Locales>Additional for translation

Returns

Translated message

ComposerTranslation

Locale message translation functions

Signature:

typescript
export interface ComposerTranslation<Messages extends Record<string, any> = {}, Locales = 'en-US', DefinedLocaleMessage extends RemovedIndexResources<DefineLocaleMessage> = RemovedIndexResources<DefineLocaleMessage>, C = IsEmptyObject<DefinedLocaleMessage> extends false ? JsonPaths<{
    [K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K];
}> : never, M = IsEmptyObject<Messages> extends false ? TranslationsPaths<Messages> : never, ResourceKeys extends C | M = IsNever<C> extends false ? IsNever<M> extends false ? C | M : C : IsNever<M> extends false ? M : never>

Details

This is the interface for Composer

(key: Key | ResourceKeys | number): string;

Locale message translation

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number): string;

Details

If this is used in a reactive context, it will re-evaluate once the locale changes.

If I18nScope 'local' or Some UseI18nOptions are specified at useI18n, it’s translated in preferentially local scope locale messages than global scope locale messages.

If not, then it’s translated with global scope locale messages.

See about:

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key

Returns

Translated message

(key: Key | ResourceKeys | number, named: NamedValue): string;

Locale message translation for named interpolations

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, named: NamedValue): string;

Details

Overloaded t.

In this overloaded t, for each placeholder x, the locale messages should contain a {x} token.

You can also suppress the warning, when the translation missing according to the options.

See about:

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
namedNamedValueA values of named interpolation

Returns

Translated message

(key: Key | ResourceKeys | number, named: NamedValue, plural: number): string;

Locale message translation for named interpolations and plurals

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, named: NamedValue, plural: number): string;

Details

Overloaded t.

In this overloaded t, for each placeholder x, the locale messages should contain a {x} token, and return a pluralized translation message.

See about:

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
namedNamedValueA values of named interpolation
pluralnumberWhich plural string to get. 1 returns the first one.

Returns

Translated message

(key: Key | ResourceKeys | number, named: NamedValue, defaultMsg: string): string;

Locale message translation for named interpolations and plurals

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, named: NamedValue, defaultMsg: string): string;

Details

Overloaded t.

In this overloaded t, for each placeholder x, the locale messages should contain a {x} token, and if no translation was found, return a default message.

See about:

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
namedNamedValueA values of named interpolation
defaultMsgstringA default message to return if no translation was found

Returns

Translated message

(key: Key | ResourceKeys | number, named: NamedValue, options: TranslateOptions<Locales>): string;

Locale message translation for named interpolations

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, named: NamedValue, options: TranslateOptions<Locales>): string;

Details

Overloaded t.

In this overloaded t, for each placeholder x, the locale messages should contain a {x} token.

You can also suppress the warning, when the translation missing according to the options.

About details of options, see the .

How to usage for details:

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
namedNamedValueA values of named interpolation
optionsTranslateOptions<Locales>Additional for translation

Returns

Translated message

(key: Key | ResourceKeys | number, plural: number): string;

Locale message translation for plurals

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, plural: number): string;

Details

Overloaded t.

In this overloaded t, return a pluralized translation message.

You can also suppress the warning, when the translation missing according to the options.

See about:

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
pluralnumberWhich plural string to get. 1 returns the first one.

Returns

Translated message

(key: Key | ResourceKeys | number, plural: number, options: TranslateOptions<Locales>): string;

Locale message translation for plurals

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, plural: number, options: TranslateOptions<Locales>): string;

Details

Overloaded t.

In this overloaded t, return a pluralized translation message.

You can also suppress the warning, when the translation missing according to the options.

About details of options, see the .

See about:

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
pluralnumberWhich plural string to get. 1 returns the first one.
optionsTranslateOptions<Locales>Additional for translation

Returns

Translated message

(key: Key | ResourceKeys | number, defaultMsg: string): string;

Locale message translation for missing default message

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, defaultMsg: string): string;

Details

Overloaded t.

In this overloaded t, if no translation was found, return a default message.

You can also suppress the warning, when the translation missing according to the options.

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
defaultMsgstringA default message to return if no translation was found

Returns

Translated message

(key: Key | ResourceKeys | number, defaultMsg: string, options: TranslateOptions<Locales>): string;

Locale message translation for missing default message

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, defaultMsg: string, options: TranslateOptions<Locales>): string;

Details

Overloaded t.

In this overloaded t, if no translation was found, return a default message.

You can also suppress the warning, when the translation missing according to the options.

About details of options, see the .

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
defaultMsgstringA default message to return if no translation was found
optionsTranslateOptions<Locales>Additional for translation

Returns

Translated message

(key: Key | ResourceKeys | number, list: unknown[]): string;

Locale message translation for list interpolations

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, list: unknown[]): string;

Details

Overloaded t.

In this overloaded t, the locale messages should contain a {0}, {1}, … for each placeholder in the list.

You can also suppress the warning, when the translation missing according to the options.

See about:

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
listunknown[]A values of list interpolation

Returns

Translated message

(key: Key | ResourceKeys | number, list: unknown[], plural: number): string;

Locale message translation for list interpolations and plurals

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, list: unknown[], plural: number): string;

Details

Overloaded t.

In this overloaded t, the locale messages should contain a {0}, {1}, … for each placeholder in the list, and return a pluralized translation message.

See about:

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
listunknown[]A values of list interpolation
pluralnumberWhich plural string to get. 1 returns the first one.

Returns

Translated message

(key: Key | ResourceKeys | number, list: unknown[], defaultMsg: string): string;

Locale message translation for list interpolations and missing default message

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, list: unknown[], defaultMsg: string): string;

Details

Overloaded t.

See about:

In this overloaded t, the locale messages should contain a {0}, {1}, … for each placeholder in the list, and if no translation was found, return a default message.

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
listunknown[]A values of list interpolation
defaultMsgstringA default message to return if no translation was found

Returns

Translated message

(key: Key | ResourceKeys | number, list: unknown[], options: TranslateOptions<Locales>): string;

Locale message translation for list interpolations

Signature:

typescript
<Key extends string>(key: Key | ResourceKeys | number, list: unknown[], options: TranslateOptions<Locales>): string;

Details

Overloaded t.

In this overloaded t, the locale messages should contain a {0}, {1}, … for each placeholder in the list.

You can also suppress the warning, when the translation missing according to the options.

About details of options, see the .

How to usage for details:

Parameters

ParameterTypeDescription
keyKey | ResourceKeys | numberA target locale message key
listunknown[]A values of list interpolation
optionsTranslateOptions<Locales>Additional for translation

Returns

Translated message

MissingHandler

Signature:

typescript
export type MissingHandler = (locale: Locale, key: Path, instance?: ComponentInternalInstance | GenericComponentInstance, type?: string) => string | void;

useI18n

Use Composition API for Vue I18n

Signature:

typescript
export declare function useI18n<Schema = DefaultLocaleMessageSchema, Locales = 'en-US', Options extends UseI18nOptions<SchemaParams<Schema, VueMessageType>, LocaleParams<Locales>> = UseI18nOptions<SchemaParams<Schema, VueMessageType>, LocaleParams<Locales>>>(options?: Options): Composer<NonNullable<Options['messages']>, NonNullable<Options['datetimeFormats']>, NonNullable<Options['numberFormats']>, NonNullable<Options['locale']>>;

Type Parameters

ParameterDescription
SchemaThe i18n resources (messages, datetimeFormats, numberFormats) schema, default
LocalesThe locales of i18n resource schema, default en-US

Details

This function is mainly used by setup.

If options are specified, Composer instance is created for each component and you can be localized on the component.

If options are not specified, you can be localized using the global Composer.

Parameters

ParameterTypeDescription
optionsOptionsAn options, see UseI18nOptions

Returns

Composer instance

Examples

case: Component resource base localization

html
<template>
  <form>
    <label>{{ t('language') }}</label>
    <select v-model="locale">
      <option value="en">en</option>
      <option value="ja">ja</option>
    </select>
  </form>
  <p>message: {{ t('hello') }}</p>
</template>

<script>
import { useI18n } from 'vue-i18n'

export default {
 setup() {
   const { t, locale } = useI18n({
     locale: 'ja',
     messages: {
       en: { ... },
       ja: { ... }
     }
   })
   // Something to do ...

   return { ..., t, locale }
 }
}
</script>

UseI18nOptions

I18n Options for useI18n

Signature:

typescript
export type UseI18nOptions<Schema extends {
    message?: unknown;
    datetime?: unknown;
    number?: unknown;
} = {
    message: DefaultLocaleMessageSchema;
    datetime: DefaultDateTimeFormatSchema;
    number: DefaultNumberFormatSchema;
}, Locales extends {
    messages: unknown;
    datetimeFormats: unknown;
    numberFormats: unknown;
} | string = Locale, Options extends ComposerOptions<Schema, Locales> = ComposerOptions<Schema, Locales>> = ComposerAdditionalOptions & Options;

Details

UseI18nOptions is inherited ComposerAdditionalOptions and ComposerOptions, so you can specify these options.

VueMessageType

Signature:

typescript
export type VueMessageType = string | ResourceNode | VNode;

Released under the MIT License.