diff --git a/product/ERP5Form/ListBox.py b/product/ERP5Form/ListBox.py
index 72b6c044a565395d9d876a09c58e8edf42c7a551..b4b6bd63eb04b84d01d57240e6c4f27f487a20bc 100755
--- a/product/ERP5Form/ListBox.py
+++ b/product/ERP5Form/ListBox.py
@@ -456,6 +456,7 @@ class ListBoxWidget(Widget.Widget):
         report_depth = REQUEST.get('report_depth', None)
         list_action = here.absolute_url() + '/' + field.get_value('list_action') + '?reset=1'
         object_list = []
+        translate = portal_object.translation_service.translate
 
         #LOG('Listbox',0,'search_columns1: %s' % str(search_columns))
         if search_columns == [] or search_columns is None or search_columns == '':
@@ -941,84 +942,101 @@ class ListBoxWidget(Widget.Widget):
    <td nowrap valign="middle" align="center">
    </td>
    <td nowrap valign="middle" align="center">
-    <select name="list_start" title="Change Page" size="1"
+    <select name="list_start" title="%s" size="1"
       onChange="submitAction(this.form,'%s/portal_selections/setPage')">
-""" % REQUEST.URL1
+""" % (translate('ui', 'Change Page'), REQUEST.URL1)
         else:
           pages = """\
    <td nowrap valign="middle" align="center">
     <input type="image" src="%s/images/1leftarrowv.png"
-      Title="Previous Page" name="portal_selections/previousPage:method" border="0" />
+      title="%s" name="portal_selections/previousPage:method" border="0" />
    </td>
    <td nowrap valign="middle" align="center">
-    <select name="list_start" title="Change Page" size="1"
+    <select name="list_start" title="%s" size="1"
       onChange="submitAction(this.form,'%s/portal_selections/setPage')">
-""" % (portal_url_string,REQUEST.URL1)
+""" % (portal_url_string, translate('ui', 'Previous Page'), translate('ui', 'Change Page'), REQUEST.URL1)
         for p in range(0, total_pages):
           if p == current_page:
-            pages += """<option selected value="%s">%s of %s</option>\n""" \
-                    % (p * lines, p+1, total_pages)
+            selected = 'selected'
           else:
-            pages += """<option value="%s">%s of %s</option>\n""" \
-                    % (p * lines, p+1, total_pages)
+            selected = ''
+          pages += '<option %s value="%s">%s</option>\n' \
+                  % (selected,
+                     p * lines,
+                     translate('ui', '${page} of ${total_pages}',
+                               mapping = {'page' : p+1, 'total_pages': total_pages}))
 
         if current_page == total_pages - 1:
-          pages = pages + """\
+          pages += """\
     </select>
    </td>
    <td nowrap valign="middle" align="center">
    </td>
 """
         else:
-          pages = pages + """\
+          pages += """\
     </select>
    </td>
    <td nowrap valign="middle" align="center">
     <input type="image" src="%s/images/1rightarrowv.png"
-      Title="Next Page" name="portal_selections/nextPage:method" border="0" />
+      title="%s" name="portal_selections/nextPage:method" border="0" />
    </td>
-""" % portal_url_string
+""" % (portal_url_string, translate('ui', 'Next Page'))
         # Create the header of the table - this should probably become DTML
         # Create also View Selector which enables to switch from a view mode
         # to another directly from the listbox
+        #LOG('ListBox', 0, 'field_title = %s, translate(\'ui\', field_title) + %s' % (repr(field_title), repr(translate('ui', field_title))))
+        format_dict = {
+                        'portal_url_string' : portal_url_string,
+                        'list_action' : list_action,
+                        'field_title' : translate('ui', field_title),
+                        'pages' : pages,
+                        'record_number' : translate('ui', '${number} record(s)',
+                                                    mapping = { 'number' : str(total_size) }),
+                        'item_number' : translate('ui', '${number} item(s) selected',
+                                                  mapping = { 'number' : str(len(checked_uids)) }),
+                        'flat_list_title': translate('ui', 'Flat List'),
+                        'report_tree_title': translate('ui', 'Report Tree'),
+                        'domain_tree_title': translate('ui', 'Domain Tree'),
+                      }
         header = """\
 <!-- List Summary -->
 <div class="ListSummary">
  <table border="0" cellpadding="0" cellspacing="0">
   <tr height="10">
-   <td height="10"><img src="%s/images/Left.png" border="0"></td>
+   <td height="10"><img src="%(portal_url_string)s/images/Left.png" border="0"></td>
    <td class="Top" colspan="2" height="10">
-    <img src="%s/images/spacer.png" width="5" height="10" border="0"
+    <img src="%(portal_url_string)s/images/spacer.png" width="5" height="10" border="0"
       alt="spacer"/></td>
    <td class="Top" colspan="3" height="10">
-    <img src="%s/images/spacer.png" width="5" height="10" border="0"
+    <img src="%(portal_url_string)s/images/spacer.png" width="5" height="10" border="0"
       alt="spacer"/>
    </td>
   </tr>
   <tr>
    <td class="Left" width="17">
-    <img src="%s/images/spacer.png" width="5" height="5" border="0"
+    <img src="%(portal_url_string)s/images/spacer.png" width="5" height="5" border="0"
         alt="spacer"/>
    </td>
    <td valign="middle" nowrap>
 
-    <input type="image" src="%s/images/text_block.png" id="flat_list"
-       title="Flat List" name="portal_selections/setFlatListMode:method" value="1" border="0" alt="img"/">
-    <input type="image" src="%s/images/view_tree.png" id="flat_list"
-       title="Report Tree" name="portal_selections/setReportTreeMode:method" value="1" border="0" alt="img"/">
-        <input type="image" src="%s/images/view_choose.png" id="flat_list"
-       title="Domain Tree" name="portal_selections/setDomainTreeMode:method" value="1" border="0" alt="img"/"></td>
-   <td width="100%%" valign="middle">&nbsp; <a href="%s">%s</a>:
-        %s %s - %s %s
+    <input type="image" src="%(portal_url_string)s/images/text_block.png" id="flat_list"
+       title="%(flat_list_title)s" name="portal_selections/setFlatListMode:method" value="1" border="0" alt="img"/">
+    <input type="image" src="%(portal_url_string)s/images/view_tree.png" id="flat_list"
+       title="%(report_tree_title)s" name="portal_selections/setReportTreeMode:method" value="1" border="0" alt="img"/">
+        <input type="image" src="%(portal_url_string)s/images/view_choose.png" id="flat_list"
+       title="%(domain_tree_title)s" name="portal_selections/setDomainTreeMode:method" value="1" border="0" alt="img"/"></td>
+   <td width="100%%" valign="middle">&nbsp; <a href="%(list_action)s">%(field_title)s</a>:
+        %(record_number)s - %(item_number)s
    </td>
-   %s
+   %(pages)s
   </tr>
  </table>
 </div>
 <!-- List Content -->
 <div class="ListContent">
  <table cellpadding="0" cellspacing="0" border="0">
-""" % ((portal_url_string,) * 7 + ( list_action, field_title , total_size, 'Records',  len(checked_uids), 'item(s) selected', pages))
+""" % format_dict
 
         # pages
 
@@ -1060,17 +1078,23 @@ onChange="submitAction(this.form,'%s/portal_selections/setReportRoot')">
           report_popup = ''
 
         if select:
+          format_dict = {
+                          'portal_url_string' : portal_url_string,
+                          'report_popup' : report_popup,
+                          'check_all_title' : translate('ui', 'Check All'),
+                          'uncheck_all_title' : translate('ui', 'Uncheck All'),
+                        }
           list_header = """\
