73 lines
2.0 KiB
PHP
73 lines
2.0 KiB
PHP
<?php
|
|
$current_dir= basename (getcwd ());
|
|
|
|
/*
|
|
* Language registration
|
|
*/
|
|
|
|
$registered_languages= array();
|
|
|
|
function register_lang ( $code, $lang ) {
|
|
global $registered_languages;
|
|
$registered_languages[$code]= $lang;
|
|
}
|
|
|
|
if ($current_dir == "expolibre.org")
|
|
include ("languages.php");
|
|
else
|
|
include ("../languages.php");
|
|
|
|
/*
|
|
* Prefered language detection
|
|
*/
|
|
|
|
function prefered_language () {
|
|
global $registered_languages;
|
|
$locale= locale_accept_from_http ($_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
|
return locale_lookup (array_keys ($registered_languages), $locale, true, 'fr');
|
|
}
|
|
|
|
/*
|
|
* URL translation
|
|
*/
|
|
|
|
function url_translate ($url, $to) {
|
|
global $registered_languages;
|
|
|
|
$current_dir= basename (getcwd ());
|
|
if ($current_dir == "expolibre.org")
|
|
$from= 'fr';
|
|
else
|
|
$from= $current_dir;
|
|
|
|
$name= basename ($url);
|
|
$index= array_search ($name, $registered_languages[$from]['pages']);
|
|
if ($index === false)
|
|
return $registered_languages[$to]['loc'];
|
|
return $registered_languages[$to]['loc'] . $registered_languages[$to]['pages'][$index];
|
|
}
|
|
|
|
|
|
/*
|
|
* Redirect to prefered language, if needed, when referer is none or ourself
|
|
*/
|
|
$server_names= array('expolibre.org', 'www.expolibre.org', 'libreexpo.org', 'www.libreexpo.org');
|
|
if (!isset ($_SERVER['HTTP_REFERER']) or (
|
|
strrpos ($_SERVER['HTTP_REFERER'], 'expolibre.org') === false and
|
|
strrpos ($_SERVER['HTTP_REFERER'], 'libreexpo.org') === false)) {
|
|
|
|
# if we are deep in the tree we don't upgrade language: it may be choosen
|
|
if ($current_dir == "expolibre.org") {
|
|
$current_dir= $registered_languages['fr']['loc'];
|
|
$prefered_dir= $registered_languages[prefered_language ()]['loc'];
|
|
if (basename($current_dir) != basename ($prefered_dir)) {
|
|
header ("Location: " . url_translate ($_SERVER['REQUEST_URI'], prefered_language ()));
|
|
}
|
|
# if we are not on the good domain
|
|
if ($prefered_dir and false === strpos($prefered_dir, $_SERVER['SERVER_NAME'])) {
|
|
header ("Location: " . url_translate ($_SERVER['REQUEST_URI'], prefered_language ()));
|
|
}
|
|
}
|
|
}
|
|
|
|
?>
|