Python 如何在JS代码中正确使用gettext?

Python 如何在JS代码中正确使用gettext?,python,django,python-3.x,django-i18n,django-1.11,Python,Django,Python 3.x,Django I18n,Django 1.11,在我的Django项目中,我有一个JS文件,其中包含需要翻译的文本。我使用下面的代码 在makemessages和compilemessages命令的帮助下,我创建了djangojs.po和djangojs.mo文件。问题是JS代码在添加gettext后无法正常工作。它在浏览器控制台中引发错误。如何解决这个问题 url.py: from django.views.i18n import javascript_catalog js_info_dict = { 'domain': 'dja

在我的Django项目中,我有一个JS文件,其中包含需要翻译的文本。我使用下面的代码

在makemessages和compilemessages命令的帮助下,我创建了djangojs.po和djangojs.mo文件。问题是JS代码在添加gettext后无法正常工作。它在浏览器控制台中引发错误。如何解决这个问题

url.py:

from django.views.i18n import javascript_catalog

js_info_dict = {
    'domain': 'djangojs',
    'packages': ('slider',),  # my app name
}

urlpatterns = [
   [OTHER URLs]

    # Internationalization in Javascript Code
    url(r'^jsi18n/$',
        javascript_catalog,
        js_info_dict,
        name='javascript-catalog'),
]
$("#slideModalBox").on("click", "#imageFieldClearBtn", function() {
    $('#imageFieldFileName').val("");
    $('#imageFieldClearBtn').hide();
    $('#imageFieldInput input:file').val("");
    $("#imageFieldInputTitle").text(gettext("Add new image"););
});

$("#slideModalBox").on("change", "#imageFieldInput input:file", function() {
    var file = this.files[0];
    var reader = new FileReader();
    reader.onload = function (e) {
        $("#imageFieldInputTitle").text(gettext("Change Image")); <-- This place raise error
        $("#imageFieldClearBtn").show();
        $("#imageFieldFileName").val(file.name);            
    }
    reader.readAsDataURL(file);
});
ReferenceError: gettext is not defined
reader.onload http://127.0.0.1:8000/static/js/slider/image_field.js:12:9
JS:

from django.views.i18n import javascript_catalog

js_info_dict = {
    'domain': 'djangojs',
    'packages': ('slider',),  # my app name
}

urlpatterns = [
   [OTHER URLs]

    # Internationalization in Javascript Code
    url(r'^jsi18n/$',
        javascript_catalog,
        js_info_dict,
        name='javascript-catalog'),
]
$("#slideModalBox").on("click", "#imageFieldClearBtn", function() {
    $('#imageFieldFileName').val("");
    $('#imageFieldClearBtn').hide();
    $('#imageFieldInput input:file').val("");
    $("#imageFieldInputTitle").text(gettext("Add new image"););
});

$("#slideModalBox").on("change", "#imageFieldInput input:file", function() {
    var file = this.files[0];
    var reader = new FileReader();
    reader.onload = function (e) {
        $("#imageFieldInputTitle").text(gettext("Change Image")); <-- This place raise error
        $("#imageFieldClearBtn").show();
        $("#imageFieldFileName").val(file.name);            
    }
    reader.readAsDataURL(file);
});
ReferenceError: gettext is not defined
reader.onload http://127.0.0.1:8000/static/js/slider/image_field.js:12:9

尝试在URL.py中按以下顺序排列

urlpatterns = [

 # Internationalization in Javascript Code
    url(r'^jsi18n/$',
    javascript_catalog,
    js_info_dict,
    name='javascript-catalog'),

# then the other urls
   [OTHER URLs]
]
基本上,首先制作javascript_目录

  • 更改您的系统语言设置,然后查看它是否有效。这意味着您的语言还不受支持

在您的js脚本之前,您是否在base.html中添加了

我也尝试过,但不幸的是没有成功。你还有别的想法吗?你完全正确!它对我有用。谢谢这回答了你的问题吗?