Also, hier mal ein paar relevante Codestellen:
Code: Alles auswählen
# settings.py
LANGUAGE_CODE = 'de-de'
USE_I18N = True
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'audit_log.middleware.UserLoggingMiddleware',
)
# utils.py
from django.utils import translation
# original
def json_view(func):
def wrap(req, *args, **kw):
response = func(req, *args, **kw)
json = simplejson.dumps(response)
return HttpResponse(json, mimetype='application/json')
return wrap
# nach Jens Post
def json_view(func):
def wrap(req, *args, **kw):
translation.activate(req.LANGUAGE_CODE)
print req.LANGUAGE_CODE # ergibt de
response = func(req, *args, **kw)
json = simplejson.dumps(response)
return HttpResponse(json, mimetype='application/json')
return wrap
# views.py
from django.utils.translation import ugettext as _
from django.contrib import messages
@login_required
def ask_order(req):
if req.method == 'POST':
form = OrderOldForm(req.POST)
if form.is_valid():
return redirect('orders-order', form.cleaned_data['article_id'])
else:
messages.error(req, _(u'Please give a valid article ID.')) # wird nicht übersetzt
else:
form = OrderOldForm()
articles = [(x.id, x.name, x.short_desc()) for x in
Article.objects.all().order_by('name')]
ctx = dict(page_title=_(u'Orders'), form=form, menus=menus,
articles=articles)
return render(req, 'orders/select_article.html', ctx)
@json_view
def update_article_count(req, order_id, count):
order_id, count = int(order_id), int(count)
order = Order.objects.select_related().get(id=order_id)
old_count = order.count
order.count = count
try:
u = order.users.get(id=req.user.id)
except:
order.users.add(req.user)
order.save()
msg = _(u'Count for %(name)s was changed from %(old)d to %(count)d.' %
{'name': order.article.name, 'old': old_count, 'count': count}) # wird nicht übersetzt
user = [x.username for x in order.users.all()]
return dict(msg=msg, user=u', '.join(user))
Ich hoffe, ich habe nichts vergessen. Alles andere wird anstandslos übersetzt (verbose_name in Models, label in Forms, alles in Templates).
Gruß
Whitie
Edit: Die Übersetzungen sind natürlich auch alle vorhanden und in .mo Dateien kompiliert, es wird also alles korrekt extrahiert.