Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django JavaScript翻译空目录(i18n/jsi18n)_Javascript_Django - Fatal编程技术网

Django JavaScript翻译空目录(i18n/jsi18n)

Django JavaScript翻译空目录(i18n/jsi18n),javascript,django,Javascript,Django,我的jsi18n JavaScript中总是有一个空目录。我已经尝试了StackOverflow上的所有解决方案,包括,但目录仍然是空的 我的设置如下: 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

我的jsi18n JavaScript中总是有一个空目录。我已经尝试了StackOverflow上的所有解决方案,包括,但目录仍然是空的

我的设置如下:

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是指向我的project dir的绝对路径,因此可以转换为

在url.py中,我有

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

作为我的URL的一部分

如果我运行应用程序并调用
http://localhost:8000/jsi18n/
我明白了

/* gettext library */
var catalog = new Array();
function pluralidx(count) { return (count == 1) ? 0 : 1; }
… 
到目前为止,我已经尝试了各种各样的设置,但目录仍然是空的

运行
makemessages
compilemessages
时,会找到并翻译我的JavaScript get文本字符串。django.po和.mo文件位于区域设置目录中


有人吗?

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

即,如果您的英文po文件中有此内容:

#: static/js/events.js:159
msgid "Open side panel"
msgstr ""
目录中不会出现任何内容(如果您使用的是英语)。但如果你有这个:

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

然后会出现。

我也遇到了同样的问题,当我将我的区域设置目录从项目文件夹移动到应用文件夹时,它起了作用,因此makemessages似乎需要在应用级别上运行。我认为您的设置文件中不需要
LOCALE\u路径。

这就是我的工作:

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\u目录
,直到我到了那一行:

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

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

我对django和djanojs目录都有100%的翻译,我从英语(en)翻译为荷兰语(nl)。这些建议似乎都不起作用。我让它单独呆了一个星期左右,对几乎所有的东西都安装了几个更新,当我在一个周五早上坐下来最终解决这个问题时,它已经自行修复了。我目瞪口呆地看到JavaScript翻译现在正在工作,而且从那时起就一直在工作。我不知道是什么触发了这一切。我的区域设置目录仍在项目级别。
catalog, plural = get_javascript_catalog(locale, domain, packages)