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