Fix: traduction of country code

This commit is contained in:
Regis Houssin 2010-02-18 12:58:42 +00:00
parent 65fdbc3696
commit a1012387cf
6 changed files with 100 additions and 52 deletions

View File

@ -52,7 +52,7 @@ class FormAdmin
* \param htmlname Nom de la zone select
* \param showauto Affiche choix auto
*/
function select_lang($selected='',$htmlname='lang_id',$showauto=0)
function select_lang($selected='',$htmlname='lang_id',$showauto=0,$filter=0)
{
global $langs;
@ -66,23 +66,26 @@ class FormAdmin
print '>'.$langs->trans("AutoDetectLang").'</option>';
}
sort($langs_available);
$num = count($langs_available);
$i = 0;
if ($num)
asort($langs_available);
foreach ($langs_available as $key => $value)
{
while ($i < $num)
if ($filter && is_array($filter))
{
if ($selected == $langs_available[$i])
if ( ! array_key_exists($key, $filter))
{
print '<option value="'.$langs_available[$i].'" selected="true">'.$langs_available[$i].'</option>';
print '<option value="'.$key.'">'.$value.'</option>';
}
else
{
print '<option value="'.$langs_available[$i].'">'.$langs_available[$i].'</option>';
}
$i++;
}
else if ($selected == $key)
{
print '<option value="'.$key.'" selected="true">'.$value.'</option>';
}
else
{
print '<option value="'.$key.'">'.$value.'</option>';
}
$i++;
}
print '</select>';
}

View File

@ -0,0 +1,25 @@
# Dolibarr language file - en_US - languages
CHARSET=UTF-8
Language_ar_AR=Arabe
Language_ca_ES=ca_ES ?
Language_da_DA=Danois
Language_de_DE=Allemand
Language_en_AU=English (Australie)
Language_en_GB=English (Royaume-Uni)
Language_en_US=English (Etats-Unis)
Language_es_ES=Espagnol
Language_fi_FI=Finois
Language_fr_BE=French (Belgique)
Language_fr_CA=French (Canada)
Language_fr_CH=French (Suisse)
Language_fr_FR=French
Language_it_IT=Italien
Language_nb_NO=Norvégien (Bokmal)
Language_nl_BE=Néerlandais (Belgique)
Language_nl_NL=Néerlandais (Pays-Bas)
Language_pl_PL=Polonais
Language_pt_BR=Portugais (Brésil)
Language_pt_PT=Portugais
Language_ro_RO=Roumain
Language_ru_RU=Russe

View File

@ -0,0 +1,25 @@
# Dolibarr language file - fr_FR - languages
CHARSET=UTF-8
Language_ar_AR=Arabe
Language_ca_ES=ca_ES ?
Language_da_DA=Danois
Language_de_DE=Allemand
Language_en_AU=Anglais (Australie)
Language_en_GB=Anglais (Royaume-Uni)
Language_en_US=Anglais (Etats-Unis)
Language_es_ES=Espagnol
Language_fi_FI=Finois
Language_fr_BE=Français (Belgique)
Language_fr_CA=Français (Canada)
Language_fr_CH=Français (Suisse)
Language_fr_FR=Français
Language_it_IT=Italien
Language_nb_NO=Norvégien (Bokmal)
Language_nl_BE=Néerlandais (Belgique)
Language_nl_NL=Néerlandais (Pays-Bas)
Language_pl_PL=Polonais
Language_pt_BR=Portugais (Brésil)
Language_pt_PT=Portugais
Language_ro_RO=Roumain
Language_ru_RU=Russe

View File

