<?php
// Some config stuff :)
$config['default_lang'] = 'nl';
if (!isset($config['path']['script'])) {     $config['path']['script'] = './';
}
$config['path']['lang'] = $config['path']['script'] . 'languages/';
$config['path']['flags'] = $config['path']['script'] . 'images/flags/';
$config['lang_save_time'] = 7 * 24 * 60 * 60; // A week
$config['inc_alt_lang'] = true;
$config['make_lang_bar'] = true;
 
// Initiate language var
$GLOBALS['lang'] = array();  
/* Search for language files */
$lang_files = array(); // This array will hold the installed languages  
// Open the language file directory
$handle = opendir($config['path']['lang']);  
// Loop over the files
while (($file = readdir($handle)) !== false) {
    // Filter out non-files
    if ($file != '.' && $file != '..')
    {
        // Check if the 'file' is an valid language directory
        if (is_dir($config['path']['lang'] . $file) && ereg('^[a-z]{2}$', $file))         {
            $lang_files[] = $file;
        }
    }
}
 
/* Search for user selected languages */
$user_langs = array();     // This array will hold the user selected languages if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
    // The user has selected preferred languages, prepare them to read
    $accept_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $accept_lang = preg_replace('/(;q=[0-9]+\.[0-9]+)/i', '', $accept_lang);     $accept_langs = explode(',', $accept_lang);  
    // Loop over the languages and add them to the array
    foreach ($accept_langs as $accept_lang)
    {
        // Remove potential countries
        $accept_lang = explode('-', $accept_lang);         $user_langs[] = $accept_lang[0];
    }
    // Remove duplicate values from the array
}
 
 
/* Determine the language in which the page will be shown */
// First check if the user selected a language to show the page
if (isset($_GET['lang'])) {
    $suggested_lang = $_GET['lang'];
}
// Check for a previously selected language
elseif (isset($_COOKIE['lang'])) {
    $suggested_lang = $_COOKIE['lang'];
}
// If a preferred language is selected check if that language file is available
if (isset($suggested_lang) && !empty($suggested_lang) && in_array($suggested_lang, $lang_files)) {
    $page['lang'] = $suggested_lang;
    // Save the preferred language in a cookie
    setcookie('lang', $suggested_lang, time() + $config['lang_save_time']); }
else
{
    /* None or invalid language preference is expressed, obtain a language automatically */
    // Select the first language which is available
    foreach ($user_langs as $user_lang)
    {
        {
            $page['lang'] = $user_lang;
            // Stop searching
            break;
        }
    }
    if (empty($page['lang']))     {
        // Still no language has been selected use the default one
        $page['lang'] = $config['default_lang'];
    }
}
 
// Include some language files
include_lang_file('all');
include_lang_file('standard');
 
 
// Make the language bar if enabled in the config
if ($config['make_lang_bar'])
{
    // These flags dont't have the same name as their language
        'en' => 'gb'
    );
 
    // Start making the language bar
    $lang_bar = '';
    foreach ($lang_files as $lang_file)
    {
        if ($lang_file != $page['lang'])
        {
            // Fix some flags
            $flag = $lang_file;
            foreach ($flag_fix as $old => $new)
            {
            }
 
            // The path to each flag
            $path = $config['path']['flags'] . $flag . '.gif';
 
            // Add current language to the language bar
            $lang_bar .= '<a href="?lang=' . $lang_file . '" title="'. $lang[$lang_file] . '"><img src="' . $path . '" alt="' . $lang[$lang_file] . '" border="0" /></a>' . "\n";
        }
    }
}
 
/* Include the given or an alternative language file */
function include_lang_file($name)
{
    {
        // Also make the config and page arrays available
 
        // Make the path to the language file
        $path = $config['path']['lang'];
        $path .= $name == 'all' ? 'lang.all.php' : $page['lang'] . '/lang.' . $name . '.php';
 
        {
            include $path;
        }
 
        // Try to include another file if enabled in the config
        elseif ($name != 'all' && $config['inc_alt_lang'])
        {
 
            // Make the path to an alternative language file
            $alt_path = '';
 
            // Select the first user language which is available
            foreach ($user_langs as $user_lang)
            {
                if (file_exists($config['path']['lang'] . $user_lang . '/lang.' . $name . '.php'))                 {
                    $alt_path = $config['path']['lang'] . $user_lang . '/lang.' . $name . '.php';
                    // Stop searching
                    break;
                }
            }
            // If still no language has been found, use the default one
            {
                $alt_path = $config['path']['lang'] . $config['default_lang'] . '/lang.' . $name . '.php';
            }
            // Try to include the language file;
            {
                include $alt_path;
            }
        }
    }
 
    // Make globally available
    return $GLOBALS['lang'] = array_merge($GLOBALS['lang'], $lang); }