/** * 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); }