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>
This commit is contained in:
parent
922d5dc876
commit
fb97cda63d
@ -156,7 +156,7 @@ export default function ProfileScreen() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={{ flex: 1, backgroundColor: '#ffffff' }}>
|
<View style={{ flex: 1, backgroundColor: '#ffffff' }}>
|
||||||
<AppHeader showBack title="Profil" />
|
<AppHeader showBack title="Profil DEBUG-2300" />
|
||||||
<ScrollView
|
<ScrollView
|
||||||
ref={scrollViewRef}
|
ref={scrollViewRef}
|
||||||
style={{ flex: 1 }}
|
style={{ flex: 1 }}
|
||||||
|
|||||||
@ -163,18 +163,15 @@ export function ComposeCard({ onPosted }: Props) {
|
|||||||
<Pressable
|
<Pressable
|
||||||
onPressIn={() => { if (!content.trim() || posting) return; submit(); }}
|
onPressIn={() => { if (!content.trim() || posting) return; submit(); }}
|
||||||
disabled={!content.trim() || posting}
|
disabled={!content.trim() || posting}
|
||||||
className="bg-rebreak-500 items-center justify-center"
|
className="bg-rebreak-500 items-center justify-center rounded-full px-5 h-11"
|
||||||
style={({ pressed }) => ({
|
style={({ pressed }) => ({
|
||||||
height: 50,
|
|
||||||
paddingHorizontal: 24,
|
|
||||||
borderRadius: 12,
|
|
||||||
opacity: pressed || !content.trim() || posting ? 0.5 : 1,
|
opacity: pressed || !content.trim() || posting ? 0.5 : 1,
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{posting ? (
|
{posting ? (
|
||||||
<ActivityIndicator size="small" color="#fff" />
|
<ActivityIndicator size="small" color="#fff" />
|
||||||
) : (
|
) : (
|
||||||
<Text className="text-white text-base" style={{ fontFamily: 'Nunito_600SemiBold' }}>{t('community.share')}</Text>
|
<Text className="text-white text-sm" style={{ fontFamily: 'Nunito_600SemiBold' }}>{t('community.share')}</Text>
|
||||||
)}
|
)}
|
||||||
</Pressable>
|
</Pressable>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
@ -17,9 +17,14 @@ export const useLanguageStore = create<LanguageState>((set) => ({
|
|||||||
|
|
||||||
init: async () => {
|
init: async () => {
|
||||||
const stored = await AsyncStorage.getItem(STORAGE_KEY);
|
const stored = await AsyncStorage.getItem(STORAGE_KEY);
|
||||||
const lang: AppLanguage = stored === 'de' || stored === 'en' ? stored : 'en';
|
if (stored === 'de' || stored === 'en') {
|
||||||
await i18n.changeLanguage(lang);
|
await i18n.changeLanguage(stored);
|
||||||
set({ language: lang });
|
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) => {
|
setLanguage: async (lang) => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user