Fix: traduction of country code
This commit is contained in:
parent
65fdbc3696
commit
a1012387cf
@ -52,7 +52,7 @@ class FormAdmin
|
|||||||
* \param htmlname Nom de la zone select
|
* \param htmlname Nom de la zone select
|
||||||
* \param showauto Affiche choix auto
|
* \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;
|
global $langs;
|
||||||
|
|
||||||
@ -66,23 +66,26 @@ class FormAdmin
|
|||||||
print '>'.$langs->trans("AutoDetectLang").'</option>';
|
print '>'.$langs->trans("AutoDetectLang").'</option>';
|
||||||
}
|
}
|
||||||
|
|
||||||
sort($langs_available);
|
asort($langs_available);
|
||||||
$num = count($langs_available);
|
|
||||||
$i = 0;
|
foreach ($langs_available as $key => $value)
|
||||||
if ($num)
|
|
||||||
{
|
{
|
||||||
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>';
|
print '</select>';
|
||||||
}
|
}
|
||||||
|
|||||||
25
htdocs/langs/en_US/languages.lang
Normal file
25
htdocs/langs/en_US/languages.lang
Normal 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
|
||||||
25
htdocs/langs/fr_FR/languages.lang
Normal file
25
htdocs/langs/fr_FR/languages.lang
Normal 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
|
||||||
@ -580,14 +580,16 @@ class Product extends CommonObject
|
|||||||
$langs_available = $langs->get_available_languages();
|
$langs_available = $langs->get_available_languages();
|
||||||
$current_lang = $langs->getDefaultLang();
|
$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 = "SELECT rowid";
|
||||||
$sql.= " WHERE fk_product=".$this->id." AND lang='".$value."'";
|
$sql.= " FROM ".MAIN_DB_PREFIX."product_lang";
|
||||||
|
$sql.= " WHERE fk_product=".$this->id;
|
||||||
|
$sql.= " AND lang='".$key."'";
|
||||||
|
|
||||||
$result = $this->db->query($sql);
|
$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
|
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.= " SET label='".addslashes($this->libelle)."',";
|
||||||
$sql2.= " description='".addslashes($this->description)."',";
|
$sql2.= " description='".addslashes($this->description)."',";
|
||||||
$sql2.= " note='".addslashes($this->note)."'";
|
$sql2.= " note='".addslashes($this->note)."'";
|
||||||
$sql2.= " WHERE fk_product=".$this->id." AND lang='".$value."'";
|
$sql2.= " WHERE fk_product=".$this->id." AND lang='".$key."'";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_lang (fk_product, lang, label, description, note)";
|
$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->description);
|
||||||
$sql2.= "','".addslashes($this->note)."')";
|
$sql2.= "','".addslashes($this->note)."')";
|
||||||
}
|
}
|
||||||
@ -611,21 +613,21 @@ class Product extends CommonObject
|
|||||||
if ($this->db->num_rows($result)) // si aucune ligne dans la base
|
if ($this->db->num_rows($result)) // si aucune ligne dans la base
|
||||||
{
|
{
|
||||||
$sql2 = "UPDATE ".MAIN_DB_PREFIX."product_lang";
|
$sql2 = "UPDATE ".MAIN_DB_PREFIX."product_lang";
|
||||||
$sql2.= " SET label='".addslashes($this->multilangs["$value"]["libelle"])."',";
|
$sql2.= " SET label='".addslashes($this->multilangs["$key"]["libelle"])."',";
|
||||||
$sql2.= " description='".addslashes($this->multilangs["$value"]["description"])."',";
|
$sql2.= " description='".addslashes($this->multilangs["$key"]["description"])."',";
|
||||||
$sql2.= " note='".addslashes($this->multilangs["$value"]["note"])."'";
|
$sql2.= " note='".addslashes($this->multilangs["$key"]["note"])."'";
|
||||||
$sql2.= " WHERE fk_product=".$this->id." AND lang='".$value."'";
|
$sql2.= " WHERE fk_product=".$this->id." AND lang='".$key."'";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_lang (fk_product, lang, label, description, note)";
|
$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.= " VALUES(".$this->id.",'".$key."','". addslashes($this->multilangs["$key"]["libelle"]);
|
||||||
$sql2.= "','".addslashes($this->multilangs["$value"]["description"]);
|
$sql2.= "','".addslashes($this->multilangs["$key"]["description"]);
|
||||||
$sql2.= "','".addslashes($this->multilangs["$value"]["note"])."')";
|
$sql2.= "','".addslashes($this->multilangs["$key"]["note"])."')";
|
||||||
}
|
}
|
||||||
|
|
||||||
// on ne sauvegarde pas des champs vides
|
// 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;
|
if (!$this->db->query($sql2)) return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -642,8 +644,8 @@ class Product extends CommonObject
|
|||||||
$langs_available = $langs->get_available_languages();
|
$langs_available = $langs->get_available_languages();
|
||||||
|
|
||||||
if ( $langue != '')
|
if ( $langue != '')
|
||||||
foreach ($langs_available as $value)
|
foreach ($langs_available as $key => $value)
|
||||||
if ( $value == $langue ) $current_lang = $value; // si $langue est une valeur correcte
|
if ( $key == $langue ) $current_lang = $key; // si $langue est une valeur correcte
|
||||||
|
|
||||||
if ( !$current_lang )
|
if ( !$current_lang )
|
||||||
$current_lang = $langs->getDefaultLang(); // sinon on choisi la langue par defaut
|
$current_lang = $langs->getDefaultLang(); // sinon on choisi la langue par defaut
|
||||||
|
|||||||
@ -31,7 +31,7 @@ require_once(DOL_DOCUMENT_ROOT."/product.class.php");
|
|||||||
require_once(DOL_DOCUMENT_ROOT."/html.formadmin.class.php");
|
require_once(DOL_DOCUMENT_ROOT."/html.formadmin.class.php");
|
||||||
|
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
$langs->load("bills");
|
$langs->load("languages");
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if (isset($_GET["id"]) || isset($_GET["ref"]))
|
if (isset($_GET["id"]) || isset($_GET["ref"]))
|
||||||
@ -80,12 +80,12 @@ $_POST["cancel"] != $langs->trans("Cancel") &&
|
|||||||
if ( $product->setMultiLangs() > 0 )
|
if ( $product->setMultiLangs() > 0 )
|
||||||
{
|
{
|
||||||
$_GET["action"] = '';
|
$_GET["action"] = '';
|
||||||
$mesg = 'Fiche mise <EFBFBD> jour';
|
$mesg = 'Fiche mise a jour';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$_GET["action"] = 'add';
|
$_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');
|
$picto=($product->type==1?'service':'product');
|
||||||
dol_fiche_head($head, 'translation', $titre, 0, $picto);
|
dol_fiche_head($head, 'translation', $titre, 0, $picto);
|
||||||
|
|
||||||
|
if ($mesg) print '<div class="error">'.$mesg.'</div>';
|
||||||
|
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Reference
|
// Reference
|
||||||
@ -156,14 +158,14 @@ print '</table>';
|
|||||||
|
|
||||||
if ($_GET["action"] == 'edit')
|
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="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="action" value="vedit">';
|
print '<input type="hidden" name="action" value="vedit">';
|
||||||
print '<input type="hidden" name="id" value="'.$_GET["id"].'">';
|
print '<input type="hidden" name="id" value="'.$_GET["id"].'">';
|
||||||
|
|
||||||
foreach ( $product->multilangs as $key => $value)
|
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 '<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('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>';
|
print '<tr><td valign="top" width="15%">'.$langs->trans('Description').'</td><td>';
|
||||||
@ -207,7 +209,7 @@ else
|
|||||||
foreach ( $product->multilangs as $key => $value)
|
foreach ( $product->multilangs as $key => $value)
|
||||||
{
|
{
|
||||||
$cnt_trans++;
|
$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 '<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('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>';
|
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
|
* 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 '<br>';
|
||||||
print '<form action="" method="post">';
|
print '<form action="" method="post">';
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
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 '<input type="hidden" name="id" value="'.$_GET["id"].'">';
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
print '<tr><td valign="top" width="15%">'.$langs->trans('Translation').'</td><td>';
|
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 '</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('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>';
|
print '<tr><td valign="top" width="15%">'.$langs->trans('Description').'</td><td><textarea name="desc" rows="3" cols="80"></textarea></td></tr>';
|
||||||
|
|||||||
@ -521,13 +521,15 @@ class Translate {
|
|||||||
function get_available_languages($langdir=DOL_DOCUMENT_ROOT)
|
function get_available_languages($langdir=DOL_DOCUMENT_ROOT)
|
||||||
{
|
{
|
||||||
// We scan directory langs to detect available languages
|
// We scan directory langs to detect available languages
|
||||||
$handle=opendir($langdir ."/langs");
|
$handle=opendir($langdir."/langs");
|
||||||
$langs_available=array();
|
$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;
|
return $langs_available;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user