New: Gestion du choix de langue "auto"

This commit is contained in:
Laurent Destailleur 2005-10-29 23:42:54 +00:00
parent f9f88769d0
commit dc74b45d2b
8 changed files with 94 additions and 87 deletions

View File

@ -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>';

View File

@ -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>';
}
/**

View File

@ -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"> &nbsp;';
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>';

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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));
}

View File

@ -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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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">&nbsp;</td></tr>';
print '<tr class="liste_titre"><td width="25%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td colspan="2">&nbsp;</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].'>&nbsp;</td></tr>';
$var=!$var;