diff --git a/apps/web/app/(app)/collections/[id]/page.tsx b/apps/web/app/(app)/collections/[id]/page.tsx
index 506f422..a9c0845 100644
--- a/apps/web/app/(app)/collections/[id]/page.tsx
+++ b/apps/web/app/(app)/collections/[id]/page.tsx
@@ -10,6 +10,7 @@ import { ForkCollectionButton } from "@/components/collections/fork-collection-b
import { ShareCollectionButton } from "@/components/collections/share-collection-button";
import { buttonVariants } from "@/components/ui/button";
import { cn } from "@/lib/utils";
+import { getMessages } from "@/lib/i18n/server";
type Params = { params: Promise<{ id: string }> };
@@ -19,6 +20,7 @@ export default async function CollectionPage({ params }: Params) {
const { id } = await params;
const session = await auth.api.getSession({ headers: await headers() });
if (!session) return null;
+ const m = getMessages((session.user as { locale?: string }).locale);
const col = await db.query.collections.findFirst({
where: and(
@@ -46,7 +48,7 @@ export default async function CollectionPage({ params }: Params) {
{col.recipes.length > 0 && (
{label}
{`${m.mealPlan.user?.name ?? "Unknown"}'s plan`}
-Week of {m.mealPlan.weekStart} · {m.role}
+{formatMessage(msgs.mealPlan.sharedPlanOf, { name: membership.mealPlan.user?.name ?? "?" })}
++ {formatMessage(msgs.mealPlan.weekOf, { date: membership.mealPlan.weekStart })} · {msgs.shareDialog[membership.role]} +
Week of {plan.weekStart} · {access.role}
+{formatMessage(m.mealPlan.weekOf, { date: plan.weekStart })} · {m.shareDialog[access.role]}
- Use your own API keys instead of the app's shared quota. Keys are encrypted at rest. + {m.settings.byok.description}
- Choose which model to use for each task. Defaults to your first configured provider. + {m.settings.modelPrefs.description}
- Manage API keys for programmatic access to the Epicure API. + {m.settings.apiKeysPage.description}
- Get notified when someone comments on your recipes or likes your content. + {m.settings.pushNotifications.description}
- Set your daily targets. These are shown as progress bars on your meal plan. + {m.settings.nutritionGoals.description}
- Receive HTTP callbacks when events happen in your Epicure account. + {m.settings.webhooksPage.description}
- {list.items.length} items{list.generatedAt ? " · Generated from meal plan" : ""} + {formatMessage(list.items.length === 1 ? m.shoppingLists.itemCount : m.shoppingLists.itemCountPlural, { count: list.items.length })} + {list.generatedAt ? m.shoppingLists.fromMealPlan : ""}