I18n

I18n Plugin

Localization plugin for vue-formily.

Install

yarn add @vue-formily/i18n
npm install @vue-formily/i18n --save

CDN

You can use i18n plugin with a script tag and a CDN, import the library like this:

<script src="https://unpkg.com/@vue-formily/i18n@latest"></script>

This will inject a I18nPlugin global object, which you will use to access the various methods exposed by the plugin or register to vue-formily.

If you are using native ES Modules, there is also an ES Modules compatible build:

<script type="module">
  import i18n from 'https://unpkg.com/@vue-formily/i18n@latest/dist/i18n-plugin.esm.js'
</script>

Set Up

Vue 3.x

import { createApp } from 'vue'
import { createFormily } from '@vue-formily/formily';
import i18n from '@vue-formily/i18n';

const formily = createFormily();

formily.plug(i18n, {} as I18nOptions);

const app = createApp(App)

app.use(formily);

Vue 2.x

import Vue from 'vue';
import { createFormily } from '@vue-formily/formily';
import i18n from '@vue-formily/i18n';

const formily = createFormily();

formily.plug(i18n, {} as I18nOptions);

Vue.use(formily);

Options

type Resource = Record<string, string | string[]>;
type Locale = {
  code: string;
  localize?: Record<string, any>;
  resource?: Resource;
};

type I18nOptions = {
  defaultLocale: string;
  locales?: Locale[];
}

Basic Usage

Stand Along

import i18n from '@vue-formily/i18n';

// Add locale
i18n.addLocale({
  ...enUS,
  resource: {
    hi: 'Hi, {name}.',
    weekday: 'Today is {date[6]}.',
    validation: {
      dupplicated: '{field} is invalid.'
    }
  },
  // The data will be used to translate the messages above
  localize: {
    name: 'Jo',
    date: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
  }
});

translate('hi'); // Hi, Jo.
// Nested object
// The localize data can be checked directly by 2nd parameter
translate('validation.dupplicated', {
  field: 'Email'
}); // Email is invalid.
// Array
translate('weekday[6]'); // Today is Saturday.

addLocale({
  code: 'fr-ca',
  resource: {
    hi: 'Bonjour, {name}.'
  },
  localize: {
    name: 'Jo'
  }
});

switchLocale('fr-ca');

translate('hi') // Bonjour, Jo.

In Vue Formily

In vue-formily, the localizer is used in the Rule, Field, and props property for all form elements. Here are some examples:

Methods

translate

Translate with the resource key.

Signatures

translate(
  key: string,
  data?: Record<string, any> | Record<string, any>[],
  { locale = 'en-US' } = {}
): string;
If locale is not provided, the plugin will use the current active locale. The default locale is en-US

Parameters

  • key - The registered resource key.
  • data - The data to use in the resource message. These datas will be merged with locale.localize data, then do the localization.
  • options - The options.
{
  // The locale that mapped with locale when installing this plugin
  locale?: string;
}

switchLocale

Switch to another registered locale.

Signatures

switchLocale(locale: string): void;

Parameters

  • locale - The resource key.

addLocale

Add more locale

Signatures

addLocale(locale: Locale): void;

Parameters

  • locale - The locale object.

removeLocale

Remove locale.

Signatures

removeLocale(locale: string): void;

Parameters

  • locale - The locale code.

getLocale

Get registered locale.

Signatures

getLocale(locale: string): Locale;

Parameters

  • locale - The locale code.
Edit this page on GitHub Updated at Fri, Feb 4, 2022