我正在尝试使用 Django 应用程序翻译一些静态文本。
它适用于我的本地,但不适用于生产。我使用 Heroku。
我做了什么:
经过一些研究后,这似乎部分是因为 .mo 在我的 .gitignore.py 中。
但是,我读过几次,应该保持原样,而不是在 app.json 文件中自动编译消息。这就是我在下面所做的:
app.json
{
"scripts": {
"release": "python manage.py compilemessages"
},
}
proc文件
release: python manage.py compilemessages
web: daphne mysite.asgi:application --port $PORT --bind 0.0.0.0 -v2
将“gettext”构建包添加到 Heroku 后,我确实设法在生产日志上看到本地 .mo 文件中包含的大量行。
但是,我似乎无法渲染它们。
运行时我可以清楚地看到.mo文件:
heroku run bash -a appname
find . -name "*.mo"
编辑##
However whe running
heroku run bash -a appname
cd locale/fr/LC_MESSAGES
ls
我只看到下面的内容,看不到 .mo 文件。
~/locale/fr/LC_MESSAGES $ ls
django.po
这让我觉得我的脚本 i app.jso 无法正常工作。
问题:
我是否应该简单地从 .gitignore 中删除 .mo 来解决问题?
我继续当前的道路并找到解决方案而不是对的吗? 从 .gitignore 中删除 .mo?
好吧,我找到了答案。
该问题与 Heroku 20 堆栈有关。
我的错误:
而不是像这样的
Procfile
:
Procfile(旧)
release: python manage.py compilemessages
web: daphne mysite.asgi:application --port $PORT --bind 0.0.0.0 -v2
解决方案:
步骤1
我应该保持原样:
Procfile(现在)
web: daphne mysite.asgi:application --port $PORT --bind 0.0.0.0 -v2
我删除了
release: python manage.py compilemessages
第2步
在我的根目录(顶级目录,所有文件夹都可见)中创建一个名为“bin”的文件夹,并创建一个名为“post_compile”的不带扩展名的文件。
在这个
post_compile
文件中,我写了以下行:
python manage.py compilemessages
并且成功了。
答案在这里解释:Heroku 上的 Django 翻译未完全正常工作