From 402d9c0255cacf7b0cfe62abd59828b68c12eea3 Mon Sep 17 00:00:00 2001
From: Yoshinori Okuji <yo@nexedi.com>
Date: Tue, 18 Dec 2007 00:12:30 +0000
Subject: [PATCH] Small optimization.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@18373 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/patches/Localizer.py | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/product/ERP5Type/patches/Localizer.py b/product/ERP5Type/patches/Localizer.py
index c2a24da34e..31be095061 100644
--- a/product/ERP5Type/patches/Localizer.py
+++ b/product/ERP5Type/patches/Localizer.py
@@ -48,29 +48,34 @@ def Localizer_translate(self, domain, msgid, lang=None, mapping=None, *args, **k
 
     # Get the Localizer catalog id
     catalog_id = message_catalog_aliases.get(domain, domain)
-    if catalog_id not in self.objectIds():
+    catalog_obj = self._getOb(catalog_id, None)
+    if catalog_obj is None:
       # No catalog found: use the default one
-      catalog_id = 'default'
-    catalog_obj = self[catalog_id]
+      catalog_obj = self['default']
 
     # Call the Message Catalog gettext method
     params = {}
-    for key in ('lang', 'add', 'default'):
-      if key in kw:
+    for key in ('add', 'default'):
+      try:
         params[key] = kw[key]
+      except KeyError:
+        pass
     if lang is not None:
       params['lang'] = lang
-    if 'target_language' in kw:
-      params['lang'] = kw['target_language']
+    else:
+      try:
+        params['lang'] = kw['target_language']
+      except KeyError:
+        pass
     translated_str = catalog_obj.gettext(msgid, **params)
 
     # Map the translated string with given parameters
-    if type(mapping) is type({}) and len(mapping):
+    if isinstance(mapping, dict) and mapping:
       unicode_mapping = {}
       if not isinstance(translated_str, unicode):
         translated_str = translated_str.decode('utf8')
       # make sure all values in the mapping are unicode
-      for k, v in mapping.items():
+      for k, v in mapping.iteritems():
         if isinstance(v, str):
           v = v.decode('utf8')
         elif isinstance(v, Message):
-- 
2.30.9