diff --git a/doc/images/dolibarr_screenshot1_1280x800.jpg b/doc/images/dolibarr_screenshot1_1280x800.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c6d5776d1fc1a3aadda5ce1abfbd8d3be9f9e222
Binary files /dev/null and b/doc/images/dolibarr_screenshot1_1280x800.jpg differ
diff --git a/htdocs/admin/translation.php b/htdocs/admin/translation.php
index bfd21deee33abdb9bfc9591d7308873e0fd9801b..8d959a9decbeb3d2deb33065a85240ed2f977575 100644
--- a/htdocs/admin/translation.php
+++ b/htdocs/admin/translation.php
@@ -40,6 +40,8 @@ $langcode=GETPOST('langcode','alpha');
 $transkey=GETPOST('transkey','alpha');
 $transvalue=GETPOST('transvalue','alpha');
 
+$mode = GETPOST('mode')?GETPOST('mode'):'overwrite';
+
 $limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit;
 $sortfield = GETPOST("sortfield",'alpha');
 $sortorder = GETPOST("sortorder",'alpha');
@@ -124,7 +126,7 @@ $formadmin = new FormAdmin($db);
 $wikihelp='EN:Setup|FR:Paramétrage|ES:Configuración';
 llxHeader('',$langs->trans("Setup"),$wikihelp);
 
-print load_fiche_titre($langs->trans("TranslationSetup"),'','title_setup');
+print load_fiche_titre($langs->trans("Translation"),'','title_setup');
 
 print $langs->trans("TranslationDesc")."<br>\n";
 print "<br>\n";
@@ -140,16 +142,24 @@ print $langs->trans("TranslationOverwriteDesc",$langs->transnoentitiesnoconv("La
 
 print '<br>';
 
-$param='';
 
-if ($conf->global->MAIN_FEATURES_LEVEL > 1)
+$param='mode='.$mode;
+
+
+print '<form action="'.$_SERVER["PHP_SELF"].((empty($user->entity) && $debug)?'?debug=1':'').'" method="POST">';
+
+$head=translation_prepare_head();
+
+dol_fiche_head($head, $mode, '', 0, '');
+
+if ($mode == 'searchkey')
 {
-    print '<br>';
-    print load_fiche_titre($langs->trans("TranslationKeySearch"), '', '')."\n";
+    //print '<br>';
+    //print load_fiche_titre($langs->trans("TranslationKeySearch"), '', '')."\n";
     
-    print '<form action="'.$_SERVER["PHP_SELF"].((empty($user->entity) && $debug)?'?debug=1':'').'" method="POST">';
     print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-    print '<input type="hidden" id="action" name="action" value="">';
+    print '<input type="hidden" id="action" name="action" value="search">';
+    print '<input type="hidden" id="mode" name="mode" value="'.$mode.'">';
     
     print '<table class="noborder" width="100%">';
     print '<tr class="liste_titre">';
@@ -165,7 +175,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 1)
     print "\n";
     
     print '<tr '.$bc[$var].'><td>';
-    print $formadmin->select_language(GETPOST('langcodesearch'),'langcodesearch',0,null,1,0,0,'',1);
+    print $formadmin->select_language(GETPOST('langcodesearch'),'langcodesearch',0,null,$langs->trans("All"),0,0,'',1);
     //print '<input type="text" class="flat" size="24" name="langcode" value="'.GETPOST('langcode').'">';
     print '</td>'."\n";
     print '<td>';
@@ -194,112 +204,116 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 1)
     print '</form>';
 }
 
