Задать вопрос
@nurzhannogerbek

Как правильно использовать gettext в JS коде?

Здравствуйте! Помогите пожалуйста разобраться.

В своем Джанго проекте мне нужно перевести текст, который находится в JS коде. Сам код вы можете увидеть внизу. С помощью команд makemessages и compilemessages мне удалось перевести эти слова (создать djangojs.po и djangojs.mo файлы). Проблема в том, что JS код перестал работать корректно на странице после добавления gettext в JS код. Выдает ошибку. Как исправить данную ситуацию?

urls.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'),
]


JS:
$("#slideModalBox").on("click", "#imageFieldClearBtn", function() {
    $('#imageFieldFileName').val("");
    $('#imageFieldClearBtn').hide();
    $('#imageFieldInput input:file').val("");
    $("#imageFieldInputTitle").text(gettext("Добавить изображение"););
});

$("#slideModalBox").on("change", "#imageFieldInput input:file", function() {
    var file = this.files[0];
    var reader = new FileReader();
    reader.onload = function (e) {
        $("#imageFieldInputTitle").text(gettext("Изменить изображение")); <-- Указывает на ошибку в этом месте
        $("#imageFieldClearBtn").show();
        $("#imageFieldFileName").val(file.name);            
    }
    reader.readAsDataURL(file);
});


ERROR: (в консоли браузера)
ReferenceError: gettext is not defined
reader.onload http://127.0.0.1:8000/static/js/slider/image_field.js:12:9
  • Вопрос задан
  • 1092 просмотра
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
@nurzhannogerbek Автор вопроса
Проблему решил следующим образом. В шаблоне перед загрузкой своего скрипта нужно указать данный код.

<script src="{% url 'javascript-catalog' %}"></script>
{# Далее подгружаю свой скрипт #}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы