Разрыв промежуточного программного обеспечения Django Mapbox-js-gl - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь добавить перевод в мой блог Django. Кажется, все работает нормально, за исключением того факта, что простое добавление промежуточного программного обеспечения для локали Django нарушает некоторый код JavaScript, который у меня есть на некоторых страницах, наслоение маркеров над картой Mapbox.

Нет промежуточного программного обеспечения: works

Промежуточное программное обеспечение добавлено: doesn't work

Я попытался разобраться в проблеме, и похоже, что часть, которая нарушает JavaScript, это:

def process_request(self, request):
    urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF)
    i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf)
    language = translation.get_language_from_request(request, check_path=i18n_patterns_used)
    language_from_path = translation.get_language_from_path(request.path_info)
    if not language_from_path and i18n_patterns_used and not prefixed_default_language:
        language = settings.LANGUAGE_CODE
    translation.activate(language)
    request.LANGUAGE_CODE = translation.get_language()

Весь код промежуточного программного обеспечения: ссылка

Код Mapbox в index.html:

<script>

    mapboxgl.accessToken = 'XXX';

    var map = new mapboxgl.Map({
        container: 'map-index',
        style: 'mapbox://styles/mapbox/light-v9',
        center: [0, 20],
        zoom: 0.5
    });

    // planned
    var geojson_planned = {
        type: 'FeatureCollection',
        features: [
        {% for i in planned_places %}
        {
            type: 'Feature',
            geometry: {
            type: 'Point',
            coordinates: [{{ i.coord_h }}, {{ i.coord_v }}]
            },
            properties: {
            title: "<div class='place-title'>{{ i.name }}</div>",
            description: "<div class='place-post'>{% for post in i.posts.all %}<a href='{{ post.get_absolute_url }}'>{{ post.title }}</a><br/>{% endfor %}</div>"
            }
        },
        {% endfor %}
    ]
    };

    // add markers to map
    geojson_planned.features.forEach(function(marker) {

    // create a HTML element for each feature
    var el = document.createElement('div');
    el.className = 'marker-light-red';

    // visited
    new mapboxgl.Marker(el)
    .setLngLat(marker.geometry.coordinates)
    .setPopup(new mapboxgl.Popup({ offset: 25 }) // add popups
    .setHTML(marker.properties.title + marker.properties.description))
    .addTo(map);
    });

    var geojson_visited = {
        type: 'FeatureCollection',
        features: [
        {% for i in visited_places %}
        {
            type: 'Feature',
            geometry: {
            type: 'Point',
            coordinates: [{{ i.coord_h }}, {{ i.coord_v }}]
            },
            properties: {
            title: "<div class='place-title'>{{ i.name }}</div>",
            description: "<div class='place-post'>{% for post in i.posts.all %}<a href='{{ post.get_absolute_url }}'>{{ post.title }}</a><br/>{% endfor %}</div>"
            }
        },
        {% endfor %}
    ]
    };

    // add markers to map
    geojson_visited.features.forEach(function(marker) {

    // create a HTML element for each feature
    var el = document.createElement('div');
    el.className = 'marker-light-green';

    // planned wedding
    new mapboxgl.Marker(el)
    .setLngLat(marker.geometry.coordinates)
    .setPopup(new mapboxgl.Popup({ offset: 25 }) // add popups
    .setHTML(marker.properties.title + marker.properties.description))
    .addTo(map);
    });

    var geojson_planned_wedding = {
        type: 'FeatureCollection',
        features: [
        {% for i in planned_wedding_places %}
        {
            type: 'Feature',
            geometry: {
            type: 'Point',
            coordinates: [{{ i.coord_h }}, {{ i.coord_v }}]
            },
            properties: {
            title: "<div class='place-title'>{{ i.name }}</div>",
            description: "<div class='place-post'>{% for post in i.posts.all %}<a href='{{ post.get_absolute_url }}'>{{ post.title }}</a><br/>{% endfor %}</div>"
            }
        },
        {% endfor %}
    ]
    };

    // add markers to map
    geojson_planned_wedding.features.forEach(function(marker) {

    // create a HTML element for each feature
    var el = document.createElement('div');
    el.className = 'marker-red';

    // visited_wedding
    new mapboxgl.Marker(el)
    .setLngLat(marker.geometry.coordinates)
    .setPopup(new mapboxgl.Popup({ offset: 25 }) // add popups
    .setHTML(marker.properties.title + marker.properties.description))
    .addTo(map);
    });

    var geojson_visited_wedding = {
        type: 'FeatureCollection',
        features: [
        {% for i in visited_wedding_places %}
        {
            type: 'Feature',
            geometry: {
            type: 'Point',
            coordinates: [{{ i.coord_h }}, {{ i.coord_v }}]
            },
            properties: {
            title: "<div class='place-title'>{{ i.name }}</div>",
            description: "<div class='place-post'>{% for post in i.posts.all %}<a href='{{ post.get_absolute_url }}'>{{ post.title }}</a><br/>{% endfor %}</div>"
            }
        },
        {% endfor %}
    ]
    };

    // add markers to map
    geojson_visited_wedding.features.forEach(function(marker) {

    // create a HTML element for each feature
    var el = document.createElement('div');
    el.className = 'marker-green';

    // make a marker for each feature and add to the map
    new mapboxgl.Marker(el)
    .setLngLat(marker.geometry.coordinates)
    .setPopup(new mapboxgl.Popup({ offset: 25 }) // add popups
    .setHTML(marker.properties.title + marker.properties.description))
    .addTo(map);
    });

</script>

Что я могу сделать, чтобы исправить это на стороне промежуточного программного обеспечения или на стороне JS?

Вы можете найти весь код в репозитории GitHub

Ни один из следующих вопросов не помог:

Перевод Django JavaScript не работает

Django - Интернационализация Javascript: перевод не представлен на сайте

Перевод Django JavaScript не работает

...