Django国际化不仅适用于javascript静态文件

Django国际化不仅适用于javascript静态文件,javascript,django,internationalization,static-files,django-i18n,Javascript,Django,Internationalization,Static Files,Django I18n,背景信息:django 1.6.2、python 2.7.5 我最近开始在django项目中应用国际化。我已经设法使它在应用程序的模型、视图和模板(称为metrics)中工作。但是,当我尝试对静态js文件应用国际化时,gettext()似乎不起作用,因为它总是返回我传递给它的字符串,而忽略浏览器语言。另一方面,html模板(使用这些js静态文件)中的{%trans…%}标记得到正确翻译。这表明问题在于我的js静态文件的国际化。有人能提供一些指导或建议吗 这是我的项目配置摘要: 在项目设置中,我包

背景信息:django 1.6.2、python 2.7.5

我最近开始在django项目中应用国际化。我已经设法使它在应用程序的模型、视图和模板(称为metrics)中工作。但是,当我尝试对静态js文件应用国际化时,
gettext()
似乎不起作用,因为它总是返回我传递给它的字符串,而忽略浏览器语言。另一方面,html模板(使用这些js静态文件)中的
{%trans…%}
标记得到正确翻译。这表明问题在于我的js静态文件的国际化。有人能提供一些指导或建议吗

这是我的项目配置摘要:

在项目设置中,我包括:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
)
LANGUAGES = (
  ('es', _('Spanish')),
  ('en', _('English')),
)
LOCALE_PATHS = (
    os.path.join(BASE_DIR,'locale'),
    os.path.join(BASE_DIR,'metrics/'),
)
USE_I18N = True
USE_L10N = True
js_info_dict = {
    'packages': ('metrics',),
}
urlpatterns = patterns('',
    url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
...
)
与js静态文件相关的djangojs.po和.mo文件位于我的根目录中的locale文件夹中,而django.po和.mo文件位于我的应用程序中的
locale/es/LC_MESSAGES
文件夹中。我从适当的目录运行了
django-admin.py makemessages-l es
django-admin.py makemessages-d djangojs-l es
,并从这两个目录运行了
django-admin.py compilemessages
(尽管这可能是多余的…)请注意,.po文件没有模糊标记。

在项目的url.py文件中,我包括:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
)
LANGUAGES = (
  ('es', _('Spanish')),
  ('en', _('English')),
)
LOCALE_PATHS = (
    os.path.join(BASE_DIR,'locale'),
    os.path.join(BASE_DIR,'metrics/'),
)
USE_I18N = True
USE_L10N = True
js_info_dict = {
    'packages': ('metrics',),
}
urlpatterns = patterns('',
    url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
...
)
这部分可能是错误的,因为我的djangojs.po和.mo文件位于根目录中,但我尝试在我的应用程序目录中查找它们,但也没有成功

最后,在我的静态js文件中使用
gettext
的一个示例(使用d3js):

有什么建议吗?很抱歉,我写了这么多的文章,但我正试图提供尽可能多的信息