Initial commit for Greenlens

This commit is contained in:
Timo Knuth
2026-03-16 21:31:46 +01:00
parent 307135671f
commit 05d4f6e78b
573 changed files with 54233 additions and 1891 deletions

View File

@@ -16,9 +16,23 @@ export const translations = {
// Settings
darkMode: 'Dark Mode',
language: 'Sprache',
appearance: 'Design',
appearanceMode: 'Modus',
colorPalette: 'Farbpalette',
themeSystem: 'System',
themeLight: 'Hell',
themeDark: 'Dunkel',
paletteForest: 'Forest',
paletteOcean: 'Ocean',
paletteSunset: 'Sunset',
paletteMono: 'Mono',
// Empty States / Info
// Info
noPlants: 'Noch keine Pflanzen.',
nextStepsTitle: 'Deine nächsten Schritte',
stepScan: 'Erste Pflanze scannen',
stepLexicon: 'Pflanzenlexikon erkunden',
stepTheme: 'Design anpassen',
// Filters
allGood: 'Alles gut',
@@ -29,6 +43,17 @@ export const translations = {
categories: 'Kategorien entdecken',
resultsInPlants: 'Ergebnisse in "Meine Pflanzen"',
noResults: 'Keine Pflanzen gefunden.',
searchMyPlants: 'Meine Pflanzen',
searchLexicon: 'Lexikon',
searchAiSection: 'AI Deep Search',
searchDeepAction: 'Deep Search (AI)',
searchNoLocalResults: 'Keine Treffer in deiner Sammlung.',
searchNoLexiconResults: 'Keine Treffer im Lexikon.',
searchAiLoading: 'AI durchsucht den Katalog...',
searchAiNoResults: 'AI hat keine passenden Pflanzen gefunden.',
searchAiUnavailable: 'AI-Suche ist aktuell nicht verfügbar.',
searchHistory: 'Suchverlauf',
clearHistory: 'Verlauf löschen',
// Categories
catCareEasy: "Pflegeleicht",
@@ -37,6 +62,14 @@ export const translations = {
catPetFriendly: "Tierfreundlich",
catAirPurifier: "Luftreiniger",
catFlowering: "Blühend",
catBrightLight: "Helles Licht",
catSun: "Sonnig",
catHighHumidity: "Hohe Luftfeuchte",
catHanging: "Hängend",
catPatterned: "Gemustert",
catTree: "Bäume",
catLarge: "Groß",
catMedicinal: "Heilpflanzen",
// Dictionary
lexiconTitle: "Pflanzen-Lexikon",
@@ -52,12 +85,40 @@ export const translations = {
scanner: 'Scanner',
analyzing: 'Pflanze wird analysiert...',
localProcessing: "Lokale Verarbeitung",
registerToSave: "Registrieren zum Speichern",
// Scan Stages
scanStage1: "Bildqualität wird geprüft...",
scanStage2: "Blattstrukturen werden analysiert...",
scanStage3: "Abgleich mit Pflanzendatenbank...",
// Dashboard
greetingMorning: 'Guten Morgen,',
greetingAfternoon: 'Guten Tag,',
greetingEvening: 'Guten Abend,',
creditsLabel: 'Credits',
needsWaterToday: 'Heute gießen',
viewSchedule: 'Plan anzeigen',
all: 'Alle',
today: 'Heute',
week: 'Woche',
healthy: 'Gesund',
dormant: 'Ruhe',
thirsty: 'Durstig',
healthyStatus: 'Gesund',
nextWaterLabel: 'Gießen',
noneInFilter: 'Keine Pflanzen in diesem Filter.',
reminderTitle: 'Erinnerungen',
reminderNone: 'Heute ist keine Pflanze fällig.',
reminderDue: '{0} Pflanzen brauchen heute Wasser.',
plantsThirsty: '{0} deiner Pflanzen brauchen heute Wasser!',
collectionCount: '{0} Pflanzen',
more: 'weitere',
collectionTitle: 'Sammlung',
emptyCollectionTitle: 'Deine Sammlung ist noch leer',
emptyCollectionHint: 'Scanne deine erste Pflanze und starte deine digitale Sammlung.',
scanFirstPlant: 'Erste Pflanze scannen',
// Plant Card / Detail / Result
result: "Ergebnis",
match: "Übereinstimmung",
@@ -116,6 +177,37 @@ export const translations = {
reminderOn: "Aktiviert",
reminderOff: "Deaktiviert",
reminderPermissionNeeded: "Berechtigung für Benachrichtigungen erforderlich.",
// Gallery
galleryTitle: "Galerie",
addPhoto: "Foto hinzufügen",
noPhotos: "Noch keine Fotos",
// Tour
tourFabTitle: "📷 Pflanze scannen",
tourFabDesc: "Tippe hier um eine Pflanze zu fotografieren — die KI erkennt sie sofort.",
tourSearchTitle: "🔍 Pflanzenlexikon",
tourSearchDesc: "Durchsuche tausende Pflanzen oder lass die KI nach der perfekten suchen.",
tourProfileTitle: "👤 Dein Profil",
tourProfileDesc: "Passe Design, Sprache und Benachrichtigungen ganz nach deinem Geschmack an.",
// Onboarding
onboardingTitle1: "Pflanzen-Scanner",
onboardingTitle2: "Pflanzenpflege",
onboardingTitle3: "Dein Garten",
onboardingDesc1: "Scanne jede Pflanze und identifiziere sie sofort mit KI",
onboardingDesc2: "Erhalte personalisierte Pflegetipps und Gießerinnerungen",
onboardingDesc3: "Baue deine digitale Pflanzensammlung auf",
onboardingNext: "Weiter",
onboardingStart: "Los geht's",
onboardingTagline: "Deine Pflanzen. Deine Welt.",
onboardingFeatureScan: "Pflanzen scannen & erkennen",
onboardingFeatureReminder: "Gießerinnerungen & Pflege",
onboardingFeatureLexicon: "Digitales Pflanzen-Lexikon",
onboardingScanBtn: "Pflanze scannen",
onboardingRegister: "Registrieren",
onboardingLogin: "Anmelden",
onboardingDisclaimer: "Deine Daten bleiben privat und lokal auf deinem Gerät.",
},
en: {
tabPlants: 'Plants',
@@ -126,13 +218,38 @@ export const translations = {
settingsTitle: 'Settings',
darkMode: 'Dark Mode',
language: 'Language',
appearance: 'Appearance',
appearanceMode: 'Mode',
colorPalette: 'Color Palette',
themeSystem: 'System',
themeLight: 'Light',
themeDark: 'Dark',
paletteForest: 'Forest',
paletteOcean: 'Ocean',
paletteSunset: 'Sunset',
paletteMono: 'Mono',
noPlants: 'No plants yet.',
nextStepsTitle: 'Your next steps',
stepScan: 'Scan first plant',
stepLexicon: 'Explore plant lexicon',
stepTheme: 'Customize design',
allGood: 'All good',
toWater: 'To water',
searchPlaceholder: 'Search plants...',
categories: 'Discover Categories',
resultsInPlants: 'Results in "My Plants"',
noResults: 'No plants found.',
searchMyPlants: 'My Plants',
searchLexicon: 'Lexicon',
searchAiSection: 'AI Deep Search',
searchDeepAction: 'Deep Search (AI)',
searchNoLocalResults: 'No matches in your collection.',
searchNoLexiconResults: 'No matches in the lexicon.',
searchAiLoading: 'AI is searching the catalog...',
searchAiNoResults: 'AI found no matching plants.',
searchAiUnavailable: 'AI search is currently unavailable.',
searchHistory: 'Search history',
clearHistory: 'Clear history',
catCareEasy: "Easy Care",
catSucculents: "Succulents",
@@ -140,25 +257,61 @@ export const translations = {
catPetFriendly: "Pet Friendly",
catAirPurifier: "Air Purifier",
catFlowering: "Flowering",
catBrightLight: "Bright Light",
catSun: "Sunny",
catHighHumidity: "High Humidity",
catHanging: "Hanging",
catPatterned: "Patterned",
catTree: "Trees",
catLarge: "Large",
catMedicinal: "Medicinal",
lexiconTitle: "Plant Encyclopedia",
lexiconDesc: "Browse our database and find the perfect addition for your home.",
lexiconSearchPlaceholder: "Search encyclopedia...",
browseLexicon: "Browse Encyclopedia",
backToSearch: "Back to Search",
comingSoon: 'Coming Soon',
gallery: 'Gallery',
help: 'Help',
scanner: 'Scanner',
analyzing: 'Analyzing plant...',
localProcessing: "Local Processing",
// Misc
comingSoon: 'Coming Soon',
gallery: 'Gallery',
help: 'Help',
scanner: 'Scanner',
analyzing: 'Analyzing plant...',
localProcessing: "Local Processing",
registerToSave: "Sign up to save",
// Scan Stages
scanStage1: "Checking image quality...",
scanStage2: "Analyzing leaf structures...",
scanStage3: "Matching with plant database...",
// Dashboard
greetingMorning: 'Good morning,',
greetingAfternoon: 'Good afternoon,',
greetingEvening: 'Good evening,',
creditsLabel: 'Credits',
needsWaterToday: 'Needs water today',
viewSchedule: 'View Schedule',
all: 'All',
today: 'Today',
week: 'Week',
healthy: 'Healthy',
dormant: 'Dormant',
thirsty: 'Thirsty',
healthyStatus: 'Healthy',
nextWaterLabel: 'Water',
noneInFilter: 'No plants in this filter.',
reminderTitle: 'Reminders',
reminderNone: 'No plants are due today.',
reminderDue: '{0} plants need water today.',
plantsThirsty: '{0} of your plants are feeling thirsty!',
collectionCount: '{0} plants',
more: 'more',
collectionTitle: 'Collection',
emptyCollectionTitle: 'Your collection is still empty',
emptyCollectionHint: 'Scan your first plant to start building your digital garden.',
scanFirstPlant: 'Scan first plant',
result: "Result",
match: "Match",
careCheck: "Care Check",
@@ -212,6 +365,37 @@ export const translations = {
reminderOn: "Enabled",
reminderOff: "Disabled",
reminderPermissionNeeded: "Notification permission required.",
// Gallery
galleryTitle: "Gallery",
addPhoto: "Add Photo",
noPhotos: "No photos yet",
// Tour
tourFabTitle: "📷 Scan Plant",
tourFabDesc: "Tap here to photograph a plant — the AI recognizes it instantly.",
tourSearchTitle: "🔍 Plant Encyclopedia",
tourSearchDesc: "Search thousands of plants or let the AI find the perfect one.",
tourProfileTitle: "👤 Your Profile",
tourProfileDesc: "Customize design, language, and notifications to your liking.",
// Onboarding
onboardingTitle1: "Plant Scanner",
onboardingTitle2: "Plant Care",
onboardingTitle3: "Your Garden",
onboardingDesc1: "Scan any plant and identify it instantly with AI",
onboardingDesc2: "Get personalized care tips and watering reminders",
onboardingDesc3: "Build your digital plant collection",
onboardingNext: "Next",
onboardingStart: "Get Started",
onboardingTagline: "Your plants. Your world.",
onboardingFeatureScan: "Scan & identify plants",
onboardingFeatureReminder: "Watering reminders & care",
onboardingFeatureLexicon: "Digital plant encyclopedia",
onboardingScanBtn: "Scan Plant",
onboardingRegister: "Sign Up",
onboardingLogin: "Log In",
onboardingDisclaimer: "Your data stays private and local on your device.",
},
es: {
tabPlants: 'Plantas',
@@ -222,13 +406,38 @@ export const translations = {
settingsTitle: 'Ajustes',
darkMode: 'Modo Oscuro',
language: 'Idioma',
appearance: 'Apariencia',
appearanceMode: 'Modo',
colorPalette: 'Paleta',
themeSystem: 'Sistema',
themeLight: 'Claro',
themeDark: 'Oscuro',
paletteForest: 'Forest',
paletteOcean: 'Ocean',
paletteSunset: 'Sunset',
paletteMono: 'Mono',
noPlants: 'Aún no hay plantas.',
nextStepsTitle: 'Tus próximos pasos',
stepScan: 'Escanear primera planta',
stepLexicon: 'Explorar enciclopedia',
stepTheme: 'Personalizar diseño',
allGood: 'Todo bien',
toWater: 'Regar',
searchPlaceholder: 'Buscar plantas...',
categories: 'Descubrir Categorías',
resultsInPlants: 'Resultados en "Mis Plantas"',
noResults: 'No se encontraron plantas.',
searchMyPlants: 'Mis Plantas',
searchLexicon: 'Enciclopedia',
searchAiSection: 'Busqueda profunda AI',
searchDeepAction: 'Busqueda profunda (AI)',
searchNoLocalResults: 'No hay coincidencias en tu coleccion.',
searchNoLexiconResults: 'No hay coincidencias en la enciclopedia.',
searchAiLoading: 'AI esta buscando en el catalogo...',
searchAiNoResults: 'AI no encontro plantas compatibles.',
searchAiUnavailable: 'La busqueda AI no esta disponible ahora.',
searchHistory: 'Busquedas recientes',
clearHistory: 'Borrar historial',
catCareEasy: "Fácil Cuidado",
catSucculents: "Suculentas",
@@ -236,25 +445,61 @@ export const translations = {
catPetFriendly: "Pet Friendly",
catAirPurifier: "Purificador",
catFlowering: "Con Flores",
catBrightLight: "Luz Brillante",
catSun: "Sol",
catHighHumidity: "Alta Humedad",
catHanging: "Colgante",
catPatterned: "Con Patrón",
catTree: "Árboles",
catLarge: "Grande",
catMedicinal: "Medicinal",
lexiconTitle: "Enciclopedia",
lexiconDesc: "Explora nuestra base de datos y encuentra la adición perfecta para tu hogar.",
lexiconSearchPlaceholder: "Buscar en enciclopedia...",
browseLexicon: "Explorar Enciclopedia",
backToSearch: "Volver a Buscar",
comingSoon: 'Próximamente',
gallery: 'Galería',
help: 'Ayuda',
scanner: 'Escáner',
analyzing: 'Analizando planta...',
localProcessing: "Procesamiento Local",
// Misc
comingSoon: 'Próximamente',
gallery: 'Galería',
help: 'Ayuda',
scanner: 'Escáner',
analyzing: 'Analizando planta...',
localProcessing: "Procesamiento Local",
registerToSave: "Regístrate para guardar",
// Scan Stages
scanStage1: "Verificando calidad de imagen...",
scanStage2: "Analizando estructuras...",
scanStage3: "Comparando con base de datos...",
// Dashboard
greetingMorning: 'Buenos dias,',
greetingAfternoon: 'Buenas tardes,',
greetingEvening: 'Buenas noches,',
creditsLabel: 'Creditos',
needsWaterToday: 'Necesitan agua hoy',
viewSchedule: 'Ver horario',
all: 'Todas',
today: 'Hoy',
week: 'Semana',
healthy: 'Saludables',
dormant: 'Dormantes',
thirsty: 'Sedienta',
healthyStatus: 'Saludable',
nextWaterLabel: 'Riego',
noneInFilter: 'No hay plantas en este filtro.',
reminderTitle: 'Recordatorios',
reminderNone: 'No hay plantas pendientes para hoy.',
reminderDue: '{0} plantas necesitan agua hoy.',
plantsThirsty: '¡{0} de tus plantas tienen sed hoy!',
collectionCount: '{0} plantas',
more: 'más',
collectionTitle: 'Coleccion',
emptyCollectionTitle: 'Tu coleccion esta vacia',
emptyCollectionHint: 'Escanea tu primera planta para empezar tu coleccion digital.',
scanFirstPlant: 'Escanear primera planta',
result: "Resultado",
match: "Coincidencia",
careCheck: "Chequeo de Cuidados",
@@ -308,6 +553,37 @@ export const translations = {
reminderOn: "Activado",
reminderOff: "Desactivado",
reminderPermissionNeeded: "Permiso de notificación requerido.",
// Gallery
galleryTitle: "Galería",
addPhoto: "Añadir Foto",
noPhotos: "Sin fotos aún",
// Tour
tourFabTitle: "📷 Escanear Planta",
tourFabDesc: "Toca aquí para fotografiar una planta — la IA la reconoce al instante.",
tourSearchTitle: "🔍 Enciclopedia",
tourSearchDesc: "Busca en miles de plantas o deja que la IA encuentre la perfecta.",
tourProfileTitle: "👤 Tu Perfil",
tourProfileDesc: "Personaliza diseño, idioma y notificaciones a tu gusto.",
// Onboarding
onboardingTitle1: "Escáner de Plantas",
onboardingTitle2: "Cuidado de Plantas",
onboardingTitle3: "Tu Jardín",
onboardingDesc1: "Escanea cualquier planta e identifícala al instante con IA",
onboardingDesc2: "Obtén consejos de cuidado personalizados y recordatorios de riego",
onboardingDesc3: "Construye tu colección digital de plantas",
onboardingNext: "Siguiente",
onboardingStart: "Empezar",
onboardingTagline: "Tus plantas. Tu mundo.",
onboardingFeatureScan: "Escanea e identifica plantas",
onboardingFeatureReminder: "Recordatorios de riego y cuidado",
onboardingFeatureLexicon: "Enciclopedia digital de plantas",
onboardingScanBtn: "Escanear Planta",
onboardingRegister: "Registrarse",
onboardingLogin: "Iniciar sesión",
onboardingDisclaimer: "Tus datos permanecen privados y locales en tu dispositivo.",
}
};