Properly propagate plural values
This commit is contained in:
parent
6a778da5c2
commit
69b02bda49
@ -1,6 +1,7 @@
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy, ugettext as _
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.encoding import smart_unicode
|
||||
|
||||
class PluralTextarea(forms.Textarea):
|
||||
'''
|
||||
@ -10,7 +11,6 @@ class PluralTextarea(forms.Textarea):
|
||||
if type(value) != list:
|
||||
return super(PluralTextarea, self).render(name, value, attrs)
|
||||
ret = []
|
||||
print value
|
||||
for idx, val in enumerate(value):
|
||||
if idx > 0:
|
||||
fieldname = '%s_%d' % (name, idx)
|
||||
@ -19,10 +19,25 @@ class PluralTextarea(forms.Textarea):
|
||||
ret.append(super(PluralTextarea, self).render(fieldname, val, attrs))
|
||||
return mark_safe('<br />'.join(ret))
|
||||
|
||||
def value_from_datadict(self, data, files, name):
|
||||
ret = [smart_unicode(data.get(name, None))]
|
||||
for idx in range(1, 10):
|
||||
fieldname = '%s_%d' % (name, idx)
|
||||
if not fieldname in data:
|
||||
break
|
||||
ret.append(smart_unicode(data.get(fieldname, None)))
|
||||
if len(ret) == 0:
|
||||
return ret[0]
|
||||
return ret
|
||||
|
||||
class PluralField(forms.CharField):
|
||||
def __init__(self, max_length=None, min_length=None, *args, **kwargs):
|
||||
super(PluralField, self).__init__(*args, widget = PluralTextarea, **kwargs)
|
||||
|
||||
def to_python(self, value):
|
||||
# We can get list from PluralTextarea
|
||||
return value
|
||||
|
||||
class TranslationForm(forms.Form):
|
||||
checksum = forms.CharField(widget = forms.HiddenInput)
|
||||
target = PluralField(required = False)
|
||||
|
@ -7,6 +7,7 @@ from django.contrib import messages
|
||||
|
||||
from trans.models import Project, SubProject, Translation, Unit, Suggestion
|
||||
from trans.forms import TranslationForm
|
||||
from util import is_plural, split_plural, join_plural
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger('weblate')
|
||||
@ -66,7 +67,7 @@ def translate(request, project, subproject, lang):
|
||||
unit = Unit.objects.get(checksum = form.cleaned_data['checksum'], translation = obj)
|
||||
if 'suggest' in request.POST:
|
||||
Suggestion.objects.create(
|
||||
target = form.cleaned_data['target'],
|
||||
target = join_plural(form.cleaned_data['target']),
|
||||
checksum = unit.checksum,
|
||||
language = unit.translation.language,
|
||||
project = unit.translation.subproject.project,
|
||||
@ -74,7 +75,7 @@ def translate(request, project, subproject, lang):
|
||||
elif not request.user.is_authenticated():
|
||||
messages.add_message(request, messages.ERROR, _('You need to login to be able to save translations!'))
|
||||
else:
|
||||
unit.target = form.cleaned_data['target']
|
||||
unit.target = join_plural(form.cleaned_data['target'])
|
||||
unit.fuzzy = form.cleaned_data['fuzzy']
|
||||
unit.save_backend(request)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user