translation-support #3
40
src/main.typ
40
src/main.typ
|
@ -108,10 +108,24 @@
|
||||||
#include "pages/gender-hinweis.typ"
|
#include "pages/gender-hinweis.typ"
|
||||||
#include "pages/übersicht-arbeitspakete.typ"
|
#include "pages/übersicht-arbeitspakete.typ"
|
||||||
|
|
||||||
#outline(title: "Inhaltsverzeichnis", indent: auto)
|
#let heading_outline_title = if prelude.format.language == "de" [
|
||||||
|
Inhaltsverzeichnis
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
Table of contents
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
#outline(title: heading_outline_title, indent: auto)
|
||||||
|
|
||||||
#pagebreak()
|
#pagebreak()
|
||||||
|
|
||||||
|
#let image_outline_title = if prelude.format.language == "de" [
|
||||||
|
Abbildungsverzeichnis
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
List of figures
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
#outline(
|
#outline(
|
||||||
title: "Abbildungsverzeichnis",
|
title: "Abbildungsverzeichnis",
|
||||||
target: figure.where(kind: image),
|
target: figure.where(kind: image),
|
||||||
|
@ -119,15 +133,29 @@
|
||||||
|
|
||||||
#pagebreak()
|
#pagebreak()
|
||||||
|
|
||||||
|
#let table_outline_title = if prelude.format.language == "de" [
|
||||||
|
Tabellensverzeichnis
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
List of tables
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
#outline(
|
#outline(
|
||||||
title: "Tabellensverzeichnis",
|
title: table_outline_title,
|
||||||
target: figure.where(kind: table),
|
target: figure.where(kind: table),
|
||||||
)
|
)
|
||||||
|
|
||||||
#pagebreak()
|
#pagebreak()
|
||||||
|
|
||||||
|
#let raw_outline_title = if prelude.format.language == "de" [
|
||||||
|
Quelltextverzeichnis
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
Table of source code
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
#outline(
|
#outline(
|
||||||
title: "Quelltextverzeichnis",
|
title: raw_outline_title,
|
||||||
target: figure.where(kind: raw),
|
target: figure.where(kind: raw),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -137,7 +165,13 @@
|
||||||
#import "@preview/glossarium:0.2.6": make-glossary, print-glossary, gls, glspl
|
#import "@preview/glossarium:0.2.6": make-glossary, print-glossary, gls, glspl
|
||||||
#show: make-glossary
|
#show: make-glossary
|
||||||
|
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
= Glossar
|
= Glossar
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
= Glossary
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
|
||||||
// read all entries from config file
|
// read all entries from config file
|
||||||
#let glossary = yaml("../conf/glossary.yaml")
|
#let glossary = yaml("../conf/glossary.yaml")
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
#import "../prelude.typ" as prelude
|
||||||
|
|
||||||
|
// title
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
= Sperrvermerk
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
= Confidential Clause
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
|
||||||
|
#v(1cm)
|
||||||
|
|
||||||
|
#prelude.largetext()[
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
Der Inhalt dieser Arbeit darf weder als Ganzes noch in
|
||||||
|
Auszügen Personen außerhalb des Prüfungsprozesses
|
||||||
|
und des Evaluationsverfahrens zugänglich gemacht werden,
|
||||||
|
sofern keine anders lautende Genehmigung der Ausbildungsstätte vorliegt.
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
The content of this thesis may not be made accessible
|
||||||
|
to persons outside the examination process and the evaluation procedure,
|
||||||
|
either in whole or in part, unless otherwise authorized by the institution.
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
#prelude.signature
|
||||||
|
|
||||||
|
#pagebreak()
|
|
@ -0,0 +1,46 @@
|
||||||
|
#import "../prelude.typ" as prelude
|
||||||
|
|
||||||
|
#set align(center)
|
||||||
|
|
||||||
|
// title
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
= Selbständigkeitserklärung
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
= Declaration of independence
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
|
||||||
|
#v(1cm)
|
||||||
|
#prelude.largetext()[
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
Ich versichere hiermit, dass ich meine #linebreak() Prüfung mit dem Thema
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
I hereby certify that I have written my #linebreak() exam with the topic
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
#v(1cm)
|
||||||
|
#prelude.title(prelude.info.titel)
|
||||||
|
|
||||||
|
// subtitle
|
||||||
|
#prelude.subtitle(prelude.info.untertitel)
|
||||||
|
|
||||||
|
#v(1cm)
|
||||||
|
#prelude.largetext()[
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
selbständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe.
|
||||||
|
Ich versichere zudem, dass die eingereichte elektronische Fassung mit der gedruckten Fassung übereinstimmt.
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
independently and have not used any sources or aids other than those specified.
|
||||||
|
I also confirm that the electronic version submitted is identical to the printed version.
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
#prelude.signature
|
||||||
|
|
||||||
|
#pagebreak()
|
|
@ -1,13 +0,0 @@
|
||||||
|
|
||||||
#import "../prelude.typ" as prelude
|
|
||||||
|
|
||||||
// title
|
|
||||||
= Gender-Hinweis
|
|
||||||
|
|
||||||
#prelude.largetext()[
|
|
||||||
Zur besseren Lesbarkeit wird in dieser Arbeit das generische Maskulinum verwendet.
|
|
||||||
Die in dieser Arbeit verwendeten
|
|
||||||
Personenbezeichnungen beziehen sich - sofern nicht anders kenntlich gemacht - auf alle Geschlechter.
|
|
||||||
]
|
|
||||||
|
|
||||||
#pagebreak()
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
#import "../prelude.typ" as prelude
|
||||||
|
|
||||||
|
// title
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
= Gender-Hinweis
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
= Gender note
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
|
||||||
|
#prelude.largetext()[
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
Zur besseren Lesbarkeit wird in dieser Arbeit das generische Maskulinum verwendet.
|
||||||
|
Die in dieser Arbeit verwendeten Personenbezeichnungen beziehen sich, sofern nicht anders kenntlich gemacht, auf alle Geschlechter.
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
For better readability, the generic masculine is used in this work.
|
||||||
|
The personal designations used in this work refer to all genders, unless otherwise indicated.
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
#pagebreak()
|
|
@ -1,29 +0,0 @@
|
||||||
#import "../prelude.typ" as prelude
|
|
||||||
|
|
||||||
#set align(center)
|
|
||||||
|
|
||||||
// title
|
|
||||||
= Selbständigkeitserklärung
|
|
||||||
|
|
||||||
#v(1cm)
|
|
||||||
#prelude.largetext()[
|
|
||||||
Ich versichere hiermit, dass ich meine #linebreak() Prüfung mit dem Thema
|
|
||||||
]
|
|
||||||
|
|
||||||
#v(1cm)
|
|
||||||
#prelude.title(prelude.info.titel)
|
|
||||||
|
|
||||||
// subtitle
|
|
||||||
#prelude.subtitle(prelude.info.untertitel)
|
|
||||||
|
|
||||||
#v(1cm)
|
|
||||||
#prelude.largetext()[
|
|
||||||
selbständig verfasst und keine anderen als die angegebenen
|
|
||||||
Quellen und Hilfsmittel benutzt habe. Ich versichere zudem, dass die
|
|
||||||
eingereichte elektronische Fassung mit der gedruckten Fassung
|
|
||||||
übereinstimmt.
|
|
||||||
]
|
|
||||||
|
|
||||||
#prelude.signature
|
|
||||||
|
|
||||||
#pagebreak()
|
|
|
@ -1,17 +0,0 @@
|
||||||
#import "../prelude.typ" as prelude
|
|
||||||
|
|
||||||
// title
|
|
||||||
= Sperrvermerk
|
|
||||||
|
|
||||||
#v(1cm)
|
|
||||||
|
|
||||||
#prelude.largetext()[
|
|
||||||
Der Inhalt dieser Arbeit darf weder als Ganzes noch in
|
|
||||||
Auszügen Personen außerhalb des Prüfungsprozesses
|
|
||||||
und des Evaluationsverfahrens zugänglich gemacht werden,
|
|
||||||
sofern keine anders lautende Genehmigung der Ausbildungsstätte vorliegt.
|
|
||||||
]
|
|
||||||
|
|
||||||
#prelude.signature
|
|
||||||
|
|
||||||
#pagebreak()
|
|
|
@ -1,85 +0,0 @@
|
||||||
#import "../prelude.typ" as prelude
|
|
||||||
|
|
||||||
#let LogoHeight = 1.5cm
|
|
||||||
|
|
||||||
#set align(center)
|
|
||||||
|
|
||||||
// logo of ABB and DHBW
|
|
||||||
#grid(
|
|
||||||
// set width of columns
|
|
||||||
// we need two, so make both half the page width
|
|
||||||
columns: (50%, 50%),
|
|
||||||
// left align logo of ABB
|
|
||||||
align(left, image("../../res/svg/ABB.svg", height: LogoHeight)),
|
|
||||||
// right align logo of DHBW
|
|
||||||
align(right, image("../../res/svg/DHBW.svg", height: LogoHeight))
|
|
||||||
)
|
|
||||||
|
|
||||||
// title
|
|
||||||
#v(2cm)
|
|
||||||
#prelude.title(prelude.info.titel)
|
|
||||||
|
|
||||||
// subtitle
|
|
||||||
#prelude.subtitle(prelude.info.untertitel)
|
|
||||||
|
|
||||||
// type of paper
|
|
||||||
#v(1cm)
|
|
||||||
#prelude.largetext(prelude.info.typ)
|
|
||||||
|
|
||||||
// number of semester
|
|
||||||
Praxisphase des #prelude.info.semester Studienjahrs
|
|
||||||
|
|
||||||
// fakulty
|
|
||||||
#pad(top: 0.5cm)[
|
|
||||||
an der Fakultät für #prelude.info.fakultät
|
|
||||||
#linebreak()
|
|
||||||
im Studiengang #prelude.info.studiengang
|
|
||||||
]
|
|
||||||
|
|
||||||
// university
|
|
||||||
#pad(top: 0.5cm)[
|
|
||||||
an der
|
|
||||||
#linebreak()
|
|
||||||
#prelude.info.universität
|
|
||||||
]
|
|
||||||
|
|
||||||
#set align(bottom + left)
|
|
||||||
|
|
||||||
#table(
|
|
||||||
columns: 2,
|
|
||||||
align: left,
|
|
||||||
stroke: none,
|
|
||||||
|
|
||||||
"Verfasser:",
|
|
||||||
prelude.info.autor,
|
|
||||||
|
|
||||||
"Bearbeitungszeitraum:",
|
|
||||||
prelude.info.bearbeitungszeitraum,
|
|
||||||
|
|
||||||
"Matrikelnummer, Kurs:",
|
|
||||||
str(prelude.info.matrikelnummer) + ", " + prelude.info.studiengang,
|
|
||||||
|
|
||||||
"Ausbildungsbetrieb:",
|
|
||||||
prelude.info.betrieb,
|
|
||||||
|
|
||||||
"Betrieblicher Betreuer:",
|
|
||||||
prelude.info.betreuer,
|
|
||||||
|
|
||||||
"Abgabedatum:",
|
|
||||||
prelude.info.abgabe
|
|
||||||
)
|
|
||||||
|
|
||||||
#pad(
|
|
||||||
top: 1cm,
|
|
||||||
grid(
|
|
||||||
// set width of columns
|
|
||||||
// we need two, so make both half the page width
|
|
||||||
columns: (50%, 50%),
|
|
||||||
align(left, "Unterschrift des betrieblichen Betreuers"),
|
|
||||||
align(right, {line(length: 6cm)})
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
#pagebreak()
|
|
||||||
|
|
||||||
#counter(page).update(1)
|
|
|
@ -0,0 +1,140 @@
|
||||||
|
#import "../prelude.typ" as prelude
|
||||||
|
|
||||||
|
#let LogoHeight = 1.5cm
|
||||||
|
|
||||||
|
#set align(center)
|
||||||
|
|
||||||
|
// logo of ABB and DHBW
|
||||||
|
#grid(
|
||||||
|
// set width of columns
|
||||||
|
// we need two, so make both half the page width
|
||||||
|
columns: (50%, 50%),
|
||||||
|
// left align logo of ABB
|
||||||
|
align(left, image("../../res/svg/ABB.svg", height: LogoHeight)),
|
||||||
|
// right align logo of DHBW
|
||||||
|
align(right, image("../../res/svg/DHBW.svg", height: LogoHeight))
|
||||||
|
)
|
||||||
|
|
||||||
|
// title
|
||||||
|
#v(2cm)
|
||||||
|
#prelude.title(prelude.info.titel)
|
||||||
|
|
||||||
|
// subtitle
|
||||||
|
#prelude.subtitle(prelude.info.untertitel)
|
||||||
|
|
||||||
|
// type of paper
|
||||||
|
#v(1cm)
|
||||||
|
#prelude.largetext(prelude.info.typ)
|
||||||
|
|
||||||
|
// number of semester
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
Praxisphase des #prelude.info.semester Studienjahrs
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
Practical phase of the #prelude.info.semester academic year
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
|
||||||
|
// fakulty
|
||||||
|
#pad(top: 0.5cm)[
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
an der Fakultät für #prelude.info.fakultät
|
||||||
|
#linebreak()
|
||||||
|
im Studiengang #prelude.info.studiengang
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
at the Faculty of #prelude.info.fakultät
|
||||||
|
#linebreak()
|
||||||
|
in the degree program #prelude.info.studiengang
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
// university
|
||||||
|
#pad(top: 0.5cm)[
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
an der
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
at
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
#linebreak()
|
||||||
|
#prelude.info.universität
|
||||||
|
]
|
||||||
|
|
||||||
|
#set align(bottom + left)
|
||||||
|
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
#table(
|
||||||
|
columns: 2,
|
||||||
|
align: left,
|
||||||
|
stroke: none,
|
||||||
|
|
||||||
|
"Verfasser:",
|
||||||
|
prelude.info.autor,
|
||||||
|
|
||||||
|
"Bearbeitungszeitraum:",
|
||||||
|
prelude.info.bearbeitungszeitraum,
|
||||||
|
|
||||||
|
"Matrikelnummer, Kurs:",
|
||||||
|
str(prelude.info.matrikelnummer) + ", " + prelude.info.studiengang,
|
||||||
|
|
||||||
|
"Ausbildungsbetrieb:",
|
||||||
|
prelude.info.betrieb,
|
||||||
|
|
||||||
|
"Betrieblicher Betreuer:",
|
||||||
|
prelude.info.betreuer,
|
||||||
|
|
||||||
|
"Abgabedatum:",
|
||||||
|
prelude.info.abgabe
|
||||||
|
)
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
#table(
|
||||||
|
columns: 2,
|
||||||
|
align: left,
|
||||||
|
stroke: none,
|
||||||
|
|
||||||
|
"Author:",
|
||||||
|
prelude.info.autor,
|
||||||
|
|
||||||
|
"Editing period:",
|
||||||
|
prelude.info.bearbeitungszeitraum,
|
||||||
|
|
||||||
|
"Matriculation number, course:",
|
||||||
|
str(prelude.info.matrikelnummer) + ", " + prelude.info.studiengang,
|
||||||
|
|
||||||
|
"Training company:",
|
||||||
|
prelude.info.betrieb,
|
||||||
|
|
||||||
|
"Company supervisor:",
|
||||||
|
prelude.info.betreuer,
|
||||||
|
|
||||||
|
"Submission date:",
|
||||||
|
prelude.info.abgabe
|
||||||
|
)
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
|
||||||
|
#pad(
|
||||||
|
top: 1cm,
|
||||||
|
grid(
|
||||||
|
// set width of columns
|
||||||
|
// we need two, so make both half the page width
|
||||||
|
columns: (60%, 40%),
|
||||||
|
align(left, if prelude.format.language == "de" [
|
||||||
|
Unterschrift des betrieblichen Betreuers
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
Signature of the company supervisor
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
),
|
||||||
|
align(right, {line(length: 6cm)})
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
#counter(page).update(1)
|
|
@ -0,0 +1,51 @@
|
||||||
|
#import "../prelude.typ" as prelude
|
||||||
|
|
||||||
|
// title
|
||||||
|
#if prelude.format.language == "de" [
|
||||||
|
= Übersicht Arbeitspakete
|
||||||
|
Folgende Tabelle zeigt die Aktivtäten welche im Zeitraum vom #prelude.info.bearbeitungszeitraum abgehandelt wurden.
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
= Work package overview
|
||||||
|
The following table shows the activities that were covered during the #prelude.info.processing period.
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
]
|
||||||
|
|
||||||
|
#let table_align(col, row) = {
|
||||||
|
if row == 0 {
|
||||||
|
center
|
||||||
|
} else {
|
||||||
|
left
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
kind: table,
|
||||||
|
caption: if prelude.format.language == "de" [
|
||||||
|
Übersicht Arbeitspakete
|
||||||
|
] else if prelude.format.language == "en" [
|
||||||
|
Work package overview
|
||||||
|
] else [
|
||||||
|
#panic("no translation for language: ", prelude.format.language)
|
||||||
|
],
|
||||||
|
table(
|
||||||
|
columns: (1fr, auto, auto),
|
||||||
|
align: table_align,
|
||||||
|
inset: 0.25cm,
|
||||||
|
[*Thema*], [*Zeitraum*], [*Dauer (Wochen)*],
|
||||||
|
..for packet in prelude.info.arbeits-pakete {
|
||||||
|
|
||||||
|
let start_split = packet.start.split(".")
|
||||||
|
let start = datetime(day: int(start_split.at(0)), month: int(start_split.at(1)), year: int(start_split.at(2)))
|
||||||
|
|
||||||
|
let end_split = packet.ende.split(".")
|
||||||
|
let end = datetime(day: int(end_split.at(0)), month: int(end_split.at(1)), year: int(end_split.at(2)))
|
||||||
|
|
||||||
|
let dur = end - start
|
||||||
|
|
||||||
|
(packet.thema, packet.start + " - " + packet.ende, str(calc.round(dur.weeks())))
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
#pagebreak()
|
|
@ -1,31 +0,0 @@
|
||||||
#import "../prelude.typ" as prelude
|
|
||||||
|
|
||||||
// title
|
|
||||||
= Übersicht Arbeitspakete
|
|
||||||
|
|
||||||
Folgende Tabelle zeigt die Aktivtäten welche im Zeitraum vom #prelude.info.bearbeitungszeitraum abgehandelt wurden.
|
|
||||||
|
|
||||||
#figure(
|
|
||||||
kind: table,
|
|
||||||
caption: "Übersicht Arbeitspakete",
|
|
||||||
table(
|
|
||||||
columns: (1fr, auto, auto),
|
|
||||||
align: center,
|
|
||||||
inset: 0.25cm,
|
|
||||||
[*Thema*], [*Zeitraum*], [*Dauer (Wochen)*],
|
|
||||||
..for packet in prelude.info.arbeits-pakete {
|
|
||||||
|
|
||||||
let start_split = packet.start.split(".")
|
|
||||||
let start = datetime(day: int(start_split.at(0)), month: int(start_split.at(1)), year: int(start_split.at(2)))
|
|
||||||
|
|
||||||
let end_split = packet.ende.split(".")
|
|
||||||
let end = datetime(day: int(end_split.at(0)), month: int(end_split.at(1)), year: int(end_split.at(2)))
|
|
||||||
|
|
||||||
let dur = end - start
|
|
||||||
|
|
||||||
(packet.thema, packet.start + " - " + packet.ende, str(calc.round(dur.weeks())))
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
#pagebreak()
|
|
Loading…
Reference in New Issue