Локализация приложения Django относится только к forms.py, а не к models.py - PullRequest
2 голосов
/ 11 октября 2010

У меня проблема при попытке локализовать мое приложение. Он доступен на двух языках: английском и немецком. Проблема возникает, когда в браузере установлен английский язык (США), а в моем файле настроек установлено значение «de» и наоборот. Некоторые поля отображаются на английском, другие - на немецком. Моя модель содержит типы полей CharField, DecimalField и DateField.

models.py:

from django.db import models  
from django.utils.translation import ugettext as _  

class Test(models.Model):  
    test_number = models.CharField(_('Test number'), max_length=20)  
    test_date = models.DateField()  
    test_price = models.DecimalField(_('Test price'), max_digits=16, decimal_places=2, null=True, blank=True)  

forms.py:

class TestForm(ModelForm):
    test_date = forms.DateField(label=_('Booking date'), widget=AdminDateWidget)

settings.py

USE_L10N = True  
USE_I18N = True  

TIME_ZONE = 'Europe/Berlin'  
LANGUAGE_CODE = 'de'

TEMPLATE_CONTEXT_PROCESSORS = (  
    "django.core.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.request",    
)  

MIDDLEWARE_CLASSES = (  
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.core.files.uploadhandler.MemoryFileUploadHandler',
    'django.core.files.uploadhandler.TemporaryFileUploadHandler',
    'django.middleware.transaction.TransactionMiddleware',
    'pagination.middleware.PaginationMiddleware',    
)

Английский - это язык, установленный браузером. Метки полей test_number и test_price отображаются на немецком языке, а метка test_date - на английском. Если я удаляю _ ('Номер теста') из models.py и добавляю его в качестве атрибута метки в forms.py, он работает. Разве это не другой способ сделать это?

Ответы [ 2 ]

2 голосов
/ 14 октября 2010

Изменение объявления "из django.utils.translation import ugettext как _" в "из django.utils.translation import ugettext_lazy как _", похоже, решает проблему.

0 голосов
/ 12 октября 2010

Дважды проверьте ваш .po файл: он не должен иметь никакого «нечеткого» статуса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...