国际化JavaScript代码时清空目录

kin*_*ley 9 django internationalization django-i18n

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

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

# urls.py
js_info_dict = {
    'packages': ('my_project',),
} 
Run Code Online (Sandbox Code Playgroud)

./manage.py makemessages由于该.po文件包含所有待翻译的字符串,但网站上没有任何JavaScript字符串被翻译,并且目录始终为空,因此效果很好.

j7n*_*n7k 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),

)
Run Code Online (Sandbox Code Playgroud)

在JS文件中使用:

var somevar = gettext('Text to translate');
Run Code Online (Sandbox Code Playgroud)

编译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
Run Code Online (Sandbox Code Playgroud)


kin*_*ley 3

我将 my_project 添加到 settings.py 中的已安装应用程序中,这似乎可以解决问题