Django JavaScript 翻译未生效。

9

我尝试着按照指南操作,但是不够清晰明了。

  1. 我把这个添加到我的urls.py文件中:

    urlpatterns = patterns('',
        (r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'),
    )
    
  2. 使用以下命令生成语言文件:

    django-admin.py makemessages -d djangojs -l fr
    

root_folder/locale/fr/LC_MESSAGES现在包含django.podjangojs.po,并且我的一个js文件中的alert(gettext('this is to be translated'));djangojs.po捕获。

  1. 我运行了 django-admin.py compilemessages 命令并重启了服务器。

  2. 在我的 base.html 文件中添加了以下内容:

    <script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' 'locale' %}" >< /script >
    
请注意,我添加了“locale”以避免在动态加载翻译时未传递软件包名称的异常。
  1. 我从浏览器访问了/jsi18n/locale/,但是我只得到了Django翻译函数:

    /* gettext library */
    
    var catalog = new Array();
    
    function pluralidx(count) { return (count == 1) ? 0 : 1; }
    
    
    function gettext(msgid) {
    ....
    
为什么“this is to be translated”没有显示,它会根据什么基础来展示特定的语言而不是通过URL传递呢?
2个回答

13

我不确定如何解决你的问题,但是我可以告诉你我是如何处理我的问题的:

locale 文件夹在我的 tickets 应用程序中。

urls.py

js_info_dict = {
    'domain': 'djangojs',
    'packages': ('tickets',),
}

urlpatterns = patterns('',
    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
    ...

基础模板.html

<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>

并创建消息文件:

python -m django-admin makemessages -d djangojs -l fr
python -m django-admin compilemessages

希望您能从中学到一些东西。


6

对于其他和我类似的情况,JS消息可以生成和编译,但是当您使用i18n语言URL时,它们不会在模板或页面中呈现。

这是因为应该将JavaScript目录添加到i18n URL模式中,而不是普通模式。

urlpatterns += patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )

=>

urlpatterns += i18n_patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )

非常感谢,我在这上面花费了很多时间。我已经开了一个相关的 ticket 来纠正文档,因为在我看来它们并不实用。 - raratiru
对于任何偶然发现这个问题的人:根据我阅读上述票证 https://code.djangoproject.com/ticket/25751 中的评论所理解的,这似乎只会在您的_root_ url使用i18n_patterns时发生(有人可以确认或否认吗?) - bruno desthuilliers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接