Browse Source

Up i18n events

pull/5796/head
Artur Arseniev 2 years ago
parent
commit
1110f04ed3
  1. 21
      docs/api/i18n.md
  2. 27
      src/i18n/index.ts
  3. 31
      src/i18n/types.ts

21
docs/api/i18n.md

@ -23,11 +23,24 @@ Once the editor is instantiated you can use its API. Before using these methods
const i18n = editor.I18n;
```
### Events
## Available Events
* `i18n:add` New set of messages is added.
* `i18n:add` - New set of messages is added
* `i18n:update` - The set of messages is updated
* `i18n:locale` - Locale changed
```javascript
editor.on('i18n:add', (messages) => { ... });
```
* `i18n:update` The set of messages is updated.
```javascript
editor.on('i18n:update', (messages) => { ... });
```
* `i18n:locale` Locale changed.
```javascript
editor.on('i18n:locale', ({ value, valuePrev }) => { ... });
```
## setLocale

27
src/i18n/index.ts

@ -19,10 +19,7 @@
* const i18n = editor.I18n;
* ```
*
* ### Events
* * `i18n:add` - New set of messages is added
* * `i18n:update` - The set of messages is updated
* * `i18n:locale` - Locale changed
* {REPLACE_EVENTS}
*
* @module I18n
*/
@ -31,10 +28,11 @@ import { Module } from '../abstract';
import EditorModel from '../editor/model/Editor';
import { hasWin, deepMerge } from '../utils/mixins';
import defaults, { I18nConfig } from './config';
type Messages = Required<I18nConfig>['messages'];
import I18nEvents, { Messages } from './types';
export default class I18nModule extends Module<I18nConfig & { stylePrefix?: string }> {
events = I18nEvents;
/**
* Initialize module
* @param {Object} config Configurations
@ -65,9 +63,8 @@ export default class I18nModule extends Module<I18nConfig & { stylePrefix?: stri
* i18n.setLocale('it');
*/
setLocale(locale: string) {
const { em, config } = this;
const evObj = { value: locale, valuePrev: config.locale };
em && em.trigger('i18n:locale', evObj);
const { em, config, events } = this;
em.trigger(events.locale, { value: locale, valuePrev: config.locale });
config.locale = locale;
return this;
}
@ -77,7 +74,7 @@ export default class I18nModule extends Module<I18nConfig & { stylePrefix?: stri
* @returns {String} Current locale value
*/
getLocale() {
return this.config.locale;
return this.config.locale!;
}
/**
@ -111,9 +108,9 @@ export default class I18nModule extends Module<I18nConfig & { stylePrefix?: stri
* // -> { en: { msg2: 'Msg 2 up', msg3: 'Msg 3', } }
*/
setMessages(msg: Messages) {
const { em, config } = this;
const { em, config, events } = this;
config.messages = msg;
em && em.trigger('i18n:update', msg);
em.trigger(events.update, msg);
return this;
}
@ -130,9 +127,9 @@ export default class I18nModule extends Module<I18nConfig & { stylePrefix?: stri
* // -> { en: { msg1: 'Msg 1', msg2: 'Msg 2 up', msg3: 'Msg 3', } }
*/
addMessages(msg: Messages) {
const { em } = this;
const { messages } = this.config;
em && em.trigger('i18n:add', msg);
const { em, events, config } = this;
const { messages } = config;
em.trigger(events.add, msg);
this.setMessages(deepMerge(messages!, msg));
return this;

31
src/i18n/types.ts

@ -0,0 +1,31 @@
import { I18nConfig } from './config';
export type Messages = Required<I18nConfig>['messages'];
/**{START_EVENTS}*/
export enum I18nEvents {
/**
* @event `i18n:add` New set of messages is added.
* @example
* editor.on('i18n:add', (messages) => { ... });
*/
add = 'i18n:add',
/**
* @event `i18n:update` The set of messages is updated.
* @example
* editor.on('i18n:update', (messages) => { ... });
*/
update = 'i18n:update',
/**
* @event `i18n:locale` Locale changed.
* @example
* editor.on('i18n:locale', ({ value, valuePrev }) => { ... });
*/
locale = 'i18n:locale',
}
/**{END_EVENTS}*/
// need this to avoid the TS documentation generator to break
export default I18nEvents;
Loading…
Cancel
Save