Django makemessages 不适用于 JS 文件

标签 django internationalization

我的设置

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 文件。然而,服务器端翻译是有效的( View +模板)。我听从了所有的建议,但仍然一无所获。甚至尝试自己创建 djangojs.po 文件来查看 Django 是否删除它,或者用它做些什么 - 没有。

不会生成任何错误,只是显示processing locale ro(时间非常短——如果你问我的话就太短了),就是这样。有什么帮助吗?

编辑:忘记提及,包含 JS 文件的文件夹并不位于每个 Django 应用程序内,而是位于单独的位置。不过,Django 不应该查看 STATICFILES_DIRS 内部吗?

最佳答案

Django 的 makemessages 只会从您的 TEMPLATE_DIRS 之一上的文件生成消息。因此,您想要翻译的任何文件都需要位于这些目录之一中。

您可以通过以下几种方式来做到这一点:

  • 将 *.js 文件按原样放入 TEMPLATE_DIRS 之一
  • 将 JS 内联到 html 文件中
  • 将所有需要翻译的字符串放在dom上的data-attributes中,并通过JS从dom中获取它们

关于Django makemessages 不适用于 JS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095934/

相关文章:

django - GeoDjango 找不到 geos 库

python - 你如何找到一段 Python 的 CPU 消耗?

python - 属性错误: '…' object has no attribute '_set'

validation - 如何检查文件是否是有效的UTF-8?

java - 用于不断变化的文本,属性文件的体系结构设置?在Java EE环境中

gwt - GWT Maven 插件有没有办法生成返回 SafeHtml 的 I18N 消息接口(interface)?

python - 按月和日过滤 django 日期时间字段的问题

django - 服务器是否在主机 "localhost"(127.0.0.1) 上运行并在端口 5432 上接受 TCP/IP 连接?

node.js - 国际化 Nodejs Jade 模板

javascript - 用于 Javascript/JQuery 文件的 NodeJS i18n