upgrade to tamagui v2 and guest pwa overhaul
This commit is contained in:
@@ -25,6 +25,7 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
offlineReady: 'Offline bereit.',
|
||||
actions: {
|
||||
close: 'Schließen',
|
||||
back: 'Zurück',
|
||||
loading: 'Lädt...',
|
||||
},
|
||||
},
|
||||
@@ -41,6 +42,7 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
tasks: 'Aufgaben',
|
||||
achievements: 'Erfolge',
|
||||
gallery: 'Galerie',
|
||||
share: 'Teilen',
|
||||
},
|
||||
header: {
|
||||
loading: 'Lade Event...',
|
||||
@@ -57,6 +59,46 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
tabUploads: 'Uploads',
|
||||
tabAll: 'Alle Updates',
|
||||
emptyStatus: 'Keine Upload-Hinweise oder Wartungen aktiv.',
|
||||
queueLabel: 'Upload-Warteschlange (offline)',
|
||||
pendingLabel: 'Uploads in Prüfung',
|
||||
},
|
||||
},
|
||||
appShell: {
|
||||
fab: {
|
||||
title: 'Moment erstellen',
|
||||
},
|
||||
actions: {
|
||||
upload: {
|
||||
label: 'Foto hochladen / aufnehmen',
|
||||
description: 'Füge einen Moment von deinem Gerät oder der Kamera hinzu.',
|
||||
},
|
||||
compass: {
|
||||
label: 'Kompass',
|
||||
description: 'Schneller Zugriff auf wichtige Bereiche.',
|
||||
},
|
||||
task: {
|
||||
label: 'Aufgabe starten',
|
||||
description: 'Wähle eine Mission und halte sie fest.',
|
||||
},
|
||||
live: {
|
||||
label: 'Live Show',
|
||||
description: 'Sieh den Highlight-Stream in Echtzeit.',
|
||||
},
|
||||
slideshow: {
|
||||
label: 'Diashow',
|
||||
description: 'Lehn dich zurück und schau dir die Galerie an.',
|
||||
},
|
||||
share: {
|
||||
label: 'Einladung teilen',
|
||||
description: 'Teile den Event-Link oder QR-Code.',
|
||||
},
|
||||
achievements: {
|
||||
label: 'Erfolge',
|
||||
description: 'Behalte deine Foto-Serien im Blick.',
|
||||
},
|
||||
},
|
||||
compass: {
|
||||
capture: 'Aufnehmen',
|
||||
},
|
||||
},
|
||||
liveShowPlayer: {
|
||||
@@ -252,6 +294,32 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
days: 'vor {count} Tagen',
|
||||
},
|
||||
},
|
||||
homeV2: {
|
||||
rings: {
|
||||
newUploads: 'Neue Uploads',
|
||||
topMoments: 'Top-Momente',
|
||||
},
|
||||
promptQuest: {
|
||||
label: 'Prompt-Quest',
|
||||
title: 'Fang das herzlichste Lachen ein',
|
||||
subtitle: 'Sammle Punkte und halte die Galerie lebendig.',
|
||||
ctaStart: 'Prompt starten',
|
||||
ctaBrowse: 'Aufgaben entdecken',
|
||||
},
|
||||
captureReady: {
|
||||
label: 'Bereit zum Aufnehmen',
|
||||
title: 'Füge ein Foto zur gemeinsamen Galerie hinzu',
|
||||
subtitle: 'Schneller Upload aus Kamera oder Galerie.',
|
||||
cta: 'Foto hochladen',
|
||||
},
|
||||
stats: {
|
||||
uploadsQueued: 'Uploads in Warteschlange',
|
||||
},
|
||||
galleryPreview: {
|
||||
title: 'Galerie-Vorschau',
|
||||
cta: 'Alle ansehen',
|
||||
},
|
||||
},
|
||||
achievements: {
|
||||
page: {
|
||||
title: 'Erfolge',
|
||||
@@ -312,6 +380,13 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
trendingDescription: 'Diese Stimmung taucht gerade besonders oft auf.',
|
||||
trendingCount: '{count} Fotos mit dieser Stimmung',
|
||||
},
|
||||
summary: {
|
||||
topContributor: 'Top-Gast',
|
||||
placeholder: 'Teile weiter, um Highlights freizuschalten.',
|
||||
tasksCompleted: 'Aufgaben erledigt',
|
||||
photosShared: 'Fotos geteilt',
|
||||
likesCollected: 'Likes gesammelt',
|
||||
},
|
||||
},
|
||||
tasks: {
|
||||
page: {
|
||||
@@ -329,6 +404,9 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
inspirationEmptyDescription: 'Sei die/der Erste und lade eins hoch',
|
||||
inspirationMore: 'Mehr',
|
||||
inspirationError: 'Fotos konnten nicht geladen werden',
|
||||
checklist: 'Checkliste',
|
||||
tips: 'Tipps',
|
||||
inspirationTitleSecondary: 'Inspiration',
|
||||
suggestionsEyebrow: 'Mehr Inspiration',
|
||||
suggestionsTitle: 'Spring direkt zur nächsten Aufgabe',
|
||||
noTasksAlert: 'Für dieses Event sind derzeit keine Aufgaben hinterlegt.',
|
||||
@@ -345,6 +423,12 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
countOne: '{count} Aufgabe',
|
||||
countMany: '{count} Aufgaben',
|
||||
},
|
||||
progressLabel: 'Quest-Fortschritt',
|
||||
progressValue: '{count}/{total} Aufgaben erledigt',
|
||||
},
|
||||
disabled: {
|
||||
title: 'Aufgaben sind deaktiviert',
|
||||
subtitle: 'Dieses Event ist im Foto-Modus.',
|
||||
},
|
||||
},
|
||||
notFound: {
|
||||
@@ -402,6 +486,16 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
badge: {
|
||||
newPhotos: '{count} neue Fotos',
|
||||
},
|
||||
feed: {
|
||||
title: 'Live-Feed',
|
||||
description: 'Alle paar Sekunden aktualisiert.',
|
||||
newUploads: '{count} neue Uploads sind da.',
|
||||
},
|
||||
lightbox: {
|
||||
prev: 'Zurück',
|
||||
next: 'Weiter',
|
||||
likes: '{count} Likes',
|
||||
},
|
||||
},
|
||||
share: {
|
||||
title: 'Geteiltes Foto',
|
||||
@@ -419,10 +513,62 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
whatsapp: 'WhatsApp',
|
||||
imessage: 'Nachrichten',
|
||||
copyError: 'Link konnte nicht kopiert werden.',
|
||||
invite: {
|
||||
title: 'Gäste einladen',
|
||||
description: 'Teile den Event-Link oder zeige den QR-Code.',
|
||||
qrLabel: 'QR anzeigen',
|
||||
qrAlt: 'Event-QR-Code',
|
||||
copyLabel: 'Link kopieren',
|
||||
guestsTitle: 'Gäste',
|
||||
guestsSubtitle: 'Teile das Event mit deinen Gästen.',
|
||||
guestsSubtitleEvent: 'Teile {event} mit deinen Gästen.',
|
||||
send: 'Einladung senden',
|
||||
},
|
||||
chips: {
|
||||
emotion: 'Emotion',
|
||||
task: 'Aufgabe',
|
||||
date: 'Aufgenommen',
|
||||
},
|
||||
},
|
||||
uploadQueue: {
|
||||
title: 'Uploads',
|
||||
description: 'Warteschlange mit Fortschritt und erneuten Versuchen; Hintergrund-Sync umschalten.',
|
||||
description: 'Warteschlange mit Fortschritt und erneuten Versuchen.',
|
||||
summary: '{waiting} wartend · {failed} fehlgeschlagen',
|
||||
emptyTitle: 'Keine Uploads in der Warteschlange',
|
||||
emptyDescription: 'Sobald Fotos in der Warteschlange sind, erscheinen sie hier.',
|
||||
progress: '{progress}%',
|
||||
actions: {
|
||||
retryAll: 'Alle erneut versuchen',
|
||||
clearFinished: 'Erledigte löschen',
|
||||
},
|
||||
status: {
|
||||
uploaded: 'Hochgeladen',
|
||||
uploading: 'Wird hochgeladen',
|
||||
failed: 'Fehlgeschlagen',
|
||||
waiting: 'Wartet',
|
||||
retries: ' · {count} Versuche',
|
||||
},
|
||||
},
|
||||
uploadV2: {
|
||||
preview: {
|
||||
title: 'Live-Vorschau',
|
||||
subtitle: 'Tippe irgendwo, um zu fokussieren.',
|
||||
cta: 'Jetzt aufnehmen',
|
||||
},
|
||||
tools: {
|
||||
grid: 'Raster',
|
||||
flash: 'Blitz',
|
||||
upload: 'Upload',
|
||||
},
|
||||
queue: {
|
||||
summary: '{waiting} wartend, {sending} sendend',
|
||||
uploading: 'Upload {name} · {progress}%',
|
||||
button: 'Warteschlange',
|
||||
},
|
||||
errors: {
|
||||
invalidFile: 'Bitte wähle eine Fotodatei aus.',
|
||||
eventMissing: 'Event nicht gefunden.',
|
||||
},
|
||||
},
|
||||
pendingUploads: {
|
||||
title: 'Uploads in Prüfung',
|
||||
@@ -781,6 +927,7 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
offlineReady: 'Offline ready.',
|
||||
actions: {
|
||||
close: 'Close',
|
||||
back: 'Back',
|
||||
loading: 'Loading...',
|
||||
},
|
||||
},
|
||||
@@ -797,6 +944,7 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
tasks: 'Tasks',
|
||||
achievements: 'Achievements',
|
||||
gallery: 'Gallery',
|
||||
share: 'Share',
|
||||
},
|
||||
header: {
|
||||
loading: 'Loading event...',
|
||||
@@ -813,6 +961,46 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
tabUploads: 'Uploads',
|
||||
tabAll: 'All updates',
|
||||
emptyStatus: 'No upload status or maintenance active.',
|
||||
queueLabel: 'Upload queue (offline)',
|
||||
pendingLabel: 'Pending uploads',
|
||||
},
|
||||
},
|
||||
appShell: {
|
||||
fab: {
|
||||
title: 'Create a moment',
|
||||
},
|
||||
actions: {
|
||||
upload: {
|
||||
label: 'Upload / Take photo',
|
||||
description: 'Add a moment from your device or camera.',
|
||||
},
|
||||
compass: {
|
||||
label: 'Compass hub',
|
||||
description: 'Quick jump to key areas.',
|
||||
},
|
||||
task: {
|
||||
label: 'Start a task',
|
||||
description: 'Pick a challenge and capture it now.',
|
||||
},
|
||||
live: {
|
||||
label: 'Live show',
|
||||
description: 'See the real-time highlight stream.',
|
||||
},
|
||||
slideshow: {
|
||||
label: 'Slideshow',
|
||||
description: 'Lean back and watch the gallery roll.',
|
||||
},
|
||||
share: {
|
||||
label: 'Share invite',
|
||||
description: 'Send the event link or QR code.',
|
||||
},
|
||||
achievements: {
|
||||
label: 'Achievements',
|
||||
description: 'Track your photo streaks.',
|
||||
},
|
||||
},
|
||||
compass: {
|
||||
capture: 'Capture',
|
||||
},
|
||||
},
|
||||
liveShowPlayer: {
|
||||
@@ -1008,6 +1196,32 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
days: '{count} days ago',
|
||||
},
|
||||
},
|
||||
homeV2: {
|
||||
rings: {
|
||||
newUploads: 'New uploads',
|
||||
topMoments: 'Top moments',
|
||||
},
|
||||
promptQuest: {
|
||||
label: 'Prompt quest',
|
||||
title: 'Capture the happiest laugh',
|
||||
subtitle: 'Earn points and keep the gallery lively.',
|
||||
ctaStart: 'Start prompt',
|
||||
ctaBrowse: 'Browse tasks',
|
||||
},
|
||||
captureReady: {
|
||||
label: 'Capture ready',
|
||||
title: 'Add a photo to the shared gallery',
|
||||
subtitle: 'Quick add from your camera or device.',
|
||||
cta: 'Upload / Take photo',
|
||||
},
|
||||
stats: {
|
||||
uploadsQueued: 'Uploads queued',
|
||||
},
|
||||
galleryPreview: {
|
||||
title: 'Gallery preview',
|
||||
cta: 'View all',
|
||||
},
|
||||
},
|
||||
achievements: {
|
||||
page: {
|
||||
title: 'Achievements',
|
||||
@@ -1068,6 +1282,13 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
trendingDescription: 'This mood appears most often right now.',
|
||||
trendingCount: '{count} photos in this mood',
|
||||
},
|
||||
summary: {
|
||||
topContributor: 'Top guest',
|
||||
placeholder: 'Keep sharing to unlock highlights.',
|
||||
tasksCompleted: 'Tasks completed',
|
||||
photosShared: 'Photos shared',
|
||||
likesCollected: 'Likes collected',
|
||||
},
|
||||
},
|
||||
tasks: {
|
||||
page: {
|
||||
@@ -1085,6 +1306,9 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
inspirationEmptyDescription: 'Be the first one to upload!',
|
||||
inspirationMore: 'More',
|
||||
inspirationError: 'Photos could not be loaded',
|
||||
checklist: 'Checklist',
|
||||
tips: 'Tips',
|
||||
inspirationTitleSecondary: 'Inspiration',
|
||||
suggestionsEyebrow: 'More inspiration',
|
||||
suggestionsTitle: 'Jump straight to the next task',
|
||||
noTasksAlert: 'No tasks available for this event yet.',
|
||||
@@ -1101,6 +1325,12 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
countOne: '{count} task',
|
||||
countMany: '{count} tasks',
|
||||
},
|
||||
progressLabel: 'Quest progress',
|
||||
progressValue: '{count}/{total} tasks completed',
|
||||
},
|
||||
disabled: {
|
||||
title: 'Tasks are disabled',
|
||||
subtitle: 'This event is set to photo-only mode.',
|
||||
},
|
||||
},
|
||||
notFound: {
|
||||
@@ -1158,6 +1388,16 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
badge: {
|
||||
newPhotos: '{count} new photos',
|
||||
},
|
||||
feed: {
|
||||
title: 'Live feed',
|
||||
description: 'Updated every few seconds.',
|
||||
newUploads: '{count} new uploads just landed.',
|
||||
},
|
||||
lightbox: {
|
||||
prev: 'Prev',
|
||||
next: 'Next',
|
||||
likes: '{count} likes',
|
||||
},
|
||||
},
|
||||
share: {
|
||||
title: 'Shared photo',
|
||||
@@ -1172,10 +1412,62 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
expiredDescription: 'This link is no longer available.',
|
||||
shareText: 'Check out this moment on Fotospiel.',
|
||||
error: 'Share failed',
|
||||
invite: {
|
||||
title: 'Invite guests',
|
||||
description: 'Share the event link or show the QR code to join.',
|
||||
qrLabel: 'Show QR',
|
||||
qrAlt: 'Event QR code',
|
||||
copyLabel: 'Copy link',
|
||||
guestsTitle: 'Guests',
|
||||
guestsSubtitle: 'Share the event with your guests.',
|
||||
guestsSubtitleEvent: 'Share {event} with your guests.',
|
||||
send: 'Send invite',
|
||||
},
|
||||
chips: {
|
||||
emotion: 'Emotion',
|
||||
task: 'Task',
|
||||
date: 'Captured',
|
||||
},
|
||||
},
|
||||
uploadQueue: {
|
||||
title: 'Uploads',
|
||||
description: 'Queue with progress/retry and background sync toggle.',
|
||||
description: 'Queue with progress and retries.',
|
||||
summary: '{waiting} waiting · {failed} failed',
|
||||
emptyTitle: 'No queued uploads',
|
||||
emptyDescription: 'Once photos are queued, they will appear here.',
|
||||
progress: '{progress}%',
|
||||
actions: {
|
||||
retryAll: 'Retry all',
|
||||
clearFinished: 'Clear finished',
|
||||
},
|
||||
status: {
|
||||
uploaded: 'Uploaded',
|
||||
uploading: 'Uploading',
|
||||
failed: 'Failed',
|
||||
waiting: 'Waiting',
|
||||
retries: ' · {count} retries',
|
||||
},
|
||||
},
|
||||
uploadV2: {
|
||||
preview: {
|
||||
title: 'Live preview',
|
||||
subtitle: 'Tap anywhere to focus.',
|
||||
cta: 'Capture now',
|
||||
},
|
||||
tools: {
|
||||
grid: 'Grid',
|
||||
flash: 'Flash',
|
||||
upload: 'Upload',
|
||||
},
|
||||
queue: {
|
||||
summary: '{waiting} waiting, {sending} sending',
|
||||
uploading: 'Uploading {name} · {progress}%',
|
||||
button: 'Queue',
|
||||
},
|
||||
errors: {
|
||||
invalidFile: 'Please choose a photo file.',
|
||||
eventMissing: 'Event not found',
|
||||
},
|
||||
},
|
||||
pendingUploads: {
|
||||
title: 'Pending uploads',
|
||||
|
||||
Reference in New Issue
Block a user