-<tr >%s
+<tr>%(report_popup)s
    <td class="Data" width="50" align="center" valign="middle">
     <input type="image" name="portal_selections/checkAll:method" value="1"
-      src="%s/images/checkall.png" border="0" alt="Check All" />
+      src="%(portal_url_string)s/images/checkall.png" border="0" alt="Check All" title=%(check_all_title)s />
     <input type="image" name="portal_selections/uncheckAll:method" value="1"
-      src="%s/images/decheckall.png" border="0" alt="Uncheck All" />
-""" % (report_popup,portal_url_string,portal_url_string)
+      src="%(portal_url_string)s/images/decheckall.png" border="0" alt="Uncheck All" title=%(uncheck_all_title)s />
+""" % format_dict
         else:
           list_header = """\
-<tr >%s
+<tr>%s
 """ % report_popup
         # csort is a list of couples
         # we should convert it into a dict because a list of couples would need
@@ -1091,10 +1115,11 @@ onChange="submitAction(this.form,'%s/portal_selections/setReportRoot')">
           else:
             img = ''
           if cname[0] in search_columns_id_list:
-            list_header = list_header + ("<td class=\"Data\"><a href=\"%sportal_selections/setSelectionQuickSortOrder?selection_name=%s&sort_on=%s\">%s</a> %s</td>\n" %
-                (here.absolute_url() + '/' ,str(selection_name),str(cname[0]),str(cname[1]),img))
+            #LOG('ListBox', 0, 'str(cname[1]) = %s, translate(\'ui\',str(cname[1])) = %s' % (repr(str(cname[1])), repr(translate('ui',str(cname[1])))))
+            list_header += ("<td class=\"Data\"><a href=\"%sportal_selections/setSelectionQuickSortOrder?selection_name=%s&sort_on=%s\">%s</a> %s</td>\n" %
+                (here.absolute_url() + '/' ,str(selection_name),str(cname[0]),translate('ui',str(cname[1])),img))
           else:
-            list_header = list_header + ("<td class=\"Data\">%s</td>\n" % str(cname[1]))
+            list_header += ("<td class=\"Data\">%s</td>\n" % translate('ui', str(cname[1])))
         list_header = list_header + "</tr>"
 
         # Create the search row of the table with the name of the columns
@@ -1115,9 +1140,9 @@ onChange="submitAction(this.form,'%s/portal_selections/setReportRoot')">
   <tr >
    %s
    <td class="Data" width="50" align="center" valign="middle">
-     <input type="image" src="%s/images/exec16.png" title="Action" alt="Action" name="doSelect:method" />
+     <input type="image" src="%s/images/exec16.png" title="%s" alt="Action" name="doSelect:method" />
    </td>
-""" % (report_search,portal_url_string)
+""" % (report_search,portal_url_string,translate('ui', 'Action')) # XXX Action? Is this word appropriate here?
           else:
             list_search ="""\
   <tr >
@@ -1325,7 +1350,7 @@ onChange="submitAction(this.form,'%s/portal_selections/setReportRoot')">
                 key = my_field.id + '_%s' % o.uid
                 if field_errors.has_key(key):
                   error_css = 'Error'
-                  error_message = "<br/>%s" % field_errors[key].error_text  # XXX localization needed
+                  error_message = "<br/>%s" % translate('ui', field_errors[key].error_text)
                   # Display previous value (in case of error
                   error_list.append(field_errors.get(key))
                   display_value = REQUEST.get('field_%s' % key, attribute_value)