Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Empty catalog when internationalizing JavaScript code

I'm trying to set up Internationalization of JavaScript code in my Django application.

My Django app has a locale subdirectory with a properly generated djangojs.po file. The package definition is as follows:

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

./manage.py makemessages worked well as the .po file contains all the to-be-translated strings but no JavaScript string ever gets translated on the website and the catalog is always empty.

like image 332
kingsley Avatar asked Jul 27 '10 20:07

kingsley


2 Answers

I also had some problems with. This is how it works for me:

Add this to 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),

)

In JS files use:

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

To compile django translation files: In a shell/terminal run from the project root (where 'apps', 'settings', etc lie):

#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
like image 181
j7nn7k Avatar answered Oct 25 '22 08:10

j7nn7k


i added my_project to INSTALLED APPS in settings.py and that seemed to do the trick

like image 25
kingsley Avatar answered Oct 25 '22 09:10

kingsley