Ejemplo n.º 1
0
 /**
  * Include plugin translation file. The method is trying to include
  * plugin translation file first for language saved in preferences and
  * if this operation failed for language from global config
  * This method could be called automatically by translate() method
  * lazy initialization
  *
  * @access public
  * @static
  * @param string $module   Module name
  * @param string $package  Package name
  * @see translate()
  * @todo TODOLANG The CONF fallback below will fail
  *
  * @return boolean         True on success else false
  *
  */
 function init($module, $package = null)
 {
     if (isset($GLOBALS['_MAX']['PLUGIN_TRANSLATION'][$module][$package])) {
         // Already included
         return true;
     }
     if (!empty($GLOBALS['_MAX']['PREF']['language'])) {
         $language = $GLOBALS['_MAX']['PREF']['language'];
     } elseif (!empty($GLOBALS['_MAX']['CONF']['max']['language'])) {
         $language = $GLOBALS['_MAX']['CONF']['max']['language'];
     } else {
         $language = 'en';
     }
     if (MAX_Plugin_Translation::includePluginLanguageFile($module, $package, $language)) {
         return true;
     } else {
         // Check extension path for language files (temporary added as new translation system isn't ready yet)
         if ($package === null) {
             $path = OX_EXTENSIONS_PATH . '/' . $module . '/_lang/';
         } else {
             $path = OX_EXTENSIONS_PATH . '/' . $module . '/' . $package . '/_lang/';
         }
         if (MAX_Plugin_Translation::includePluginLanguageFile($module, $package, $language, $path)) {
             return true;
         }
     }
 }
 function testIncludePluginLanguageFile()
 {
     $extension = 'nonExistingModule';
     $group = 'nonExistingPackage';
     $language = 'nonExistingLanguage';
     $ret = MAX_Plugin_Translation::includePluginLanguageFile($extension, null, $language);
     $this->assertIdentical($ret, false);
     $this->assertIdentical($GLOBALS['_MAX']['PLUGIN_TRANSLATION'][$extension], array());
     $ret = MAX_Plugin_Translation::includePluginLanguageFile($extension, $group, $language);
     $this->assertIdentical($ret, false);
     $this->assertIdentical($GLOBALS['_MAX']['PLUGIN_TRANSLATION'][$extension][$group], array());
     $translate = 'Some translation string';
     $ret = MAX_Plugin_Translation::translate($translate, $extension, $group);
     // translation wasn't included so should return the same value
     $this->assertIdentical($ret, $translate);
     $path = MAX_PLUGINTRANSLATION_TEST_DIR . '/_lang/';
     include $path . 'en.php';
     $enWords = $words;
     include $path . 'pl.php';
     $plWords = $words;
     $ret = MAX_Plugin_Translation::includePluginLanguageFile($extension, null, 'en', $path);
     $this->assertIdentical($ret, true);
     $this->assertIdentical($GLOBALS['_MAX']['PLUGIN_TRANSLATION'][$extension], $enWords);
     $ret = MAX_Plugin_Translation::translate('translate me', $extension, $group);
     $this->assertIdentical($ret, 'translated text');
     // Clear the translation memory
     unset($GLOBALS['_MAX']['PLUGIN_TRANSLATION']);
     $ret = MAX_Plugin_Translation::includePluginLanguageFile($extension, null, 'pl', $path);
     $this->assertIdentical($ret, true);
     $this->assertIdentical($GLOBALS['_MAX']['PLUGIN_TRANSLATION'][$extension], array_merge($enWords, $plWords));
     // Check that a translation which doesn't exist in the selected language falls through to the english
     $ret = MAX_Plugin_Translation::translate('translate me (fallback to english)', $extension, $group);
     $this->assertIdentical($ret, 'this is from the english pack');
     // Check that a translation key which doesn't exist in selected or english languages returns the key unchanged
     $ret = MAX_Plugin_Translation::translate('this string does not exist in the language packs', $extension, $group);
     $this->assertIdentical($ret, 'this string does not exist in the language packs');
     // Check that the non-existent key with the same name as group returns the key unchanged.
     $ret = MAX_Plugin_Translation::translate($group, $extension, $group);
     $this->assertIdentical($ret, $group);
 }