diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index 68a5a56077f9fb300ae73d3ec2a717c089e6aec1..9fff190773906251b586fff4b73864de2cc82a75 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 '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("DefaultLanguage").'</td><td>'; $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 '</td></tr>'; @@ -200,7 +200,7 @@ else print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td></tr>'; $var=!$var; - print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("DefaultLanguage").'</td><td>' . $conf->global->MAIN_LANG_DEFAULT . '</td></tr>'; + print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("DefaultLanguage").'</td><td>' . ($conf->global->MAIN_LANG_DEFAULT=='auto'?$langs->trans("AutoDetectLang"):$conf->global->MAIN_LANG_DEFAULT) . '</td></tr>'; $var=!$var; print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultMaxSizeList").'</td><td>' . $conf->global->SIZE_LISTE_LIMIT . '</td></tr>'; @@ -279,7 +279,7 @@ else print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td></tr>'; $var=!$var; print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("MessageOfDay").'</td><td>' . stripslashes(nl2br($conf->global->MAIN_MOTD)) . '</td></tr>'; - print '</table><br>'; + print '</table>'; print '<div class="tabsAction">'; print '<a class="tabAction" href="ihm.php?action=edit">'.$langs->trans("Edit").'</a>'; diff --git a/htdocs/html.form.class.php b/htdocs/html.form.class.php index da3e34b0d526152c2e23837e0dfd09de3a53f0b2..c8636d3779bfe6430dfad68ac280392cfa3c0fa7 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 '<select class="flat" name="'.$htmlname.'">'; - $num = count($langs_available); - $i = 0; - if ($num) - { - while ($i < $num) - { - if ($selected == $langs_available[$i]) - { - print '<option value="'.$langs_available[$i].'" selected="true">'.$langs_available[$i].'</option>'; - } - else - { - print '<option value="'.$langs_available[$i].'">'.$langs_available[$i].'</option>'; - } - $i++; - } - } - print '</select>'; - } + $langs_available=$langs->get_available_languages(); + + print '<select class="flat" name="'.$htmlname.'">'; + if ($showauto) + { + print '<option value="auto"'; + if ($selected == 'auto') print ' selected="true"'; + print '>'.$langs->trans("AutoDetectLang").'</option>'; + } + $num = count($langs_available); + $i = 0; + if ($num) + { + while ($i < $num) + { + if ($selected == $langs_available[$i]) + { + print '<option value="'.$langs_available[$i].'" selected="true">'.$langs_available[$i].'</option>'; + } + else + { + print '<option value="'.$langs_available[$i].'">'.$langs_available[$i].'</option>'; + } + $i++; + } + } + print '</select>'; + } /** diff --git a/htdocs/install/index.php b/htdocs/install/index.php index 543cd0c91661991192b40d05d6432e56da2f7b02..89590a6d7f5c52fe6aba00b7696dbf1dbb1712e7 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 '<br><br>'; print '<table><tr>'; -print '<td>'.$langs->trans("DefaultLanguage").' : </td><td align="left"> '; -print '<select name="selectlang">'; -$num = count($langs_available); -$i = 0; -if ($num) - { -while ($i < $num) - { - if ($selected == $langs_available[$i]) - { - print '<option value="'.$langs_available[$i].'" selected="true">'.$langs_available[$i].'</option>'; - } - else - { - print '<option value="'.$langs_available[$i].'">'.$langs_available[$i].'</option>'; - } - $i++; - } - } -print '</select></td>'; +print '<td>'.$langs->trans("DefaultLanguage").' : </td><td align="left">'; +$html=new Form(''); +$html->select_lang($selected,'selectlang',1); +print '</td>'; print '</tr></table>'; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 8b9a06e431de1d08f47d219559a7a4980af605aa..d1d7a0988c5db8dd1eed12a3d48698161bce506a 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 <a href="modules.php">modules</a> 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 0430b63167c6a7c55b817bf42309a37e6d2345d0..6d2d0f4b60bdacf1b5dcdd5c5758f44100d3a121 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 <a href="modules.php">module</a> 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 c15c268d2c540661f6c7fe7c59a624d6b4765c86..81fc1e527b3ebcd5aefdfa1b71efe4b389932b8f 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -3,7 +3,7 @@ * Copyright (C) 2003 Xavier Dutoit <doli@sydesy.com> * Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org> - * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> + * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> * * 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 a94de46ad6e2e9c9115bc0731125b5329911df66..3f833916daad52a13787a90f6bab0a5a97134d09 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]<br>"; - 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 b37c6d30a98966428501698bce14c91853812871..d3baddb5d36483eef6da745ec75c07cc6a0296ef 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -142,23 +142,23 @@ if ($_GET["action"] == 'edit') $var=true; print '<table class="noborder" width="100%">'; - print '<tr class="liste_titre"><td width="35%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td> </td><td>'.$langs->trans("PersonalValue").'</td></tr>'; + print '<tr class="liste_titre"><td width="25%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td> </td><td>'.$langs->trans("PersonalValue").'</td></tr>'; // Langue par defaut $var=!$var; print '<tr '.$bc[$var].'><td>'.$langs->trans("Language").'</td>'; - print '<td>'.$conf->global->MAIN_LANG_DEFAULT.'</td>'; - print '<td align="left"><input name="check_MAIN_LANG_DEFAULT" type="checkbox" '.($fuser->conf->MAIN_LANG_DEFAULT?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>'; + print '<td>'.($conf->global->MAIN_LANG_DEFAULT=='auto'?$langs->trans("AutoDetectLang"):$conf->global->MAIN_LANG_DEFAULT).'</td>'; + print '<td align="left" nowrap="nowrap" width="20%"><input name="check_MAIN_LANG_DEFAULT" type="checkbox" '.($fuser->conf->MAIN_LANG_DEFAULT?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>'; print '<td>'; $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 '</td></tr>'; // Taille max des listes $var=!$var; print '<tr '.$bc[$var].'><td>'.$langs->trans("MaxSizeList").'</td>'; print '<td>'.$conf->global->SIZE_LISTE_LIMIT.'</td>'; - print '<td align="left"><input name="check_SIZE_LISTE_LIMIT" type="checkbox" '.($fuser->conf->SIZE_LISTE_LIMIT?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>'; + print '<td align="left" nowrap="nowrap" width="20%"><input name="check_SIZE_LISTE_LIMIT" type="checkbox" '.($fuser->conf->SIZE_LISTE_LIMIT?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>'; print '<td><input class="flat" name="size_liste_limit" size="4" value="' . $fuser->conf->SIZE_LISTE_LIMIT . '"></td></tr>'; print '</table><br>'; @@ -182,18 +182,18 @@ else $var=true; print '<table class="noborder" width="100%">'; - print '<tr class="liste_titre"><td width="35%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td> </td><td>'.$langs->trans("PersonalValue").'</td></tr>'; + print '<tr class="liste_titre"><td width="25%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td> </td><td>'.$langs->trans("PersonalValue").'</td></tr>'; $var=!$var; print '<tr '.$bc[$var].'><td>'.$langs->trans("Language").'</td>'; - print '<td>'.$conf->global->MAIN_LANG_DEFAULT.'</td>'; - print '<td align="left"><input type="checkbox" disabled '.($fuser->conf->MAIN_LANG_DEFAULT?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>'; - print '<td>' . $fuser->conf->MAIN_LANG_DEFAULT . '</td></tr>'; + print '<td>'.($conf->global->MAIN_LANG_DEFAULT=='auto'?$langs->trans("AutoDetectLang"):$conf->global->MAIN_LANG_DEFAULT).'</td>'; + print '<td align="left" nowrap="nowrap" width="20%"><input type="checkbox" disabled '.($fuser->conf->MAIN_LANG_DEFAULT?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>'; + print '<td>'.($fuser->conf->MAIN_LANG_DEFAULT=='auto'?$langs->trans("AutoDetectLang"):$fuser->conf->MAIN_LANG_DEFAULT).'</td></tr>'; $var=!$var; print '<tr '.$bc[$var].'><td>'.$langs->trans("MaxSizeList").'</td>'; print '<td>'.$conf->global->SIZE_LISTE_LIMIT.'</td>'; - print '<td align="left"><input type="checkbox" disabled '.($fuser->conf->SIZE_LISTE_LIMIT?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>'; + print '<td align="left" nowrap="nowrap" width="20%"><input type="checkbox" disabled '.($fuser->conf->SIZE_LISTE_LIMIT?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>'; print '<td>' . $fuser->conf->SIZE_LISTE_LIMIT . '</td></tr>'; print '</table><br>'; @@ -225,13 +225,13 @@ function show_theme($fuser,$edit=0) $thumbsbyrow=6; print '<table class="noborder" width="100%">'; - print '<tr class="liste_titre"><td width="35%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td colspan="2"> </td></tr>'; + print '<tr class="liste_titre"><td width="25%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td colspan="2"> </td></tr>'; $var=false; print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultSkin").'</td>'; print '<td>'.$conf->global->MAIN_THEME.'</td>'; - print '<td '.$bc[$var].' align="left"><input name="check_MAIN_THEME"'.($edit?'':' disabled').' type="checkbox" '.($fuser->conf->MAIN_THEME?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>'; + print '<td '.$bc[$var].' align="left" nowrap="nowrap" width="20%"><input name="check_MAIN_THEME"'.($edit?'':' disabled').' type="checkbox" '.($fuser->conf->MAIN_THEME?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>'; print '<td '.$bc[$var].'> </td></tr>'; $var=!$var;