diff --git a/gulliver/system/class.bootstrap.php b/gulliver/system/class.bootstrap.php index 8aa257bff..73d4ec64b 100644 --- a/gulliver/system/class.bootstrap.php +++ b/gulliver/system/class.bootstrap.php @@ -855,9 +855,23 @@ class Bootstrap foreach ($listPluginsActive['_aPluginDetails'] as $key => $value) { $namePlugin = trim($key); $translation = array(); + + if (!file_exists(PATH_LANGUAGECONT . $namePlugin . '.en')) { + Translation::generateFileTranslationPlugin($namePlugin, 'en'); + } + + if ( ($lang != 'en') && (!file_exists(PATH_LANGUAGECONT . $namePlugin . '.' . $lang)) ) { + Translation::generateFileTranslationPlugin($namePlugin, $lang); + } + if (file_exists(PATH_LANGUAGECONT . $namePlugin . '.' . $lang)) { eval('global $translation'.$namePlugin.';'); require_once (PATH_LANGUAGECONT . $namePlugin . '.' . $lang); + } else { + if (file_exists(PATH_LANGUAGECONT . $namePlugin . '.en')) { + eval('global $translation'.$namePlugin.';'); + require_once (PATH_LANGUAGECONT . $namePlugin . '.en'); + } } } return true; diff --git a/workflow/engine/classes/model/Language.php b/workflow/engine/classes/model/Language.php index c139f0a46..5619bf8d9 100755 --- a/workflow/engine/classes/model/Language.php +++ b/workflow/engine/classes/model/Language.php @@ -543,6 +543,9 @@ class Language extends BaseLanguage throw new Exception( 'The plugin ' . $plugin . ' not exist' ); die(); } + if (!file_exists(PATH_PLUGINS . $plugin . PATH_SEP . 'translations' . PATH_SEP . 'translation.php')) { + throw new Exception( 'Translation.php not exist in plugin ' . $plugin); + } if (!file_exists(PATH_CORE . 'content' . PATH_SEP . 'translations' . PATH_SEP . $plugin . '.' . $idLanguage . '.po')) { throw new Exception( 'The file ' . $plugin . '.' . $idLanguage . '.po not exists' ); die(); @@ -656,6 +659,10 @@ class Language extends BaseLanguage function createLanguagePlugin ($plugin, $idLanguage) { + if (!file_exists(PATH_PLUGINS . $plugin . PATH_SEP . 'translations' . PATH_SEP . 'translation.php')) { + throw new Exception( 'Translation.php not exist in plugin ' . $plugin); + } + G::LoadSystem( 'i18n_po' ); G::LoadClass( "system" ); diff --git a/workflow/engine/classes/model/Translation.php b/workflow/engine/classes/model/Translation.php index 65e39c8f1..d817d5591 100755 --- a/workflow/engine/classes/model/Translation.php +++ b/workflow/engine/classes/model/Translation.php @@ -230,6 +230,13 @@ class Translation extends BaseTranslation */ public function generateFileTranslationPlugin ($plugin, $languageId = '') { + if (!file_exists(PATH_PLUGINS . $plugin . 'translations' . PATH_SEP . 'translation.php')) { + return; + } + + if (!file_exists(PATH_CORE . 'content' . PATH_SEP . 'translations' . PATH_SEP . $plugin . '.' . $languageId . '.po')) { + return; + } $translation = Array (); $translationJS = Array (); @@ -244,6 +251,37 @@ class Translation extends BaseTranslation foreach ($translations as $key => $row) { $translation[$key] = $row; } + $languageFile = PATH_CORE . 'content' . PATH_SEP . 'translations' . PATH_SEP . $plugin . '.' . $languageId . '.po' ; + G::LoadSystem( 'i18n_po' ); + $POFile = new i18n_PO( $languageFile ); + $POFile->readInit(); + while ($rowTranslation = $POFile->getTranslation()) { + foreach ($POFile->translatorComments as $a => $aux) { + $aux = trim( $aux ); + if ($aux == 'TRANSLATION') { + $identifier = $aux; + } else { + $var = explode( '/', $aux ); + if ($var[0] == 'LABEL') { + $context = $aux; + } + if ($var[0] == 'JAVASCRIPT') { + $context = $aux; + } + } + if (preg_match( '/^([\w-]+)\/([\w-]+\/*[\w-]*\.xml\?)/', $aux, $match )) { + $identifier = $aux; + } else { + if (preg_match( '/^([\w-]+)\/([\w-]+\/*[\w-]*\.xml$)/', $aux, $match )) { + $context = $aux; + } + } + } + if ($identifier == 'TRANSLATION') { + list ($category, $id) = explode( '/', $context ); + $translation[$id] = $rowTranslation['msgstr'] ; + } + } try { if (! is_dir( dirname( $cacheFile ) )) {