Heroku - Django - 翻译在生产中不起作用

问题描述 投票:0回答:1

我正在尝试使用 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 无法正常工作。

问题:

  1. 我是否应该简单地从 .gitignore 中删除 .mo 来解决问题?

  2. 我继续当前的道路并找到解决方案而不是对的吗? 从 .gitignore 中删除 .mo?

django heroku internationalization
1个回答
0
投票

好吧,我找到了答案。

该问题与 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 翻译未完全正常工作

© www.soinside.com 2019 - 2024. All rights reserved.