From 96e7a055c1d7ce0919fd91cdffaae06e3412dbad Mon Sep 17 00:00:00 2001 From: Brayan Osmar Pereyra Suxo Date: Thu, 14 Mar 2013 15:22:39 -0400 Subject: [PATCH] DOC SYSTEM I set variable TRANSLATION for plugins SOLVED I set variable TRANSLATION for plugins --- gulliver/system/class.bootstrap.php | 78 +++++++++++++++---------- gulliver/system/class.headPublisher.php | 1 + 2 files changed, 48 insertions(+), 31 deletions(-) diff --git a/gulliver/system/class.bootstrap.php b/gulliver/system/class.bootstrap.php index 24aee47b5..8aa257bff 100644 --- a/gulliver/system/class.bootstrap.php +++ b/gulliver/system/class.bootstrap.php @@ -579,7 +579,7 @@ class Bootstrap //trick to generate the translation.language.js file , merging two files if (strtolower($typefile) == 'js' && $typearray[0] == 'translation') { Bootstrap::sendHeaders($filename, 'text/javascript', $download, $downloadFileName); - $output = Bootstrap::streamJSTranslationFile($filename, $typearray[1]); + $output = Bootstrap::streamJSTranslationFile($filename, $typearray[count($typearray)-2]); echo $output; return; } @@ -857,8 +857,7 @@ class Bootstrap $translation = array(); if (file_exists(PATH_LANGUAGECONT . $namePlugin . '.' . $lang)) { eval('global $translation'.$namePlugin.';'); - require_once (PATH_LANGUAGECONT . $namePlugin . '.' . $lang); // load the foreign translations table - eval('$translation'.$namePlugin.' = $translation;'); + require_once (PATH_LANGUAGECONT . $namePlugin . '.' . $lang); } } return true; @@ -1170,37 +1169,54 @@ class Bootstrap */ public function streamJSTranslationFile($filename, $locale = 'en') { - $defaultTranslations = Array(); - $foreignTranslations = Array(); + $typearray = explode('.', basename($filename)); + $typeCount = count($typearray); + $typeName = ($typeCount > 3) ? $typearray[1] : $typearray[0]; + $typeName = trim($typeName); + $fileConst = ($typeName == 'translation') ? 'translation.' . $locale : 'translation.' . $typeName . '.' . $locale; - //if the default translations table doesn't exist we can't proceed - if (!is_file(PATH_LANGUAGECONT . 'translation.en')) { + if ($typeName == 'translation') { + $defaultTranslations = Array(); + $foreignTranslations = Array(); + $calendarJs = ''; + + //load the translations table + if (is_file(PATH_LANGUAGECONT . 'translation.en')) { + require_once (PATH_LANGUAGECONT . 'translation.en'); + $defaultTranslations = $translation; + } + + //if some foreign language was requested and its translation file exists + if ($locale != 'en' && file_exists(PATH_LANGUAGECONT . 'translation.' . $locale)) { + require_once (PATH_LANGUAGECONT . 'translation.' . $locale); //load the foreign translations table + $foreignTranslations = $translation; + } + + if (defined("SHOW_UNTRANSLATED_AS_TAG") && SHOW_UNTRANSLATED_AS_TAG != 0) { + $translation = $foreignTranslations; + } else { + $translation = array_merge($defaultTranslations, $foreignTranslations); + } + + $calendarJsFile = PATH_GULLIVER_HOME . "js/widgets/js-calendar/lang/" . $locale . ".js"; + if (!file_exists($calendarJsFile)) { + $calendarJsFile = PATH_GULLIVER_HOME . "js/widgets/js-calendar/lang/en.js"; + } + $calendarJs = file_get_contents($calendarJsFile) . "\n"; + + return $calendarJs . 'var TRANSLATIONS = ' . Bootstrap::json_encode($translation) . ';'; + } else { + unset($typearray[0]); + unset($typearray[count($typearray)]); + $newName = implode('.', $typearray); + if (file_exists(PATH_LANGUAGECONT . $newName)) { + require_once (PATH_LANGUAGECONT . $newName); + $return = ''; + eval('$return = "var TRANSLATIONS_" . strtoupper($typeName) . " = " . Bootstrap::json_encode($translation' . $typeName . ') . ";";'); + return $return; + } return; } - //load the translations table - require_once (PATH_LANGUAGECONT . 'translation.en'); - $defaultTranslations = $translation; - - //if some foreign language was requested and its translation file exists - if ($locale != 'en' && file_exists(PATH_LANGUAGECONT . 'translation.' . $locale)) { - require_once (PATH_LANGUAGECONT . 'translation.' . $locale); //load the foreign translations table - $foreignTranslations = $translation; - } - - if (defined("SHOW_UNTRANSLATED_AS_TAG") && SHOW_UNTRANSLATED_AS_TAG != 0) { - $translation = $foreignTranslations; - } else { - $translation = array_merge($defaultTranslations, $foreignTranslations); - } - - $calendarJs = ''; - $calendarJsFile = PATH_GULLIVER_HOME . "js/widgets/js-calendar/lang/" . $locale . ".js"; - if (!file_exists($calendarJsFile)) { - $calendarJsFile = PATH_GULLIVER_HOME . "js/widgets/js-calendar/lang/en.js"; - } - $calendarJs = file_get_contents($calendarJsFile) . "\n"; - - return $calendarJs . 'var TRANSLATIONS = ' . Bootstrap::json_encode($translation) . ';'; } /** diff --git a/gulliver/system/class.headPublisher.php b/gulliver/system/class.headPublisher.php index 021bc8537..36783f5e9 100644 --- a/gulliver/system/class.headPublisher.php +++ b/gulliver/system/class.headPublisher.php @@ -464,6 +464,7 @@ class headPublisher if (count($aux) == 2 && defined('G_PLUGIN_CLASS')) { $oPluginRegistry = & PMPluginRegistry::getSingleton(); if ($oPluginRegistry->isRegisteredFolder($aux[0])) { + array_push($this->extJsLibrary, 'translation.' . trim($aux[0]) . '.' . SYS_LANG); $sPath = PATH_PLUGINS; } }