diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_changeId.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_changeId.xml
index 1eb592e052be9d9925cc26976d310c8ce2af98a4..11be125ca1ca14dd05e16899fa914d24b5b94a96 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_changeId.xml
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_changeId.xml
@@ -65,8 +65,7 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>from Products.ERP5Type.Message import Message\n
-N_ = lambda msg, **kw: Message(\'erp5_ui\', msg, **kw)\n
+            <value> <string>from Products.ERP5Type.Message import translateString\n
 \n
 if id and id != context.getId():\n
   container = context.getParentValue()\n
@@ -80,13 +79,13 @@ if id and id != context.getId():\n
           keep_items=dict(selection_name=selection_name,\n
                           selection_index=selection_index,\n
                           cancel_url=cancel_url,\n
-                          portal_status_message=N_("Function Changed")),)\n
+                          portal_status_message=translateString("Function Changed")),)\n
 \n
 return context.Base_redirect(form_id,\n
           keep_items=dict(selection_name=selection_name,\n
                           selection_index=selection_index,\n
                           cancel_url=cancel_url,\n
-                          portal_status_message=N_("Cancelled")),)\n
+                          portal_status_message=translateString("Cancelled")),)\n
 </string> </value>
         </item>
         <item>
@@ -142,8 +141,7 @@ return context.Base_redirect(form_id,\n
                             <string>cancel_url</string>
                             <string>kw</string>
                             <string>Products.ERP5Type.Message</string>
-                            <string>Message</string>
-                            <string>N_</string>
+                            <string>translateString</string>
                             <string>_getattr_</string>
                             <string>context</string>
                             <string>container</string>
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getAge.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getAge.xml
index 7ca96d9720f158baa85d4b92114ace9e766dcca8..b734583098acb030cb78ff88fa2b4f44808580bd 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getAge.xml
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getAge.xml
@@ -73,7 +73,7 @@ string.\n
 """\n
 from DateTime import DateTime\n
 from Products.ERP5Type.DateUtils import getIntervalBetweenDates\n
-N_ = context.Base_translateString\n
+Base_translateString = context.Base_translateString\n
 \n
 birthday = context.getBirthday()\n
 if birthday is None:\n
@@ -88,7 +88,7 @@ if year:\n
   return interval_dict[\'year\']\n
 \n
 # mapping contains year, month & day\n
-return N_("${year} Years Old", mapping=interval_dict)\n
+return Base_translateString("${year} Years Old", mapping=interval_dict)\n
 
 
 ]]></string> </value>
@@ -140,7 +140,7 @@ return N_("${year} Years Old", mapping=interval_dict)\n
                             <string>getIntervalBetweenDates</string>
                             <string>_getattr_</string>
                             <string>context</string>
-                            <string>N_</string>
+                            <string>Base_translateString</string>
                             <string>birthday</string>
                             <string>None</string>
                             <string>interval_dict</string>
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_shiftDefaultCareer.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_shiftDefaultCareer.xml
index 6046cceb4f3ae17bb6c8ccbbccbfca841737742e..f76a2d3533ec20fb6bcd66f40e4d700db436721c 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_shiftDefaultCareer.xml
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_shiftDefaultCareer.xml
@@ -66,7 +66,7 @@
         <item>
             <key> <string>_body</string> </key>
             <value> <string>from Products.CMFActivity.Errors import ActivityPendingError\n
-N_ = context.Base_translateString\n
+Base_translateString = context.Base_translateString\n
 \n
 person = context\n
 career_list = []\n
@@ -77,7 +77,7 @@ if \'default_career\' in person.objectIds():\n
 \n
 if default_career is None:\n
   # No default career.\n
-  message = N_(\'Current career must exist.\')\n
+  message = Base_translateString(\'Current career must exist.\')\n
   return context.Base_redirect(form_id=form_id,\n
                                selection_name=selection_name,\n
                                selection_index=selection_index,\n
@@ -89,7 +89,7 @@ else:\n
   try:\n
     default_career.setId(new_id)\n
   except ActivityPendingError, error:\n
-    message = N_("%s" % error)\n
+    message = Base_translateString("%s" % error)\n
     return context.Base_redirect(form_id=form_id,\n
                                  selection_name=selection_name,\n
                                  selection_index=selection_index,\n
@@ -107,7 +107,7 @@ else:\n
     start_date=new_start_date,\n
     stop_date=None)\n
 \n
-  message = N_(\'Last career step terminated. New career step added.\')\n
+  message = Base_translateString(\'Last career step terminated. New career step added.\')\n
   return context.Base_redirect(form_id=form_id,\n
                                selection_name=selection_name,\n
                                selection_index=selection_index,\n
@@ -167,7 +167,7 @@ else:\n
                             <string>ActivityPendingError</string>
                             <string>_getattr_</string>
                             <string>context</string>
-                            <string>N_</string>
+                            <string>Base_translateString</string>
                             <string>person</string>
                             <string>career_list</string>
                             <string>None</string>
diff --git a/bt5/erp5_base/bt/change_log b/bt5/erp5_base/bt/change_log
index 3607d658623b1394906dbe01001e6e7c24d9e0a7..95b0cf0e6c7c596b5c8ecec38a98d171e56c424f 100644
--- a/bt5/erp5_base/bt/change_log
+++ b/bt5/erp5_base/bt/change_log
@@ -1,3 +1,6 @@
+2008-08-28 yusei
+* Use Base_translateString or translateString instead of N_ for translation message.
+
 2008-08-15 jerome
 * Expose creation_date in Delivery_getODTDataDict
 
diff --git a/bt5/erp5_base/bt/revision b/bt5/erp5_base/bt/revision
index d9beed0e291298084a6892edd1297c04154d175a..3d41066559f79350d72b566ac05f2c8823f7a999 100644
--- a/bt5/erp5_base/bt/revision
+++ b/bt5/erp5_base/bt/revision
@@ -1 +1 @@
-409
\ No newline at end of file
+410
\ No newline at end of file
diff --git a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Entity_addEvent.xml b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Entity_addEvent.xml
index c8c60cd92bb06ecc32b7a1d9ab486f13dc030335..89895b8168e4946537d05569815ae6209360ea8f 100644
--- a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Entity_addEvent.xml
+++ b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Entity_addEvent.xml
@@ -113,8 +113,7 @@ event_kw[\'causality\'] = causality\n
 module = context.getDefaultModule(portal_type=portal_type)\n
 event = module.newContent(**event_kw)\n
 \n
-N_ = context.Base_translateString\n
-message = N_(\'New Event Created\')\n
+message = context.Base_translateString(\'New Event Created\')\n
 \n
 event.Base_redirect(keep_items={\'portal_status_message\': message})\n
 </string> </value>
@@ -196,7 +195,6 @@ event.Base_redirect(keep_items={\'portal_status_message\': message})\n
                             <string>module</string>
                             <string>_apply_</string>
                             <string>event</string>
-                            <string>N_</string>
                             <string>message</string>
                           </tuple>
                         </value>
diff --git a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_createDocumentFromAttachment.xml b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_createDocumentFromAttachment.xml
index 9c3228d308579976bbc3789afb2522e72f922660..366c63c2b9d1092886ebe70fce8f4e7063d2674a 100644
--- a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_createDocumentFromAttachment.xml
+++ b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_createDocumentFromAttachment.xml
@@ -67,7 +67,7 @@
             <key> <string>_body</string> </key>
             <value> <string>dms_module = getattr(context, \'document_module\', None)\n
 attachment_info_list =  context.getAttachmentInformationList()\n
-N_ = context.Base_translateString\n
+Base_translateString = context.Base_translateString\n
 if dms_module is not None:\n
   for uid in uids:\n
     # Maybe select Line can be improved later\n
@@ -88,12 +88,12 @@ if dms_module is not None:\n
 \n
 if len(uids) == 1:\n
   return context.REQUEST.RESPONSE.redirect(\n
-                  \'%s/view?portal_status_message=%s+%s.\' % (doc.absolute_url(), doc.getTranslatedPortalType(),\n
-                                         N_(\'+Created+Successfully\')))\n
+    \'%s/view?portal_status_message=%s+%s.\' % (doc.absolute_url(), doc.getTranslatedPortalType(),\n
+                                              Base_translateString(\'+Created+Successfully\')))\n
 \n
 return context.REQUEST.RESPONSE.redirect(\n
-                  \'%s?portal_status_message=%s+%s.\' % (dms_module.absolute_url(),len(uids),\n
-                                         N_(\'+Documents+created+Successfully\')))\n
+  \'%s?portal_status_message=%s+%s.\' % (dms_module.absolute_url(),len(uids),\n
+                                       Base_translateString(\'+Documents+created+Successfully\')))\n
 </string> </value>
         </item>
         <item>
@@ -151,7 +151,7 @@ return context.REQUEST.RESPONSE.redirect(\n
                             <string>dms_module</string>
                             <string>_getattr_</string>
                             <string>attachment_info_list</string>
-                            <string>N_</string>
+                            <string>Base_translateString</string>
                             <string>_getiter_</string>
                             <string>uid</string>
                             <string>_getitem_</string>
diff --git a/bt5/erp5_crm/bt/change_log b/bt5/erp5_crm/bt/change_log
index cb28c1d23c85a3d78aeb1652e0575a51b6e4832a..61d05ab68063c74b05dd079ec01113813f2af514 100644
--- a/bt5/erp5_crm/bt/change_log
+++ b/bt5/erp5_crm/bt/change_log
@@ -1,3 +1,6 @@
+2008-08-28 yusei
+* Use Base_translateString or translateString instead of N_ for translation message.
+
 2008-07-17 jerome
 Remove portal transforms, they are also in core
 
diff --git a/bt5/erp5_crm/bt/revision b/bt5/erp5_crm/bt/revision
index 3d9983adabb1c1a26961874f9121d56002ea2e09..fb32aea383e655b7d4efaaa01ce7f262de6bea83 100644
--- a/bt5/erp5_crm/bt/revision
+++ b/bt5/erp5_crm/bt/revision
@@ -1 +1 @@
-295
\ No newline at end of file
+296
\ No newline at end of file
diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Delivery_confirm.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Delivery_confirm.xml
index db903ff7c88e5f9afd2018d042963ac85dfa1b38..d85949e427e65169e6781cfe357ec90268ca7a31 100644
--- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Delivery_confirm.xml
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Delivery_confirm.xml
@@ -65,16 +65,14 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>from Products.ERP5Type.Message import Message\n
-\n
-N_ = lambda msg, **kw: str(Message(\'erp5_ui\', msg, **kw))\n
+            <value> <string>from Products.ERP5Type.Message import translateString\n
 \n
 packing_list = context\n
  \n
 # Modify state\n
 packing_list_state = packing_list.getSimulationState()\n
 if packing_list_state == "draft":\n
-  packing_list.confirm(comment=N_(\'Initialized by Delivery Builder\'))\n
+  packing_list.confirm(comment=translateString(\'Initialized by Delivery Builder\'))\n
 </string> </value>
         </item>
         <item>
@@ -125,8 +123,7 @@ if packing_list_state == "draft":\n
                           <tuple>
                             <string>kw</string>
                             <string>Products.ERP5Type.Message</string>
-                            <string>Message</string>
-                            <string>N_</string>
+                            <string>translateString</string>
                             <string>context</string>
                             <string>packing_list</string>
                             <string>_getattr_</string>
diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/PurchaseOrder_applyPurchaseTradeCondition.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/PurchaseOrder_applyPurchaseTradeCondition.xml
index 0817268f396a4bd8ff6dda4200b78c123af10572..6dc599559e80d05bd0adb44a1f3d03c172ddb824 100644
--- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/PurchaseOrder_applyPurchaseTradeCondition.xml
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/PurchaseOrder_applyPurchaseTradeCondition.xml
@@ -71,7 +71,7 @@
 # and tries to complete some fields\n
 \n
 order = context\n
-N_ = context.Base_translateString\n
+Base_translateString = context.Base_translateString\n
 trade_condition_portal_type = \'Purchase Trade Condition\'\n
 \n
 trade_condition_list = order.getSpecialiseValueList(\n
@@ -97,7 +97,7 @@ while count > 0 and len(trade_condition_list) == 0:\n
 \n
 if len(trade_condition_list ) == 0 :\n
   redirect_url = \'%s/%s?%s\' % ( context.absolute_url(), form_id,\n
-      \'portal_status_message=\' + N_(\'No Trade Condition.\'))\n
+      \'portal_status_message=\' + Base_translateString(\'No Trade Condition.\'))\n
 else :\n
   # if more than one trade condition is found, simply apply the first one\n
   trade_condition=trade_condition_list[0].getObject()\n
@@ -105,7 +105,7 @@ else :\n
   order.Order_applyTradeCondition(trade_condition, force=force)\n
 \n
   redirect_url = \'%s/%s?%s\' % (context.absolute_url(), form_id,\n
-      \'portal_status_message=\' + N_(\'Order updated.\'))\n
+      \'portal_status_message=\' + Base_translateString(\'Order updated.\'))\n
 \n
 if batch_mode:\n
   return\n
@@ -166,7 +166,7 @@ context.REQUEST[ \'RESPONSE\' ].redirect( redirect_url.replace(\' \', \'+\') )\n
                             <string>context</string>
                             <string>order</string>
                             <string>_getattr_</string>
-                            <string>N_</string>
+                            <string>Base_translateString</string>
                             <string>trade_condition_portal_type</string>
                             <string>trade_condition_list</string>
                             <string>tested_base_category_list</string>
diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/SaleOrder_applySaleTradeCondition.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/SaleOrder_applySaleTradeCondition.xml
index 31603484f93f74fdf81382417ca15bad881b9635..a14f1574d8ad13320154eb5e860914bf1538f255 100644
--- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/SaleOrder_applySaleTradeCondition.xml
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/SaleOrder_applySaleTradeCondition.xml
@@ -71,7 +71,7 @@
 # and tries to complete some fields\n
 \n
 order = context\n
-N_ = context.Base_translateString\n
+Base_translateString = context.Base_translateString\n
 trade_condition_portal_type = \'Sale Trade Condition\'\n
 \n
 trade_condition_list = order.getSpecialiseValueList(\n
@@ -97,7 +97,7 @@ while count > 0 and len(trade_condition_list) == 0:\n
 \n
 if len(trade_condition_list ) == 0 :\n
   redirect_url = \'%s/%s?%s\' % ( context.absolute_url(), form_id,\n
-      \'portal_status_message=\' + N_(\'No Trade Condition.\'))\n
+      \'portal_status_message=\' + Base_translateString(\'No Trade Condition.\'))\n
 else :\n
   # if more than one trade condition is found, simply apply the first one\n
   trade_condition=trade_condition_list[0].getObject()\n
@@ -108,7 +108,7 @@ else :\n
     context.setReceivedDate(DateTime())\n
 \n
   redirect_url = \'%s/%s?%s\' % (context.absolute_url(), form_id,\n
-      \'portal_status_message=\' + N_(\'Order updated.\'))\n
+      \'portal_status_message=\' + Base_translateString(\'Order updated.\'))\n
 \n
 if batch_mode:\n
   return\n
@@ -169,7 +169,7 @@ context.REQUEST[ \'RESPONSE\' ].redirect( redirect_url.replace(\' \', \'+\') )\n
                             <string>context</string>
                             <string>order</string>
                             <string>_getattr_</string>
-                            <string>N_</string>
+                            <string>Base_translateString</string>
                             <string>trade_condition_portal_type</string>
                             <string>trade_condition_list</string>
                             <string>tested_base_category_list</string>
diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/SalePackingList_copyOrderProperties.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/SalePackingList_copyOrderProperties.xml
index 990694cd3cfd7102d26df69922cb107443b3dac5..6ae49ad4718e7a19397ba5f8591f94b1c6ca40d1 100644
--- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/SalePackingList_copyOrderProperties.xml
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/SalePackingList_copyOrderProperties.xml
@@ -68,9 +68,7 @@
             <value> <string>if related_simulation_movement_path_list is None:\n
   raise RuntimeError, \'related_simulation_movement_path_list is missing. Update ERP5 Product.\'\n
 \n
-from Products.ERP5Type.Message import Message\n
-\n
-N_ = lambda msg, **kw: str(Message(\'erp5_ui\', msg, **kw))\n
+from Products.ERP5Type.Message import translateString\n
 \n
 packing_list = context\n
  \n
@@ -81,7 +79,7 @@ packing_list.PackingList_copyOrderProperties()\n
 packing_list_state = packing_list.getSimulationState()\n
 \n
 if packing_list_state == "draft":\n
-  packing_list.confirm(comment=N_(\'Initialized by Delivery Builder\'))\n
+  packing_list.confirm(comment=translateString(\'Initialized by Delivery Builder\'))\n
 \n
 # First set the packing_list in the building state\n
 packing_list.startBuilding()\n
@@ -134,8 +132,7 @@ packing_list.activate(after_path_and_method_id=(related_simulation_movement_path
                             <string>None</string>
                             <string>RuntimeError</string>
                             <string>Products.ERP5Type.Message</string>
-                            <string>Message</string>
-                            <string>N_</string>
+                            <string>translateString</string>
                             <string>context</string>
                             <string>packing_list</string>
                             <string>_getattr_</string>
diff --git a/bt5/erp5_trade/bt/change_log b/bt5/erp5_trade/bt/change_log
index 4f9594da1233e3efd82f48a93e1205f705f7adff..89474fe6556bea23f3386e29b8c8478d1cef759d 100644
--- a/bt5/erp5_trade/bt/change_log
+++ b/bt5/erp5_trade/bt/change_log
@@ -1,5 +1,5 @@
 2008-08-28 yusei
-* Use N_ function for translation message.
+* Use Base_translateString or translateString instead of N_ for translation message.
 
 2008-07-30 Jerome
 Add "offered" and "rejected" state on order workflow, to manage offers.
diff --git a/bt5/erp5_trade/bt/revision b/bt5/erp5_trade/bt/revision
index 6a5426c9b3432ec4b244774a543bc6ed9b0eb575..8cb9d84396bef2a990c7ffce27de7e99698e0c1a 100644
--- a/bt5/erp5_trade/bt/revision
+++ b/bt5/erp5_trade/bt/revision
@@ -1 +1 @@
-474
\ No newline at end of file
+475
\ No newline at end of file