chore(i18n,ui): keys for home/map/scan-detail + minor polish
i18n FR + EN :
- home.recentScans : 'Mes plantes récentes' / 'My recent plants'
- map.preview.{title,tapHint}
- myPlants.detail.rename{Title,Subtitle,Placeholder,Save}
- myPlants.toasts.renamed
App.tsx : retire NavigationBar.setBackgroundColorAsync + setPositionAsync
(navigation bar déjà bien gérée par expo-navigation-bar par défaut).
BottomTabNavigator + SettingsScreen : petits ajustements layout.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0ce7b3a718
commit
28d4fc176e
|
|
@ -15,8 +15,6 @@ import RootNavigator from '@/navigation/RootNavigator';
|
||||||
export default function App() {
|
export default function App() {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (Platform.OS === 'android') {
|
if (Platform.OS === 'android') {
|
||||||
NavigationBar.setBackgroundColorAsync('transparent');
|
|
||||||
NavigationBar.setPositionAsync('absolute');
|
|
||||||
NavigationBar.setButtonStyleAsync('dark');
|
NavigationBar.setButtonStyleAsync('dark');
|
||||||
}
|
}
|
||||||
}, []);
|
}, []);
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@
|
||||||
"startScanning": "Start scanning!",
|
"startScanning": "Start scanning!",
|
||||||
"tapToStart": "Tap to scan",
|
"tapToStart": "Tap to scan",
|
||||||
"frequentDiseases": "Frequent diseases",
|
"frequentDiseases": "Frequent diseases",
|
||||||
|
"recentScans": "My recent plants",
|
||||||
"seasonAlert": {
|
"seasonAlert": {
|
||||||
"title": "High downy mildew risk",
|
"title": "High downy mildew risk",
|
||||||
"message": "Rain and heat expected this week. Keep an eye on your leaves."
|
"message": "Rain and heat expected this week. Keep an eye on your leaves."
|
||||||
|
|
@ -275,7 +276,8 @@
|
||||||
"toasts": {
|
"toasts": {
|
||||||
"favorited": "Added to favorites",
|
"favorited": "Added to favorites",
|
||||||
"unfavorited": "Removed from favorites",
|
"unfavorited": "Removed from favorites",
|
||||||
"deleted": "Scan deleted"
|
"deleted": "Scan deleted",
|
||||||
|
"renamed": "Name updated"
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
"healthy": "Healthy",
|
"healthy": "Healthy",
|
||||||
|
|
@ -309,7 +311,11 @@
|
||||||
"shareText": "My VinEye scan",
|
"shareText": "My VinEye scan",
|
||||||
"shareError": "Could not share the scan",
|
"shareError": "Could not share the scan",
|
||||||
"notFound": "Scan not found",
|
"notFound": "Scan not found",
|
||||||
"goBack": "Go back"
|
"goBack": "Go back",
|
||||||
|
"renameTitle": "Rename plant",
|
||||||
|
"renameSubtitle": "Give this plant a custom name so you can recognize it easily.",
|
||||||
|
"renamePlaceholder": "E.g. Garden vine",
|
||||||
|
"renameSave": "Save"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"guides": {
|
"guides": {
|
||||||
|
|
@ -545,6 +551,10 @@
|
||||||
"subtitle": "Give this plant a custom name so you can recognize it easily.",
|
"subtitle": "Give this plant a custom name so you can recognize it easily.",
|
||||||
"placeholder": "E.g. Garden vine",
|
"placeholder": "E.g. Garden vine",
|
||||||
"save": "Save"
|
"save": "Save"
|
||||||
|
},
|
||||||
|
"preview": {
|
||||||
|
"title": "Preview",
|
||||||
|
"tapHint": "Tap again to view details"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"location": {
|
"location": {
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@
|
||||||
"startScanning": "Commencez à scanner !",
|
"startScanning": "Commencez à scanner !",
|
||||||
"tapToStart": "Appuyez pour scanner",
|
"tapToStart": "Appuyez pour scanner",
|
||||||
"frequentDiseases": "Maladies fréquentes",
|
"frequentDiseases": "Maladies fréquentes",
|
||||||
|
"recentScans": "Mes plantes récentes",
|
||||||
"seasonAlert": {
|
"seasonAlert": {
|
||||||
"title": "Risque mildiou élevé",
|
"title": "Risque mildiou élevé",
|
||||||
"message": "Pluie et chaleur prévues cette semaine. Surveillez vos feuilles."
|
"message": "Pluie et chaleur prévues cette semaine. Surveillez vos feuilles."
|
||||||
|
|
@ -275,7 +276,8 @@
|
||||||
"toasts": {
|
"toasts": {
|
||||||
"favorited": "Ajouté aux favoris",
|
"favorited": "Ajouté aux favoris",
|
||||||
"unfavorited": "Retiré des favoris",
|
"unfavorited": "Retiré des favoris",
|
||||||
"deleted": "Scan supprimé"
|
"deleted": "Scan supprimé",
|
||||||
|
"renamed": "Nom mis à jour"
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
"healthy": "Saine",
|
"healthy": "Saine",
|
||||||
|
|
@ -309,7 +311,11 @@
|
||||||
"shareText": "Mon scan VinEye",
|
"shareText": "Mon scan VinEye",
|
||||||
"shareError": "Impossible de partager le scan",
|
"shareError": "Impossible de partager le scan",
|
||||||
"notFound": "Scan introuvable",
|
"notFound": "Scan introuvable",
|
||||||
"goBack": "Retour"
|
"goBack": "Retour",
|
||||||
|
"renameTitle": "Renommer la plante",
|
||||||
|
"renameSubtitle": "Donnez un nom personnalisé à cette plante pour la retrouver plus facilement.",
|
||||||
|
"renamePlaceholder": "Ex. Vigne du jardin",
|
||||||
|
"renameSave": "Enregistrer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"guides": {
|
"guides": {
|
||||||
|
|
@ -545,6 +551,10 @@
|
||||||
"subtitle": "Donnez un nom personnalisé à cette plante pour la retrouver plus facilement.",
|
"subtitle": "Donnez un nom personnalisé à cette plante pour la retrouver plus facilement.",
|
||||||
"placeholder": "Ex. Vigne du jardin",
|
"placeholder": "Ex. Vigne du jardin",
|
||||||
"save": "Enregistrer"
|
"save": "Enregistrer"
|
||||||
|
},
|
||||||
|
"preview": {
|
||||||
|
"title": "Aperçu",
|
||||||
|
"tapHint": "Appuyez à nouveau pour voir les détails"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"location": {
|
"location": {
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ function MyCustomTabBar({ state, descriptors, navigation }: any) {
|
||||||
paddingBottom: insets.bottom,
|
paddingBottom: insets.bottom,
|
||||||
paddingTop: 6,
|
paddingTop: 6,
|
||||||
alignItems: "flex-end",
|
alignItems: "flex-end",
|
||||||
|
overflow: "visible",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{state.routes.map((route: any, index: number) => {
|
{state.routes.map((route: any, index: number) => {
|
||||||
|
|
@ -71,21 +72,24 @@ function MyCustomTabBar({ state, descriptors, navigation }: any) {
|
||||||
style={{
|
style={{
|
||||||
flex: 1,
|
flex: 1,
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
justifyContent: "center",
|
justifyContent: "flex-end",
|
||||||
|
paddingBottom: 8,
|
||||||
|
overflow: "visible",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
|
position: "absolute",
|
||||||
|
bottom: 18,
|
||||||
width: 56,
|
width: 56,
|
||||||
height: 56,
|
height: 56,
|
||||||
borderRadius: 28,
|
borderRadius: 28,
|
||||||
backgroundColor: colors.primary[800],
|
backgroundColor: colors.primary[800],
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
justifyContent: "center",
|
justifyContent: "center",
|
||||||
marginTop: -25,
|
|
||||||
shadowColor: colors.primary[900],
|
shadowColor: colors.primary[900],
|
||||||
shadowOffset: { width: 0, height: 0 },
|
shadowOffset: { width: 0, height: 4 },
|
||||||
shadowOpacity: 0.3,
|
shadowOpacity: 0.25,
|
||||||
shadowRadius: 8,
|
shadowRadius: 8,
|
||||||
elevation: 8,
|
elevation: 8,
|
||||||
}}
|
}}
|
||||||
|
|
|
||||||
|
|
@ -92,12 +92,12 @@ export default function SettingsScreen() {
|
||||||
rightText: i18n.language === "fr" ? "Français" : "English",
|
rightText: i18n.language === "fr" ? "Français" : "English",
|
||||||
onPress: handleLanguageToggle,
|
onPress: handleLanguageToggle,
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
icon: "notifications-outline",
|
// icon: "notifications-outline",
|
||||||
label: t("settings.notifications.label"),
|
// label: t("settings.notifications.label"),
|
||||||
toggleValue: notificationsEnabled,
|
// toggleValue: notificationsEnabled,
|
||||||
onToggle: handleNotificationsToggle,
|
// onToggle: handleNotificationsToggle,
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
icon: "shield-outline",
|
icon: "shield-outline",
|
||||||
label: t("settings.privacy"),
|
label: t("settings.privacy"),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue