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' ;
2017-08-16 17:05:02 +02:00
// 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 ) => {
const obj = result ;
obj [ ` ${ pluginId } . ${ key } ` ] = value ;
return obj ;
} , { } ) ;
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 {
return require ( ` translations/ ${ language } .json ` ) ;
} 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. ` ) ;
return false ;
}
2017-05-16 16:32:54 +02:00
} ;
2017-08-14 15:22:42 +02:00
/ * *
* Dynamically generate ` translationsMessages object ` .
* /
const translationMessages = reduce ( window . Strapi . languages , ( result , language ) => {
const obj = result ;
const messages = requireTranslations ( language ) ;
obj [ language ] = formatMessages ( messages ) ;
return obj ;
} , { } ) ;
2017-08-14 12:00:54 +02:00
export { translationMessages } ;