Expolibre-3-www/lib/i18n.php

68 lines
1.7 KiB
PHP
Raw Normal View History

2016-06-24 11:35:09 +02:00
<?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 == "htdocs")
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 == "htdocs")
$from= 'fr';
else
$from= $current_dir;
$name= basename ($url);
$index= array_search ($name, $registered_languages[$from]['pages']);
2016-11-11 22:17:50 +01:00
if ($index === false)
2016-09-13 17:31:59 +02:00
return $registered_languages[$to]['loc'];
return $registered_languages[$to]['loc'] . $registered_languages[$to]['pages'][$index];
}
2016-06-24 11:35:09 +02:00
/*
* 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)) {
2018-07-06 09:49:21 +02:00
if ($current_dir == "htdocs") {
2016-06-24 11:35:09 +02:00
$current_dir= $registered_languages['fr']['loc'];
2018-07-06 09:49:21 +02:00
$prefered_dir= $registered_languages[prefered_language ()]['loc'];
if (basename($current_dir) != basename ($prefered_dir)) {
header ("Location: " . url_translate ($_SERVER['REQUEST_URI'], prefered_language ()));
}
2016-06-24 11:35:09 +02:00
}
}
2016-06-24 11:35:09 +02:00
?>