diff --git a/src/pages/Subscription.tsx b/src/pages/Subscription.tsx index fdf6f30..209da34 100644 --- a/src/pages/Subscription.tsx +++ b/src/pages/Subscription.tsx @@ -10,6 +10,16 @@ import ConnectionModal from '../components/ConnectionModal' import InsufficientBalancePrompt from '../components/InsufficientBalancePrompt' import { useCurrency } from '../hooks/useCurrency' +// Russian pluralization for "день/дня/дней" +const pluralizeDays = (n: number): string => { + const mod100 = n % 100 + const mod10 = n % 10 + if (mod100 >= 11 && mod100 <= 19) return 'дней' + if (mod10 === 1) return 'день' + if (mod10 >= 2 && mod10 <= 4) return 'дня' + return 'дней' +} + // Helper to extract error message from axios/api errors const getErrorMessage = (error: unknown): string => { if (error instanceof AxiosError) { @@ -656,7 +666,7 @@ export default function Subscription() { ) : purchase.days_remaining === 1 ? ( Остался 1 день ) : ( - Осталось {purchase.days_remaining} {purchase.days_remaining >= 5 ? 'дней' : purchase.days_remaining === 1 ? 'день' : 'дня'} + Осталось {purchase.days_remaining} {pluralizeDays(purchase.days_remaining)} )}
@@ -1844,7 +1854,7 @@ export default function Subscription() { const promoCustom = applyPromoDiscount(basePrice, hasExistingDiscount) return (
- {customDays} дней × {formatPrice(selectedTariff.price_per_day_kopeks ?? 0)}/день + {customDays} {pluralizeDays(customDays)} × {formatPrice(selectedTariff.price_per_day_kopeks ?? 0)}/день
{formatPrice(promoCustom.price)} {promoCustom.original && ( @@ -1949,7 +1959,7 @@ export default function Subscription() {
{useCustomDays ? (
- Период: {customDays} дней + Период: {customDays} {pluralizeDays(customDays)}
{formatPrice(promoPeriod.price)} {promoPeriod.original && (