2

アプリケーションをローカライズしようとすると問題が発生します。英語とドイツ語の 2 つの言語で利用できます。この問題は、ブラウザの言語が英語 (米国) に設定されていて、設定ファイルで「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)  

フォーム.py:

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

設定.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 から _('Test number') を削除し、forms.py の label 属性として追加すると機能します。これを行う別の方法ではありませんか?

4

2 に答える 2

2

「from django.utils.translation import ugettext as _」という宣言を「from django.utils.translation import ugettext_lazy as _」に変更すると、問題が解決するようです。

于 2010-10-14T06:41:04.733 に答える
0

ファイルを再確認してください.po。「ファジー」ステータスであってはなりません。

于 2010-10-11T20:03:26.580 に答える