Найти - Пользователи
Полная версия: Двуязычный сайт
Начало » Django » Двуязычный сайт
1 2 3
buddha
Никуда не надо смотреть.
Плохо читал документацию , сразу видно)

Покажи view.py. Там надо сохранять параметр в сессии.

Вот у меня в шаблоне форма:
{% load i18n %}
<form action="{% url translation %}" method="POST">{% csrf_token %}
        {{ trans_form}}
        <input type="submit" value="{% trans 'Change' %}">
    </form>

вот сама форма:
from django import forms
from django.utils.translation import ugettext_lazy as _
from portfolio.settings import LANGUAGES
class ChangeLang(forms.Form):
    lang = forms.ChoiceField(label=_('Language'), choices=LANGUAGES)

вот строка в urls.py:
url(r'^translate/$', 'myi18n.views.get_translation', name='translation'),

вот представление для переключения перевода:
from django.utils.translation import activate, check_for_language
from django.shortcuts import redirect
def get_translation(request):
    if request.POST:
        print request.items()
        lang = request.POST.get('lang')
        if lang and check_for_language(lang):
            if hasattr(request, 'session'):
                request.session['django_language'] = lang
            activate(lang)
    return redirect('show_main_page')

При этом раскладе у тебя указанный перевод будет сохраняться в сессии, те.е при переходе на другую страничку,например, перевод указанного языка останется. В самой форме будет слетать язык, но на механизм это не повлияет. Там уже настроишь сам…
dnstuff
view.py
def customers(request):
	posts3=BlogPost.objects.order_by('-timestamp')[:3]
	return render_to_response('customers.html',{'title': u'Customers', 'news_prev3': posts3}, context_instance=RequestContext(request))
У меня выбранный перевод прекрасно сохраняется при переходах на другие страницы и при перезагрузке браузера. У меня не подхватывается перевод из .mo
buddha
Вот что значит “У меня выбранный перевод прекрасно сохраняется” и одновременно он же “У меня не подхватывается перевод”.
Смотри код, тот что я тебе привёл и думай… Перечитай документацию. Я Тоже не сразу запустил…

И на будущее, папка locale должна лежать либо в папке приложение(там где view.py, models.py), либо в папке проекта(там где settings.py). Чтобы вступал в силу обновлённый перевод надо перезапускать вёб-сервер
dnstuff
Вот что значит “У меня выбранный перевод прекрасно сохраняется” и одновременно он же “У меня не подхватывается перевод”.
Я же говорил, что названия месяцев у меня переключаются. И это переключение сохраняется в течении сессии.
Дата получается из timestamp=models.DateTimeField(db_index=True).

Я не вижу, где у меня противоречие с документацией или пропущенное действие.

Всё, разобрался! Спасибо за наводку, действительно папку locale нужно было переместить в папку приложения.
Классическая джанговская хрень, что с этим, что с файлами статики. Командами папки создаются в одном месте, потом пользователь должен всё ручками разложить по другим местам.
buddha
=)) Да уж, я вот как раз с этим и долбался дольше всего… И названия месяцев это помоему немного другое. Это вроде как локализация(отличается от интернационализации) https://docs.djangoproject.com/en/1.4/topics/i18n/formatting/.
То же было по началу думал, что заработало …
Вообщем пример я оставил, от чего оттолкнуться есть…
Dr.Livsi
buddha
Никуда не надо смотреть.
Плохо читал документацию , сразу видно)
Поясню. django-modeltranslation - приложение, созданное для возможности писать в модели (уже существующие, руками ничего обновлять не надо) контент на разных языках. Отображение тех частей сайта, где не используются данные из моделей реализуется за счет стандартных джанговских средств, того же тега {% trans “something” %} и словарей локализации *.po, *.mo.
buddha
Ну я так написал, чтобы человек не дёргался(не сбивался) и довёл начатое до конца. Всё лучше начинать с простого и того, что лежит в основе. Если я вас правильно понял, то в основе django-modeltranslation лежит стандартный механизм перевода. Куда проще будет понять django-modeltranslation, зная этот стандартный механизм, вот… Сам я django-modeltranslation не пробовал, мне пока всего хватает.

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB