import { Language } from '../types'; /** * EINZIGE QUELLE FUER SOCIAL PROOF IN DER APP. * * Regel: Hier steht ausschliesslich, was im App Store / Play Store nachweisbar ist. * Keine erfundenen Zitate, keine geschaetzten Sterne, keine Rundungen nach oben. * Wenn eine Angabe nicht belegbar ist, wird sie hier entfernt - nicht im UI kaschiert. * * Stand: 27.07.2026 - 6 Bewertungen, Durchschnitt 5,0. * Bei jeder Aktualisierung des Store-Listings hier nachziehen. */ export const APP_STORE_RATING = { value: 5.0, count: 6, /** Datum der letzten Verifikation gegen App Store Connect. */ verifiedOn: '2026-07-27', }; export type Testimonial = { /** Titel der Bewertung im Store. */ title: string; /** Wortlaut exakt wie im Store veroeffentlicht (gekuerzt nur mit […]). */ quote: string; /** Store-Anzeigename - kein erfundener Klarname. */ author: string; stars: 1 | 2 | 3 | 4 | 5; /** Sprache, in der die Bewertung tatsaechlich verfasst wurde. */ sourceLanguage: Language; /** Veroeffentlichungsdatum im Store (ISO), fuer die Nachvollziehbarkeit. */ publishedOn: string; /** * Wie stark die Bewertung die Positionierung stuetzt (1 = staerkste). * Kriterium: benennt sie Triage ("sagt mir, was los ist und was ich tun soll") * oder nur allgemeine Zufriedenheit? Erstere ueberzeugt, letztere ist Rauschen. */ priority: number; /** Freigegebene Uebersetzungen. Wird im UI als Uebersetzung gekennzeichnet. */ translations?: Partial>; }; /** * ECHTE Store-Bewertungen, Stand 27.07.2026 (6 von 6, alle 5 Sterne). * Wortlaut, Anzeigename und Sternezahl unveraendert uebernommen. */ export const TESTIMONIALS: Testimonial[] = [ { // Staerkste Bewertung im gesamten Bestand: beschreibt exakt die Positionierung // (Triage statt Identifikation) in den Worten eines echten Nutzers. title: 'Exactly what I needed', quote: "Finally an app that actually helps me keep my plants alive. Snap a photo and it tells you what's wrong and how to fix it - no more guessing why the leaves are turning yellow. Super easy to use and the care reminders are a nice touch. Highly recommend if you're bad at keeping plants alive like me!", author: 'Chrispetersssss', stars: 5, sourceLanguage: 'en', publishedOn: '2026-07-22', priority: 1, translations: { de: 'Endlich eine App, die mir wirklich hilft, meine Pflanzen am Leben zu halten. Foto machen und sie sagt dir, was nicht stimmt und wie du es behebst - kein Rätselraten mehr, warum die Blätter gelb werden. Sehr einfach zu bedienen, und die Pflege-Erinnerungen sind ein netter Zusatz. Klare Empfehlung, wenn du wie ich schlecht darin bist, Pflanzen am Leben zu halten!', es: 'Por fin una app que de verdad me ayuda a mantener vivas mis plantas. Haces una foto y te dice qué le pasa y cómo arreglarlo: se acabó adivinar por qué se ponen amarillas las hojas. Muy fácil de usar, y los recordatorios de cuidado son un buen extra. Muy recomendable si se te dan mal las plantas, como a mí.', }, }, { // Direkter Wettbewerbsvergleich - stuetzt Belief 5 (Abo statt Alternativen). title: 'Wow', quote: 'Die Pflanzenanalyse toppt echt jede andere App die ich bisher ausprobiert habe! Der Hammer!', author: 'warumistjedernamevergeben', stars: 5, sourceLanguage: 'de', publishedOn: '2026-04-12', priority: 2, translations: { en: 'The plant analysis genuinely beats every other app I have tried so far! Amazing!', es: '¡El análisis de plantas supera de verdad a cualquier otra app que haya probado! ¡Increíble!', }, }, { // Trifft den Avatar woertlich ("keinen gruenen Daumen"). title: 'Mega', quote: 'Ich habe schon viele Apps ausprobiert, weil ich keinen grünen Daumen habe. Keine hat mich bisher so überzeugt wie diese ! Kann sie jedem ans Herz legen', author: 'Annastasia2104', stars: 5, sourceLanguage: 'de', publishedOn: '2026-07-02', priority: 3, translations: { en: 'I have tried a lot of apps because I do not have a green thumb. None has convinced me as much as this one! I can recommend it to anyone.', es: 'He probado muchas apps porque no tengo mano para las plantas. ¡Ninguna me había convencido tanto como esta! Se la recomiendo a cualquiera.', }, }, { title: 'Beste App', quote: 'Bisher mit Abstand die beste App für meine Pflanzen!', author: 'lina_einhorn', stars: 5, sourceLanguage: 'de', publishedOn: '2026-07-02', priority: 4, translations: { en: 'By far the best app for my plants so far!', es: '¡Con diferencia, la mejor app para mis plantas hasta ahora!', }, }, { title: 'Endlich ....', quote: '… vergesse ich nicht, meine Pflanzen zu gießen, um zu pflegen!!! Einfache Bedienung - top App', author: 'ClaKnu', stars: 5, sourceLanguage: 'de', publishedOn: '2026-07-02', priority: 5, translations: { en: '… I no longer forget to water and care for my plants!!! Easy to use - top app', es: '… ¡ya no me olvido de regar y cuidar mis plantas!!! Fácil de usar, app estupenda', }, }, { title: 'Tolle App', quote: 'Ich bin richtig zufrieden ! Tolle App', author: 'annabelle_gouz', stars: 5, sourceLanguage: 'de', publishedOn: '2026-07-04', priority: 6, translations: { en: 'I am really happy with it! Great app', es: '¡Estoy muy contenta! Gran app', }, }, ]; export type DisplayTestimonial = { title: string; quote: string; author: string; stars: 1 | 2 | 3 | 4 | 5; /** true, wenn der angezeigte Text eine Uebersetzung des Originals ist. */ isTranslated: boolean; }; /** * Waehlt die staerkste Bewertung fuer die UI-Sprache. * * Vorrang hat eine im Original passende Sprache; gibt es keine, wird die * hoechstpriorisierte Bewertung mit freigegebener Uebersetzung genommen und * im UI als Uebersetzung gekennzeichnet. Nie wird ein fremdsprachiges * Original unkommentiert als muttersprachlich ausgegeben. */ export const getTestimonialForLanguage = (language: Language): DisplayTestimonial | null => { if (TESTIMONIALS.length === 0) return null; const byPriority = [...TESTIMONIALS].sort((a, b) => a.priority - b.priority); const native = byPriority.find((t) => t.sourceLanguage === language); if (native) { return { title: native.title, quote: native.quote, author: native.author, stars: native.stars, isTranslated: false, }; } const translated = byPriority.find((t) => t.translations?.[language]); if (translated) { return { title: translated.title, quote: translated.translations![language]!, author: translated.author, stars: translated.stars, isTranslated: true, }; } return null; }; /** Hinweis, der erscheint, wenn eine Bewertung nicht in der UI-Sprache verfasst wurde. */ export const translatedNote = (language: Language): string => { if (language === 'de') return 'Übersetzt'; if (language === 'es') return 'Traducido'; return 'Translated'; };