2014-11-17 4 views
0

я застрял с этим вопросом:django - i18n - как это возможно?

У меня есть страница с de и en переводами. на странице de, есть видеоролики на немецком языке.

usecase: Джон наблюдает за одним из этих видеороликов на немецком языке и ему нравится. он говорит: «Я хочу поделиться этим видео с моим другом Чарли, который находится в США», и он посылает эту ссылку на него:

http://blabla.com/de/das-video/12/ 

что я хочу, если Чарли открывает ссылку, он должен быть перенаправлен английская версия, по этой ссылке:

http://blabla.com/en/the-video/13/ 

моя проблема:

раз чарли открывает ссылку, request.LANGUAGE_CODE в его сторону будет de из-i18n-х set_language.

Как я могу перенаправить его на английскую версию этого видео?

ответ

2

Django i18n построен таким образом, что если url содержит префикс языка, то именно этот язык будет показан.

Но если вы удалите префикс языка из url, тогда django сначала откроет предпочтительный язык пользователя, а затем отобразит соответствующую версию страницы.

Итак, в вашем случае я думаю, что лучшим способом было бы создать кнопку совместного доступа или, возможно, показать URL-адрес для совместного использования на странице. Пользователь должен скопировать этот URL-адрес, а не URL-адрес из адресной строки браузера. Этот адрес должен быть без префикса языка:

http://blabla.com/das-video/12/ 

ОБНОВЛЕНО

Если вы все еще хотите изменить i18n логики Джанго по умолчанию, то вам нужно создать подкласс

django.middleware.locale.LocaleMiddleware 

затем изменить некоторые его методы (process_request, process_response) и использовать это модифицированное промежуточное ПО вместо LocaleMiddleware

+0

вы попали в важный момент, спасибо .. обмен был просто примером. поэтому открытие ''/de/.. '' в английском браузере. Показать версию '' de'', независимо от того, какой язык, не так ли? – doniyor

+0

@doniyor да, точно – stalk

+0

, но я мог написать промежуточное программное обеспечение, которое удаляет префикс языка и передает запрос localemiddleware, не так ли? – doniyor

Смежные вопросы