Browse Source

Add translate method to i18n

pull/2385/head
Artur Arseniev 7 years ago
parent
commit
9cab1e1e9e
  1. 23
      src/i18n/index.js
  2. 11
      test/specs/i18n/index.js

23
src/i18n/index.js

@ -137,6 +137,29 @@ export default () => {
}
});
return this;
},
/**
* Translate the locale message
* @param {String} key Label to translate
* @param {Object} params Params for the translation
* @returns {String}
* @example
* obj.setMessages({
* en: { msg: 'Msg', msg2: 'Msg {test}'},
* it: { msg: 'Msg it'},
* });
* obj.t('msg');
* // -> outputs `Msg`
* obj.t('msg', { l: 'it' }); // change locale
* // -> outputs `Msg it`
* obj.t('msg2', { test: 'hello' }); // pass params
* // -> outputs `Msg hello`
*/
t(key, params = {}) {
const locale = params.l || this.getLocale();
const msgSet = this.getMessages(locale) || {};
return msgSet[key];
}
};
};

11
test/specs/i18n/index.js

@ -56,5 +56,16 @@ describe('I18n', () => {
it: { msg1: 'Msg 1' }
});
});
test('Translate method with global locale', () => {
const msg1 = 'Msg 1';
obj.setLocale('en');
obj.setMessages({
en: { msg1 },
it: { msg1: `${msg1} it` }
});
expect(obj.t('msg2')).toBe(undefined);
expect(obj.t('msg1')).toBe(msg1);
});
});
});

Loading…
Cancel
Save