【问题标题】:Heroku Django translationsHeroku Django 翻译
【发布时间】:2017-03-13 07:41:47
【问题描述】:

我在我的 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. 

【问题讨论】:

  • django-rosetta 在您的requirements.txt 文件中吗?
  • 是的,我目前有 django-rosetta==0.7.12
  • 没有理由在 heroku 上运行 makemessages。你应该只是 git push heroku master 就是这样。
  • 由于某种原因,网站没有更改 heroku 中的语言
  • 所以,这应该是另一个原因。也许是因为django-rosetta。我从来没有用过,所以我不能说。我一直使用Django的内置翻译,从来没有遇到任何问题。

标签: python django heroku


【解决方案1】:

您很可能已经检查过了,但是 requirements.txt 文件是否与 pip 安装一起是最新的?

pip freeze > requirements.txt

git 添加。

git commit -m "new req.txt"

git push heroku 大师

我希望这会有所帮助! -干杯

【讨论】:

    【解决方案2】:

    虽然不是同一个问题,但我对另一个问题 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,因此不再需要像 cmets 中提到的那样添加额外的构建包(至少对于 gettext)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 2017-07-26
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多