Heroku上的Django翻译并不完全正常

时间:2017-05-02 16:46:38

标签: python django heroku gettext

我在Heroku上部署了我的Django应用程序,并添加了https://github.com/piotras/heroku-buildpack-gettext.git这个ugettext buildpack,并且应用程序的某些部分是笔记翻译的。在本地工作,我不知道问题出在哪里。

例如,菜单项类类型未翻译,但其他部分是。

{% trans "Class Types" %}

模板

{% load i18n %}
....
<li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{% trans "Class Types" %}<span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li>
                            <a href="{% url 'class_type-list' %}">
                                <span class="glyphicon glyphicon-list" aria-hidden="true"></span> {% trans "All" %}</a>
                        </li>
                        <li>
                            <a href="{% url 'class_type-new' %}">
                                <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> {% trans "New" %}</a>
                        </li>
                    </ul>
                </li>
....

AR / LC_MESSAGES.po

#: templates/back_office/class_type_list.html:4
#: templates/back_office/menu.html:37
msgid "Class Types"
msgstr "انواع الحلقات"

烯/ LC_MESSAGES.po

#: templates/back_office/class_type_list.html:4
#: templates/back_office/menu.html:37
msgid "Class Types"
msgstr "Class Types"

2 个答案:

答案 0 :(得分:1)

您可以在构建过程中生成这些文件。

bin/post_compile 中添加一个编译后文件(没有像 procfile 这样的扩展名),使用以下行:

python manage.py compilemessages

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

Since Heroku 20,为默认 Python 构建包自动添加 gettext。这仅在构建期间而不是在运行时。因此,该命令应添加在 post_compile 中,而不是在 release: 中的 procfile 下。

旧信息链接到 Heroku 上 gettext 的构建包(例如在上面的问题中)。此配置不再需要这些。

答案 1 :(得分:0)

经过一些研究,我发现将编译好的消息文件( *。mo )提交给Heroku会更好,翻译也能正常运行。