loadTranslation('en'); } public function unloadEnglishTranslation() { $GLOBALS['Piwik_translations'] = array(); } public function reloadLanguage($language = false) { if(empty($language)) { $language = $this->getLanguageToLoad(); } $this->unloadEnglishTranslation(); $this->loadEnglishTranslation(); $this->loadCoreTranslation($language); Piwik_PluginsManager::getInstance()->loadPluginTranslations($language); } /** * Reads the specified code translation file in memory. * * @param bool|string $language 2 letter language code. If not specified, will detect current user translation, or load default translation. * @return void */ public function loadCoreTranslation($language = false) { if(empty($language)) { $language = $this->getLanguageToLoad(); } if($this->loadedLanguage == $language) { return; } $this->loadTranslation($language); } private function loadTranslation($language) { $path = PIWIK_INCLUDE_PATH . '/lang/' . $language . '.php'; if(!Piwik_Common::isValidFilename($language) || !is_readable($path)) { throw new Exception(Piwik_TranslateException('General_ExceptionLanguageFileNotFound', array($language))); } require $path; $this->mergeTranslationArray($translations); $this->setLocale(); $this->loadedLanguage = $language; } public function mergeTranslationArray($translation) { if(!isset($GLOBALS['Piwik_translations'])) { $GLOBALS['Piwik_translations'] = array(); } // we could check that no string overlap here $GLOBALS['Piwik_translations'] = array_merge($GLOBALS['Piwik_translations'], array_filter($translation, 'strlen')); } /** * @return string the language filename prefix, eg 'en' for english * @throws exception if the language set is not a valid filename */ public function getLanguageToLoad() { if(is_null(self::$languageToLoad)) { $lang = Piwik_Common::getRequestVar('language', '', 'string'); Piwik_PostEvent('Translate.getLanguageToLoad', $lang); self::$languageToLoad = $lang; } return self::$languageToLoad; } /** Reset the cached language to load. Used in tests. */ static public function reset() { self::$languageToLoad = null; } public function getLanguageLoaded() { return $this->loadedLanguage; } public function getLanguageDefault() { return Piwik_Config::getInstance()->General['default_language']; } /** * Generate javascript translations array * * @param array $moduleList * @return string containing javascript code with translations array (including