У меня есть веб-сайт Django, который я не хочу просматривать на разных языках. До этого утра все работало нормально. Вот сделка. Я захожу на мою страницу «О нас», и она на английском языке. Под ней находится кнопка смены языка, и когда я нажимаю на нее, все «волшебным образом» переводится на болгарский язык так, как я этого хочу. С другой стороны, у меня есть меню JS, из которого пользователь может просматривать продукты. Я нажимаю на «Футболку», после чего открывается подменю под ранее нажатой, содержащее различные категории - Мужчины, Женщины, Дети. Ссылка ведет меня на страницу, где указана точная одежда, которую я запрашивал. НО ... Когда я пытаюсь изменить язык ТО, ничего не происходит. Я захожу на страницу Abouts, меняю там язык, возвращаюсь в каталог одежды и язык меняется ...
Я не буду вставлять код.
Это мой код кнопки изменения:
function changeLanguage() {
if (getCookie('language') == 'EN') {
setCookie("language", 'BG');
} else {
setCookie("language", 'EN');
}
window.location.reload();
}
Страница My About Us:
@base
def aboutUs(request):
return """<b>%s</b>""" % getTranslation("About Us Text", request.COOKIES['language'])
Метод @base:
def base(myfunc):
def inner_func(*args, **kwargs):
try:
args[0].COOKIES['language']
except:
args[0].COOKIES['language'] = 'BG'
# raise Exception(request)
# if I am in the AboutUs page
# and I click on the language change button
# the cookie value in the request object changes
# if however I am in the displayClothes page
# the value stays the same
# some code I removed
contents = myfunc(*args, **kwargs)
return render_to_response('index.html', {'title': title, 'categoriesByCollection': categoriesByCollection.iteritems(), 'keys': enumerate(keys), 'values': enumerate(values), 'contents': contents, 'btnHome':getTranslation("Home Button", args[0].COOKIES['language']), 'btnProducts':getTranslation("Products Button", args[0].COOKIES['language']), 'btnOrders':getTranslation("Orders Button", args[0].COOKIES['language']), 'btnAboutUs':getTranslation("About Us Button", args[0].COOKIES['language']), 'btnContacts':getTranslation("Contact Us Button", args[0].COOKIES['language']), 'btnChangeLanguage':getTranslation("Button Change Language", args[0].COOKIES['language'])})
return inner_func
И страница каталога:
@base
def displayClothes(request, category, collection, page):
clothesToDisplay = getClothesFromCollectionAndCategory(request, category, collection)
contents = ""
# some code I removed
return """%s""" % (contents)
Позвольте мне объяснить, что вас не должно пугать большое количество кода, который я разместил. Вам не нужно это понимать или даже смотреть на все это. Я опубликовал это на всякий случай, потому что я действительно не могу понять происхождение ошибки.
Теперь вот как я сузил проблему. Я отлаживаю с помощью «повысить исключение (запрос)» каждый раз, когда хочу узнать, что находится внутри моего объекта запроса. Когда я размещаю это в моем методе aboutUs, значение языкового файла cookie меняется каждый раз, когда я нажимаю кнопку языка. Но НЕ когда я в методе displayClothes. Там язык остается прежним. Также я попытался поместить строку исключения в начало метода @base. Оказывается, ситуация там точно такая же. Когда я нахожусь на своей странице «О нас» и нажимаю на кнопку, язык в моем объекте запроса изменяется, но когда я нажимаю кнопку на странице каталога, он остается неизменным.
Это все, что я мог найти, и я понятия не имею, как Джанго отличает мои страницы и каким образом.
P.S. Я думаю, что JavaScript работает отлично, я тестировал его несколькими способами.
Спасибо, я надеюсь, что некоторые из вас прочитают этот огромный пост, и не стесняйтесь спрашивать больше выдержек из кода.