Skip to content

Commit 5bbbbde

Browse files
authored
Merge pull request #1157 from ayinde38/feat/issue-1078-i18n-screens
feat(mobile): route HomeScreen through the i18n engine
2 parents 12f2764 + 901b255 commit 5bbbbde

6 files changed

Lines changed: 84 additions & 13 deletions

File tree

mobile/src/i18n/locales/ar.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,20 @@ const ar = {
175175
languageChanged: 'تم تحديث اللغة إلى {{language}}',
176176
rtlNote: 'تم تفعيل تخطيط اليمين إلى اليسار',
177177
},
178+
home: {
179+
greeting: 'مرحبًا، صانع Stellar',
180+
subtitle: 'تابع المحافظ الرائجة والطلب على المشاريع وأمّن جلستك عبر الدخول البيومتري.',
181+
useBiometrics: 'استخدام البصمة',
182+
refresh: 'تحديث',
183+
audio: 'الصوت',
184+
multiSig: 'التوقيع المتعدد',
185+
peerTransfer: 'تحويل بين الأقران',
186+
trendingTitle: 'المحافظ الرائجة',
187+
trendingCaption: 'مختارة بناءً على أبرز نشاط للمستخدمين.',
188+
cachedData: 'بيانات مخزّنة مؤقتًا من {{time}}',
189+
loadingAnalytics: 'جارٍ تحميل تحليلات المحفظة…',
190+
projectBountyFeed: 'موجز المشاريع والمكافآت',
191+
},
178192
};
179193

180194
export default ar;

mobile/src/i18n/locales/de.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,20 @@ const de = {
175175
languageChanged: 'Sprache aktualisiert: {{language}}',
176176
rtlNote: 'Rechts-nach-links-Layout aktiviert',
177177
},
178+
home: {
179+
greeting: 'Hallo, Stellar-Creator',
180+
subtitle: 'Verfolge angesagte Portfolios und Projektnachfrage und sichere deine Sitzung per biometrischem Zugang.',
181+
useBiometrics: 'Biometrie verwenden',
182+
refresh: 'Aktualisieren',
183+
audio: 'Audio',
184+
multiSig: 'Multi-Signatur',
185+
peerTransfer: 'Peer-Übertragung',
186+
trendingTitle: 'Angesagte Portfolios',
187+
trendingCaption: 'Ausgewählt nach der wichtigsten Nutzeraktivität.',
188+
cachedData: 'Zwischengespeicherte Daten von {{time}}',
189+
loadingAnalytics: 'Portfolio-Analysen werden geladen…',
190+
projectBountyFeed: 'Projekt- und Bounty-Feed',
191+
},
178192
};
179193

180194
export default de;

mobile/src/i18n/locales/en.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,20 @@ const en = {
176176
languageChanged: 'Language updated to {{language}}',
177177
rtlNote: 'Right-to-left layout enabled',
178178
},
179+
home: {
180+
greeting: 'Hello, Stellar Creator',
181+
subtitle: 'Track trending portfolios, project demand, and secure your session with biometric access.',
182+
useBiometrics: 'Use Biometrics',
183+
refresh: 'Refresh',
184+
audio: 'Audio',
185+
multiSig: 'Multi-Sig',
186+
peerTransfer: 'Peer Transfer',
187+
trendingTitle: 'Trending portfolios',
188+
trendingCaption: 'Selected from top user activity.',
189+
cachedData: 'Cached data from {{time}}',
190+
loadingAnalytics: 'Loading portfolio analytics…',
191+
projectBountyFeed: 'Project & Bounty feed',
192+
},
179193
};
180194

181195
export default en;

mobile/src/i18n/locales/es.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,20 @@ const es = {
175175
languageChanged: 'Idioma actualizado a {{language}}',
176176
rtlNote: 'Diseño de derecha a izquierda activado',
177177
},
178+
home: {
179+
greeting: 'Hola, creador de Stellar',
180+
subtitle: 'Sigue los portafolios en tendencia, la demanda de proyectos y protege tu sesión con acceso biométrico.',
181+
useBiometrics: 'Usar biometría',
182+
refresh: 'Actualizar',
183+
audio: 'Audio',
184+
multiSig: 'Multifirma',
185+
peerTransfer: 'Transferencia entre pares',
186+
trendingTitle: 'Portafolios en tendencia',
187+
trendingCaption: 'Seleccionados según la actividad principal de los usuarios.',
188+
cachedData: 'Datos en caché de {{time}}',
189+
loadingAnalytics: 'Cargando análisis del portafolio…',
190+
projectBountyFeed: 'Proyectos y recompensas',
191+
},
178192
};
179193

180194
export default es;

