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

这个 middelware 的结果是使用德语表示法在表单中显示数字(这很好),但也有这样的效果,即表单显示的错误消息也以德语提供。由于我的用户界面只有英文,而且大多数员工不懂德文,因此不应翻译表单错误消息。

知道如何实现这一目标吗?

我的设置如下:

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