diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index 68a5a56077f..9fff1907739 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -96,7 +96,7 @@ if (isset($_GET["action"]) && $_GET["action"] == 'edit') $var=!$var; print ''.$langs->trans("DefaultLanguage").''; $html=new Form($db); - $html->select_lang($conf->global->MAIN_LANG_DEFAULT,'main_lang_default'); + $html->select_lang($conf->global->MAIN_LANG_DEFAULT,'main_lang_default',1); print ''; @@ -200,7 +200,7 @@ else print ''.$langs->trans("Parameter").''.$langs->trans("Value").''; $var=!$var; - print ''.$langs->trans("DefaultLanguage").'' . $conf->global->MAIN_LANG_DEFAULT . ''; + print ''.$langs->trans("DefaultLanguage").'' . ($conf->global->MAIN_LANG_DEFAULT=='auto'?$langs->trans("AutoDetectLang"):$conf->global->MAIN_LANG_DEFAULT) . ''; $var=!$var; print ''.$langs->trans("DefaultMaxSizeList").'' . $conf->global->SIZE_LISTE_LIMIT . ''; @@ -279,7 +279,7 @@ else print ''.$langs->trans("Parameter").''.$langs->trans("Value").''; $var=!$var; print ''.$langs->trans("MessageOfDay").'' . stripslashes(nl2br($conf->global->MAIN_MOTD)) . ''; - print '
'; + print ''; print '
'; print ''.$langs->trans("Edit").''; diff --git a/htdocs/html.form.class.php b/htdocs/html.form.class.php index da3e34b0d52..c8636d3779b 100644 --- a/htdocs/html.form.class.php +++ b/htdocs/html.form.class.php @@ -240,37 +240,44 @@ class Form } - /** - * \brief Retourne la liste déroulante des langues disponibles - * \param selected Langue présélectionnée - * \param htmlname Nom de la zone select - */ - function select_lang($selected='',$htmlname='lang_id') - { - global $langs; - - $langs_available=$langs->get_available_languages(); + /** + * \brief Retourne la liste déroulante des langues disponibles + * \param selected Langue présélectionnée + * \param htmlname Nom de la zone select + * \param showauto Affiche choix auto + */ + function select_lang($selected='',$htmlname='lang_id',$showauto=0) + { + global $langs; - print ''; - } + $langs_available=$langs->get_available_languages(); + + print ''; + } /** diff --git a/htdocs/install/index.php b/htdocs/install/index.php index 543cd0c9166..89590a6d7f5 100644 --- a/htdocs/install/index.php +++ b/htdocs/install/index.php @@ -29,6 +29,7 @@ */ include_once("./inc.php"); +include_once("../html.form.class.php"); $err = 0; @@ -38,6 +39,7 @@ $err = 0; if (file_exists($conffile)) { header("Location: check.php"); + exit; } @@ -51,28 +53,14 @@ $langs->load("admin"); $langs_available=$langs->get_available_languages(".."); $selected=$langs->defaultlang; +define('DOL_DOCUMENT_ROOT','..'); + print '

