I keep ending up with an empty catalog in my jsi18n JavaScript. I have tried all the solutions on StackOverflow including Empty catalog when internationalizing JavaScript code, but the catalog is still empty.
My setup is this:
project_dir
- locale
- nl (contains LC_MESSAGES with django.po and djangojs.po)
- app1
- app2
- main_app
- settings.py
- urls.py
- wsgi.py
In settings.py I have
# Where to find locale
LOCALE_PATHS = (
os.path.join(SITE_ROOT, 'locale'),
)
SITE_ROOT is the absolute path to my project dir, so this translates to
In urls.py I have
# i18n
js_info_dict = {
'domain': 'djangojs',
'packages': ('wrnpro', ),
}
and
(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
as part of my urls.
If I run the app and call http://localhost:8000/jsi18n/
I get
/* gettext library */
var catalog = new Array();
function pluralidx(count) { return (count == 1) ? 0 : 1; }
…
So far I have tried every variation of settings etc. I could find, but the catalog remains empty.
When running make messages
and compile messages
my JavaScript get text strings are found and translated. The django.po and .mo files are in the locale directory.
Anyone?
This is what ended up working for me:
js_info_dict = {
'domain': 'django',
'packages': None,
}
urlpatterns = [
url(r'^jsi18n/$', javascript_catalog, js_info_dict, name='javascript-catalog'),
# ...
]
I don't know particularly why this works, but I can tell you how I found out how to make it work. If you use the same troubleshooting technique, maybe you'll find a way too. I used Python debugger, like this:
def javascript_catalog_pdb(*args, **kwargs):
import pdb
pdb.set_trace()
return javascript_catalog(*args, **kwargs)
url_patterns = [
url(r'^jsi18n/$', javascript_catalog_pdb, js_info_dict, name='javascript-catalog'),
...
]
Then using PDB, I stepped into javascript_catalog
, until I got to the line:
catalog, plural = get_javascript_catalog(locale, domain, packages)
I then experimented with different values for domain
and packages
, right there in the debugger, until I discovered the values I needed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With