django I18n javascript_catalog与怪异的反应

Ale*_*lex 5 django django-i18n reactjs

我使用的是Django 1.9,React和webpack,我使用外部工具在javascript文件中加载Django I18n函数,例如gettext。

从视图中这样加载:

<script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' %}/0"></script>
Run Code Online (Sandbox Code Playgroud)

这是我的webpack配置:

externals: {
    // require("jquery") is external and available
    //  on the global var jQuery
    "jquery": "jQuery",
    "utils": "utils",
    "gettext":"gettext",
    "django":"django",//I18n functions are encapsulated in the django object

    },
Run Code Online (Sandbox Code Playgroud)

在我的jsx文件中,我像这样加载gettext:

从'django'导入{gettext,interpolate,ngettext}

render(){
var login_header_text = gettext("blablabla.");
....
Run Code Online (Sandbox Code Playgroud)

实际上几乎所有东西都可以使用,当我使用django-admin makemessages -d djangojs -l时,它会恢复许多gettext,但是脚本会忽略某些gettext,因此有时我必须将gettext放在渲染函数的开头,然后它才能工作。 ..,我不知道为什么会这样。

最后,我的技术可以使它完全起作用,但是也许我做错了。也许我应该用grunt生成mo文件,并用webpack用po loader动态加载它,因为我需要尽快将它们动态加载到页面中。

也许您可以指导我一些?谢谢