如何让GAE + django拿起我的.po和.mo翻译

时间:2011-03-11 10:24:19

标签: django google-app-engine localization locale

我在.po和.mo文件中准备了翻译。如何让django 1.2显示这些?我可以使用内置的trnanslations,现在我想在[application-name] / conf / locale / [Language_Code] / LC_MESSAGES'

中另外启用它们。

有办法吗?它曾经与django 0.96一起工作,升级后只有内置翻译工作。

更新:我尝试转移到APP_DIR / locale / LANG_CODE / LC_MESSAGES / django.po,它不会为我工作。也许我错过了什么。我是否必须重新编译.po文件?

更新:在这里说明,我将.po和.mo文件放在

APP_DIR/locale/LANG_CODE/LC_MESSAGES/django.po

它仍然没有成功。我正在考虑为什么并欢迎任何更多的建议或建议如何使用django为谷歌应用引擎启用i18n功能。

编辑:Here's a link我们在GAE python组中讨论这个问题。

更新:现在可以了。我们没有必要移动conf目录中的目录。我们只是使用:

from google.appengine.dist import use_library
use_library('django', '1.2')

# Force Django to reload settings
from django.conf import settings
os.environ['DJANGO_SETTINGS_MODULE'] = 'conf.settings'
settings._target = None

2 个答案:

答案 0 :(得分:1)

将区域设置文件放在:

APP_DIR/locale/LANG_CODE/LC_MESSAGES/django.po
APP_DIR/locale/LANG_CODE/LC_MESSAGES/django.mo

我遇到了同样的问题并改变了工作路径

答案 1 :(得分:1)

首先你应该使用

'django.middleware.locale.LocaleMiddleware'

在您的设置文件中,但我认为您已经意识到这一点。接下来,我建议您在视图中使用ugettext_lazy进行翻译(即视图中的每个字符串'test'都应由ugettext_lazy('test')传递。在使用{% trans "text" %}的模板中应该有效(请记住,模板需要加载{% load i18n %})。然后使用脚本:

django-admin makemessages

APP_DIR中。最后编辑django.po个文件并使用

django-admin compilemessages
翻译后

。就这样。你试过这个吗?是否有效?