chahinebrini fb97cda63d fix(ui): i18n device-locale + share-pill rounded-full + Profile debug-marker
stores/language.ts:
- init() override AsyncStorage-Wert nicht — wenn nichts gespeichert,
  i18n bleibt bei deviceLocale (von lib/i18n.ts via Localization.getLocales).
  Vorher: forced 'en' default obwohl App auf DE.

ComposeCard share-button:
- borderRadius:12 + height:50 → rounded-full px-5 h-11 (44pt)
- text-base → text-sm. Pill-Pattern wie Pre-Session.

app/profile/index.tsx:
- AppHeader title "Profil" → "Profil DEBUG-2300" — TEMPORARY marker
  zur Verifikation ob File geladen wird (user-suspect: routing zu altem
  File). Wird nach Test wieder entfernt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 23:10:20 +02:00

36 lines
1.0 KiB
TypeScript

import { create } from 'zustand';
import AsyncStorage from '@react-native-async-storage/async-storage';
import i18n from '../lib/i18n';
export type AppLanguage = 'de' | 'en';
const STORAGE_KEY = '@rebreak/language';
type LanguageState = {
language: AppLanguage;
setLanguage: (lang: AppLanguage) => Promise<void>;
init: () => Promise<void>;
};
export const useLanguageStore = create<LanguageState>((set) => ({
language: 'en',
init: async () => {
const stored = await AsyncStorage.getItem(STORAGE_KEY);
if (stored === 'de' || stored === 'en') {
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.
set({ language: (i18n.language === 'de' ? 'de' : 'en') as AppLanguage });
}
},
setLanguage: async (lang) => {
await AsyncStorage.setItem(STORAGE_KEY, lang);
await i18n.changeLanguage(lang);
set({ language: lang });
},
}));