我在我的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.
答案 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
命令。这可以在本地完成,并且可以将这些文件提交到存储库(假设您在此处填写正确的翻译)。