'; print ''; -print ''; +print ''; print '
'.$langs->trans("DefaultLanguage").' :  '; -print ''.$langs->trans("DefaultLanguage").' : '; +$html=new Form(''); +$html->select_lang($selected,'selectlang',1); +print '
'; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 8b9a06e431d..d1d7a0988c5 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -31,6 +31,7 @@ System=System SystemInfo=System informations Yes=Yes No=No +AutoDetectLang=Autodetect (browser language) Rights=Permissions BoxesDesc=Boxes are screen area that show some informations on some pages. You can choose between showing or not a such box by selecting target page en clicking 'Activate', or by clicking the dustbin to disable it. Only boxes about enabled modules are shown. ModulesDesc=Dolibarr modules define which functionality is enabled in software. Some modules require permissions you must grant to users, after enabling module. diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 0430b63167c..6d2d0f4b60b 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -31,6 +31,7 @@ System=Syst SystemInfo=Infos Système Yes=Oui No=Non +AutoDetectLang=Detection auto (langue navigateur) Rights=Permissions BoxesDesc=Les boîtes sont des zones d'information réduites qui s'affichent sur certaines pages. Vous pouvez choisir ou non d'activer une boîte en sélectionnant la page cible et en cliquant sur 'Activer', ou en cliquant sur la poubelle pour la désactiver. Seules les boîtes en rapport avec un module actif sont présentées. ModulesDesc=Les modules Dolibarr définissent les fonctionnalités disponibles dans l'application. Certains modules nécessitent des droits qu'il vous faudra affecter aux utilisateurs pour qu'ils puissent accéder à leurs fonctionnalités. diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index c15c268d2c5..81fc1e527b3 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -3,7 +3,7 @@ * Copyright (C) 2003 Xavier Dutoit * Copyright (C) 2004-2005 Laurent Destailleur * Copyright (C) 2004 Sebastien Di Cintio - * Copyright (C) 2004 Benoit Mortier + * Copyright (C) 2004 Benoit Mortier * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/htdocs/translate.class.php b/htdocs/translate.class.php index a94de46ad6e..3f833916daa 100644 --- a/htdocs/translate.class.php +++ b/htdocs/translate.class.php @@ -42,22 +42,27 @@ class Translate { /** * \brief Constructeur de la classe - * \param dir repertoire racine des fichiers de traduction - * \param defaultlang langue par defaut à utiliser + * \param dir Repertoire racine des fichiers de traduction + * \param defaultlang Langue par defaut à utiliser */ - - function Translate($dir = "", $defaultlang = "") { + function Translate($dir = "", $defaultlang = "") + { $this->dir=$dir; - $this->defaultlang=$defaultlang; + if ($defaultlang == 'auto') + { + $listlang=split('[,;]',$_SERVER["HTTP_ACCEPT_LANGUAGE"]); + $defaultlang=ereg_replace('-','_',$listlang[0]); + } + if (strlen($defaultlang) <= 3) $defaultlang=$defaultlang."_".$defaultlang; + $this->defaultlang=strtolower($defaultlang); } /** * \brief Charge en mémoire le tableau de traduction pour un domaine particulier * Si le domaine est deja chargé, la fonction ne fait rien * \param domain Nom du domain (fichier lang) à charger - * \param alt Charge le fichier alternatif meme si fichier dans la langue est trouvé + * \param alt Utilise le fichier alternatif meme si fichier dans la langue est trouvée */ - function Load($domain,$alt=0) { if (isset($this->tab_loaded[$domain]) && $this->tab_loaded[$domain]) { return; } // Le fichier de ce domaine est deja chargé @@ -65,47 +70,52 @@ class Translate { // Repertoire de traduction $scandir = $this->dir."/".$this->defaultlang; $file_lang = $scandir . "/$domain.lang"; + $filelangexists=is_file($file_lang); - if ($alt || ! is_file($file_lang)) { + if ($alt || ! $filelangexists) + { // Repertoire de la langue alternative if ($this->defaultlang != "en_US") $scandiralt = $this->dir."/en_US"; else $scandiralt = $this->dir."/fr_FR"; $file_lang = $scandiralt . "/$domain.lang"; + $filelangexists=is_file($file_lang); $alt=1; } - $i = 0; - if(is_file($file_lang)) { - if($fp = @fopen($file_lang,"rt")){ + if ($filelangexists) + { + if($fp = @fopen($file_lang,"rt")) + { $finded = 0; - while (($ligne = fgets($fp,4096)) && ($finded == 0)){ - if ($ligne[0] != "\n" && $ligne[0] != " " && $ligne[0] != "#") { + while (($ligne = fgets($fp,4096)) && ($finded == 0)) + { + if ($ligne[0] != "\n" && $ligne[0] != " " && $ligne[0] != "#") + { $tab=split('=',$ligne,2); //print "Domain=$domain, found a string for $tab[0] with value $tab[1]
"; - if (! isset($this->tab_translate[$tab[0]])) $this->tab_translate[$tab[0]]=trim($tab[1]); + if (! isset($this->tab_translate[$tab[0]])) $this->tab_translate[$tab[0]]=trim(isset($tab[1])?$tab[1]:''); } } fclose($fp); // Pour les langues aux fichiers parfois incomplets, on charge la langue alternative - if (! $alt && $this->defaultlang != "fr_FR" && $this->defaultlang != "en_US") { + if (! $alt && $this->defaultlang != "fr_FR" && $this->defaultlang != "en_US") + { dolibarr_syslog("translate::load loading alternate translation file"); $this->load($domain,1); } $this->tab_loaded[$domain]=1; // Marque ce fichier comme chargé } - } - } /** * \brief Retourne la liste des domaines chargées en memoire * \return array Tableau des domaines chargées */ - - function list_domainloaded() { + function list_domainloaded() + { return join(",",array_keys($this->tab_loaded)); } @@ -120,8 +130,8 @@ class Translate { * \param param3 chaine de param1 * \return string chaine traduite */ - - function trans($str, $param1='', $param2='', $param3='') { + function trans($str, $param1='', $param2='', $param3='') + { return $this->transnoentities($str,htmlentities($param1),htmlentities($param2),htmlentities($param3)); } diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index b37c6d30a98..d3baddb5d36 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -142,23 +142,23 @@ if ($_GET["action"] == 'edit') $var=true; print ''; - print ''; + print ''; // Langue par defaut $var=!$var; print ''; - print ''; - print ''; + print ''; + print ''; print ''; // Taille max des listes $var=!$var; print ''; print ''; - print ''; + print ''; print ''; print '
'.$langs->trans("Parameter").''.$langs->trans("DefaultValue").' '.$langs->trans("PersonalValue").'
'.$langs->trans("Parameter").''.$langs->trans("DefaultValue").' '.$langs->trans("PersonalValue").'
'.$langs->trans("Language").''.$conf->global->MAIN_LANG_DEFAULT.'conf->MAIN_LANG_DEFAULT?" checked":"").'> '.$langs->trans("UsePersonalValue").''.($conf->global->MAIN_LANG_DEFAULT=='auto'?$langs->trans("AutoDetectLang"):$conf->global->MAIN_LANG_DEFAULT).'conf->MAIN_LANG_DEFAULT?" checked":"").'> '.$langs->trans("UsePersonalValue").''; $html=new Form($db); - $html->select_lang($fuser->conf->MAIN_LANG_DEFAULT,'main_lang_default'); + $html->select_lang($fuser->conf->MAIN_LANG_DEFAULT,'main_lang_default',1); print '
'.$langs->trans("MaxSizeList").''.$conf->global->SIZE_LISTE_LIMIT.'conf->SIZE_LISTE_LIMIT?" checked":"").'> '.$langs->trans("UsePersonalValue").'conf->SIZE_LISTE_LIMIT?" checked":"").'> '.$langs->trans("UsePersonalValue").'

