=== modified file 'bin/tools/translate.py' --- bin/tools/translate.py 2010-05-18 09:30:44 +0000 +++ bin/tools/translate.py 2010-08-27 13:02:24 +0000 @@ -135,11 +135,19 @@ if not (cr and lang): args = frame.f_locals.get('args',False) - if args: - lang = args[-1].get('lang',False) - if frame.f_globals.get('pooler',False): - cr = pooler.get_db(frame.f_globals['pooler'].pool_dic.keys()[0]).cursor() - + if args and isinstance(args,list) or isinstance(args,tuple): # if we pass args as parameters + if isinstance(args[-1],dict): + lang = args[-1].get('lang',False) + if frame.f_globals.get('pooler',False): + cr = pooler.get_db(frame.f_globals['pooler'].pool_dic.keys()[0]).cursor() + if cr and not lang: + #If no language is found due to no context passed in methods like on_change() get the current user's language. + uid = frame.f_locals.get('uid',False) + if not uid: + uid = frame.f_locals.get('user',False) + if uid: + cr.execute("select context_lang from res_users where id=%s",(uid,)) + lang = cr.fetchone()[0] if not (lang and cr): return source