-print '<br>';
-
-print load_fiche_titre($langs->trans("TranslationOverwriteKey"), '', '')."\n";
-
-print '<form action="'.$_SERVER["PHP_SELF"].((empty($user->entity) && $debug)?'?debug=1':'').'" method="POST">';
-print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-print '<input type="hidden" id="action" name="action" value="">';
-
-print '<table class="noborder" width="100%">';
-print '<tr class="liste_titre">';
-print_liste_field_titre($langs->trans("Language").' (en_US, es_MX, ...)',$_SERVER["PHP_SELF"],'lang,transkey','',$param,'',$sortfield,$sortorder);
-print_liste_field_titre($langs->trans("Key"),$_SERVER["PHP_SELF"],'transkey','',$param,'',$sortfield,$sortorder);
-print_liste_field_titre($langs->trans("NewTranslationStringToShow"),$_SERVER["PHP_SELF"],'transvalue','',$param,'',$sortfield,$sortorder);
-if (! empty($conf->multicompany->enabled) && !$user->entity) print_liste_field_titre($langs->trans("Entity"),$_SERVER["PHP_SELF"],'entity,transkey','',$param,'',$sortfield,$sortorder);
-print '<td align="center"></td>';
-print "</tr>\n";
-
-
-// Line to add new record
-$var=false;
-print "\n";
-
-print '<tr '.$bc[$var].'><td>';
-print $formadmin->select_language(GETPOST('langcode'),'langcode',0,null,1,0,0,'',1);
-//print '<input type="text" class="flat" size="24" name="langcode" value="'.GETPOST('langcode').'">';
-print '</td>'."\n";
-print '<td>';
-print '<input type="text" class="flat maxwidthonsmartphone" name="transkey" value="">';
-print '</td><td>';
-print '<input type="text" class="quatrevingtpercent" name="transvalue" value="">';
-print '</td>';
-// Limit to superadmin
-if (! empty($conf->multicompany->enabled) && !$user->entity)
-{
-	print '<td>';
-	print '<input type="text" class="flat" size="1" name="entity" value="'.$conf->entity.'">';
-	print '</td>';
-	print '<td align="center">';
-}
-else
-{
-	print '<td align="center">';
-	print '<input type="hidden" name="entity" value="'.$conf->entity.'">';
-}
-print '<input type="submit" class="button" value="'.$langs->trans("Add").'" name="add">';
-print "</td>\n";
-print '</tr>';
-
-
-// Show constants
-$sql = "SELECT";
-$sql.= " rowid";
-$sql.= ", lang";
-$sql.= ", transkey";
-$sql.= ", transvalue";
-$sql.= " FROM ".MAIN_DB_PREFIX."overwrite_trans";
-$sql.= " WHERE 1 = 1";
-//$sql.= " AND entity IN (".$user->entity.",".$conf->entity.")";
-//if ((empty($user->entity) || $user->admin) && $debug) {} 										// to force for superadmin to debug
-//else if (! GETPOST('visible') || GETPOST('visible') != 'all') $sql.= " AND visible = 1";		// We must always have this. Otherwise, array is too large and submitting data fails due to apache POST or GET limits
-//if (GETPOST('name')) $sql.=natural_search("name", GETPOST('name'));
-//$sql.= " ORDER BY entity, name ASC";
-$sql.= $db->order($sortfield, $sortorder);
-
-dol_syslog("translation::select from table", LOG_DEBUG);
-$result = $db->query($sql);
-if ($result)
+if ($mode == 'overwrite')
 {
-	$num = $db->num_rows($result);
-	$i = 0;
-	$var=false;
+    //print load_fiche_titre($langs->trans("TranslationOverwriteKey"), '', '')."\n";
+    
+    print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+    print '<input type="hidden" id="action" name="action" value="">';
+    print '<input type="hidden" id="mode" name="mode" value="'.$mode.'">';
+    
+    print '<table class="noborder" width="100%">';
+    print '<tr class="liste_titre">';
+    print_liste_field_titre($langs->trans("Language").' (en_US, es_MX, ...)',$_SERVER["PHP_SELF"],'lang,transkey','',$param,'',$sortfield,$sortorder);
+    print_liste_field_titre($langs->trans("Key"),$_SERVER["PHP_SELF"],'transkey','',$param,'',$sortfield,$sortorder);
+    print_liste_field_titre($langs->trans("NewTranslationStringToShow"),$_SERVER["PHP_SELF"],'transvalue','',$param,'',$sortfield,$sortorder);
+    if (! empty($conf->multicompany->enabled) && !$user->entity) print_liste_field_titre($langs->trans("Entity"),$_SERVER["PHP_SELF"],'entity,transkey','',$param,'',$sortfield,$sortorder);
+    print '<td align="center"></td>';
+    print "</tr>\n";
+    
+    
+    // Line to add new record
+    $var=false;
+    print "\n";
+    
+    print '<tr '.$bc[$var].'><td>';
+    print $formadmin->select_language(GETPOST('langcode'),'langcode',0,null,1,0,0,'',1);
+    //print '<input type="text" class="flat" size="24" name="langcode" value="'.GETPOST('langcode').'">';
+    print '</td>'."\n";
+    print '<td>';
+    print '<input type="text" class="flat maxwidthonsmartphone" name="transkey" value="">';
+    print '</td><td>';
+    print '<input type="text" class="quatrevingtpercent" name="transvalue" value="">';
+    print '</td>';
+    // Limit to superadmin
+    if (! empty($conf->multicompany->enabled) && !$user->entity)
+    {
+    	print '<td>';
+    	print '<input type="text" class="flat" size="1" name="entity" value="'.$conf->entity.'">';
+    	print '</td>';
+    	print '<td align="center">';
+    }
+    else
+    {
+    	print '<td align="center">';
+    	print '<input type="hidden" name="entity" value="'.$conf->entity.'">';
+    }
+    print '<input type="submit" class="button" value="'.$langs->trans("Add").'" name="add">';
+    print "</td>\n";
+    print '</tr>';
+    
+    
+    // Show constants
+    $sql = "SELECT";
+    $sql.= " rowid";
+    $sql.= ", lang";
+    $sql.= ", transkey";
+    $sql.= ", transvalue";
+    $sql.= " FROM ".MAIN_DB_PREFIX."overwrite_trans";
+    $sql.= " WHERE 1 = 1";
+    //$sql.= " AND entity IN (".$user->entity.",".$conf->entity.")";
+    //if ((empty($user->entity) || $user->admin) && $debug) {} 										// to force for superadmin to debug
+    //else if (! GETPOST('visible') || GETPOST('visible') != 'all') $sql.= " AND visible = 1";		// We must always have this. Otherwise, array is too large and submitting data fails due to apache POST or GET limits
+    //if (GETPOST('name')) $sql.=natural_search("name", GETPOST('name'));
+    //$sql.= " ORDER BY entity, name ASC";
+    $sql.= $db->order($sortfield, $sortorder);
+    
+    dol_syslog("translation::select from table", LOG_DEBUG);
+    $result = $db->query($sql);
+    if ($result)
+    {
+    	$num = $db->num_rows($result);
+    	$i = 0;
+    	$var=false;
+    
+    	while ($i < $num)
+    	{
+    		$obj = $db->fetch_object($result);
+    		$var=!$var;
+    
+    		print "\n";
+    
+    		print '<tr '.$bc[$var].'>';
+    		
+    		print '<td>'.$obj->lang.'</td>'."\n";
+    		print '<td>'.$obj->transkey.'</td>'."\n";
+    
+    		// Value
+    		print '<td>';
+    		/*print '<input type="hidden" name="const['.$i.'][rowid]" value="'.$obj->rowid.'">';
+    		print '<input type="hidden" name="const['.$i.'][lang]" value="'.$obj->lang.'">';
+    		print '<input type="hidden" name="const['.$i.'][name]" value="'.$obj->transkey.'">';
+    		print '<input type="text" id="value_'.$i.'" class="flat inputforupdate" size="30" name="const['.$i.'][value]" value="'.dol_escape_htmltag($obj->transvalue).'">';
+    		*/
+    		print $obj->transvalue;
+    		print '</td>';
+    
+    		print '<td align="center">';
+    		print '<a href="'.$_SERVER['PHP_SELF'].'?rowid='.$obj->rowid.'&entity='.$obj->entity.'&action=delete'.((empty($user->entity) && $debug)?'&debug=1':'').'">'.img_delete().'</a>';
+    		print '</td>';
+    		
+    		print "</tr>\n";
+    		print "\n";
+    		$i++;
+    	}
+    }
+    
+    
+    print '</table>';
 
-	while ($i < $num)
-	{
-		$obj = $db->fetch_object($result);
-		$var=!$var;
-
-		print "\n";
-
-		print '<tr '.$bc[$var].'>';
-		
-		print '<td>'.$obj->lang.'</td>'."\n";
-		print '<td>'.$obj->transkey.'</td>'."\n";
-
-		// Value
-		print '<td>';
-		/*print '<input type="hidden" name="const['.$i.'][rowid]" value="'.$obj->rowid.'">';
-		print '<input type="hidden" name="const['.$i.'][lang]" value="'.$obj->lang.'">';
-		print '<input type="hidden" name="const['.$i.'][name]" value="'.$obj->transkey.'">';
-		print '<input type="text" id="value_'.$i.'" class="flat inputforupdate" size="30" name="const['.$i.'][value]" value="'.dol_escape_htmltag($obj->transvalue).'">';
-		*/
-		print $obj->transvalue;
-		print '</td>';
-
-		print '<td align="center">';
-		print '<a href="'.$_SERVER['PHP_SELF'].'?rowid='.$obj->rowid.'&entity='.$obj->entity.'&action=delete'.((empty($user->entity) && $debug)?'&debug=1':'').'">'.img_delete().'</a>';
-		print '</td>';
-		
-		print "</tr>\n";
-		print "\n";
-		$i++;
-	}
 }
 
