55 lines
1.3 KiB
JavaScript
Raw Normal View History

2017-05-16 16:32:54 +02:00
/**
* i18n.js
*
* This will setup the i18n language files and locale data for your plugin.
*
*/
2017-08-14 14:16:15 +02:00
import { reduce } from 'lodash';
// Plugin identifier based on the package.json `name` value
const pluginPkg = require('../../../../package.json');
const pluginId = pluginPkg.name.replace(
/^strapi-plugin-/i,
''
);
2017-08-14 14:16:15 +02:00
2017-08-14 15:22:42 +02:00
/**
* Add plugin identifier as translation message prefix,
* in order to avoid confusion and errors when many
* plugins are installed.
*
* @param messages
*/
2017-08-14 14:16:15 +02:00
const formatMessages = messages => reduce(messages, (result, value, key) => {
2017-12-07 14:05:10 +01:00
result[`${pluginId}.${key}`] = value;
return result;
2017-08-14 14:16:15 +02:00
}, {});
2017-08-14 15:22:42 +02:00
/**
* Try to require translation file.
*
* @param language {String}
*/
const requireTranslations = language => {
2017-08-14 15:22:42 +02:00
try {
return require(`translations/${language}.json`); // eslint-disable-line global-require
2017-08-14 15:22:42 +02:00
} catch (error) {
console.error(`Unable to load "${language}" translation for the plugin ${pluginId}. Please make sure "${language}.json" file exists in "pluginPath/admin/src/translations" folder.`);
2017-12-07 14:05:10 +01:00
return;
2017-08-14 15:22:42 +02:00
}
2017-05-16 16:32:54 +02:00
};
2017-08-14 15:22:42 +02:00
/**
* Dynamically generate `translationsMessages object`.
*/
const translationMessages = reduce(strapi.languages, (result, language) => {
2017-12-07 14:05:10 +01:00
result[language] = formatMessages(requireTranslations(language));
return result;
2017-08-14 15:22:42 +02:00
}, {});
export { translationMessages };