Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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'];
    }
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}