<p>在<a href="http://docs.djangoproject.com/en/1.0/topics/i18n/" rel="nofollow">Old Django 1.0 manual</a>找到这个(appengine的默认版本是0.98)。在</p>
<p>答案如下:</p>
<blockquote>
<p>STANDARD TRANSLATION:</p>
<p>Python’s standard library gettext module installs _() into the global namespace, as an alias for gettext(). In Django, we have chosen not to follow this practice, for a couple of reasons:</p>
<p>For international character set (Unicode) support, ugettext() is more useful than gettext(). Sometimes, you should be using ugettext_lazy() as the default translation method for a particular file. Without _() in the global namespace, the developer has to think about which is the most appropriate translation function.</p>
<p>The underscore character (_) is used to represent “the previous result” in Python’s interactive shell and doctest tests. Installing a global _() function causes interference. Explicitly importing ugettext() as _() avoids this problem.</p>
</blockquote>
<p>这就是为什么旧的方法有效,同时在Django 1.2中,您需要指定:</p>
<pre><code>from django.utils.translation import gettext_lazy as _
</code></pre>
<p>正如Niklas R建议的那样。在</p>