2

現在、私のアプリは英語のユーザー インターフェースしか提供していません。すべてのテキストは英語で保管されます。しかし、ドイツの数字表記に従って数字を表示したい。これは、会社の言語が英語であるオーストリアに拠点を置く会社向けにアプリを作成しているためです。会社の言語は英語ですが、ほとんどのユーザーはドイツ語の数字表記を使用しており、アプリはドイツ語の数字表記を使用しているオーストリアの企業に送信されるいくつかの .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
4

0 に答える 0