@ -580,14 +580,16 @@ class Product extends CommonObject
$langs_available = $langs->get_available_languages();
$current_lang = $langs->getDefaultLang();
foreach ($langs_available as $value)
foreach ($langs_available as $key => $value)
{
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."product_lang";
$sql.= " WHERE fk_product=".$this->id." AND lang='".$value."'";
$sql = "SELECT rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."product_lang";
$sql.= " WHERE fk_product=".$this->id;
$sql.= " AND lang='".$key."'";
$result = $this->db->query($sql);
if ($value == $current_lang)
if ($key == $current_lang)
{
if ($this->db->num_rows($result)) // si aucune ligne dans la base
{
@ -595,12 +597,12 @@ class Product extends CommonObject
$sql2.= " SET label='".addslashes($this->libelle)."',";
$sql2.= " description='".addslashes($this->description)."',";
$sql2.= " note='".addslashes($this->note)."'";
$sql2.= " WHERE fk_product=".$this->id." AND lang='".$value."'";
$sql2.= " WHERE fk_product=".$this->id." AND lang='".$key."'";
}
else
{
$sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_lang (fk_product, lang, label, description, note)";
$sql2.= " VALUES(".$this->id.",'".$value."','". addslashes($this->libelle);
$sql2.= " VALUES(".$this->id.",'".$key."','". addslashes($this->libelle);
$sql2.= "','".addslashes($this->description);
$sql2.= "','".addslashes($this->note)."')";
}
@ -611,21 +613,21 @@ class Product extends CommonObject
if ($this->db->num_rows($result)) // si aucune ligne dans la base
{
$sql2 = "UPDATE ".MAIN_DB_PREFIX."product_lang";
$sql2.= " SET label='".addslashes($this->multilangs["$value"]["libelle"])."',";
$sql2.= " description='".addslashes($this->multilangs["$value"]["description"])."',";
$sql2.= " note='".addslashes($this->multilangs["$value"]["note"])."'";
$sql2.= " WHERE fk_product=".$this->id." AND lang='".$value."'";
$sql2.= " SET label='".addslashes($this->multilangs["$key"]["libelle"])."',";
$sql2.= " description='".addslashes($this->multilangs["$key"]["description"])."',";
$sql2.= " note='".addslashes($this->multilangs["$key"]["note"])."'";
$sql2.= " WHERE fk_product=".$this->id." AND lang='".$key."'";
}
else
{
$sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_lang (fk_product, lang, label, description, note)";
$sql2.= " VALUES(".$this->id.",'".$value."','". addslashes($this->multilangs["$value"]["libelle"]);
$sql2.= "','".addslashes($this->multilangs["$value"]["description"]);
$sql2.= "','".addslashes($this->multilangs["$value"]["note"])."')";
$sql2.= " VALUES(".$this->id.",'".$key."','". addslashes($this->multilangs["$key"]["libelle"]);
$sql2.= "','".addslashes($this->multilangs["$key"]["description"]);
$sql2.= "','".addslashes($this->multilangs["$key"]["note"])."')";
}
// on ne sauvegarde pas des champs vides
if ( $this->multilangs["$value"]["libelle"] || $this->multilangs["$value"]["description"] || $this->multilangs["$value"]["note"] )
if ( $this->multilangs["$key"]["libelle"] || $this->multilangs["$key"]["description"] || $this->multilangs["$key"]["note"] )
if (!$this->db->query($sql2)) return -1;
}
}
@ -642,8 +644,8 @@ class Product extends CommonObject
$langs_available = $langs->get_available_languages();
if ( $langue != '')
foreach ($langs_available as $value)
if ( $value == $langue ) $current_lang = $value; // si $langue est une valeur correcte
foreach ($langs_available as $key => $value)
if ( $key == $langue ) $current_lang = $key; // si $langue est une valeur correcte
if ( !$current_lang )
$current_lang = $langs->getDefaultLang(); // sinon on choisi la langue par defaut

View File

