/** * ANNOTATED COPY — every line explained * Source: src/lib/product-i18n.ts * NOT used by the app — read this to learn how the real file works */ // Import project module (@/ alias = src/ folder in tsconfig) import { Product } from '@/types'; // (blank line — separates logical blocks for readability) // TypeScript type alias — union or shorthand for complex types type Translator = (path: string, params?: Record) => string; // (blank line — separates logical blocks for readability) // Export TypeScript type — defines data shape used across the app export interface LocalizedProduct { // Line 6: id: string; id: string; // Line 7: slug: string; slug: string; // Line 8: category: Product['category']; category: Product['category']; // Line 9: name: string; name: string; // Line 10: description: string; description: string; // Line 11: longDescription: string; longDescription: string; // Line 12: price: number; price: number; // Line 13: priceUnit: string; priceUnit: string; // Line 14: image: string; image: string; // Line 15: images: string[]; images: string[]; // Line 16: badge?: string; badge?: string; // Line 17: inStock: boolean; inStock: boolean; // Line 18: featured: boolean; featured: boolean; // Line 19: weight?: string; weight?: string; // Line 20: tags: string[]; tags: string[]; // Closing brace — end of block (function, if, object, JSX) } // (blank line — separates logical blocks for readability) // Named export — utility function other files can import export function localizeProduct(product: Product, t: Translator): LocalizedProduct { // Line 24: const base = `products.${product.id}`; const base = `products.${product.id}`; // (blank line — separates logical blocks for readability) // Return value from function return { // Property or array item — trailing comma allowed in TypeScript ...product, // Property or array item — trailing comma allowed in TypeScript name: t(`${base}.name`), // Property or array item — trailing comma allowed in TypeScript description: t(`${base}.description`), // Property or array item — trailing comma allowed in TypeScript longDescription: t(`${base}.longDescription`), // Property or array item — trailing comma allowed in TypeScript priceUnit: t(`priceUnit.${product.priceUnitKey}`), // Property or array item — trailing comma allowed in TypeScript badge: product.badgeKey ? t(`badges.${product.badgeKey}`) : undefined, // Closing brace — end of block (function, if, object, JSX) }; // Closing brace — end of block (function, if, object, JSX) } // (blank line — separates logical blocks for readability) // Named export — utility function other files can import export function localizeCategory( // Property or array item — trailing comma allowed in TypeScript categoryId: Product['category'], // Line 38: t: Translator t: Translator // Line 39: ): { name: string; description: string } { ): { name: string; description: string } { // Return value from function return { // Property or array item — trailing comma allowed in TypeScript name: t(`categories.${categoryId}.name`), // Property or array item — trailing comma allowed in TypeScript description: t(`categories.${categoryId}.description`), // Closing brace — end of block (function, if, object, JSX) }; // Closing brace — end of block (function, if, object, JSX) }