Форум сайта python.su
Здраствуйте!
Делаю возможность на сайте переключаться между русской и украинской версией. Накатил model_translation, обернул строки в шаблонах которые надо перевести в тег {% trans %}, попереводил все с помощью rosetta. Также установил locale_url.
В settings.py прописал:
LANGUAGE_CODE = 'ru'
MODELTRANSLATION_TRANSLATION_REGISTRY = "project.translation"
TRANSLATION_REGISTRY = "project.translation"
ugettext = lambda s: s
LANGUAGES = (
('ru', ugettext(u'Russian')),
('uk', ugettext(u'Ukrainian')),
)
def set_language(request):
next = request.REQUEST.get('next', None)
if not next:
next = request.META.get('HTTP_REFERER', None)
if not next:
next = '/'
response = http.HttpResponseRedirect(next)
if request.method == 'GET':
lang_code = request.GET.get('language', None)
if lang_code and check_for_language(lang_code):
if hasattr(request, 'session'):
request.session['django_language'] = lang_code
else:
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
return response
<a href="{% url set_lang %}?lang=uk&next={{request.path}}">Українською мовою</a>
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.locale.LocaleMiddleware',
'localeurl.middleware.LocaleURLMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
Офлайн
Чтобы языки переключались надо было добавить в views:
from django.utils import translation
Офлайн
если разобрались - постаните, плиз, решение.
Офлайн
ne razobralsya =(
Офлайн
Add ‘localeurl.middleware.LocaleURLMiddleware’ to settings.MIDDLEWARE_CLASSES. It must come before ‘django.middleware.common.CommonMiddleware’ or settings.APPEND_SLASH will not work. Make sure Django’s built-in LocaleMiddleware is not in your MIDDLEWARE_CLASSES setting; LocaleURLMiddleware replaces it and the two will not work together.
‘localeurl.middleware.LocaleURLMiddleware’, должен быть вместо этого ‘django.middleware.locale.LocaleMiddleware’, а не совместно.
Офлайн
from django.utils.translation import activate
К примеру у нас такая модель
class News(models.Model): title = models.CharField(max_length=100) text = models.TextField()
def simple(request): if request.method == 'GET': user_lang = if request.GET.get('lang', 'ru') activate(user_lang) return HttpResponseRedirect('/index/')
Отредактировано prikozhd (Май 29, 2013 21:39:36)
Офлайн