diff --git a/client/src/components/Settings/AboutTab.tsx b/client/src/components/Settings/AboutTab.tsx index d1fd0ce0..0087d4b9 100644 --- a/client/src/components/Settings/AboutTab.tsx +++ b/client/src/components/Settings/AboutTab.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { Info, Coffee, Heart, ExternalLink, Bug, Lightbulb, BookOpen } from 'lucide-react' +import { Info, Coffee, Heart, ExternalLink, Bug, Lightbulb, BookOpen, Tent, Compass, Plane, Crown, Infinity as InfinityIcon } from 'lucide-react' import { useTranslation } from '../../i18n' import Section from './Section' @@ -7,8 +7,229 @@ interface Props { appVersion: string } +type SupporterTierId = 'no_return_ticket' | 'lost_luggage_vip' | 'business_class_dreamer' | 'budget_traveller' | 'hostel_bunkmate' + +interface SupporterTier { + id: SupporterTierId + labelKey: string + price: string + gradient: string + glow: string + icon: typeof Tent +} + +const SUPPORTER_TIERS: SupporterTier[] = [ + { id: 'no_return_ticket', labelKey: 'settings.about.supporter.tier.noReturnTicket', price: '∞', gradient: 'linear-gradient(135deg, #fbbf24, #ec4899 55%, #6366f1)', glow: 'rgba(236,72,153,0.45)', icon: InfinityIcon }, + { id: 'lost_luggage_vip', labelKey: 'settings.about.supporter.tier.lostLuggageVip', price: '$30', gradient: 'linear-gradient(135deg, #a855f7, #ec4899)', glow: 'rgba(168,85,247,0.35)', icon: Crown }, + { id: 'business_class_dreamer', labelKey: 'settings.about.supporter.tier.businessClassDreamer', price: '$15', gradient: 'linear-gradient(135deg, #6366f1, #0ea5e9)', glow: 'rgba(99,102,241,0.35)', icon: Plane }, + { id: 'budget_traveller', labelKey: 'settings.about.supporter.tier.budgetTraveller', price: '$10', gradient: 'linear-gradient(135deg, #14b8a6, #06b6d4)', glow: 'rgba(20,184,166,0.3)', icon: Compass }, + { id: 'hostel_bunkmate', labelKey: 'settings.about.supporter.tier.hostelBunkmate', price: '$5', gradient: 'linear-gradient(135deg, #64748b, #94a3b8)', glow: 'rgba(100,116,139,0.25)', icon: Tent }, +] + +interface Supporter { + username: string + tier: SupporterTierId + since: string + link?: string +} + +const SUPPORTERS: Supporter[] = [ + { username: 'Someone', tier: 'hostel_bunkmate', since: '2026-04' }, +] + +function SupporterSection({ t, locale }: { t: (key: string, vars?: Record) => string; locale: string }) { + if (SUPPORTERS.length === 0) return null + + const formatSince = (yearMonth: string): string => { + const [y, m] = yearMonth.split('-').map(Number) + if (!y || !m) return yearMonth + try { + return new Date(y, m - 1, 1).toLocaleDateString(locale, { year: 'numeric', month: 'long' }) + } catch { return yearMonth } + } + + return ( +
+ +
+
+ +
+ {t('settings.about.supporters.badge')} +

{t('settings.about.supporters.title')}

+
+

{t('settings.about.supporters.subtitle')}

+ +
+ {SUPPORTER_TIERS.map(tier => { + const members = SUPPORTERS.filter(s => s.tier === tier.id) + const empty = members.length === 0 + const TierIcon = tier.icon + return ( +
+
+ +
+
+
+ {t(tier.labelKey)} + {tier.price} +
+
+ {empty && ( + + {t('settings.about.supporters.tierEmpty')} + + )} + {members.map(m => { + const chipContent = ( + <> + {m.username} + + · {t('settings.about.supporters.since', { date: formatSince(m.since) })} + + + · {formatSince(m.since)} + + + ) + return m.link ? ( + { e.currentTarget.style.borderColor = 'var(--text-faint)'; e.currentTarget.style.boxShadow = `0 2px 8px ${tier.glow}` }} + onMouseLeave={e => { e.currentTarget.style.borderColor = 'var(--border-primary)'; e.currentTarget.style.boxShadow = 'none' }} + > + {chipContent} + + ) : ( +
{chipContent}
+ ) + })} +
+
+
+ ) + })} +
+
+
+ ) +} + export default function AboutTab({ appVersion }: Props): React.ReactElement { - const { t } = useTranslation() + const { t, locale } = useTranslation() return (
@@ -141,6 +362,8 @@ export default function AboutTab({ appVersion }: Props): React.ReactElement {
+ + ) } diff --git a/client/src/i18n/translations/ar.ts b/client/src/i18n/translations/ar.ts index 70886bf7..1a2e3f36 100644 --- a/client/src/i18n/translations/ar.ts +++ b/client/src/i18n/translations/ar.ts @@ -313,6 +313,16 @@ const ar: Record = { 'settings.about.featureRequest': 'اقتراح ميزة', 'settings.about.featureRequestHint': 'اقترح ميزة جديدة', 'settings.about.wikiHint': 'التوثيق والأدلة', + 'settings.about.supporters.badge': 'الداعمون الشهريون', + 'settings.about.supporters.title': 'رفاق رحلة TREK', + 'settings.about.supporters.subtitle': 'بينما تخطّط لمسارك التالي، يساعد هؤلاء الأشخاص في التخطيط لمستقبل TREK. تذهب مساهمتهم الشهرية مباشرةً إلى التطوير والساعات الفعلية المبذولة — حتى يظلّ TREK مفتوح المصدر.', + 'settings.about.supporters.since': 'داعم منذ {date}', + 'settings.about.supporters.tierEmpty': 'كن الأول', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK هو مخطط سفر مستضاف ذاتيًا يساعدك على تنظيم رحلاتك من أول فكرة حتى آخر ذكرى. تخطيط يومي، ميزانية، قوائم تعبئة، صور والمزيد — كل شيء في مكان واحد، على خادمك الخاص.', 'settings.about.madeWith': 'صُنع بـ', 'settings.about.madeBy': 'بواسطة موريس ومجتمع مفتوح المصدر متنامٍ.', diff --git a/client/src/i18n/translations/br.ts b/client/src/i18n/translations/br.ts index 0b0c010f..fa084f9d 100644 --- a/client/src/i18n/translations/br.ts +++ b/client/src/i18n/translations/br.ts @@ -240,6 +240,16 @@ const br: Record = { 'settings.about.featureRequest': 'Solicitar recurso', 'settings.about.featureRequestHint': 'Sugira um novo recurso', 'settings.about.wikiHint': 'Documentação e guias', + 'settings.about.supporters.badge': 'Apoiadores Mensais', + 'settings.about.supporters.title': 'Companheiros de viagem do TREK', + 'settings.about.supporters.subtitle': 'Enquanto você planeja sua próxima rota, essas pessoas planejam junto o futuro do TREK. A contribuição mensal delas vai direto para o desenvolvimento e horas reais investidas — para o TREK continuar Open Source.', + 'settings.about.supporters.since': 'apoiador desde {date}', + 'settings.about.supporters.tierEmpty': 'Seja o primeiro', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK é um planejador de viagens auto-hospedado que ajuda você a organizar suas viagens da primeira ideia à última lembrança. Planejamento diário, orçamento, listas de bagagem, fotos e muito mais — tudo em um só lugar, no seu próprio servidor.', 'settings.about.madeWith': 'Feito com', 'settings.about.madeBy': 'por Maurice e uma crescente comunidade open-source.', diff --git a/client/src/i18n/translations/cs.ts b/client/src/i18n/translations/cs.ts index 11df01b6..237b3864 100644 --- a/client/src/i18n/translations/cs.ts +++ b/client/src/i18n/translations/cs.ts @@ -264,6 +264,16 @@ const cs: Record = { 'settings.about.featureRequest': 'Navrhnout funkci', 'settings.about.featureRequestHint': 'Navrhněte novou funkci', 'settings.about.wikiHint': 'Dokumentace a návody', + 'settings.about.supporters.badge': 'Měsíční podporovatelé', + 'settings.about.supporters.title': 'Společníci na cestě s TREK', + 'settings.about.supporters.subtitle': 'Zatímco plánuješ další trasu, tihle lidé plánují společně se mnou budoucnost TREK. Jejich měsíční příspěvek jde přímo na vývoj a reálně strávené hodiny — aby TREK zůstal Open Source.', + 'settings.about.supporters.since': 'podporovatel od {date}', + 'settings.about.supporters.tierEmpty': 'Buď první', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK je samohostovaný plánovač cest, který vám pomůže organizovat výlety od prvního nápadu po poslední vzpomínku. Denní plánování, rozpočet, balicí seznamy, fotky a mnoho dalšího — vše na jednom místě, na vašem vlastním serveru.', 'settings.about.madeWith': 'Vytvořeno s', 'settings.about.madeBy': 'Mauricem a rostoucí open-source komunitou.', diff --git a/client/src/i18n/translations/de.ts b/client/src/i18n/translations/de.ts index 5f83d05e..4ba28523 100644 --- a/client/src/i18n/translations/de.ts +++ b/client/src/i18n/translations/de.ts @@ -313,6 +313,16 @@ const de: Record = { 'settings.about.featureRequest': 'Feature vorschlagen', 'settings.about.featureRequestHint': 'Schlage ein neues Feature vor', 'settings.about.wikiHint': 'Dokumentation & Anleitungen', + 'settings.about.supporters.badge': 'Monatliche Unterstützer', + 'settings.about.supporters.title': 'Reisebegleitung für TREK', + 'settings.about.supporters.subtitle': 'Während du deine nächste Route planst, planen diese Leute mit, wie TREK weitergeht. Ihr monatlicher Beitrag fließt direkt in Entwicklung und echten Zeitaufwand — damit TREK Open Source bleibt.', + 'settings.about.supporters.since': 'Unterstützer seit {date}', + 'settings.about.supporters.tierEmpty': 'Sei die/der Erste', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK ist ein selbst gehosteter Reiseplaner, der dir hilft, deine Trips von der ersten Idee bis zur letzten Erinnerung zu organisieren. Tagesplanung, Budget, Packlisten, Fotos und vieles mehr — alles an einem Ort, auf deinem eigenen Server.', 'settings.about.madeWith': 'Entwickelt mit', 'settings.about.madeBy': 'von Maurice und einer wachsenden Open-Source-Community.', diff --git a/client/src/i18n/translations/en.ts b/client/src/i18n/translations/en.ts index afa18607..e530e29f 100644 --- a/client/src/i18n/translations/en.ts +++ b/client/src/i18n/translations/en.ts @@ -372,6 +372,16 @@ const en: Record = { 'settings.about.featureRequest': 'Feature Request', 'settings.about.featureRequestHint': 'Suggest a new feature', 'settings.about.wikiHint': 'Documentation & guides', + 'settings.about.supporters.badge': 'Monthly Supporters', + 'settings.about.supporters.title': 'Travel companions for TREK', + 'settings.about.supporters.subtitle': "While you're planning your next route, these folks are helping plan TREK's future. Their monthly contribution goes straight into development and real hours spent — so TREK stays Open Source.", + 'settings.about.supporters.since': 'supporter since {date}', + 'settings.about.supporters.tierEmpty': 'Be the first', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK is a self-hosted travel planner that helps you organize your trips from the first idea to the last memory. Day planning, budget, packing lists, photos and much more — all in one place, on your own server.', 'settings.about.madeWith': 'Made with', 'settings.about.madeBy': 'by Maurice and a growing open-source community.', diff --git a/client/src/i18n/translations/es.ts b/client/src/i18n/translations/es.ts index 3f519274..f612ec43 100644 --- a/client/src/i18n/translations/es.ts +++ b/client/src/i18n/translations/es.ts @@ -309,6 +309,16 @@ const es: Record = { 'settings.about.featureRequest': 'Solicitar función', 'settings.about.featureRequestHint': 'Sugiere una nueva función', 'settings.about.wikiHint': 'Documentación y guías', + 'settings.about.supporters.badge': 'Patrocinadores Mensuales', + 'settings.about.supporters.title': 'Compañía de viaje para TREK', + 'settings.about.supporters.subtitle': 'Mientras planeas tu próxima ruta, estas personas ayudan a planear el futuro de TREK. Su aporte mensual va directo al desarrollo y a las horas reales invertidas — para que TREK siga siendo Open Source.', + 'settings.about.supporters.since': 'patrocinador desde {date}', + 'settings.about.supporters.tierEmpty': 'Sé el primero', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK es un planificador de viajes autoalojado que te ayuda a organizar tus viajes desde la primera idea hasta el último recuerdo. Planificación diaria, presupuesto, listas de equipaje, fotos y mucho más — todo en un solo lugar, en tu propio servidor.', 'settings.about.madeWith': 'Hecho con', 'settings.about.madeBy': 'por Maurice y una creciente comunidad de código abierto.', diff --git a/client/src/i18n/translations/fr.ts b/client/src/i18n/translations/fr.ts index 1a86abf8..f2521575 100644 --- a/client/src/i18n/translations/fr.ts +++ b/client/src/i18n/translations/fr.ts @@ -308,6 +308,16 @@ const fr: Record = { 'settings.about.featureRequest': 'Proposer une fonctionnalité', 'settings.about.featureRequestHint': 'Suggérez une nouvelle fonctionnalité', 'settings.about.wikiHint': 'Documentation et guides', + 'settings.about.supporters.badge': 'Soutiens Mensuels', + 'settings.about.supporters.title': 'Compagnons de voyage pour TREK', + 'settings.about.supporters.subtitle': 'Pendant que tu planifies ton prochain itinéraire, ces personnes aident à planifier l\'avenir de TREK. Leur contribution mensuelle va directement au développement et aux heures réellement passées — pour que TREK reste Open Source.', + 'settings.about.supporters.since': 'soutien depuis {date}', + 'settings.about.supporters.tierEmpty': 'Sois le premier', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK est un planificateur de voyage auto-hébergé qui vous aide à organiser vos voyages de la première idée au dernier souvenir. Planification journalière, budget, listes de bagages, photos et bien plus — le tout au même endroit, sur votre propre serveur.', 'settings.about.madeWith': 'Fait avec', 'settings.about.madeBy': 'par Maurice et une communauté open-source grandissante.', diff --git a/client/src/i18n/translations/hu.ts b/client/src/i18n/translations/hu.ts index 6aeb5645..8f6b20f3 100644 --- a/client/src/i18n/translations/hu.ts +++ b/client/src/i18n/translations/hu.ts @@ -263,6 +263,16 @@ const hu: Record = { 'settings.about.featureRequest': 'Funkció javaslat', 'settings.about.featureRequestHint': 'Javasolj egy új funkciót', 'settings.about.wikiHint': 'Dokumentáció és útmutatók', + 'settings.about.supporters.badge': 'Havi támogatók', + 'settings.about.supporters.title': 'Útitársak a TREK mellett', + 'settings.about.supporters.subtitle': 'Miközben te a következő útvonaladat tervezed, ők a TREK jövőjét tervezik velem együtt. Havi hozzájárulásuk közvetlenül fejlesztésre és valódi órákra fordítódik — hogy a TREK Open Source maradhasson.', + 'settings.about.supporters.since': 'támogató {date} óta', + 'settings.about.supporters.tierEmpty': 'Légy az első', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'A TREK egy saját szerveren üzemeltetett útitervező, amely segít az utazásaid megszervezésében az első ötlettől az utolsó emlékig. Napi tervezés, költségvetés, csomagolási listák, fotók és még sok más — minden egy helyen, a saját szervereden.', 'settings.about.madeWith': 'Készítve', 'settings.about.madeBy': 'Maurice és egy növekvő nyílt forráskódú közösség által.', diff --git a/client/src/i18n/translations/id.ts b/client/src/i18n/translations/id.ts index 4bfd3cf0..0c23c5f1 100644 --- a/client/src/i18n/translations/id.ts +++ b/client/src/i18n/translations/id.ts @@ -370,6 +370,16 @@ const id: Record = { 'settings.about.featureRequest': 'Permintaan Fitur', 'settings.about.featureRequestHint': 'Sarankan fitur baru', 'settings.about.wikiHint': 'Dokumentasi & panduan', + 'settings.about.supporters.badge': 'Pendukung Bulanan', + 'settings.about.supporters.title': 'Rekan perjalanan untuk TREK', + 'settings.about.supporters.subtitle': 'Saat kamu merencanakan rute berikutnya, orang-orang ini ikut merencanakan masa depan TREK. Kontribusi bulanan mereka langsung masuk ke pengembangan dan jam kerja nyata — supaya TREK tetap Open Source.', + 'settings.about.supporters.since': 'pendukung sejak {date}', + 'settings.about.supporters.tierEmpty': 'Jadilah yang pertama', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK adalah perencana perjalanan self-hosted yang membantu kamu mengatur perjalanan dari ide pertama hingga kenangan terakhir. Perencanaan harian, anggaran, daftar bawaan, foto dan masih banyak lagi — semua di satu tempat, di servermu sendiri.', 'settings.about.madeWith': 'Dibuat dengan', 'settings.about.madeBy': 'oleh Maurice dan komunitas open-source yang terus berkembang.', diff --git a/client/src/i18n/translations/it.ts b/client/src/i18n/translations/it.ts index f3d1cbd3..e973990b 100644 --- a/client/src/i18n/translations/it.ts +++ b/client/src/i18n/translations/it.ts @@ -263,6 +263,16 @@ const it: Record = { 'settings.about.featureRequest': 'Richiedi funzionalità', 'settings.about.featureRequestHint': 'Suggerisci una nuova funzionalità', 'settings.about.wikiHint': 'Documentazione e guide', + 'settings.about.supporters.badge': 'Sostenitori Mensili', + 'settings.about.supporters.title': 'Compagni di viaggio per TREK', + 'settings.about.supporters.subtitle': 'Mentre pianifichi il tuo prossimo itinerario, queste persone aiutano a pianificare il futuro di TREK. Il loro contributo mensile va direttamente allo sviluppo e alle ore realmente investite — per mantenere TREK Open Source.', + 'settings.about.supporters.since': 'sostenitore da {date}', + 'settings.about.supporters.tierEmpty': 'Sii il primo', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK è un pianificatore di viaggi self-hosted che ti aiuta a organizzare i tuoi viaggi dalla prima idea all\'ultimo ricordo. Pianificazione giornaliera, budget, liste bagagli, foto e molto altro — tutto in un unico posto, sul tuo server.', 'settings.about.madeWith': 'Fatto con', 'settings.about.madeBy': 'da Maurice e una crescente comunità open-source.', diff --git a/client/src/i18n/translations/nl.ts b/client/src/i18n/translations/nl.ts index 247efd4a..85c38055 100644 --- a/client/src/i18n/translations/nl.ts +++ b/client/src/i18n/translations/nl.ts @@ -308,6 +308,16 @@ const nl: Record = { 'settings.about.featureRequest': 'Feature aanvragen', 'settings.about.featureRequestHint': 'Stel een nieuwe functie voor', 'settings.about.wikiHint': 'Documentatie en handleidingen', + 'settings.about.supporters.badge': 'Maandelijkse Steuners', + 'settings.about.supporters.title': 'Reisgezelschap voor TREK', + 'settings.about.supporters.subtitle': 'Terwijl jij je volgende route plant, plannen deze mensen mee aan de toekomst van TREK. Hun maandelijkse bijdrage gaat rechtstreeks naar ontwikkeling en echte uren — zodat TREK Open Source blijft.', + 'settings.about.supporters.since': 'steuner sinds {date}', + 'settings.about.supporters.tierEmpty': 'Wees de eerste', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK is een zelf-gehoste reisplanner die je helpt je reizen te organiseren van het eerste idee tot de laatste herinnering. Dagplanning, budget, paklijsten, foto\'s en nog veel meer — alles op één plek, op je eigen server.', 'settings.about.madeWith': 'Gemaakt met', 'settings.about.madeBy': 'door Maurice en een groeiende open-source community.', diff --git a/client/src/i18n/translations/pl.ts b/client/src/i18n/translations/pl.ts index d5cf973b..35d080af 100644 --- a/client/src/i18n/translations/pl.ts +++ b/client/src/i18n/translations/pl.ts @@ -281,6 +281,16 @@ const pl: Record = { 'settings.about.featureRequest': 'Zaproponuj funkcję', 'settings.about.featureRequestHint': 'Zaproponuj nową funkcję', 'settings.about.wikiHint': 'Dokumentacja i poradniki', + 'settings.about.supporters.badge': 'Miesięczni Patroni', + 'settings.about.supporters.title': 'Towarzystwo podróży dla TREK', + 'settings.about.supporters.subtitle': 'Gdy planujesz kolejną trasę, te osoby planują razem ze mną przyszłość TREK. Ich comiesięczny wkład idzie bezpośrednio na rozwój i realnie przepracowane godziny — aby TREK pozostał Open Source.', + 'settings.about.supporters.since': 'patron od {date}', + 'settings.about.supporters.tierEmpty': 'Bądź pierwszy', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK to samodzielnie hostowany planer podróży, który pomaga organizować wyprawy od pierwszego pomysłu po ostatnie wspomnienie. Planowanie dzienne, budżet, listy pakowania, zdjęcia i wiele więcej — wszystko w jednym miejscu, na własnym serwerze.', 'settings.about.madeWith': 'Stworzone z', 'settings.about.madeBy': 'przez Maurice\'a i rosnącą społeczność open-source.', diff --git a/client/src/i18n/translations/ru.ts b/client/src/i18n/translations/ru.ts index 5f96abc4..74efc8a1 100644 --- a/client/src/i18n/translations/ru.ts +++ b/client/src/i18n/translations/ru.ts @@ -308,6 +308,16 @@ const ru: Record = { 'settings.about.featureRequest': 'Предложить функцию', 'settings.about.featureRequestHint': 'Предложите новую функцию', 'settings.about.wikiHint': 'Документация и руководства', + 'settings.about.supporters.badge': 'Ежемесячные спонсоры', + 'settings.about.supporters.title': 'Спутники TREK', + 'settings.about.supporters.subtitle': 'Пока ты планируешь следующий маршрут, эти люди планируют вместе со мной будущее TREK. Их ежемесячный взнос идёт напрямую в разработку и реально потраченные часы — чтобы TREK оставался Open Source.', + 'settings.about.supporters.since': 'спонсор с {date}', + 'settings.about.supporters.tierEmpty': 'Стань первым', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK — это самостоятельно размещаемый планировщик путешествий, который помогает организовать поездки от первой идеи до последнего воспоминания. Планирование по дням, бюджет, списки вещей, фото и многое другое — всё в одном месте, на вашем собственном сервере.', 'settings.about.madeWith': 'Сделано с', 'settings.about.madeBy': 'Морисом и растущим open-source сообществом.', diff --git a/client/src/i18n/translations/zh.ts b/client/src/i18n/translations/zh.ts index 3ce7aa96..b06a0065 100644 --- a/client/src/i18n/translations/zh.ts +++ b/client/src/i18n/translations/zh.ts @@ -308,6 +308,16 @@ const zh: Record = { 'settings.about.featureRequest': '功能建议', 'settings.about.featureRequestHint': '建议一个新功能', 'settings.about.wikiHint': '文档和指南', + 'settings.about.supporters.badge': '月度支持者', + 'settings.about.supporters.title': '与 TREK 同行的伙伴', + 'settings.about.supporters.subtitle': '当你在规划下一段路线时,这些人也在一起规划 TREK 的未来。他们每月的支持直接用于开发与真实投入的时间——让 TREK 保持开源。', + 'settings.about.supporters.since': '{date} 起的支持者', + 'settings.about.supporters.tierEmpty': '成为第一个', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK 是一个自托管的旅行规划工具,帮助你从最初的想法到最后的回忆,全程组织你的旅行。日程规划、预算、行李清单、照片等——一切尽在一处,在你自己的服务器上。', 'settings.about.madeWith': '用', 'settings.about.madeBy': '由 Maurice 和不断壮大的开源社区打造。', diff --git a/client/src/i18n/translations/zhTw.ts b/client/src/i18n/translations/zhTw.ts index d0ed9ac2..9c4c46a5 100644 --- a/client/src/i18n/translations/zhTw.ts +++ b/client/src/i18n/translations/zhTw.ts @@ -367,6 +367,16 @@ const zhTw: Record = { 'settings.about.featureRequest': '功能建議', 'settings.about.featureRequestHint': '建議新功能', 'settings.about.wikiHint': '文件與指南', + 'settings.about.supporters.badge': '月度支持者', + 'settings.about.supporters.title': '與 TREK 同行的夥伴', + 'settings.about.supporters.subtitle': '當你規劃下一段路線時,這些人也在一起規劃 TREK 的未來。他們每月的支持直接用於開發與實際投入的時間——讓 TREK 保持開源。', + 'settings.about.supporters.since': '自 {date} 起的支持者', + 'settings.about.supporters.tierEmpty': '成為第一個', + 'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket', + 'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP', + 'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer', + 'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller', + 'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate', 'settings.about.description': 'TREK 是一款自架旅遊規劃器,幫助您從最初構想到最後回憶,整理每次旅行。日程規劃、預算、行李清單、照片及更多功能——全部集中在您自己的伺服器上。', 'settings.about.madeWith': '以', 'settings.about.madeBy': '由 Maurice 及不斷成長的開源社群製作。',