我无法获得翻译以显示我的模板。这就是我所做的:
trans
标记。./manage.py makemessages -l es
./conf/locale/es/LC_MESSAGES/django.po
./manage.py compilemessages
LANGUAGE_CODE
设置为'es'
django.middleware.locale.LocaleMiddleware
添加了MIDDLEWARE_CLASSES
。只有英语陈述仍在显示。我在这做错了什么?我错过了什么?
答案 0 :(得分:4)
您是否尝试在设置文件中设置LOCALE_PATHS
?这为我修好了...有关详细信息,请查看an answer I wrote for a similar question或django的official documentation for the LOCALE_PATHS
setting。
答案 1 :(得分:2)
Django的LocaleMiddleware
尝试根据给定的请求确定语言环境,并相应地替换LANGUAGE_CODE
。它通过以下步骤:
django_language
的会话变量。在此会话中将语言设置为给定的语言环境。如果不存在则转到2。HTTP_ACCEPT_LANGUAGE
标题中确定语言。如果不可能,它将转到4。LANGUAGE_CODE
设置作为给定的区域设置。在除4之外的所有步骤中,它将检查语言是否在LANGUAGES
设置中给出,该设置是表示语言代码和语言标题的2元组的元组。确保设置/覆盖默认值,因为默认值是所有可用Django语言的元组。
如果您的Django网站中有多种语言:
确保您的会话或Cookie设置正确。您可以使用Django的内部视图来设置语言(django.views.i18n.set_language
)。
如果您只有一种语言:
如果你只有西班牙语,你通常不需要为此烦恼。只需确保设置LANGUAGES
和LANGUAGE_CODE
即可。如果LANGUAGES
中未提供页面语言,则不会尝试将页面语言设置为您的浏览器语言。此外,您应该确保USE_I18N = True
。这应该是默认值,所以至少要确保你没有将它设置为某个地方的False
。
答案 2 :(得分:0)
好的,我发现了问题...我的po文件位于./conf/locale
而不只是./locale
。
我创建./conf/locale
的原因是因为当我django-admin.py makemessages
时,它指示我这样做。但是,如果它位于您的本地项目目录中,那么它只是./locale
。