我正在尝试设置Internationalization of JavaScript code in my Django application。
我的Django应用程序有一个locale
子目录,其中包含正确生成的djangojs.po
文件。包的定义如下:
# urls.py
js_info_dict = {
'packages': ('my_project',),
}
./manage.py makemessages
效果很好,因为.po
文件包含所有要翻译的字符串,但网站上没有任何JavaScript字符串被翻译,并且目录始终为空。
答案 0 :(得分:5)
我也遇到了一些问题。这就是它对我有用的方式:
将此添加到yr root 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: http://stackoverflow.com/a/3571954/268125
django-admin.py makemessages -a -d djangojs --locale=de
#to compile the translation files to machine code
django-admin.py compilemessages --locale=de
答案 1 :(得分:3)
我在settings.py中将my_project添加到INSTALLED APPS中,这似乎可以解决问题