Django JavaScript翻译空目录(I18N/JSI18N)



我一直在我的JSI18N JavaScript中最终获得一个空目录。我尝试了Stackoverflow上的所有解决方案,包括国际化JavaScript代码时的空目录,但目录仍然为空。

我的设置是:

project_dir
- locale
  - nl (contains LC_MESSAGES with django.po and djangojs.po)
- app1
- app2
- main_app
  - settings.py
  - urls.py
  - wsgi.py

在设置中。我有

# Where to find locale
LOCALE_PATHS = (
    os.path.join(SITE_ROOT, 'locale'),
)

site_root是我项目dir的绝对路径,所以这转化为

在urls.py中我有

# i18n
js_info_dict = {
    'domain': 'djangojs',
    'packages': ('wrnpro', ),
}

    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),

作为我的URL的一部分。

如果我运行该应用并致电http://localhost:8000/jsi18n/,我会得到

/* gettext library */
var catalog = new Array();
function pluralidx(count) { return (count == 1) ? 0 : 1; }
… 

到目前为止,我已经尝试了所有设置等的各种变体。我可以找到,但是目录仍然为空。

在运行make messagescompile messages时,发现并翻译我的JavaScript获取文本字符串。django.po和.mo文件在语言环境目录中。

有人吗?

这最终对我有用:

js_info_dict = {
   'domain': 'django',
   'packages': None,
}
urlpatterns = [
    url(r'^jsi18n/$', javascript_catalog, js_info_dict, name='javascript-catalog'),
    # ...
]

仍然不起作用?故障排除提示:

我不知道为什么会起作用,但是我可以告诉您我如何找到如何使它起作用。如果您使用相同的故障排除技术,也许您也会找到一种方法。我使用了Python调试器,这样:

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'),
    ...
]

然后使用PDB,我进入了javascript_catalog,直到我到达线上:

catalog, plural = get_javascript_catalog(locale, domain, packages)

i然后在调试器中进行了domainpackages的不同值,直到我发现了我需要的值。

我遇到了相同的问题,当我将网站目录从项目文件夹移动到我的应用程序文件夹时,似乎需要在应用程序级别运行。我认为您在设置文件中不需要LOCALE_PATHS

对于当前用户的语言,您是否已完成翻译,还是只有存根?目录将仅包含实际已翻译的字符串的值。

ie,如果您在英语po文件中有一个:

#: static/js/events.js:159
msgid "Open side panel"
msgstr ""

目录中不会出现任何内容(如果您以英语访问)。但是,如果您有:

#: static/js/events.js:159
msgid "Open side panel"
msgstr "Open side panel"

然后会有。

最新更新