Heroku Django翻译

时间:2017-03-13 07:41:48

标签: python django heroku

我在我的Django应用中使用rosetta。我已经设置了所有翻译字符串,它正在使用我的本地环境。问题是当我将代码推送到heroku时,我在运行代码时遇到错误:CommandError: Can't find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed. heroku run python manage.py makemessages -l en

修改

按照@nik_m的建议我添加了post_compile脚本但是我收到了错误:

In post-compile hook        
remote: -----> Compiling translation files        
remote:        CommandError: Can't find msgfmt. 
Make sure you have GNU gettext tools 0.15 or newer installed. 

2 个答案:

答案 0 :(得分:0)

你很可能已经检查了这个,但是最新的pip安装的requirements.txt文件是什么?

pip freeze> requirements.txt

git add。

git commit -m“new req.txt”

git push heroku master

我希望这有所帮助! -Cheers

答案 1 :(得分:0)

虽然这不是同一个问题,但我对另一个问题 here 的回答也可能对您有所帮助。

Since Heroku 20, gettext 会自动添加到默认 Python 构建包中。这仅在构建期间而不是在运行时。因此,该命令应在构建后立即执行。由于 gettext 是自动添加的,因此您不应再收到错误消息。

正如@nik_m 已经提到的,这可以使用 bin/post_compile 中的后编译文件(没有像 procfile 这样的扩展名)来完成:

python manage.py compilemessages

您可以选择添加特定语言(例如 python manage.py compilemessages -l nl

由于 Heroku 会自动添加 gettext,因此不再需要像评论中提到的那样添加额外的构建包(至少对于 gettext)。

您不应在 Heroku 环境中运行 makemessages 命令。这可以在本地完成,并且可以将这些文件提交到存储库(假设您在此处填写正确的翻译)。