forked from CGM_Public/pretix_original
Allow to explicitly set ticket language
This commit is contained in:
@@ -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)'
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user