現在、私のアプリは英語のユーザー インターフェースしか提供していません。すべてのテキストは英語で保管されます。しかし、ドイツの数字表記に従って数字を表示したい。これは、会社の言語が英語であるオーストリアに拠点を置く会社向けにアプリを作成しているためです。会社の言語は英語ですが、ほとんどのユーザーはドイツ語の数字表記を使用しており、アプリはドイツ語の数字表記を使用しているオーストリアの企業に送信されるいくつかの .pdf を作成しています。
私はdjango翻訳を有効にするこのミドルウェアを持っています:
class InternationalizationMiddleware(object):
"""
Middleware that sets the locale and activates translation
"""
def process_request(self, request):
if request.user.is_anonymous() == False:
locale.setlocale(locale.LC_ALL, 'en_GB')
translation.activate('de_DE')
def process_response(self, request, response):
translation.deactivate()
return response
このミドルウェアは、数値がドイツ語表記を使用してフォームに表示されるという結果をもたらしますが (これは良いことです)、フォームによって表示されるエラー メッセージもドイツ語で提供されるという効果もあります。私のユーザー インターフェイスは英語のみであり、ほとんどの従業員はドイツ語を理解していないため、フォーム エラー メッセージは翻訳されるべきではありません。
これを達成する方法はありますか?
私の設定は次のとおりです。
LANGUAGE_CODE = 'en-us'
#supported languages
LANGUAGE_CHOICES = (
('en_GB', 'English'),
('de_DE', 'German'),
)
#number date format settings
USE_THOUSAND_SEPARATOR = True
THOUSAND_SEPARATOR = "."
DECIMAL_SEPARATOR = ","
NUMBER_GROUPING = 3
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True
私のフォームは、次のようにローカライズをTrueに設定しています:
def localize_fields(self):
"""
set localization to True for all fields
"""
for name, field in self.fields.items():
widget_type = field.widget.__class__.__name__
if widget_type != "DateInput" and widget_type != "DateTimeInput" and widget_type != "SelectDateWidget" and widget_type != "TimeInput": #do not localize date / time input widgets
field.localize = True
field.widget.is_localized = True