function loadLanguage($template_name, $lang = '', $fatal = true) { global $boarddir, $boardurl, $user_info, $language_dir, $language, $settings, $context, $txt, $db_show_debug; static $already_loaded = array(); // Default to the user's language. if ($lang == '') { $lang = $user_info['language']; } // Obviously, the current theme is most important to check. $attempts = array(array($settings['theme_dir'], $template_name, $lang, $settings['theme_url']), array($settings['theme_dir'], $template_name, $language, $settings['theme_url'])); // Do we have a base theme to worry about? if (isset($settings['base_theme_dir'])) { $attempts[] = array($settings['base_theme_dir'], $template_name, $lang, $settings['base_theme_url']); $attempts[] = array($settings['base_theme_dir'], $template_name, $language, $settings['base_theme_url']); } // Fallback on the default theme if necessary. $attempts[] = array($settings['default_theme_dir'], $template_name, $lang, $settings['default_theme_url']); $attempts[] = array($settings['default_theme_dir'], $template_name, $language, $settings['default_theme_url']); // Try to include the language file. foreach ($attempts as $k => $file) { if (file_exists($file[0] . '/languages/' . $file[1] . '.' . $file[2] . '.php')) { $language_dir = $file[0] . '/languages'; $lang = $file[2]; // Hmmm... do we really still need this? $language_url = $file[3]; template_include($file[0] . '/languages/' . $file[1] . '.' . $file[2] . '.php'); break; } } // That couldn't be found! Log the error, but *try* to continue normally. if (!isset($language_url)) { if ($fatal) { log_error(sprintf($txt['theme_language_error'], $template_name . '.' . $lang)); } return false; } if ($db_show_debug === true) { $context['debug']['language_files'][] = $template_name . '.' . $lang . ' (' . basename($language_url) . ')'; } // Return the language actually loaded. return $lang; }
function WrapAction() { global $context, $settings, $sourcedir; // Load any necessary template(s)? if (isset($settings['catch_action']['template'])) { // Load both the template and language file. (but don't fret if the language file isn't there...) loadTemplate($settings['catch_action']['template']); loadLanguage($settings['catch_action']['template'], '', false); } // Any special layers? if (isset($settings['catch_action']['layers'])) { $context['template_layers'] = $settings['catch_action']['layers']; } // Just call a function? if (isset($settings['catch_action']['function'])) { if (isset($settings['catch_action']['filename'])) { template_include($sourcedir . '/' . $settings['catch_action']['filename'], true); } $settings['catch_action']['function'](); } elseif (isset($settings['catch_action']['sub_template'])) { $context['sub_template'] = $settings['catch_action']['sub_template']; } }
function loadLanguage($template_name, $lang = '', $fatal = true, $force_reload = false) { global $user_info, $language, $settings, $context, $modSettings; global $db_show_debug, $sourcedir, $txt; static $already_loaded = array(); // Default to the user's language. if ($lang == '') { $lang = isset($user_info['language']) ? $user_info['language'] : $language; } // Do we want the English version of language file as fallback? if (empty($modSettings['disable_language_fallback']) && $lang != 'english') { loadLanguage($template_name, 'english', false); } if (!$force_reload && isset($already_loaded[$template_name]) && $already_loaded[$template_name] == $lang) { return $lang; } // Make sure we have $settings - if not we're in trouble and need to find it! if (empty($settings['default_theme_dir'])) { require_once $sourcedir . '/ScheduledTasks.php'; loadEssentialThemeData(); } // What theme are we in? $theme_name = basename($settings['theme_url']); if (empty($theme_name)) { $theme_name = 'unknown'; } // For each file open it up and write it out! foreach (explode('+', $template_name) as $template) { // Obviously, the current theme is most important to check. $attempts = array(array($settings['theme_dir'], $template, $lang, $settings['theme_url']), array($settings['theme_dir'], $template, $language, $settings['theme_url'])); // Do we have a base theme to worry about? if (isset($settings['base_theme_dir'])) { $attempts[] = array($settings['base_theme_dir'], $template, $lang, $settings['base_theme_url']); $attempts[] = array($settings['base_theme_dir'], $template, $language, $settings['base_theme_url']); } // Fall back on the default theme if necessary. $attempts[] = array($settings['default_theme_dir'], $template, $lang, $settings['default_theme_url']); $attempts[] = array($settings['default_theme_dir'], $template, $language, $settings['default_theme_url']); // Fall back on the English language if none of the preferred languages can be found. if (!in_array('english', array($lang, $language))) { $attempts[] = array($settings['theme_dir'], $template, 'english', $settings['theme_url']); $attempts[] = array($settings['default_theme_dir'], $template, 'english', $settings['default_theme_url']); } // Try to find the language file. $found = false; foreach ($attempts as $k => $file) { if (file_exists($file[0] . '/languages/' . $file[1] . '.' . $file[2] . '.php')) { // Include it! template_include($file[0] . '/languages/' . $file[1] . '.' . $file[2] . '.php'); // Note that we found it. $found = true; break; } } // That couldn't be found! Log the error, but *try* to continue normally. if (!$found && $fatal) { log_error(sprintf($txt['theme_language_error'], $template_name . '.' . $lang, 'template')); break; } } // Keep track of what we're up to soldier. if ($db_show_debug === true) { $context['debug']['language_files'][] = $template_name . '.' . $lang . ' (' . $theme_name . ')'; } // Remember what we have loaded, and in which language. $already_loaded[$template_name] = $lang; // Return the language actually loaded. return $lang; }
function loadLanguage($template_name, $lang = '', $fatal = true, $force_reload = false) { global $user_info, $language, $settings, $context; global $cachedir, $db_show_debug, $sourcedir; static $already_loaded = array(); // Default to the user's language. if ($lang == '') { $lang = isset($user_info['language']) ? $user_info['language'] : $language; } if (!$force_reload && isset($already_loaded[$template_name]) && $already_loaded[$template_name] == $lang) { return $lang; } // What theme are we in? $theme_name = basename($settings['theme_url']); if (empty($theme_name)) { $theme_name = 'unknown'; } // Keep track of what we're up to soldier. if ($db_show_debug === true) { $context['debug']['language_files'][] = $template_name . '.' . $lang . ' (' . $theme_name . ')'; } // Is this cached? If not recache! if (!file_exists($cachedir . '/lang_' . $template_name . '_' . $lang . '_' . $theme_name . '.php')) { require_once $sourcedir . '/ManageMaintenance.php'; $do_include = cacheLanguage($template_name, $lang, $fatal, $theme_name); } else { template_include($cachedir . '/lang_' . $template_name . '_' . $lang . '_' . $theme_name . '.php'); } // Remember what we have loaded, and in which language. $already_loaded[$template_name] = $lang; // Return the language actually loaded. return $lang; }