diff --git a/htdocs/about.php b/htdocs/about.php
index b7789554343..590431fcf5b 100644
--- a/htdocs/about.php
+++ b/htdocs/about.php
@@ -81,7 +81,7 @@ print '';
// \todo Faut-il inviter l'utilisateur à aller sur le site en français si sa langue n'est pas le français ?
-//if (eregi('^fr_',$conf->langage)
+//if (eregi('^fr_',$langs->getDefaultLang())
//{
print '
';
print 'Vente / Support';
diff --git a/htdocs/admin/system/dolibarr.php b/htdocs/admin/system/dolibarr.php
index dbec3def1c6..00cb21cebc1 100644
--- a/htdocs/admin/system/dolibarr.php
+++ b/htdocs/admin/system/dolibarr.php
@@ -44,12 +44,21 @@ print "
| ".$langs->trans("Version")." | ".DOL_V
print '';
print ' ';
+$var=true;
print '';
-print '| '.$langs->trans("Parameter").' | '.$langs->trans("Value").' | '."\n";
-print "| ".$langs->trans("Language")." (LC_ALL) | ".setlocale(LC_ALL,0)." | \n";
-print "| ".$langs->trans("Language")." (LC_NUMERIC) | ".setlocale(LC_NUMERIC,0)." | \n";
-print "| ".$langs->trans("Language")." (LC_TIME) | ".setlocale(LC_TIME,0)." | \n";
-print "| ".$langs->trans("Language")." (LC_MONETARY) | ".setlocale(LC_MONETARY,0)." | \n";
+print '| '.$langs->trans("LanguageDolibarrParameter").' | '.$langs->trans("Value").' | '."\n";
+$var=!$var;
+print "| ".$langs->trans("LanguageBrowserParameter","HTTP_ACCEPT_LANGUAGE")." | ".$_SERVER["HTTP_ACCEPT_LANGUAGE"]." | \n";
+$var=!$var;
+print "| ".$langs->trans("LanguageParameter","PHP LC_ALL")." | ".setlocale(LC_ALL,0)." | \n";
+$var=!$var;
+print "| ".$langs->trans("LanguageParameter","PHP LC_NUMERIC")." | ".setlocale(LC_NUMERIC,0)." | \n";
+$var=!$var;
+print "| ".$langs->trans("LanguageParameter","PHP LC_TIME")." | ".setlocale(LC_TIME,0)." | \n";
+$var=!$var;
+print "| ".$langs->trans("LanguageParameter","PHP LC_MONETARY")." | ".setlocale(LC_MONETARY,0)." | \n";
+$var=!$var;
+print "| ".$langs->trans("CurrentDolibarrLanguage")." | ".$langs->getDefaultLang()." | \n";
print ' ';
print ' ';
diff --git a/htdocs/compta/dons/formulaire/fsfe.fr.php b/htdocs/compta/dons/formulaire/fsfe.fr.php
index da3b7c88218..d9fe5fab6a4 100644
--- a/htdocs/compta/dons/formulaire/fsfe.fr.php
+++ b/htdocs/compta/dons/formulaire/fsfe.fr.php
@@ -17,17 +17,19 @@
*
* $Id$
* $Source$
- *
*/
-/*!
+/**
\file htdocs/compta/dons/formulaire/fsfe.fr.php
\ingroup don
\brief Formulaire de don
\version $Revision$
*/
-require("../../../main.inc.php");
+require("../../../master.inc.php");
+require("../../../projetdon.class.php");
+require("../../../don.class.php");
+
echo '
@@ -41,12 +43,6 @@ echo '
';
-
-require("../../../projetdon.class.php");
-require("../../../don.class.php");
-
-setlocale(LC_ALL,$conf->langage);
-
$don = new Don($db);
$don->id = $_GET["rowid"];
$don->fetch($_GET["rowid"]);
diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php
index 35562bf9b9f..7ed9f65e7c7 100644
--- a/htdocs/install/inc.php
+++ b/htdocs/install/inc.php
@@ -33,9 +33,10 @@ $conffile = "../conf/conf.php";
// Defini objet langs
-require_once("../translate.class.php");
-$langcode='auto';
-$langs = new Translate("../langs", $langcode);
+require_once('../translate.class.php');
+$langs = new Translate('../langs');
+$langs->setDefaultLang('auto');
+$langs->setPhpLang();
$tab[0]=' class="bg1"';
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 07f0d5c8d94..4aef4b84113 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -24,6 +24,11 @@ OtherSetup=Other setup
Modules=Modules
ModulesCommon=Common modules
ModulesSpecial=Special modules
+ParameterInDolibarr=Parameter %s
+LanguageParameter=Language parameter %s
+LanguageBrowserParameter=Parameter %s
+LanguageDolibarrParameter=Language Dolibarr parameter
+CurrentDolibarrLanguage=Dolibarr current language
OSEnv=OS Environment
Box=Box
Boxes=Boxes
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index 2ea1ccfd3a3..b43916af6f6 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -24,6 +24,11 @@ OtherSetup=Divers
Modules=Modules
ModulesCommon=Modules standards
ModulesSpecial=Modules spéciaux
+ParameterInDolibarr=Variable %s
+LanguageParameter=Variable langue %s
+LanguageBrowserParameter=Variable %s
+LanguageDolibarrParameter=Paramètre de langue Dolibarr
+CurrentDolibarrLanguage=Langue Dolibarr courante
OSEnv=Environnement OS
Box=Boîte
Boxes=Boîtes
diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php
index cb792938895..a2151a905a2 100644
--- a/htdocs/lib/functions.inc.php
+++ b/htdocs/lib/functions.inc.php
@@ -281,34 +281,6 @@ function dolibarr_get_const($db, $name)
}
-/**
- \brief Positionne environnement PHP en fonction du langage
- \param code_lang Code langue concerné (fr_FR, en_US, ...)
- \return string Code langue validé
-*/
-function dolibarr_set_php_lang($code_lang)
-{
- $code_lang_tiret=ereg_replace('_','-',$code_lang);
-
- //dolibarr_syslog("dolibarr_set_php_lang: code_lang=$code_lang code_lang_tirer=$code_lang_tiret");
-
- setlocale(LC_ALL, $code_lang); // Compenser pb de locale avec windows
- setlocale(LC_ALL, $code_lang_tiret);
- if (defined("MAIN_FORCE_SETLOCALE_LC_ALL") && MAIN_FORCE_SETLOCALE_LC_ALL) setlocale(LC_ALL, MAIN_FORCE_SETLOCALE_LC_ALL);
- if (defined("MAIN_FORCE_SETLOCALE_LC_TIME") && MAIN_FORCE_SETLOCALE_LC_TIME) setlocale(LC_TIME, MAIN_FORCE_SETLOCALE_LC_TIME);
- if (defined("MAIN_FORCE_SETLOCALE_LC_NUMERIC") && MAIN_FORCE_SETLOCALE_LC_NUMERIC) setlocale(LC_NUMERIC, MAIN_FORCE_SETLOCALE_LC_NUMERIC);
- if (defined("MAIN_FORCE_SETLOCALE_LC_MONETARY") && MAIN_FORCE_SETLOCALE_LC_MONETARY) setlocale(LC_MONETARY, MAIN_FORCE_SETLOCALE_LC_MONETARY);
-
- // On corrige $code_lang si il ne vaut pas le code long: fr -> fr_FR par exemple
- if (strlen($code_lang) <= 3)
- {
- $code_lang = strtolower($code_lang)."_".strtoupper($code_lang);
- }
-
- return $code_lang;
-}
-
-
/**
\brief Insertion d'une constante dans la base de données.
\see dolibarr_del_const, dolibarr_get_const
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index ccd782e2135..cf521fed769 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -29,7 +29,7 @@
\version $Revision$
*/
-require("master.inc.php");
+require_once("master.inc.php");
// Verification du login.
@@ -135,12 +135,11 @@ if (isset($user->conf->PRODUIT_LIMIT_SIZE))
}
if (isset($user->conf->MAIN_LANG_DEFAULT) && $user->conf->MAIN_LANG_DEFAULT)
{
- if ($conf->langage != $user->conf->MAIN_LANG_DEFAULT)
+ if ($langs->getDefaultLang() != $user->conf->MAIN_LANG_DEFAULT)
{
- // Si on a un langage perso différent du langage global
- $conf->langage=dolibarr_set_php_lang($user->conf->MAIN_LANG_DEFAULT);
-
- $langs = new Translate(DOL_DOCUMENT_ROOT ."/langs", $conf->langage);
+ // Si on a un langage perso différent du langage courant global
+ $langs->setDefaultLang($user->conf->MAIN_LANG_DEFAULT);
+ $langs->setPhpLang($user->conf->MAIN_LANG_DEFAULT);
}
}
diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php
index afae9e0cfc4..4060255b7a4 100644
--- a/htdocs/master.inc.php
+++ b/htdocs/master.inc.php
@@ -5,7 +5,7 @@
* Copyright (C) 2004 Sebastien Di Cintio
* Copyright (C) 2004 Benoit Mortier
* Copyright (C) 2005 Regis Houssin
- * Copyright (C) 2005 Simon Tosser
+ * Copyright (C) 2005 Simon Tosser
*
* 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
@@ -158,14 +158,14 @@ if (! $conf->global->MAIN_MENU_BARRELEFT) $conf->global->MAIN_MENU_BARRELEFT="de
if (! $conf->global->MAIN_MENUFRONT_BARRELEFT) $conf->global->MAIN_MENUFRONT_BARRELEFT="default.php";
/*
- * Positionne le langage global et localisation dans $conf->langage
- * et charge l'objet de traduction
+ * Charge l'objet de traduction et positionne langage courant global
*/
if (! $conf->global->MAIN_LANG_DEFAULT) $conf->global->MAIN_LANG_DEFAULT="fr_FR";
-$conf->langage=dolibarr_set_php_lang($conf->global->MAIN_LANG_DEFAULT);
require_once(DOL_DOCUMENT_ROOT ."/translate.class.php");
-$langs = new Translate(DOL_DOCUMENT_ROOT ."/langs", $conf->langage);
+$langs = new Translate(DOL_DOCUMENT_ROOT ."/langs");
+$langs->setDefaultLang($conf->global->MAIN_LANG_DEFAULT);
+$langs->setPhpLang($conf->global->MAIN_LANG_DEFAULT);
/*
diff --git a/htdocs/translate.class.php b/htdocs/translate.class.php
index c43bdc77c11..2ac86d77fbe 100644
--- a/htdocs/translate.class.php
+++ b/htdocs/translate.class.php
@@ -43,12 +43,10 @@ class Translate {
/**
* \brief Constructeur de la classe
* \param dir Repertoire racine des fichiers de traduction
- * \param defaultlang Langue par defaut à utiliser
*/
- function Translate($dir = "", $defaultlang = "")
+ function Translate($dir = "")
{
$this->dir=$dir;
- $this->setDefaultLang($defaultlang);
}
@@ -68,14 +66,45 @@ class Translate {
$langpart=split("_",$langlist[0]);
- if (isset($langpart[1])) $defaultlang=$langpart[0]."_".strtoupper($langpart[1]);
- else $defaultlang=$langpart[0]."_".strtoupper($langpart[0]);
+ if (isset($langpart[1])) $defaultlang=strtolower($langpart[0])."_".strtoupper($langpart[1]);
+ else $defaultlang=strtolower($langpart[0])."_".strtoupper($langpart[0]);
}
$this->defaultlang=$defaultlang;
}
+ /**
+ * \brief Accesseur de this->defaultlang
+ * \return string Langue utilisée
+ */
+ function getDefaultLang()
+ {
+ return $this->defaultlang;
+ }
+
+
+ /**
+ \brief Positionne environnement PHP en fonction du langage
+ \remarks Le code langue long (fr_FR, en_US, ...) doit être positionné
+ \return int >0 si ok, <0 so ko
+ */
+ function setPhpLang()
+ {
+ //dolibarr_syslog("Translate::set_php_lang: code_lang=$code_lang code_lang_tirer=$code_lang_tiret");
+
+ $code_lang_tiret=ereg_replace('_','-',$this->defaultlang);
+ setlocale(LC_ALL, $this->defaultlang); // Compenser pb de locale avec windows
+ setlocale(LC_ALL, $code_lang_tiret);
+ if (defined("MAIN_FORCE_SETLOCALE_LC_ALL") && MAIN_FORCE_SETLOCALE_LC_ALL) setlocale(LC_ALL, MAIN_FORCE_SETLOCALE_LC_ALL);
+ if (defined("MAIN_FORCE_SETLOCALE_LC_TIME") && MAIN_FORCE_SETLOCALE_LC_TIME) setlocale(LC_TIME, MAIN_FORCE_SETLOCALE_LC_TIME);
+ if (defined("MAIN_FORCE_SETLOCALE_LC_NUMERIC") && MAIN_FORCE_SETLOCALE_LC_NUMERIC) setlocale(LC_NUMERIC, MAIN_FORCE_SETLOCALE_LC_NUMERIC);
+ if (defined("MAIN_FORCE_SETLOCALE_LC_MONETARY") && MAIN_FORCE_SETLOCALE_LC_MONETARY) setlocale(LC_MONETARY, MAIN_FORCE_SETLOCALE_LC_MONETARY);
+
+ return 1;
+ }
+
+
/**
* \brief Charge en mémoire le tableau de traduction pour un domaine particulier
* Si le domaine est deja chargé, la fonction ne fait rien
|