import { create } from 'zustand'; import AsyncStorage from '@react-native-async-storage/async-storage'; import i18n from '../lib/i18n'; export type AppLanguage = 'de' | 'en' | 'fr'; const STORAGE_KEY = '@rebreak/language'; type LanguageState = { language: AppLanguage; setLanguage: (lang: AppLanguage) => Promise; init: () => Promise; }; export const useLanguageStore = create((set) => ({ language: 'en', init: async () => { const stored = await AsyncStorage.getItem(STORAGE_KEY); if (stored === 'de' || stored === 'en' || stored === 'fr') { await i18n.changeLanguage(stored); set({ language: stored }); } else { // Kein expliziter Wert gespeichert — i18n.ts hat bereits via deviceLocale // initialisiert (Localization.getLocales()). NICHT auf 'en' overriden. const detected = i18n.language === 'de' ? 'de' : i18n.language === 'fr' ? 'fr' : 'en'; set({ language: detected as AppLanguage }); } }, setLanguage: async (lang) => { await AsyncStorage.setItem(STORAGE_KEY, lang); await i18n.changeLanguage(lang); set({ language: lang }); }, }));