-
-print '</table>';
+dol_fiche_end();
 
 print "</form>\n";
 
diff --git a/htdocs/core/class/html.formadmin.class.php b/htdocs/core/class/html.formadmin.class.php
index 33393f1ef460878be9a2affee65d2ae7c412ea3f..af51b64fa8db537caf61a8b6edc9258dcad7ed7f 100644
--- a/htdocs/core/class/html.formadmin.class.php
+++ b/htdocs/core/class/html.formadmin.class.php
@@ -51,14 +51,14 @@ class FormAdmin
 	 *    	@param      string		$htmlname       Name of HTML select
 	 *    	@param      int			$showauto       Show 'auto' choice
 	 * 		@param		array		$filter			Array of keys to exclude in list
-	 * 		@param		int			$showempty		Add empty value
+	 * 		@param		string		$showempty		1=Add empty value or string to show
 	 *      @param      int			$showwarning    Show a warning if language is not complete
 	 *      @param		int			$disabled		Disable edit of select
 	 *      @param		string		$morecss		Add more css styles
 	 *      @param      int         $showcode       Add language code into label
 	 *      @return		string						Return HTML select string with list of languages
 	 */
-	function select_language($selected='',$htmlname='lang_id',$showauto=0,$filter=null,$showempty=0,$showwarning=0,$disabled=0,$morecss='',$showcode=0)
+	function select_language($selected='',$htmlname='lang_id',$showauto=0,$filter=null,$showempty='',$showwarning=0,$disabled=0,$morecss='',$showcode=0)
 	{
 		global $langs;
 
@@ -71,7 +71,10 @@ class FormAdmin
 		{
 			$out.= '<option value=""';
 			if ($selected == '') $out.= ' selected';
-			$out.= '>&nbsp;</option>';
+			$out.= '>';
+			if ($showempty != '1') $out.=$showempty;
+			else $out.='&nbsp;';
+			$out.='</option>';
 		}
 		if ($showauto)
 		{
diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php
index 447a3111e10fcbf49bde87467341a3f68f9e381b..4bcd34baa8a889fbcb1453acf895c0a4063002b4 100644
--- a/htdocs/core/lib/admin.lib.php
+++ b/htdocs/core/lib/admin.lib.php
@@ -568,6 +568,37 @@ function security_prepare_head()
 }
 
 
+/**
+ * Prepare array with list of tabs
+ *
+ * @return  array				Array of tabs to show
+ */
+function translation_prepare_head()
+{
+    global $langs, $conf, $user;
+    $h = 0;
+    $head = array();
+
+    $head[$h][0] = DOL_URL_ROOT."/admin/translation.php?mode=overwrite";
+    $head[$h][1] = $langs->trans("TranslationOverwriteKey");
+    $head[$h][2] = 'overwrite';
+    $h++;
+
+    $head[$h][0] = DOL_URL_ROOT."/admin/translation.php?mode=searchkey";
+    $head[$h][1] = $langs->trans("TranslationKeySearch");
+    $head[$h][2] = 'searchkey';
+    $h++;
+
+    complete_head_from_modules($conf,$langs,null,$head,$h,'translation_admin');
+
+    complete_head_from_modules($conf,$langs,null,$head,$h,'translation_admin','remove');
+
+
+    return $head;
+}
+
+
+
 /**
  * 	Return list of session
  *