我的应用目前只提供英文用户界面。所有文字都用英文保存。但是我想在德语数字符号后面显示数字。这样做的原因是我为奥地利的公司创建了一个应用程序,公司语言为英语。公司语言为英语,大多数用户使用德语数字符号,应用程序正在创建一些.pdfs,将发送给奥地利公司,这些公司也使用德语数字符号。
我有这个激活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
我的表单将localize设置为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