Django javascript translation catalog file is failing to load, showing error - ReferenceError: gettext is not defined

Django javascript translation catalog file is failing to load, showing error - ReferenceError: gettext is not defined

如文档中所述,我已执行以下步骤 -

  1. 在我的settings.py

    LOCALE_PATHS = (
      os.path.join(BASE_DIR, 'locale'),
    )
    
    LANGUAGE_CODE = 'en-us'
    
    USE_I18N = True
    
    USE_L10N = True
    
    ugettext = lambda s: s
    
    LANGUAGES = (
     ('en', ugettext('English')),
     ('mar', ugettext('Marathi')),
    )
    
  2. 我的语言环境目录在我的 Django 项目的根文件夹中

  3. 在urls.py

    from django.views.i18n import javascript_catalog
    
    js_info_dict = {
      'packages': ('phone',),
    }  
    
    urlpatterns = [
        url(r'^phone/', include('phone.urls')),
        url(r'^jsi18n/$', javascript_catalog, js_info_dict),
    ]   
    
  4. 在base.html

    <script type="text/javascript" src="/jsi18n/"></script>
    

我能够看到由 trans 标签完成的翻译,但是当我尝试使用 gettext 方法翻译 javascript 中的变量时,我得到了这个特定的错误

ReferenceError: gettext is not defined

仅供参考 - djangojs.po 和 djangojs.mo 文件在我的语言环境目录中,我在翻译后编译了文件。

我在 google 上努力尝试,但仍然是同样的错误。

经过一个多星期的努力,我找到了问题的解决方案,这对我来说有点奇怪

我不得不 re-arrange 我的 url 在 urls.py 如下所示

urlpatterns = [
 url(r'^jsi18n/$', javascript_catalog, js_info_dict),
 url(r'^phone/', include('phone.urls')),
] 

我一做出上述更改,我的 JS 目录文件就加载了,并且 js 文件中的翻译开始工作。

我没有完全理解原因,但想分享..可能有用..