diff --git a/html/translate.html b/html/translate.html
index 1d7bbd593..03fce2b45 100644
--- a/html/translate.html
+++ b/html/translate.html
@@ -17,7 +17,12 @@
{% trans "Source" %} | {% trans "Translation" %} | |
{% if unit.is_plural %}
{% else %}
-{{ unit.source }} | {{ form.target }} |
+{{ unit.source }} |
+{{ form.checksum }}
+{{ form.target }}
+
+{{ form.fuzzy }}
+ |
{% endif %}
{% trans "Location" %} |
{{ unit.get_location_links }} |
diff --git a/trans/forms.py b/trans/forms.py
new file mode 100644
index 000000000..fe4c1bdba
--- /dev/null
+++ b/trans/forms.py
@@ -0,0 +1,8 @@
+from django import forms
+from django.utils.translation import ugettext_lazy, ugettext as _
+
+class TranslationForm(forms.Form):
+ checksum = forms.CharField(widget = forms.HiddenInput)
+ target = forms.CharField(widget = forms.Textarea, required = False)
+ fuzzy = forms.BooleanField(label = ugettext_lazy('Fuzzy'), required = False)
+
diff --git a/trans/views.py b/trans/views.py
index 3ea7b49e5..90920e734 100644
--- a/trans/views.py
+++ b/trans/views.py
@@ -1,8 +1,10 @@
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.conf import settings
+from django.http import HttpResponseRedirect
from trans.models import Project, SubProject, Translation, Unit
+from trans.forms import TranslationForm
def home(request):
projects = Project.objects.all()
@@ -39,13 +41,32 @@ def show_translation(request, project, subproject, lang):
def translate(request, project, subproject, lang):
obj = get_object_or_404(Translation, language__code = lang, subproject__slug = subproject, subproject__project__slug = project)
+ # Check where we are
rqtype = request.REQUEST.get('type', 'all')
pos = request.REQUEST.get('oldpos', '-1')
try:
pos = int(pos)
except:
pos = -1
- unit = obj.unit_set.filter_type(rqtype).filter(position__gt = pos)[0]
+
+ # Any form submitted?
+ if request.method == 'POST':
+ form = TranslationForm(request.POST)
+ if form.is_valid():
+ # Check and save
+ return HttpResponseRedirect('%s?type=%s&oldpos=%d' % (obj.get_translate_url(), rqtype, pos))
+
+ else:
+ # What unit to show
+ unit = obj.unit_set.filter_type(rqtype).filter(position__gt = pos)[0]
+
+ # Prepare form
+ form = TranslationForm(initial = {
+ 'checksum': unit.checksum,
+ 'target': unit.target,
+ 'fuzzy': unit.fuzzy,
+ })
+
total = obj.unit_set.all().count()
return render_to_response('translate.html', RequestContext(request, {
@@ -54,4 +75,5 @@ def translate(request, project, subproject, lang):
'unit': unit,
'total': total,
'type': rqtype,
+ 'form': form,
}))