This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
breakpilot-pwa/studio-v2/lib/i18n.ts
Benjamin Admin 21a844cb8a fix: Restore all files lost during destructive rebase
A previous `git pull --rebase origin main` dropped 177 local commits,
losing 3400+ files across admin-v2, backend, studio-v2, website,
klausur-service, and many other services. The partial restore attempt
(660295e2) only recovered some files.

This commit restores all missing files from pre-rebase ref 98933f5e
while preserving post-rebase additions (night-scheduler, night-mode UI,
NightModeWidget dashboard integration).

Restored features include:
- AI Module Sidebar (FAB), OCR Labeling, OCR Compare
- GPU Dashboard, RAG Pipeline, Magic Help
- Klausur-Korrektur (8 files), Abitur-Archiv (5+ files)
- Companion, Zeugnisse-Crawler, Screen Flow
- Full backend, studio-v2, website, klausur-service
- All compliance SDKs, agent-core, voice-service
- CI/CD configs, documentation, scripts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 09:51:32 +01:00

400 lines
14 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* BreakPilot Studio v2 - i18n Module
*
* 7 Sprachen: de, en, tr, ar, ru, uk, pl
* localStorage-Persistenz mit Key 'bp_language'
* RTL-Support fuer Arabisch
*/
export type Language = 'de' | 'en' | 'tr' | 'ar' | 'ru' | 'uk' | 'pl'
export const availableLanguages: Record<Language, { name: string; flag: string; rtl?: boolean }> = {
de: { name: 'Deutsch', flag: '🇩🇪' },
en: { name: 'English', flag: '🇬🇧' },
tr: { name: 'Türkçe', flag: '🇹🇷' },
ar: { name: 'العربية', flag: '🇸🇦', rtl: true },
ru: { name: 'Русский', flag: '🇷🇺' },
uk: { name: 'Українська', flag: '🇺🇦' },
pl: { name: 'Polski', flag: '🇵🇱' },
}
export const defaultLanguage: Language = 'de'
// Uebersetzungen fuer Studio v2 UI
export const translations: Record<Language, Record<string, string>> = {
de: {
// Kopfleiste
dashboard: 'Dashboard',
dashboard_subtitle: 'Willkommen zurück! Hier ist Ihr Überblick.',
search_placeholder: 'Suchen...',
// Sidebar Navigation
nav_dashboard: 'Dashboard',
nav_dokumente: 'Dokumente',
nav_klausuren: 'Klausuren',
nav_analytics: 'Analysen',
nav_vokabeln: 'Vokabeln',
nav_worksheet_editor: 'Arbeitsblätter',
nav_worksheet_cleanup: 'Bereinigung',
nav_korrektur: 'Korrekturen',
nav_compliance_pipeline: 'Compliance Pipeline',
nav_meet: 'Meet',
nav_alerts: 'Alerts',
nav_alerts_b2b: 'B2B Alerts',
nav_messages: 'Nachrichten',
nav_settings: 'Einstellungen',
// Stats Kacheln
stat_open_corrections: 'Offene Korrekturen',
stat_completed_week: 'Erledigt (Woche)',
stat_average: 'Durchschnitt',
stat_time_saved: 'Zeitersparnis',
// Klausuren
recent_klausuren: 'Aktuelle Klausuren',
show_all: 'Alle anzeigen',
students: 'Schüler',
status_in_progress: 'In Bearbeitung',
status_completed: 'Abgeschlossen',
// Quick Actions
quick_actions: 'Schnellaktionen',
create_klausur: 'Neue Klausur erstellen',
upload_work: 'Arbeiten hochladen',
magic_help: 'Magic Help',
fairness_check: 'Fairness-Check',
// AI Tipp
ai_tip: 'KI-Tipp',
ai_tip_text: '3 Klausuren warten auf Fairness-Check. Möchten Sie diese jetzt prüfen?',
// Footer / Common
imprint: 'Impressum',
privacy: 'Datenschutz',
contact: 'Kontakt',
legal: 'AGB',
cookie_settings: 'Cookie-Einstellungen',
copyright: '© 2025 BreakPilot. Alle Rechte vorbehalten.',
back_to_selection: 'Zurück zur Design-Auswahl',
language: 'Sprache',
// Theme
theme_light: 'Hell',
theme_dark: 'Dunkel',
// User Menu
logout: 'Abmelden',
},
en: {
dashboard: 'Dashboard',
dashboard_subtitle: 'Welcome back! Here is your overview.',
search_placeholder: 'Search...',
nav_dashboard: 'Dashboard',
nav_dokumente: 'Documents',
nav_klausuren: 'Exams',
nav_analytics: 'Analytics',
nav_vokabeln: 'Vocabulary',
nav_worksheet_editor: 'Worksheets',
nav_worksheet_cleanup: 'Cleanup',
nav_korrektur: 'Corrections',
nav_compliance_pipeline: 'Compliance Pipeline',
nav_meet: 'Meet',
nav_alerts: 'Alerts',
nav_alerts_b2b: 'B2B Alerts',
nav_messages: 'Messages',
nav_settings: 'Settings',
stat_open_corrections: 'Open Corrections',
stat_completed_week: 'Completed (Week)',
stat_average: 'Average',
stat_time_saved: 'Time Saved',
recent_klausuren: 'Recent Exams',
show_all: 'Show all',
students: 'Students',
status_in_progress: 'In Progress',
status_completed: 'Completed',
quick_actions: 'Quick Actions',
create_klausur: 'Create New Exam',
upload_work: 'Upload Papers',
magic_help: 'Magic Help',
fairness_check: 'Fairness Check',
ai_tip: 'AI Tip',
ai_tip_text: '3 exams are waiting for fairness check. Would you like to review them now?',
imprint: 'Imprint',
privacy: 'Privacy',
contact: 'Contact',
legal: 'Terms',
cookie_settings: 'Cookie Settings',
copyright: '© 2025 BreakPilot. All rights reserved.',
back_to_selection: 'Back to Design Selection',
language: 'Language',
theme_light: 'Light',
theme_dark: 'Dark',
logout: 'Log out',
},
tr: {
dashboard: 'Kontrol Paneli',
dashboard_subtitle: 'Tekrar hoş geldiniz! İşte genel bakışınız.',
search_placeholder: 'Ara...',
nav_dashboard: 'Kontrol Paneli',
nav_dokumente: 'Belgeler',
nav_klausuren: 'Sınavlar',
nav_analytics: 'Analizler',
nav_vokabeln: 'Kelimeler',
nav_worksheet_editor: 'Çalışma Sayfaları',
nav_worksheet_cleanup: 'Temizleme',
nav_korrektur: 'Düzeltmeler',
nav_compliance_pipeline: 'Uyum Boru Hattı',
nav_meet: 'Meet',
nav_alerts: 'Uyarılar',
nav_alerts_b2b: 'B2B Uyarılar',
nav_messages: 'Mesajlar',
nav_settings: 'Ayarlar',
stat_open_corrections: 'Açık Düzeltmeler',
stat_completed_week: 'Tamamlanan (Hafta)',
stat_average: 'Ortalama',
stat_time_saved: 'Kazanılan Zaman',
recent_klausuren: 'Son Sınavlar',
show_all: 'Tümünü göster',
students: 'Öğrenciler',
status_in_progress: 'Devam Ediyor',
status_completed: 'Tamamlandı',
quick_actions: 'Hızlı İşlemler',
create_klausur: 'Yeni Sınav Oluştur',
upload_work: 'Kağıt Yükle',
magic_help: 'Magic Help',
fairness_check: 'Adillik Kontrolü',
ai_tip: 'Yapay Zeka İpucu',
ai_tip_text: '3 sınav adillik kontrolü bekliyor. Şimdi incelemek ister misiniz?',
imprint: 'Künye',
privacy: 'Gizlilik',
contact: 'İletişim',
legal: 'Kullanım Koşulları',
cookie_settings: 'Çerez Ayarları',
copyright: '© 2025 BreakPilot. Tüm hakları saklıdır.',
back_to_selection: 'Tasarım Seçimine Dön',
language: 'Dil',
theme_light: 'Açık',
theme_dark: 'Koyu',
logout: ıkış yap',
},
ar: {
dashboard: 'لوحة التحكم',
dashboard_subtitle: 'مرحباً بعودتك! إليك نظرة عامة.',
search_placeholder: 'بحث...',
nav_dashboard: 'لوحة التحكم',
nav_dokumente: 'المستندات',
nav_klausuren: 'الامتحانات',
nav_analytics: 'التحليلات',
nav_vokabeln: 'المفردات',
nav_worksheet_editor: 'أوراق العمل',
nav_worksheet_cleanup: 'تنظيف',
nav_korrektur: 'التصحيحات',
nav_compliance_pipeline: 'خط أنابيب الامتثال',
nav_meet: 'اجتماع',
nav_alerts: 'تنبيهات',
nav_alerts_b2b: 'تنبيهات الشركات',
nav_messages: 'الرسائل',
nav_settings: 'الإعدادات',
stat_open_corrections: 'التصحيحات المفتوحة',
stat_completed_week: 'المكتمل (أسبوع)',
stat_average: 'المتوسط',
stat_time_saved: 'الوقت الموفر',
recent_klausuren: 'الامتحانات الأخيرة',
show_all: 'عرض الكل',
students: 'الطلاب',
status_in_progress: 'قيد التنفيذ',
status_completed: 'مكتمل',
quick_actions: 'إجراءات سريعة',
create_klausur: 'إنشاء امتحان جديد',
upload_work: 'تحميل الأوراق',
magic_help: 'المساعدة السحرية',
fairness_check: 'فحص العدالة',
ai_tip: 'نصيحة الذكاء الاصطناعي',
ai_tip_text: '3 امتحانات تنتظر فحص العدالة. هل تريد مراجعتها الآن؟',
imprint: 'البصمة',
privacy: 'الخصوصية',
contact: 'اتصل بنا',
legal: 'الشروط والأحكام',
cookie_settings: 'إعدادات ملفات تعريف الارتباط',
copyright: '© 2025 BreakPilot. جميع الحقوق محفوظة.',
back_to_selection: 'العودة لاختيار التصميم',
language: 'اللغة',
theme_light: 'فاتح',
theme_dark: 'داكن',
logout: 'تسجيل الخروج',
},
ru: {
dashboard: 'Панель управления',
dashboard_subtitle: 'С возвращением! Вот ваш обзор.',
search_placeholder: 'Поиск...',
nav_dashboard: 'Панель управления',
nav_dokumente: 'Документы',
nav_klausuren: 'Экзамены',
nav_analytics: 'Аналитика',
nav_vokabeln: 'Словарь',
nav_worksheet_editor: 'Рабочие листы',
nav_worksheet_cleanup: 'Очистка',
nav_korrektur: 'Проверки',
nav_compliance_pipeline: 'Пайплайн соответствия',
nav_meet: 'Встреча',
nav_alerts: 'Оповещения',
nav_alerts_b2b: 'B2B оповещения',
nav_messages: 'Сообщения',
nav_settings: 'Настройки',
stat_open_corrections: 'Открытые проверки',
stat_completed_week: 'Завершено (неделя)',
stat_average: 'Средний балл',
stat_time_saved: 'Сэкономлено времени',
recent_klausuren: 'Последние экзамены',
show_all: 'Показать все',
students: 'Студенты',
status_in_progress: 'В работе',
status_completed: 'Завершено',
quick_actions: 'Быстрые действия',
create_klausur: 'Создать экзамен',
upload_work: 'Загрузить работы',
magic_help: 'Magic Help',
fairness_check: 'Проверка справедливости',
ai_tip: 'Совет ИИ',
ai_tip_text: '3 экзамена ждут проверки справедливости. Хотите проверить сейчас?',
imprint: 'Импрессум',
privacy: 'Конфиденциальность',
contact: 'Контакт',
legal: 'Условия использования',
cookie_settings: 'Настройки cookie',
copyright: '© 2025 BreakPilot. Все права защищены.',
back_to_selection: 'Вернуться к выбору дизайна',
language: 'Язык',
theme_light: 'Светлая',
theme_dark: 'Тёмная',
logout: 'Выйти',
},
uk: {
dashboard: 'Панель керування',
dashboard_subtitle: 'З поверненням! Ось ваш огляд.',
search_placeholder: 'Пошук...',
nav_dashboard: 'Панель керування',
nav_dokumente: 'Документи',
nav_klausuren: 'Іспити',
nav_analytics: 'Аналітика',
nav_vokabeln: 'Словник',
nav_worksheet_editor: 'Робочі аркуші',
nav_worksheet_cleanup: 'Очищення',
nav_korrektur: 'Перевірки',
nav_compliance_pipeline: 'Пайплайн відповідності',
nav_meet: 'Зустріч',
nav_alerts: 'Сповіщення',
nav_alerts_b2b: 'B2B сповіщення',
nav_messages: 'Повідомлення',
nav_settings: 'Налаштування',
stat_open_corrections: 'Відкриті перевірки',
stat_completed_week: 'Завершено (тиждень)',
stat_average: 'Середній бал',
stat_time_saved: 'Збережено часу',
recent_klausuren: 'Останні іспити',
show_all: 'Показати все',
students: 'Студенти',
status_in_progress: 'В роботі',
status_completed: 'Завершено',
quick_actions: 'Швидкі дії',
create_klausur: 'Створити іспит',
upload_work: 'Завантажити роботи',
magic_help: 'Magic Help',
fairness_check: 'Перевірка справедливості',
ai_tip: 'Порада ШІ',
ai_tip_text: '3 іспити чекають перевірки справедливості. Бажаєте перевірити зараз?',
imprint: 'Імпресум',
privacy: 'Конфіденційність',
contact: 'Контакт',
legal: 'Умови використання',
cookie_settings: 'Налаштування cookie',
copyright: '© 2025 BreakPilot. Всі права захищені.',
back_to_selection: 'Повернутися до вибору дизайну',
language: 'Мова',
theme_light: 'Світла',
theme_dark: 'Темна',
logout: 'Вийти',
},
pl: {
dashboard: 'Panel główny',
dashboard_subtitle: 'Witaj ponownie! Oto twój przegląd.',
search_placeholder: 'Szukaj...',
nav_dashboard: 'Panel główny',
nav_dokumente: 'Dokumenty',
nav_klausuren: 'Egzaminy',
nav_analytics: 'Analizy',
nav_vokabeln: 'Słownictwo',
nav_worksheet_editor: 'Arkusze robocze',
nav_worksheet_cleanup: 'Czyszczenie',
nav_korrektur: 'Korekty',
nav_compliance_pipeline: 'Pipeline zgodności',
nav_meet: 'Spotkanie',
nav_alerts: 'Powiadomienia',
nav_alerts_b2b: 'Powiadomienia B2B',
nav_messages: 'Wiadomości',
nav_settings: 'Ustawienia',
stat_open_corrections: 'Otwarte korekty',
stat_completed_week: 'Ukończone (tydzień)',
stat_average: 'Średnia',
stat_time_saved: 'Zaoszczędzony czas',
recent_klausuren: 'Ostatnie egzaminy',
show_all: 'Pokaż wszystkie',
students: 'Uczniowie',
status_in_progress: 'W trakcie',
status_completed: 'Ukończone',
quick_actions: 'Szybkie akcje',
create_klausur: 'Utwórz egzamin',
upload_work: 'Prześlij prace',
magic_help: 'Magic Help',
fairness_check: 'Kontrola sprawiedliwości',
ai_tip: 'Wskazówka AI',
ai_tip_text: '3 egzaminy czekają na kontrolę sprawiedliwości. Chcesz je teraz sprawdzić?',
imprint: 'Impressum',
privacy: 'Prywatność',
contact: 'Kontakt',
legal: 'Regulamin',
cookie_settings: 'Ustawienia plików cookie',
copyright: '© 2025 BreakPilot. Wszelkie prawa zastrzeżone.',
back_to_selection: 'Powrót do wyboru projektu',
language: 'Język',
theme_light: 'Jasny',
theme_dark: 'Ciemny',
logout: 'Wyloguj się',
},
}
// LocalStorage Key
const STORAGE_KEY = 'bp_language'
// Aktuelle Sprache aus localStorage oder default
export function getStoredLanguage(): Language {
if (typeof window === 'undefined') return defaultLanguage
const stored = localStorage.getItem(STORAGE_KEY)
if (stored && stored in availableLanguages) {
return stored as Language
}
return defaultLanguage
}
// Sprache speichern
export function setStoredLanguage(lang: Language): void {
if (typeof window === 'undefined') return
localStorage.setItem(STORAGE_KEY, lang)
}
// Uebersetzung abrufen
export function t(key: string, lang: Language): string {
return translations[lang][key] || translations[defaultLanguage][key] || key
}
// Ist die Sprache RTL?
export function isRTL(lang: Language): boolean {
return availableLanguages[lang]?.rtl === true
}