settings.py
INSTALLED_APPS = (
...
'myprojectname',
...
)
STATIC_ROOT = '/var/www/a_valid_path/'
LOCALE_PATHS = (
os.path.join(BASE_DIR, "locale"),
)
urls.py
js_info_dict = {
'domain': 'djangojs',
'packages': ('myprojectname',),
}
urlpatterns = patterns('',
...
url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
...
)
我的项目结构如下:
|- projectname
|--- app1
|--- app2
|--- manage.py
|- virtualenv
|- static
|--- js
|--- css
我的项目的根文件夹中也有locale
文件夹,manage.py
位于该文件夹中。
简单地运行:
./manage.py -l ro -d djangojs
它不起作用。没有生成.po
个文件。但是,服务器端转换工作(视图+模板)。我遵循了所有的建议,但仍然没有。甚至试图自己创建djangojs.po
文件,看看Django是删除它还是用它做了什么 - 不行。
没有错误产生,只显示processing locale ro
(如果你问我的话,时间太短 - 太短了),就是这样。有什么帮助吗?
编辑:忘记提及我的包含JS文件的文件夹不在每个Django应用程序中,而是在一个单独的位置。不过,Django不应该看看STATICFILES_DIRS
吗?
答案 0 :(得分:1)
Django的makemessages只会根据TEMPLATE_DIRS
中的某个文件发送消息。因此,您要翻译的任何文件都必须位于其中一个目录中。
您可以通过以下几种方式实现这一目标:
TEMPLATE_DIRS
之一答案 1 :(得分:0)
makemessages
?.js
?django.gettext('string')
还是_('string')
标记需要翻译的字符串?答案 2 :(得分:0)
我经历过同样的问题。我发现这个问题是在Django门票#23717中报告的:https://code.djangoproject.com/ticket/23717
修正版即将推出稳定的1.7.2版本:https://docs.djangoproject.com/en/1.7/releases/1.7.2/
我已安装1.7.2并确认问题已修复。
答案 3 :(得分:0)
使用Django i18n时,我遇到了同样的问题,经过多次尝试,我终于得到了正确的答案:我们需要将.js文件放入项目目录中,该目录是在分配'js_info_dict'时指定的。 br /> 但是通常我们将JavaScript文件与项目放在同一级别的目录中,因此存在问题。 (我们不需要将JavaScript文件放入模板目录中。)