2017-05-16 16:32:54 +02:00
/ * *
* i18n . js
*
* This will setup the i18n language files and locale data for your plugin .
*
* /
2018-03-14 22:20:39 +01:00
/* eslint-disable no-console */
2017-08-14 14:16:15 +02:00
import { reduce } from 'lodash' ;
2017-08-16 17:05:02 +02:00
// Plugin identifier based on the package.json `name` value
const pluginPkg = require ( '../../../../package.json' ) ;
2020-01-24 15:39:14 +01:00
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
* /
2020-01-24 15:39:14 +01:00
const formatMessages = messages =>
reduce (
messages ,
( result , value , key ) => {
result [ ` ${ pluginId } . ${ key } ` ] = value ;
2018-03-14 22:20:39 +01:00
2020-01-24 15:39:14 +01:00
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 }
* /
2017-08-16 17:05:02 +02:00
const requireTranslations = language => {
2017-08-14 15:22:42 +02:00
try {
2017-11-09 12:10:08 +01:00
return require ( ` translations/ ${ language } .json ` ) ; // eslint-disable-line global-require
2017-08-14 15:22:42 +02:00
} catch ( error ) {
2020-01-24 15:39:14 +01:00
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-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 ` .
* /
2017-11-08 17:40:47 +01:00
2020-01-24 15:39:14 +01:00
const translationMessages = reduce (
strapi . languages ,
( result , language ) => {
result [ language ] = formatMessages ( requireTranslations ( language ) ) ;
2017-12-07 14:05:10 +01:00
2020-01-24 15:39:14 +01:00
return result ;
} ,
{ }
) ;
2017-08-14 15:22:42 +02:00
2017-08-14 12:00:54 +02:00
export { translationMessages } ;