feat: localize guest endpoints and caching
This commit is contained in:
@@ -184,6 +184,67 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
days: 'vor {count} Tagen',
|
||||
},
|
||||
},
|
||||
achievements: {
|
||||
page: {
|
||||
title: 'Erfolge',
|
||||
subtitle: 'Behalte deine Highlights, Badges und die aktivsten Gäste im Blick.',
|
||||
loadError: 'Erfolge konnten nicht geladen werden.',
|
||||
retry: 'Erneut versuchen',
|
||||
buttons: {
|
||||
personal: 'Meine Erfolge',
|
||||
event: 'Event Highlights',
|
||||
feed: 'Live Feed',
|
||||
},
|
||||
},
|
||||
personal: {
|
||||
greeting: 'Hi {name}!',
|
||||
stats: '{photos} Fotos | {tasks} Aufgaben | {likes} Likes',
|
||||
actions: {
|
||||
upload: 'Neues Foto hochladen',
|
||||
tasks: 'Aufgabe ziehen',
|
||||
},
|
||||
},
|
||||
badges: {
|
||||
title: 'Badges',
|
||||
description: 'Dein Fortschritt bei den verfügbaren Erfolgen.',
|
||||
empty: 'Noch keine Badges verfügbar.',
|
||||
},
|
||||
leaderboard: {
|
||||
description: 'Top 5 Teilnehmer dieses Events',
|
||||
uploadsTitle: 'Top Uploads',
|
||||
uploadsEmpty: 'Noch keine Uploads – sobald Fotos vorhanden sind, erscheinen sie hier.',
|
||||
likesTitle: 'Beliebteste Gäste',
|
||||
likesEmpty: 'Likes fehlen noch – motiviere die Gäste, Fotos zu liken.',
|
||||
guestFallback: 'Gast',
|
||||
item: {
|
||||
photos: '{count} Fotos',
|
||||
likes: '{count} Likes',
|
||||
},
|
||||
},
|
||||
timeline: {
|
||||
title: 'Timeline',
|
||||
description: 'Wie das Event im Laufe der Zeit Fahrt aufgenommen hat.',
|
||||
row: '{photos} Fotos | {guests} Gäste',
|
||||
},
|
||||
feed: {
|
||||
title: 'Live Feed',
|
||||
description: 'Die neuesten Momente aus deinem Event.',
|
||||
empty: 'Noch keine Uploads – starte die Kamera und lege los!',
|
||||
taskLabel: 'Aufgabe: {task}',
|
||||
likesLabel: '{count} Likes',
|
||||
thumbnailAlt: 'Vorschau',
|
||||
},
|
||||
highlights: {
|
||||
topTitle: 'Publikumsliebling',
|
||||
topDescription: 'Das Foto mit den meisten Likes.',
|
||||
noPreview: 'Kein Vorschau-Bild',
|
||||
likesAmount: '{count} Likes',
|
||||
taskLabel: 'Aufgabe: {task}',
|
||||
trendingTitle: 'Trend-Emotion',
|
||||
trendingDescription: 'Diese Stimmung taucht gerade besonders oft auf.',
|
||||
trendingCount: '{count} Fotos mit dieser Stimmung',
|
||||
},
|
||||
},
|
||||
tasks: {
|
||||
page: {
|
||||
eyebrow: 'Aufgaben-Zentrale',
|
||||
@@ -243,6 +304,37 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
emptyDescription: 'Sobald Fotos freigegeben sind, erscheinen sie hier.',
|
||||
lightboxGuestFallback: 'Gast',
|
||||
},
|
||||
galleryPage: {
|
||||
title: 'Galerie',
|
||||
subtitle: 'Live-Impressionen deines Events',
|
||||
loadingEvent: 'Event-Info wird geladen...',
|
||||
eventNotFound: 'Event nicht gefunden.',
|
||||
hero: {
|
||||
label: 'Live-Galerie',
|
||||
stats: '{photoCount} Fotos · {likeCount} ❤️ · {guestCount} Gäste online',
|
||||
newPhotos: '{count} neue Fotos ansehen',
|
||||
upload: 'Neues Foto hochladen',
|
||||
eventFallback: 'Event',
|
||||
},
|
||||
loading: 'Lade…',
|
||||
photo: {
|
||||
justNow: 'Gerade eben',
|
||||
anonymous: 'Gast',
|
||||
alt: 'Foto {id}{suffix}',
|
||||
altTaskSuffix: ' - {task}',
|
||||
likeAria: 'Foto liken',
|
||||
shareAria: 'Foto teilen',
|
||||
},
|
||||
filters: {
|
||||
latest: 'Neueste',
|
||||
popular: 'Beliebt',
|
||||
mine: 'Meine',
|
||||
photobooth: 'Fotobox',
|
||||
},
|
||||
badge: {
|
||||
newPhotos: '{count} neue Fotos',
|
||||
},
|
||||
},
|
||||
share: {
|
||||
title: 'Geteiltes Foto',
|
||||
defaultEvent: 'Ein besonderer Moment',
|
||||
@@ -729,6 +821,67 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
days: '{count} days ago',
|
||||
},
|
||||
},
|
||||
achievements: {
|
||||
page: {
|
||||
title: 'Achievements',
|
||||
subtitle: 'Keep an eye on highlights, badges, and the most active guests.',
|
||||
loadError: 'Achievements could not be loaded.',
|
||||
retry: 'Try again',
|
||||
buttons: {
|
||||
personal: 'My achievements',
|
||||
event: 'Event highlights',
|
||||
feed: 'Live feed',
|
||||
},
|
||||
},
|
||||
personal: {
|
||||
greeting: 'Hi {name}!',
|
||||
stats: '{photos} photos | {tasks} tasks | {likes} likes',
|
||||
actions: {
|
||||
upload: 'Upload photo',
|
||||
tasks: 'Draw a task',
|
||||
},
|
||||
},
|
||||
badges: {
|
||||
title: 'Badges',
|
||||
description: 'Your progress across available achievements.',
|
||||
empty: 'No badges unlocked yet.',
|
||||
},
|
||||
leaderboard: {
|
||||
description: 'Top 5 participants of this event',
|
||||
uploadsTitle: 'Top uploads',
|
||||
uploadsEmpty: 'No uploads yet – once photos arrive you will see them here.',
|
||||
likesTitle: 'Most liked guests',
|
||||
likesEmpty: 'No likes yet – motivate guests to like photos.',
|
||||
guestFallback: 'Guest',
|
||||
item: {
|
||||
photos: '{count} photos',
|
||||
likes: '{count} likes',
|
||||
},
|
||||
},
|
||||
timeline: {
|
||||
title: 'Timeline',
|
||||
description: 'How the event gained momentum throughout the day.',
|
||||
row: '{photos} photos | {guests} guests',
|
||||
},
|
||||
feed: {
|
||||
title: 'Live feed',
|
||||
description: 'The freshest moments from your event.',
|
||||
empty: 'No uploads yet – grab your camera and start!',
|
||||
taskLabel: 'Task: {task}',
|
||||
likesLabel: '{count} likes',
|
||||
thumbnailAlt: 'Preview',
|
||||
},
|
||||
highlights: {
|
||||
topTitle: 'Audience favorite',
|
||||
topDescription: 'The photo with the most likes.',
|
||||
noPreview: 'No preview image',
|
||||
likesAmount: '{count} likes',
|
||||
taskLabel: 'Task: {task}',
|
||||
trendingTitle: 'Trending emotion',
|
||||
trendingDescription: 'This mood appears most often right now.',
|
||||
trendingCount: '{count} photos in this mood',
|
||||
},
|
||||
},
|
||||
tasks: {
|
||||
page: {
|
||||
eyebrow: 'Mission hub',
|
||||
@@ -788,6 +941,37 @@ export const messages: Record<LocaleCode, NestedMessages> = {
|
||||
emptyDescription: 'Once photos are approved they will appear here.',
|
||||
lightboxGuestFallback: 'Guest',
|
||||
},
|
||||
galleryPage: {
|
||||
title: 'Gallery',
|
||||
subtitle: 'Live impressions from your event',
|
||||
loadingEvent: 'Loading event info…',
|
||||
eventNotFound: 'Event not found.',
|
||||
hero: {
|
||||
label: 'Live gallery',
|
||||
stats: '{photoCount} photos · {likeCount} ❤️ · {guestCount} guests online',
|
||||
newPhotos: 'View {count} new photos',
|
||||
upload: 'Upload new photo',
|
||||
eventFallback: 'Event',
|
||||
},
|
||||
loading: 'Loading…',
|
||||
photo: {
|
||||
justNow: 'Just now',
|
||||
anonymous: 'Guest',
|
||||
alt: 'Photo {id}{suffix}',
|
||||
altTaskSuffix: ' - {task}',
|
||||
likeAria: 'Like photo',
|
||||
shareAria: 'Share photo',
|
||||
},
|
||||
filters: {
|
||||
latest: 'Newest',
|
||||
popular: 'Popular',
|
||||
mine: 'My photos',
|
||||
photobooth: 'Photo booth',
|
||||
},
|
||||
badge: {
|
||||
newPhotos: '{count} new photos',
|
||||
},
|
||||
},
|
||||
share: {
|
||||
title: 'Shared photo',
|
||||
defaultEvent: 'A special moment',
|
||||
|
||||
Reference in New Issue
Block a user