mirror of
https://github.com/strapi/strapi.git
synced 2025-08-15 04:08:04 +00:00
64 lines
1.4 KiB
JavaScript
64 lines
1.4 KiB
JavaScript
/**
|
|
* i18n.js
|
|
*
|
|
* This will setup the i18n language files and locale data for your plugin.
|
|
*
|
|
*/
|
|
|
|
/* eslint-disable no-console */
|
|
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, '');
|
|
|
|
/**
|
|
* Add plugin identifier as translation message prefix,
|
|
* in order to avoid confusion and errors when many
|
|
* plugins are installed.
|
|
*
|
|
* @param messages
|
|
*/
|
|
const formatMessages = messages =>
|
|
reduce(
|
|
messages,
|
|
(result, value, key) => {
|
|
result[`${pluginId}.${key}`] = value;
|
|
|
|
return result;
|
|
},
|
|
{}
|
|
);
|
|
|
|
/**
|
|
* Try to require translation file.
|
|
*
|
|
* @param language {String}
|
|
*/
|
|
const requireTranslations = language => {
|
|
try {
|
|
return require(`translations/${language}.json`); // eslint-disable-line global-require
|
|
} 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.`
|
|
);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Dynamically generate `translationsMessages object`.
|
|
*/
|
|
|
|
const translationMessages = reduce(
|
|
strapi.languages,
|
|
(result, language) => {
|
|
result[language] = formatMessages(requireTranslations(language));
|
|
|
|
return result;
|
|
},
|
|
{}
|
|
);
|
|
|
|
export { translationMessages };
|