Enable plugin translations with hot reload

This commit is contained in:
Pierre Burgy 2017-06-20 20:55:58 +02:00
parent f3702ad891
commit 192143b327
2 changed files with 20 additions and 6 deletions

View File

@ -12,7 +12,7 @@ import App from 'containers/App'; // eslint-disable-line
import { selectLocationState } from 'containers/App/selectors'; // eslint-disable-line
import configureStore from 'store';
import createRoutes from 'routes';
// import { translationMessages } from 'i18n';
import { translationMessages } from './i18n';
// Plugin identifier based on the package.json `name` value
const pluginPkg = require('../../../../package.json');
@ -52,6 +52,22 @@ Comp.contextTypes = {
router: React.PropTypes.object.isRequired,
};
// Hot reloadable translation json files
if (module.hot) {
// modules.hot.accept does not accept dynamic dependencies,
// have to be constants at compile-time
module.hot.accept('./i18n', () => {
if (window.Strapi) {
System.import('./i18n').then(result => {
const translationMessagesUpdated = result.translationMessages;
window.Strapi
.refresh(pluginId)
.translationMessages(translationMessagesUpdated);
});
}
});
}
// Register the plugin
window.Strapi.registerPlugin({
name: pluginPkg.strapi.name,
@ -60,7 +76,7 @@ window.Strapi.registerPlugin({
leftMenuLinks: [],
mainComponent: Comp,
routes: createRoutes(store),
// translationMessages,
translationMessages,
});

View File

@ -7,8 +7,8 @@
import { defineMessages } from 'react-intl';
import enTranslationMessages from './translations/en.json'; // eslint-disable-line
import frTranslationMessages from './translations/fr.json'; // eslint-disable-line
import enTranslationMessages from 'translations/en.json'; // eslint-disable-line
import frTranslationMessages from 'translations/fr.json'; // eslint-disable-line
const translationMessages = {
en: enTranslationMessages,
@ -19,6 +19,4 @@ const define = messages => {
defineMessages(messages);
};
export { translationMessages, define };