Найти - Пользователи
Полная версия: Объясните прикол с i18n
Начало » Django » Объясните прикол с i18n
1
Evg
Использую i18n в проекте:


есть такая вьюшка:
    from django import forms
from django.utils.translation import gettext as _

class SetLoginForm(forms.Form):
login = forms.CharField(label=_('Your Login'), max_length=30)
f = SetLoginForm()
r = render_to_response('set_login.html', {'f':f,'request':req,'user':req.user})
return r
при переключении языков: перевод _'Your Login" срабатывает нормално, но стоит мне вынести описание класса формы в отдельный файл например forms.py

forms.py
    from django import forms
from django.utils.translation import gettext as _

class SetLoginForm(forms.Form):
login = forms.CharField(label=_('Your Login'), max_length=30)
и далее во вьюшке:

    from forms import SetLoginForm
f = SetLoginForm()
r = render_to_response('set_login.html', {'f':f,'request':req,'user':req.user})
return r
как сразу перевод перестает переключатся! хотя по сути все одно и тоже, далее еще прикол стоит мне как лиюо изменить файл forms.py - добавить пробел к примеру в конце файла, как сразу же переключение срабатывает один раз и перестает, те как кеширование какоето на изменение файла, подскажите что это за муть такая? и почему так происходит?
Александр Кошелев
Evg
подскажите что это за муть такая? и почему так происходит?
Ну вообще-то ответ есть в документации http://docs.djangoproject.com/en/dev/topics/i18n/#lazy-translation. Функция gettext осуществляет перевод при вызое. Соотвественно для опрделения моделей (и форм) на уровне модуля, которое происходит один раз при первом импорте этого модуля, перевод осущуствляется тоже один раз. Используйте ленивый геттекст, тогда перевод будет браться в самый послдний момент перед использованием этой строки.
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