mobile/src/i18n/locales/fr.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,20 @@ const fr = {
175175
languageChanged: 'Langue mise à jour : {{language}}',
176176
rtlNote: 'Mise en page droite-à-gauche activée',
177177
},
178+
home: {
179+
greeting: 'Bonjour, créateur Stellar',
180+
subtitle: 'Suivez les portfolios tendance, la demande de projets et sécurisez votre session par accès biométrique.',
181+
useBiometrics: 'Utiliser la biométrie',
182+
refresh: 'Actualiser',
183+
audio: 'Audio',
184+
multiSig: 'Multisignature',
185+
peerTransfer: 'Transfert pair à pair',
186+
trendingTitle: 'Portfolios tendance',
187+
trendingCaption: "Sélectionnés d'après l'activité principale des utilisateurs.",
188+
cachedData: 'Données en cache du {{time}}',
189+
loadingAnalytics: 'Chargement des analyses du portfolio…',
190+
projectBountyFeed: 'Fil des projets et primes',
191+
},
178192
};
179193

180194
export default fr;

mobile/src/screens/HomeScreen.tsx

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import * as Haptics from "expo-haptics";
1414
import { useNavigation } from "@react-navigation/native";
1515
import { useRouter } from "expo-router";
1616
import { useTheme } from "../theme/ThemeProvider";
17+
import { useI18n } from "../i18n/I18nProvider";
1718
import { useOfflineData } from "../hooks/useOfflineData";
1819
import { useInfiniteScroll } from "../hooks/useInfiniteScroll";
1920
import {
@@ -152,6 +153,7 @@ async function fetchHomeData(): Promise<HomeData> {
152153

153154
export function HomeScreen() {
154155
const { colors, isDark } = useTheme();
156+
const { t } = useI18n();
155157
const router = useRouter();
156158
const navigation =
157159
useNavigation<NativeStackNavigationProp<RootStackParamList>>();
@@ -219,12 +221,12 @@ export function HomeScreen() {
219221
<View style={styles.section}>
220222
<View style={styles.sectionHeader}>
221223
<Text style={[styles.sectionTitle, { color: colors.text }]}>
222-
Trending portfolios
224+
{t("home.trendingTitle")}
223225
</Text>
224226
<Text
225227
style={[styles.sectionCaption, { color: colors.textSecondary }]}
226228
>
227-
Selected from top user activity.
229+
{t("home.trendingCaption")}
228230
</Text>
229231
</View>
230232
<FlatList
@@ -284,44 +286,43 @@ export function HomeScreen() {
284286
>
285287
<View>
286288
<Text style={[styles.title, { color: colors.text }]}>
287-
Hello, Stellar Creator
289+
{t("home.greeting")}
288290
</Text>
289291
<Text style={[styles.subtitle, { color: colors.textSecondary }]}>
290-
Track trending portfolios, project demand, and secure your session
291-
with biometric access.
292+
{t("home.subtitle")}
292293
</Text>
293294
</View>
294295
<View style={styles.heroActions}>
295296
<ActionButton
296-
title="Use Biometrics"
297+
title={t("home.useBiometrics")}
297298
onPress={() => navigation.navigate("BiometricAuth")}
298299
variant="primary"
299300
accessibilityLabel="Open biometric authentication screen"
300301
/>
301302
<ActionButton
302-
title="Refresh"
303+
title={t("home.refresh")}
303304
onPress={handleRefresh}
304305
variant="secondary"
305306
accessibilityLabel="Refresh home content"
306307
/>
307308
</View>
308309
<View style={styles.featureActions}>
309310
<ActionButton
310-
title="Audio"
311+
title={t("home.audio")}
311312
onPress={handleNavigateToAudio}
312313
variant="secondary"
313314
style={styles.featureButton}
314315
accessibilityLabel="Open audio playback screen"
315316
/>
316317
<ActionButton
317-
title="Multi-Sig"
318+
title={t("home.multiSig")}
318319
onPress={handleNavigateToMultiSig}
319320
variant="secondary"
320321
style={styles.featureButton}
321322
accessibilityLabel="Open multi-signature approval screen"
322323
/>
323324
<ActionButton
324-
title="Peer Transfer"
325+
title={t("home.peerTransfer")}
325326
onPress={handleNavigateToP2P}
326327
variant="secondary"
327328
style={styles.featureButton}
@@ -341,7 +342,7 @@ export function HomeScreen() {
341342
]}
342343
>
343344
<Text style={[styles.staleText, { color: colors.warning }]}>
344-
Cached data from {cachedAt.toLocaleTimeString()}
345+
{t("home.cachedData", { time: cachedAt.toLocaleTimeString() })}
345346
</Text>
346347
</View>
347348
)}
@@ -350,7 +351,7 @@ export function HomeScreen() {
350351
<View style={styles.loadingWrapper}>
351352
<ActivityIndicator color={colors.primary} size="large" />
352353
<Text style={[styles.loadingText, { color: colors.textSecondary }]}>
353-
Loading portfolio analytics…
354+
{t("home.loadingAnalytics")}
354355
</Text>
355356
</View>
356357
) : (
@@ -359,7 +360,7 @@ export function HomeScreen() {
359360
{trendingSection}
360361
<ProjectBountyList
361362
items={data?.projectBountyItems ?? []}
362-
title="Project & Bounty feed"
363+
title={t("home.projectBountyFeed")}
363364
onSelect={onItemSelect}
364365
/>
365366
</>

0 commit comments

Comments
 (0)