Я пытаюсь добавить перевод в мой блог Django.
Кажется, все работает нормально, за исключением того факта, что простое добавление промежуточного программного обеспечения для локали Django нарушает некоторый код JavaScript, который у меня есть на некоторых страницах, наслоение маркеров над картой Mapbox.
Нет промежуточного программного обеспечения:
Промежуточное программное обеспечение добавлено:
Я попытался разобраться в проблеме, и похоже, что часть, которая нарушает 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 не работает