From cd5d866cb156f4c8c9c36408b9c3bdc0ed221f02 Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Fri, 27 Mar 2026 15:15:07 +0100 Subject: [PATCH] =?UTF-8?q?Multilanguage:=20Deutsch=20/=20English,=20umsch?= =?UTF-8?q?altbar=20in=20Einstellungen=20-=20i18n.js:=20=C3=9Cbersetzungsm?= =?UTF-8?q?odul=20mit=20t(),=20setLang(),=20applyLang()=20+=20vollst.=20DE?= =?UTF-8?q?/EN=20W=C3=B6rterbuch=20-=20Backend:=20language-Feld=20in=20Use?= =?UTF-8?q?rSettings,=20Migration,=20Settings-API=20-=20calendar.js:=20all?= =?UTF-8?q?e=20deutschen=20Strings=20auf=20t()-Aufrufe=20umgestellt,=20set?= =?UTF-8?q?Lang()=20beim=20Start=20-=20app.js,=20api.js,=20color-picker.js?= =?UTF-8?q?,=20views/*.js:=20alle=20UI-Strings=20=C3=BCbersetzt=20-=20Spra?= =?UTF-8?q?ch-Dropdown=20in=20Einstellungen=20>=20Darstellung,=20data-i18n?= =?UTF-8?q?-Attribute=20in=20index.html?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/main.py | 5 + backend/models.py | 1 + backend/routers/settings_router.py | 2 + frontend/index.html | 92 ++++--- frontend/js/api.js | 5 +- frontend/js/app.js | 5 +- frontend/js/calendar.js | 133 +++++----- frontend/js/color-picker.js | 4 +- frontend/js/i18n.js | 395 +++++++++++++++++++++++++++++ frontend/js/views/agenda.js | 14 +- frontend/js/views/month.js | 8 +- frontend/js/views/week.js | 9 +- 12 files changed, 544 insertions(+), 129 deletions(-) create mode 100644 frontend/js/i18n.js diff --git a/backend/main.py b/backend/main.py index 613c1f6..534665d 100644 --- a/backend/main.py +++ b/backend/main.py @@ -58,6 +58,11 @@ def _migrate(): conn.commit() except Exception: pass + try: + conn.execute(text("ALTER TABLE user_settings ADD COLUMN language VARCHAR(5) DEFAULT 'de'")) + conn.commit() + except Exception: + pass _migrate() diff --git a/backend/models.py b/backend/models.py index 83b277a..38cf548 100644 --- a/backend/models.py +++ b/backend/models.py @@ -78,6 +78,7 @@ class UserSettings(Base): text_contrast = Column(Integer, default=3) line_contrast = Column(Integer, default=3) hour_height = Column(Integer, default=60) + language = Column(String(5), default="de") user = relationship("User", back_populates="settings") diff --git a/backend/routers/settings_router.py b/backend/routers/settings_router.py index 98fcfa9..967b4c1 100644 --- a/backend/routers/settings_router.py +++ b/backend/routers/settings_router.py @@ -21,6 +21,7 @@ class SettingsUpdate(BaseModel): text_contrast: Optional[int] = None line_contrast: Optional[int] = None hour_height: Optional[int] = None + language: Optional[str] = None def _settings_dict(s: models.UserSettings) -> dict: @@ -34,6 +35,7 @@ def _settings_dict(s: models.UserSettings) -> dict: "text_contrast": s.text_contrast or 3, "line_contrast": s.line_contrast or 3, "hour_height": s.hour_height or 60, + "language": s.language or "de", } diff --git a/frontend/index.html b/frontend/index.html index 2b3fe52..ecfdd9a 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -400,98 +400,106 @@
-

Farben

+

Farben

- +
-
+
- +
-
+
- +
-
+
-

Schriftkontrast

-

Helligkeit der Beschriftungen und Texte

+

Schriftkontrast

+

Helligkeit der Beschriftungen und Texte

- - - - + + + +
-

Linienkontrast

-

Sichtbarkeit von Trennlinien und Rahmen

+

Linienkontrast

+

Sichtbarkeit von Trennlinien und Rahmen

- - - - + + + +
-

Kalenderansicht

+

Kalenderansicht

- +
- +
-

Stundenhöhe (Wochen- & Tagesansicht)

-

Wie viel Platz eine Stunde in der Zeitrasteransicht einnimmt

+

Stundenhöhe (Wochen- & Tagesansicht)

+

Wie viel Platz eine Stunde in der Zeitrasteransicht einnimmt

- - - - + + + +
-

Ausgeblendete Kalender

-
Keine ausgeblendeten Kalender
+

Sprache

+
+ +
+ +

Ausgeblendete Kalender

+
Keine ausgeblendeten Kalender
-

Google Konten

-
Keine Google-Konten verbunden
+

Google Konten

+
Keine Google-Konten verbunden
-

Benutzerverwaltung Admin

+

Benutzerverwaltung Admin

- +