/** * Checks if this query is qualified for translation and parses query * * @param string $sql SQL query * @param string $prefix Table prefix * * @return mixed Parsed query with added table joins and fields if found */ public static function buildTranslationQuery($sql = '', $prefix = '') { $db = JFactory::getDbo(); $selectedLanguage = !empty($db->forceLanguageTranslation) ? $db->forceLanguageTranslation : JFactory::getLanguage()->getTag(); if (!empty($db->parseTablesBefore)) { foreach ($db->parseTablesBefore as $tableGroup) { $sql = self::parseSelectQuery($sql, $prefix, $tableGroup->language, $tableGroup->translationTables); } } /** * Basic check for translations, translation will not be inserted if: * If we do not have SELECT anywhere in query * If current language is site default language * If we are in administration */ if (empty($sql) || JFactory::getApplication()->isAdmin() || !stristr(mb_strtolower($sql), 'select') || RTranslationHelper::getSiteLanguage() == $selectedLanguage) { if (empty($db->parseTablesBefore) && empty($db->parseTablesAfter)) { return null; } } $translationTables = RTranslationHelper::getInstalledTranslationTables(); $translationTables = RTranslationHelper::removeFromEditForm($translationTables); $sql = self::parseSelectQuery($sql, $prefix, $selectedLanguage, $translationTables); if (!empty($db->parseTablesAfter)) { foreach ($db->parseTablesAfter as $tableGroup) { $sql = self::parseSelectQuery($sql, $prefix, $tableGroup->language, $tableGroup->translationTables); } } return $sql; }
/** * Set language of the site * * @param string $language Language name * * @return void */ protected function setLanguage($language) { $languageObject = JFactory::getLanguage(); $languages = JLanguageHelper::getLanguages('sef'); if (!empty($language) && isset($languages[$language])) { $languageObject->setLanguage($languages[$language]->lang_code); } else { $languageObject->setLanguage($languages[RTranslationHelper::getSiteLanguage()]->lang_code); } }
/** * After route. * * @return void * * @since 3.4 */ public function onAfterRoute() { if (defined('REDCORE_LIBRARY_LOADED')) { if (RTranslationHelper::getSiteLanguage() != JFactory::getLanguage()->getTag()) { // Reset menus because they are loaded before any other module RMenu::resetJoomlaMenuItems(); } } }