2013-04-08 23 views
1

我正在使用GeoDjango示例与class WorldBorder。 我的麻烦是我无法打印出所选国家的名称。当我尝试执行Python:TypeError:'unicode'对象不可调用,与ugettext冲突?

from django.utils.translation import ugettext_lazy as _ 
... 
location = fromstr(... , srid=4326) 
country = WorldBorder.objects.get(mpoly__intersects=location) 
print _('User country determined to %s') %country.name 

我得到的错误信息:

Python: TypeError: 'unicode' object is not callable 

当我删除了ugettext_lazy,一切工作正常。 如何保留翻译选项并使字符串有效?

+2

什么是你的错误的*完整*追溯?在例外情况下,“print repr(_)”给你带来了什么? – 2013-04-08 15:30:16

+0

Django从来没有抛出一个完整的追溯,因为一切都被'except'捕获。删除测试异常显示,GeoDjango类未被导入。可怜的错误。谢谢你的提示。 – neurix 2013-04-08 15:54:21

+3

对,那么教训是:不要使用空白的'except'子句! :-) – 2013-04-08 15:56:00

回答

4

看起来您正在使用Python shell。在那里,_将取最后一个表达式的值。因此_最终成为第三行后的WorldBorder实例。为了避免这个问题,当你在shell中翻译时,把ugettext_lazy别名为'_'。