Allow to explicitly set ticket language

This commit is contained in:
Raphael Michel
2019-12-20 18:17:00 +01:00
parent 614c40596f
commit eb7e938af6
4 changed files with 28 additions and 3 deletions

View File

@@ -34,6 +34,7 @@ from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfgen.canvas import Canvas from reportlab.pdfgen.canvas import Canvas
from reportlab.platypus import Paragraph from reportlab.platypus import Paragraph
from pretix.base.i18n import language
from pretix.base.invoice import ThumbnailingImageReader from pretix.base.invoice import ThumbnailingImageReader
from pretix.base.models import Order, OrderPosition from pretix.base.models import Order, OrderPosition
from pretix.base.settings import PERSON_NAME_SCHEMES from pretix.base.settings import PERSON_NAME_SCHEMES
@@ -407,7 +408,11 @@ class Renderer:
def _get_ev(self, op, order): def _get_ev(self, op, order):
return op.subevent or order.event return op.subevent or order.event
def _get_text_content(self, op: OrderPosition, order: Order, o: dict): def _get_text_content(self, op: OrderPosition, order: Order, o: dict, inner=False):
if o.get('locale', None) and not inner:
with language(o['locale']):
return self._get_text_content(op, order, o, True)
ev = self._get_ev(op, order) ev = self._get_ev(op, order)
if not o['content']: if not o['content']:
return '(error)' return '(error)'

View File

@@ -198,11 +198,24 @@
</div> </div>
<div class="col-sm-12 help-inline"> <div class="col-sm-12 help-inline">
<p> <p>
After you changed the page size, you need to create a new empty background. If you {% blocktrans trimmed %}
want to use a custom background, it already needs to have the correct size. After you changed the page size, you need to create a new empty background. If you
want to use a custom background, it already needs to have the correct size.
{% endblocktrans %}
</p> </p>
</div> </div>
</div> </div>
<div class="row control-group pdf-info">
<div class="col-sm-12">
<label>{% trans "Prefered language" %}</label><br>
<select class="form-control" id="pdf-info-locale">
<option value="">{% trans "Order locale" %}</option>
{% for l in locales %}
<option value="{{ l.0 }}">{{ l.1 }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="row control-group position"> <div class="row control-group position">
<div class="col-sm-6"> <div class="col-sm-6">
<label>{% trans "x (mm)" %}</label><br> <label>{% trans "x (mm)" %}</label><br>

View File

@@ -4,6 +4,7 @@ import mimetypes
from datetime import timedelta from datetime import timedelta
from io import BytesIO from io import BytesIO
from django.conf import settings
from django.core.files import File from django.core.files import File
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from django.core.files.storage import default_storage from django.core.files.storage import default_storage
@@ -217,6 +218,7 @@ class BaseEditorView(EventPermissionRequiredMixin, TemplateView):
ctx['variables'] = self.get_variables() ctx['variables'] = self.get_variables()
ctx['layout'] = json.dumps(self.get_current_layout()) ctx['layout'] = json.dumps(self.get_current_layout())
ctx['title'] = self.title ctx['title'] = self.title
ctx['locales'] = [p for p in settings.LANGUAGES if p[0] in self.request.event.settings.locales]
return ctx return ctx

View File

@@ -119,6 +119,7 @@ var editor = {
var col = (new fabric.Color(o.getFill()))._source; var col = (new fabric.Color(o.getFill()))._source;
d.push({ d.push({
type: "textarea", type: "textarea",
locale: $("#pdf-info-locale").val(),
left: editor._px2mm(left).toFixed(2), left: editor._px2mm(left).toFixed(2),
bottom: editor._px2mm(editor.pdf_viewport.height - o.height - top).toFixed(2), bottom: editor._px2mm(editor.pdf_viewport.height - o.height - top).toFixed(2),
fontsize: editor._px2pt(o.getFontSize()).toFixed(1), fontsize: editor._px2pt(o.getFontSize()).toFixed(1),
@@ -178,6 +179,10 @@ var editor = {
} else { } else {
o.setText(editor._get_text_sample(d.content)); o.setText(editor._get_text_sample(d.content));
} }
if (d.locale) {
// The data format allows to set the locale per text field but we currently only expose a global field
$("#pdf-info-locale").val(d.locale);
}
} }
var new_top = editor.pdf_viewport.height - editor._mm2px(d.bottom) - (o.height * o.scaleY); var new_top = editor.pdf_viewport.height - editor._mm2px(d.bottom) - (o.height * o.scaleY);