import type { Language } from '@/domain/language/entities'; import type { MenuItem } from '@/domain/menu/entities'; import type { OrderLine } from '@/domain/shared/order-line'; import { getMenuItemById } from '@/infrastructure/menu/static-menu-data'; import { getCategoryName as resolveCategoryName } from '@/presentation/i18n/menu/category-names'; import { getMenuItemName as resolveItemName } from '@/presentation/i18n/menu/item-names'; import type { TranslationBundle } from '@/presentation/i18n/translations'; type MenuTextBundle = TranslationBundle & { menuDescriptions?: Record; }; export function getMenuItemName( lang: Language, item: Pick, ): string { return resolveItemName(lang, item.id, item.name); } export function getMenuItemDescription( lang: Language, t: TranslationBundle, item: Pick, ): string { const bundle = t as MenuTextBundle; return ( bundle.menuDescriptions?.[item.id] ?? (lang === 'en' ? item.description : undefined) ?? item.description ?? '' ); } export function getCategoryName( lang: Language, categoryId: string, fallback: string, ): string { return resolveCategoryName(lang, categoryId, fallback); } export function localizeMenuItem( lang: Language, t: TranslationBundle, item: MenuItem, ): MenuItem { return { ...item, name: getMenuItemName(lang, item), description: getMenuItemDescription(lang, t, item), }; } export function localizeOrderLineName(lang: Language, line: OrderLine): string { const menuItem = getMenuItemById(line.id); if (!menuItem) return line.name; return getMenuItemName(lang, menuItem); }