8

在我的 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

在 settings.py 我有

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

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

在 urls.py 我有

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

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

作为我的网址的一部分。

如果我运行应用程序并打电话,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 文件位于 locale 目录中。

任何人?

4

3 回答 3

5

这最终为我工作:

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)

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

于 2016-08-12T18:28:25.933 回答
3

我遇到了同样的问题,当我将我的语言环境目录从我的项目文件夹移动到我的应用程序文件夹时它起作用了,所以似乎 makemessages 需要在应用程序级别运行。我认为您LOCALE_PATHS的设置文件中不需要。

于 2012-12-21T18:58:46.287 回答
2

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

即,如果你的英文 po 文件中有这个:

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

目录中不会出现任何内容(如果您使用英文访问它)。但如果你有这个:

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

然后会有。

于 2012-11-07T10:52:57.960 回答