diff --git a/src/app/models/category.model.ts b/src/app/models/category.model.ts index 38c34d6..13632f1 100644 --- a/src/app/models/category.model.ts +++ b/src/app/models/category.model.ts @@ -31,8 +31,14 @@ export interface Subcategory { itemCount?: number; hasItems?: boolean; subcategories?: Subcategory[]; + names?: ItemName[]; + translations?: Record; } interface CategoryTranslation { name?: string; } + +interface SubcategoryTranslation { + name?: string; +} diff --git a/src/app/pages/cart/cart.component.ts b/src/app/pages/cart/cart.component.ts index 2c6c939..3cbd3e1 100644 --- a/src/app/pages/cart/cart.component.ts +++ b/src/app/pages/cart/cart.component.ts @@ -401,7 +401,7 @@ export class CartComponent implements OnDestroy { telegramUserId: telegramUserId, items: this.paidItems.map((item: CartItem) => ({ itemID: item.itemID, - name: item.name, + name: this.itemName(item), price: item.discount > 0 ? item.price * (1 - item.discount / 100) : item.price, @@ -470,7 +470,7 @@ export class CartComponent implements OnDestroy { telegramUserId: this.getTelegramUserId(), items: this.paidItems.map((item: CartItem) => ({ itemID: item.itemID, - name: item.name, + name: this.itemName(item), price: item.discount > 0 ? item.price * (1 - item.discount / 100) : item.price, diff --git a/src/app/pages/category/category.component.html b/src/app/pages/category/category.component.html index 2df3e7a..d0167be 100644 --- a/src/app/pages/category/category.component.html +++ b/src/app/pages/category/category.component.html @@ -52,7 +52,7 @@ - diff --git a/src/app/pages/category/subcategories.component.html b/src/app/pages/category/subcategories.component.html index 28c977a..be7c862 100644 --- a/src/app/pages/category/subcategories.component.html +++ b/src/app/pages/category/subcategories.component.html @@ -25,13 +25,13 @@
@if (sub.img) { - + } @else { -
{{ sub.name.charAt(0) }}
+
{{ categoryName(sub).charAt(0) }}
}
-

{{ sub.name }}

+

{{ categoryName(sub) }}

@if (sub.itemCount) { {{ sub.itemCount }} } diff --git a/src/app/pages/category/subcategories.component.ts b/src/app/pages/category/subcategories.component.ts index 948d2a8..ed0fa86 100644 --- a/src/app/pages/category/subcategories.component.ts +++ b/src/app/pages/category/subcategories.component.ts @@ -150,5 +150,5 @@ export class SubcategoriesComponent implements OnInit, OnDestroy { itemName(item: Item): string { return getTranslatedField(item, 'name', this.langService.currentLanguage()); } - categoryName(cat: Category): string { return getTranslatedCategoryName(cat, this.langService.currentLanguage()); } + categoryName(cat: Category | Subcategory): string { return getTranslatedCategoryName(cat, this.langService.currentLanguage()); } } diff --git a/src/app/pages/item-detail/item-detail.component.html b/src/app/pages/item-detail/item-detail.component.html index 22807c6..23479e9 100644 --- a/src/app/pages/item-detail/item-detail.component.html +++ b/src/app/pages/item-detail/item-detail.component.html @@ -23,7 +23,7 @@ @if (item()!.photos![selectedPhotoIndex()]?.video) { } @else { - + }
@@ -337,7 +337,7 @@ @if (item()!.photos![selectedPhotoIndex()]?.video) { } @else { - + } } @else {
diff --git a/src/app/pages/item-detail/item-detail.component.ts b/src/app/pages/item-detail/item-detail.component.ts index 6cc9146..4c074d5 100644 --- a/src/app/pages/item-detail/item-detail.component.ts +++ b/src/app/pages/item-detail/item-detail.component.ts @@ -218,7 +218,7 @@ export class ItemDetailComponent implements OnInit, OnDestroy { getSimpleDescription(): string { const currentItem = this.item(); if (!currentItem) return ''; - return currentItem.simpleDescription || currentItem.description || ''; + return getTranslatedField(currentItem, 'simpleDescription', this.languageService.currentLanguage()); } hasDescriptionFields(): boolean { diff --git a/src/app/pages/search/search.component.html b/src/app/pages/search/search.component.html index 9a57409..32394d8 100644 --- a/src/app/pages/search/search.component.html +++ b/src/app/pages/search/search.component.html @@ -105,7 +105,7 @@
- diff --git a/src/app/services/api.service.ts b/src/app/services/api.service.ts index 986ee07..9e7fbbd 100644 --- a/src/app/services/api.service.ts +++ b/src/app/services/api.service.ts @@ -147,6 +147,23 @@ export class ApiService { : [], }; + if (raw.names && Array.isArray(raw.names)) { + subcategory.names = raw.names; + subcategory.translations = subcategory.translations || {}; + for (const entry of raw.names) { + const lang = this.normalizeLang(entry.language); + const val = entry.value || entry.valuue || ''; + if (val) { + if (!subcategory.translations[lang]) subcategory.translations[lang] = {}; + subcategory.translations[lang].name = val; + } + } + if (!subcategory.name && raw.names.length > 0) { + const ruName = raw.names.find((n: any) => n.language === 'RU' || n.language === 'ru'); + subcategory.name = ruName?.value || ruName?.valuue || raw.names[0].value || raw.names[0].valuue || ''; + } + } + return subcategory; } diff --git a/src/app/utils/item.utils.ts b/src/app/utils/item.utils.ts index 4e9e09b..2f7a2c8 100644 --- a/src/app/utils/item.utils.ts +++ b/src/app/utils/item.utils.ts @@ -1,5 +1,5 @@ import { Item } from '../models'; -import { Category } from '../models/category.model'; +import { Category, Subcategory } from '../models/category.model'; export function getDiscountedPrice(item: Item): number { return item.price * (1 - (item.discount || 0) / 100); @@ -68,6 +68,9 @@ export function getTranslatedField( const val = entry?.value || (entry as any)?.valuue || ''; if (val) return val; } + if (field === 'simpleDescription' && item.translations?.[lang]?.simpleDescription) { + return item.translations[lang].simpleDescription!; + } // 3. Fallback to base field if (field === 'name') return item.name; if (field === 'simpleDescription') return item.simpleDescription || item.description || ''; @@ -77,7 +80,7 @@ export function getTranslatedField( /** * Get translated category name for the current language. */ -export function getTranslatedCategoryName(cat: Category, lang: string): string { +export function getTranslatedCategoryName(cat: Category | Subcategory, lang: string): string { const translation = cat.translations?.[lang]; if (translation?.name) return translation.name;