'; @@ -182,18 +182,18 @@ else $var=true; print ''; - print ''; + print ''; $var=!$var; print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; $var=!$var; print ''; print ''; - print ''; + print ''; print ''; print '
'.$langs->trans("Parameter").''.$langs->trans("DefaultValue").' '.$langs->trans("PersonalValue").'
'.$langs->trans("Parameter").''.$langs->trans("DefaultValue").' '.$langs->trans("PersonalValue").'
'.$langs->trans("Language").''.$conf->global->MAIN_LANG_DEFAULT.'conf->MAIN_LANG_DEFAULT?" checked":"").'> '.$langs->trans("UsePersonalValue").'' . $fuser->conf->MAIN_LANG_DEFAULT . '
'.($conf->global->MAIN_LANG_DEFAULT=='auto'?$langs->trans("AutoDetectLang"):$conf->global->MAIN_LANG_DEFAULT).'conf->MAIN_LANG_DEFAULT?" checked":"").'> '.$langs->trans("UsePersonalValue").''.($fuser->conf->MAIN_LANG_DEFAULT=='auto'?$langs->trans("AutoDetectLang"):$fuser->conf->MAIN_LANG_DEFAULT).'
'.$langs->trans("MaxSizeList").''.$conf->global->SIZE_LISTE_LIMIT.'conf->SIZE_LISTE_LIMIT?" checked":"").'> '.$langs->trans("UsePersonalValue").'conf->SIZE_LISTE_LIMIT?" checked":"").'> '.$langs->trans("UsePersonalValue").'' . $fuser->conf->SIZE_LISTE_LIMIT . '

'; @@ -225,13 +225,13 @@ function show_theme($fuser,$edit=0) $thumbsbyrow=6; print ''; - print ''; + print ''; $var=false; print ''; print ''; - print ''; + print ''; print ''; $var=!$var;
'.$langs->trans("Parameter").''.$langs->trans("DefaultValue").' 
'.$langs->trans("Parameter").''.$langs->trans("DefaultValue").' 
'.$langs->trans("DefaultSkin").''.$conf->global->MAIN_THEME.'conf->MAIN_THEME?" checked":"").'> '.$langs->trans("UsePersonalValue").'conf->MAIN_THEME?" checked":"").'> '.$langs->trans("UsePersonalValue").'