@ -31,7 +31,7 @@ require_once(DOL_DOCUMENT_ROOT."/product.class.php");
require_once(DOL_DOCUMENT_ROOT."/html.formadmin.class.php");
$langs->load("products");
$langs->load("bills");
$langs->load("languages");
// Security check
if (isset($_GET["id"]) || isset($_GET["ref"]))
@ -80,12 +80,12 @@ $_POST["cancel"] != $langs->trans("Cancel") &&
if ( $product->setMultiLangs() > 0 )
{
$_GET["action"] = '';
$mesg = 'Fiche mise <EFBFBD> jour';
$mesg = 'Fiche mise a jour';
}
else
{
$_GET["action"] = 'add';
$mesg = 'Fiche non mise <EFBFBD> jour !' . "<br>" . $product->mesg_error;
$mesg = 'Fiche non mise a jour !' . "<br>" . $product->mesg_error;
}
}
@ -144,6 +144,8 @@ $titre=$langs->trans("CardProduct".$product->type);
$picto=($product->type==1?'service':'product');
dol_fiche_head($head, 'translation', $titre, 0, $picto);
if ($mesg) print '<div class="error">'.$mesg.'</div>';
print '<table class="border" width="100%">';
// Reference
@ -156,14 +158,14 @@ print '</table>';
if ($_GET["action"] == 'edit')
{
print '<form action="" method="post">';
print '<form action="" method="POST">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="vedit">';
print '<input type="hidden" name="id" value="'.$_GET["id"].'">';
foreach ( $product->multilangs as $key => $value)
{
print "<br /><b><u>$key :</u></b><br />";
print "<br /><b><u>".$langs->trans('Language_'.$key)." :</u></b><br />";
print '<table class="border" width="100%">';
print '<tr><td valign="top" width="15%">'.$langs->trans('Label').'</td><td><input name="libelle-'.$key.'" size="40" value="'.$product->multilangs[$key]["libelle"].'"></td></tr>';
print '<tr><td valign="top" width="15%">'.$langs->trans('Description').'</td><td>';
@ -207,7 +209,7 @@ else
foreach ( $product->multilangs as $key => $value)
{
$cnt_trans++;
print "<br /><b><u>$key :</u></b><br />";
print "<br /><b><u>".$langs->trans('Language_'.$key)." :</u></b><br />";
print '<table class="border" width="100%">';
print '<tr><td width="15%">'.$langs->trans('Label').'</td><td>'.$product->multilangs[$key]["libelle"].'</td></tr>';
print '<tr><td width="15%">'.$langs->trans('Description').'</td><td>'.$product->multilangs[$key]["description"].'</td></tr>';
@ -240,19 +242,8 @@ print "\n</div>\n";
/*
* Formulaire d'ajout de traduction
*/
if ($_GET["action"] == 'add' || ($user->rights->produit->creer || $user->rights->service->creer))
if ($_GET["action"] == 'add' && ($user->rights->produit->creer || $user->rights->service->creer))
{
$langs_available = $langs->get_available_languages();
$current_lang = $langs->getDefaultLang();
// on construit la liste des traduction qui n'existe pas deja
$select = '<select class="flat" name="lang">';
foreach ($langs_available as $value)
if ( !array_key_exists($value, $product->multilangs) ) // si la traduction n'existe pas
$select.= "<option value='$value'>$value</option>";
$select.='</select>';
print '<br>';
print '<form action="" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@ -260,7 +251,7 @@ if ($_GET["action"] == 'add' || ($user->rights->produit->creer || $user->rights-
print '<input type="hidden" name="id" value="'.$_GET["id"].'">';
print '<table class="border" width="100%">';
print '<tr><td valign="top" width="15%">'.$langs->trans('Translation').'</td><td>';
$formadmin->select_lang($fuser->conf->MAIN_LANG_DEFAULT,'lang',0);
$formadmin->select_lang('','lang',0,$product->multilangs);
print '</td></tr>';
print '<tr><td valign="top" width="15%">'.$langs->trans('Label').'</td><td><input name="libelle" size="40"></td></tr>';
print '<tr><td valign="top" width="15%">'.$langs->trans('Description').'</td><td><textarea name="desc" rows="3" cols="80"></textarea></td></tr>';

View File

@ -521,13 +521,15 @@ class Translate {
function get_available_languages($langdir=DOL_DOCUMENT_ROOT)
{
// We scan directory langs to detect available languages
$handle=opendir($langdir ."/langs");
$handle=opendir($langdir."/langs");
$langs_available=array();
while ($file = trim(readdir($handle)))
while ($dir = trim(readdir($handle)))
{
if (preg_match('/^[a-z]+_[A-Z]+/i',$file))
if (preg_match('/^[a-z]+_[A-Z]+/i',$dir))
{
array_push($langs_available,$file);
$this->load("languages");
$langs_available[$dir] = $this->trans('Language_'.$dir);
}
}
return $langs_available;