我的应用目前只提供英文用户界面。所有文本均以英文保存。但是我想按照德国数字符号显示数字。原因是我为一家位于奥地利的公司创建了一个应用程序,该公司的语言是英语。虽然公司语言是英语,但大多数用户使用德国数字符号,并且该应用程序正在创建一些 .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