JavaScript代码国际化时目录为空

11

我正在尝试在我的Django应用程序中设置JavaScript代码的国际化

我的Django应用程序有一个名为locale的子目录,其中包含一个正确生成的djangojs.po文件。包定义如下:

# urls.py
js_info_dict = {
    'packages': ('my_project',),
} 

./manage.py makemessages 命令很好用,生成的 .po 文件包含了所有需要翻译的字符串,但网站上的 JavaScript 字符串却从未被翻译,目录始终为空。

2个回答

6

我也曾遇到一些问题。以下是对我有效的方法:

在您的根 urls.py 文件中添加以下内容:

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


urlpatterns = patterns('',                   

    #enable using translation strings in javascript
    #source: https://docs.djangoproject.com/en/dev/topics/i18n/translation/#module-django.views.i18n
    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),

)

在JS文件中使用:

var somevar = gettext('Text to translate');

编译Django翻译文件:在一个Shell /终端中运行,从项目根目录(其中包括“apps”,“settings”等)开始:

#for "normal django files" (.py, .html):
django-admin.py makemessages --locale=de
#for javascript files. source: https://dev59.com/BEvSa4cB1Zd3GeqPawGT#3571954
django-admin.py makemessages -a -d djangojs --locale=de
#to compile the translation files to machine code
django-admin.py compilemessages --locale=de

1
仍需将我的项目添加到INSTALLED_APPS中。(我不喜欢这样做) - bjunix
它对我仍然不起作用。而且似乎“djangojs”是默认域。无需显式写出。 - azmeuk

3
我在settings.py中将my_project添加到了INSTALLED APPS中,这似乎解决了问题。

我已经在settings.py中的INSTALLED APPS中添加了“my_project”,但目录仍然为空。您有什么其他想法吗? - urig
我已经找出了我的问题所在。我把我的po文件放在了<项目根目录>/conf/locale下,但实际上应该是<项目根目录>/locale。 - urig

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