--- /dev/null
+# Copyright 2014, 2016, 2019, 2021 Paul Hänsch
+#
+# This file is part of Confetti.
+#
+# Confetti is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Confetti is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with Confetti. If not, see <http://www.gnu.org/licenses/>.
+
+l10n(){
+ local word
+ [ $# -eq 0 ] && read -r word || word="$*"
+ l10n_global "$word"
+}
+
+l10n_global() {
+ case $1 in
+ # Nav Menu
+ cards) printf %s "Teil­neh­mende";;
+ courses) printf %s "Kurse";;
+
+ # VCF Default
+ PHOTO) printf %s "Foto";;
+ LOGO) printf %s "Logo";;
+ FN) printf %s "Voller Name";;
+ N) printf %s "Name";;
+ n_pre) printf %s "Titel";;
+ n_first) printf %s "Vorname";;
+ n_middle) printf %s "Mittel­namen";;
+ n_last) printf %s "Nachname";;
+ n_post) printf %s "Zusätze";;
+ NICKNAME) printf %s "Spitz­name";;
+ SOUND) printf %s "Aus­sprache";;
+ GENDER) printf %s "Ge­schlecht";;
+ KIND) printf %s "Typ";;
+ TITLE) printf %s "Beruf";;
+ ROLE) printf %s "Position";;
+ ORG) printf %s "Orga­ni­sation";;
+ MEMBER) printf %s "Mitglied";;
+ CATEGORIES) printf %s "Kategorien";;
+ ANNIVERSARY) printf %s "Jubiläum";;
+ BDAY) printf %s "Geburtstag";;
+ EMAIL) printf %s "E-Mail";;
+ TEL) printf %s "Telefon";;
+ teltype) printf %s "Anschluss­typ:";;
+ TYPE=HOME) printf %s "Privat";;
+ TYPE=WORK) printf %s "Geschäft­lich";;
+ TYPE=CELL) printf %s "Mobil";;
+ TYPE=FAX) printf %s "Fax";;
+ IMPP) printf %s "Chat";;
+ ADR) printf %s "Anschrift";;
+ URL) printf %s "Webseite";;
+ LANG) printf %s "Sprache";;
+ NOTE) printf %s "Notiz";;
+ RELATED) printf %s "Kontakte";;
+
+ # ICS Default
+ SUMMARY) printf "Bezeichnung";;
+ COMMENT) printf "Kommentar";;
+ DTSTART) printf "Beginn";;
+ DURATION) printf "Dauer";;
+ RRULE) printf "Regelmäßigkeit";;
+ DAILY) printf "Tage";;
+ WEEKLY) printf "Wochen";;
+ MONTHLY) printf "Monate";;
+ YEARLY) printf "Jahre";;
+ sDAILY) printf "Täglich";;
+ sWEEKLY) printf "Wöchentlich";;
+ sMONTHLY) printf "Monatlich";;
+ sYEARLY) printf "Jährlich";;
+
+ # UI labels
+ year) printf %s "Jahr";;
+ month) printf %s "Monat";;
+ day) printf %s "Tag";;
+ edit) printf %s "Bearbeiten";;
+ edit_categories) printf %s "Kategorien Bearbeiten";;
+ vcf_export) printf %s "Vcard Exportieren";;
+ control) printf %s "Aktionen";;
+ delete) printf %s "entfernen";;
+ edit_update) printf %s "Daten übernehmen";;
+ edit_cancel) printf %s "Abbrechen";;
+ edit_delete) printf %s "Eintrag löschen";;
+ edit_addfieldtext) printf %s "Neues Feld";;
+ edit_addfield) printf %s "+";;
+ edit_deletefield) printf %s "X";;
+
+ filter_label) printf %s "Filter";;
+ filter_item) printf %s "Eingrenzung nach";;
+ filter_placeholder) printf %s "Begriffe zur Eingrenzung eingeben";;
+ filter_type) printf %s "Filter­typ";;
+ filter_order) printf %s "Sortie­rung";;
+ filter_any) printf %s "Alles";;
+ filter_name) printf %s "Name";;
+ filter_firstname) printf %s "Vor­name";;
+ filter_lastname) printf %s "Nach­name";;
+ filter_street) printf %s "Straße";;
+ filter_zip) printf %s "PLZ.";;
+ filter_TEL) printf %s "Tele­fon";;
+ filter_BDAY) printf %s "Geburts­jahr";;
+ filter_bdate) printf %s "Geburts­datum";;
+ filter_course) printf %s "Kurs";;
+ filter_CATEGORIES) printf %s "Kate­go­rien";;
+ filter_more) printf %s "+ mehr Filter";;
+ filter_apply) printf %s "Filtern";;
+ filter_cancel) printf %s "Filter löschen";;
+ export_csv) printf %s "Liste als CSV-Datei";;
+
+ # UI Labels Special
+ course_attendance) printf %s "Kurs­teil­nahme";;
+ vcf_seed_label) printf "Anmeld. Vorn. Nachn. Geb. Monat Geb. Jahr Tel. Mobil () EMail () Notiz";;
+
+ gender_none) printf %s "keine Angabe";;
+ gender_female) printf %s "Weiblich";;
+ gender_male) printf %s "Männlich";;
+ gender_other) printf %s "Sonstiges";;
+
+ female) printf %s "♀";;
+ male) printf %s "♂";;
+ other) printf %s "⚥";;
+ none) printf %s "⚪";;
+
+ # Fallback
+ *) printf %s "$word";;
+ esac
+}
+
+l10n_time() {
+ [ $# -eq 0 ] && read -r time || time="$*"
+ printf '%s\n' "$time" |sed -E '
+ s;Monday;Mon\­\;tag;g; s;Mon\.;Mo.;g;
+ s;Tuesday;Diens\­\;tag;g; s;Tue\.;Di.;g;
+ s;Wednesday;Mitt\­\;woch;g; s;Wed\.;Mi.;g;
+ s;Thursday;Don\­\;ners\­\;tag;g; s;Thu\.;Do.;g;
+ s;Friday;Frei\­\;tag;g; s;Fri\.;Fr.;g;
+ s;Saturday;Sams\­\;tag;g; s;Sat\.;Sa.;g;
+ s;Sunday;Sonn\­\;tag;g; s;Sun\.;So.;g;
+
+ s;January;Ja\­\;nu\­\;ar;g; s;Jan\.;Jan.;g;
+ s;February;Fe\­\;bru\­\;ar;g; s;Feb\.;Feb.;g;
+ s;March;März;g; s;Mar\.;Mär.;g;
+ s;April;April;g; s;Apr\.;Apr.;g;
+ s;May;Mai;g; s;May\.;Mai.;g;
+ s;June;Juni;g; s;Jun\.;Jun.;g;
+ s;July;Juli;g; s;Jul\.;Jul.;g;
+ s;August;Au\­\;gust;g; s;Aug\.;Aug.;g;
+ s;September;Sep\­\;tem\­\;ber;g; s;Sep\.;Sep.;g;
+ s;October;Ok\­\;to\­\;ber;g; s;Oct\.;Okt.;g;
+ s;November;No\­\;vem\­\;ber;g; s;Nov\.;Nov.;g;
+ s;December;De\­\;zem\­\;ber;g; s;Dec\.;Dez.;g;
+ '
+}
+
+parse_date() {
+ [ $# -eq 0 ] && read -r date || date="$*"
+
+ case $date in
+ *[0-9].*[0-9].*[0-9])
+ d="${date%%.*}"
+ y="${date##*.}"
+ m="${date%.*}"
+ m="${m#*.}"
+ [ $y -lt 100 ] && y="$((y + 2000))"
+ date -d "$(printf '%04i-%02i-%02i' "$y" "$m" "$d")" +%F
+ ;;
+ *) date -d "$date" +%F
+ ;;
+ esac
+}