Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 13, 2013 20:43:46

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Двуязычный сайт

Никуда не надо смотреть.
Плохо читал документацию , сразу видно)

Покажи 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')

При этом раскладе у тебя указанный перевод будет сохраняться в сессии, те.е при переходе на другую страничку,например, перевод указанного языка останется. В самой форме будет слетать язык, но на механизм это не повлияет. Там уже настроишь сам…

Офлайн

#2 Фев. 14, 2013 08:25:40

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Двуязычный сайт

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

Офлайн

#3 Фев. 14, 2013 10:16:11

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Двуязычный сайт

Вот что значит “У меня выбранный перевод прекрасно сохраняется” и одновременно он же “У меня не подхватывается перевод”.
Смотри код, тот что я тебе привёл и думай… Перечитай документацию. Я Тоже не сразу запустил…

И на будущее, папка locale должна лежать либо в папке приложение(там где view.py, models.py), либо в папке проекта(там где settings.py). Чтобы вступал в силу обновлённый перевод надо перезапускать вёб-сервер

Офлайн

#4 Фев. 14, 2013 10:50:52

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Двуязычный сайт

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

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

Всё, разобрался! Спасибо за наводку, действительно папку locale нужно было переместить в папку приложения.
Классическая джанговская хрень, что с этим, что с файлами статики. Командами папки создаются в одном месте, потом пользователь должен всё ручками разложить по другим местам.

Отредактировано dnstuff (Фев. 14, 2013 10:59:23)

Офлайн

#5 Фев. 14, 2013 12:36:42

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Двуязычный сайт

=)) Да уж, я вот как раз с этим и долбался дольше всего… И названия месяцев это помоему немного другое. Это вроде как локализация(отличается от интернационализации) https://docs.djangoproject.com/en/1.4/topics/i18n/formatting/.
То же было по началу думал, что заработало …
Вообщем пример я оставил, от чего оттолкнуться есть…

Офлайн

#6 Фев. 15, 2013 22:31:48

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Двуязычный сайт

buddha
Никуда не надо смотреть.
Плохо читал документацию , сразу видно)
Поясню. django-modeltranslation - приложение, созданное для возможности писать в модели (уже существующие, руками ничего обновлять не надо) контент на разных языках. Отображение тех частей сайта, где не используются данные из моделей реализуется за счет стандартных джанговских средств, того же тега {% trans “something” %} и словарей локализации *.po, *.mo.



Отредактировано Dr.Livsi (Фев. 15, 2013 22:32:26)

Офлайн

#7 Фев. 15, 2013 23:06:20

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Двуязычный сайт

Ну я так написал, чтобы человек не дёргался(не сбивался) и довёл начатое до конца. Всё лучше начинать с простого и того, что лежит в основе. Если я вас правильно понял, то в основе django-modeltranslation лежит стандартный механизм перевода. Куда проще будет понять django-modeltranslation, зная этот стандартный механизм, вот… Сам я django-modeltranslation не пробовал, мне пока всего хватает.

Отредактировано buddha (Фев. 15, 2013 23:20:19)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version