feat(subscribe): Add unit time

This commit is contained in:
web@ppanel
2024-12-20 18:52:30 +07:00
parent d8b0bd9c2d
commit 39d07ecee5
80 changed files with 553 additions and 165 deletions
+16 -14
View File
@@ -112,27 +112,29 @@ export default function Purchase({
}}
className='flex flex-wrap gap-0.5 *:w-20 md:gap-2'
>
<div className='relative'>
<RadioGroupItem value='1' id='1' className='peer sr-only' />
<Label
htmlFor='1'
className='border-muted bg-popover hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary relative flex h-full flex-col items-center justify-center gap-2 rounded-md border-2 p-2'
>
1 {t('month')}
</Label>
</div>
{subscribe?.unit_time !== 'Minute' && (
<div className='relative'>
<RadioGroupItem value='1' id='1' className='peer sr-only' />
<Label
htmlFor='1'
className='border-muted bg-popover hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary relative flex h-full flex-col items-center justify-center gap-2 rounded-md border-2 p-2'
>
1 / {t(subscribe?.unit_time || 'Month')}
</Label>
</div>
)}
{subscribe?.discount?.map((item) => (
<div key={item.months}>
<div key={item.quantity}>
<RadioGroupItem
value={String(item.months)}
id={String(item.months)}
value={String(item.quantity)}
id={String(item.quantity)}
className='peer sr-only'
/>
<Label
htmlFor={String(item.months)}
htmlFor={String(item.quantity)}
className='border-muted bg-popover hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary relative flex h-full flex-col items-center justify-center gap-2 rounded-md border-2 p-2'
>
{item.months} {t('months')}
{item.quantity} / {t(subscribe?.unit_time || 'Month')}
{item.discount < 100 && (
<Badge variant='destructive'>-{100 - item.discount}%</Badge>
)}
+16 -14
View File
@@ -107,27 +107,29 @@ export default function Renewal({ token, subscribe }: { token: string; subscribe
}}
className='flex flex-wrap gap-2'
>
<div className='relative'>
<RadioGroupItem value='1' id='1' className='peer sr-only' />
<Label
htmlFor='1'
className='border-muted bg-popover hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary relative flex h-full flex-col items-center justify-center gap-2 rounded-md border-2 p-2'
>
1 {t('month')}
</Label>
</div>
{subscribe?.unit_time !== 'Minute' && (
<div className='relative'>
<RadioGroupItem value='1' id='1' className='peer sr-only' />
<Label
htmlFor='1'
className='border-muted bg-popover hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary relative flex h-full flex-col items-center justify-center gap-2 rounded-md border-2 p-2'
>
1 / {t(subscribe?.unit_time || 'Month')}
</Label>
</div>
)}
{subscribe?.discount?.map((item) => (
<div key={item.months}>
<div key={item.quantity}>
<RadioGroupItem
value={String(item.months)}
id={String(item.months)}
value={String(item.quantity)}
id={String(item.quantity)}
className='peer sr-only'
/>
<Label
htmlFor={String(item.months)}
htmlFor={String(item.quantity)}
className='border-muted bg-popover hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary relative flex h-full flex-col items-center justify-center gap-2 rounded-md border-2 p-2'
>
{item.months} {t('months')}
{item.quantity} / {t(subscribe?.unit_time || 'Month')}
{item.discount < 100 && (
<Badge variant='destructive'>-{100 - item.discount}%</Badge>
)}
@@ -15,44 +15,45 @@ interface SubscribeBillingProps {
fee_amount?: number;
amount?: number;
unit_price?: number;
unit_time?: number;
};
}
export function SubscribeBilling({ order }: SubscribeBillingProps) {
const t = useTranslations('subscribe.billing');
const t = useTranslations('subscribe');
return (
<>
<div className='font-semibold'>{t('billingTitle')}</div>
<div className='font-semibold'>{t('billing.billingTitle')}</div>
<ul className='grid grid-cols-2 gap-3 *:flex *:items-center *:justify-between lg:grid-cols-1'>
{order?.type && [1, 2].includes(order?.type) && (
<li>
<span className='text-muted-foreground'>{t('duration')}</span>
<span className='text-muted-foreground'>{t('billing.duration')}</span>
<span>
{order?.quantity || 1} {t('months')}
{order?.quantity || 1} {t(order?.unit_time || 'Month')}
</span>
</li>
)}
<li>
<span className='text-muted-foreground'>{t('price')}</span>
<span className='text-muted-foreground'>{t('billing.price')}</span>
<span>
<Display type='currency' value={order?.price || order?.unit_price} />
</span>
</li>
<li>
<span className='text-muted-foreground'>{t('productDiscount')}</span>
<span className='text-muted-foreground'>{t('billing.productDiscount')}</span>
<span>
<Display type='currency' value={order?.discount} />
</span>
</li>
<li>
<span className='text-muted-foreground'>{t('couponDiscount')}</span>
<span className='text-muted-foreground'>{t('billing.couponDiscount')}</span>
<span>
<Display type='currency' value={order?.coupon_discount} />
</span>
</li>
<li>
<span className='text-muted-foreground'>{t('fee')}</span>
<span className='text-muted-foreground'>{t('billing.fee')}</span>
<span>
<Display type='currency' value={order?.fee_amount} />
</span>
@@ -60,7 +61,7 @@ export function SubscribeBilling({ order }: SubscribeBillingProps) {
</ul>
<Separator />
<div className='flex items-center justify-between font-semibold'>
<span className='text-muted-foreground'>{t('total')}</span>
<span className='text-muted-foreground'>{t('billing.total')}</span>
<span>
<Display type='currency' value={order?.amount} />
</span>
@@ -120,7 +120,7 @@ export default function Page() {
<CardFooter className='relative mt-2 flex flex-col gap-2'>
<h2 className='pb-5 text-2xl font-semibold sm:text-3xl'>
<Display type='currency' value={item.unit_price} />
<span className='text-base font-medium'>/{t('perMonth')}</span>
<span className='text-base font-medium'>/{t(item.unit_time || 'Month')}</span>
</h2>
<Button
className='absolute bottom-0 w-full rounded-b-xl rounded-t-none'
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Den",
"Hour": "Hodina",
"Minute": "Minuta",
"Month": "Měsíc",
"Year": "Rok",
"balanceRecharge": "Doplnění zůstatku",
"buyNow": "Koupit nyní",
"buySubscription": "Koupit předplatné",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "měsíc",
"months": "měsíce",
"name": "Název",
"orderClosed": "Objednávka byla uzavřena",
"orderList": "Seznam objednávek",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Den",
"Hour": "Hodina",
"Minute": "Minuta",
"Month": "Měsíc",
"Year": "Rok",
"all": "Vše",
"billing": {
"billingTitle": "Faktura za zboží",
"couponDiscount": "Sleva z kupónu",
"duration": "Doba trvání balíčku",
"fee": "Poplatek",
"months": "měsíce",
"price": "Cena",
"productDiscount": "Sleva na zboží",
"total": "Celková cena"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "měsíc",
"productDescription": "Popis produktu",
"products": "Produkty"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Tag",
"Hour": "Stunde",
"Minute": "Minute",
"Month": "Monat",
"Year": "Jahr",
"balanceRecharge": "Guthaben aufladen",
"buyNow": "Jetzt kaufen",
"buySubscription": "Abonnement kaufen",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "Monat",
"months": "Monate",
"name": "Name",
"orderClosed": "Bestellung wurde geschlossen",
"orderList": "Bestellliste",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Tag",
"Hour": "Stunde",
"Minute": "Minute",
"Month": "Monat",
"Year": "Jahr",
"all": "Alle",
"billing": {
"billingTitle": "Produktrechnung",
"couponDiscount": "Rabattcode-Rabatt",
"duration": "Paketdauer",
"fee": "Bearbeitungsgebühr",
"months": "Monate",
"price": "Preis",
"productDiscount": "Produktrabatt",
"total": "Gesamtpreis"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "Monat",
"productDescription": "Produktbeschreibung",
"products": "Produkte"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Day",
"Hour": "Hour",
"Minute": "Minute",
"Month": "Month",
"Year": "Year",
"balanceRecharge": "Balance Recharge",
"buyNow": "Buy Now",
"buySubscription": "Buy Subscription",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "month",
"months": "months",
"name": "Name",
"orderClosed": "Order Closed",
"orderList": "Order List",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Day",
"Hour": "Hour",
"Minute": "Minute",
"Month": "Month",
"Year": "Year",
"all": "All",
"billing": {
"billingTitle": "Product Billing",
"couponDiscount": "Coupon Discount",
"duration": "Duration",
"fee": "Fee",
"months": "months",
"price": "Price",
"productDiscount": "Product Discount",
"total": "Total"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "Per Month",
"productDescription": "Product Description",
"products": "Products"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Día",
"Hour": "Hora",
"Minute": "Minuto",
"Month": "Mes",
"Year": "Año",
"balanceRecharge": "Recarga de saldo",
"buyNow": "Comprar ahora",
"buySubscription": "Comprar suscripción",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "mes",
"months": "meses",
"name": "nombre",
"orderClosed": "Pedido cerrado",
"orderList": "Lista de pedidos",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Día",
"Hour": "Hora",
"Minute": "Minuto",
"Month": "Mes",
"Year": "Año",
"all": "todo",
"billing": {
"billingTitle": "Factura de productos",
"couponDiscount": "Descuento por cupón",
"duration": "Duración del paquete",
"fee": "Tarifa de servicio",
"months": "meses",
"price": "Precio",
"productDiscount": "Descuento de producto",
"total": "Precio total"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "mes",
"productDescription": "Descripción del producto",
"products": "productos"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Día",
"Hour": "Hora",
"Minute": "Minuto",
"Month": "Mes",
"Year": "Año",
"balanceRecharge": "Recarga de saldo",
"buyNow": "Compra ahora",
"buySubscription": "Comprar suscripción",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "mes",
"months": "meses",
"name": "Nombre",
"orderClosed": "Pedido cerrado",
"orderList": "Lista de pedidos",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Día",
"Hour": "Hora",
"Minute": "Minuto",
"Month": "Mes",
"Year": "Año",
"all": "Todo",
"billing": {
"billingTitle": "Factura de Producto",
"couponDiscount": "Descuento de Cupón",
"duration": "Duración del Paquete",
"fee": "Tarifa",
"months": "meses",
"price": "Precio",
"productDiscount": "Descuento de Producto",
"total": "Total"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "mes",
"productDescription": "Descripción del producto",
"products": "productos"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Päivä",
"Hour": "Tunti",
"Minute": "Minuutti",
"Month": "Kuukausi",
"Year": "Vuosi",
"balanceRecharge": "Saldon lataus",
"buyNow": "Osta nyt",
"buySubscription": "Osta tilaus",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "kuukausi",
"months": "kuukautta",
"name": "Nimi",
"orderClosed": "Tilaus on suljettu",
"orderList": "Tilauslista",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Päivä",
"Hour": "Tunti",
"Minute": "Minuutti",
"Month": "Kuukausi",
"Year": "Vuosi",
"all": "kaikki",
"billing": {
"billingTitle": "Tuotelasku",
"couponDiscount": "Alennuskoodin alennus",
"duration": "Paketin kesto",
"fee": "Käsittelymaksu",
"months": "kuukautta",
"price": "Hinta",
"productDiscount": "Tuotealennus",
"total": "Kokonaishinta"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "kuukausi",
"productDescription": "Tuotteen kuvaus",
"products": "tuotteet"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Jour",
"Hour": "Heure",
"Minute": "Minute",
"Month": "Mois",
"Year": "Année",
"balanceRecharge": "Recharge de solde",
"buyNow": "Acheter maintenant",
"buySubscription": "Acheter un abonnement",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "mois",
"months": "mois",
"name": "Nom",
"orderClosed": "Commande fermée",
"orderList": "Liste des commandes",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Jour",
"Hour": "Heure",
"Minute": "Minute",
"Month": "Mois",
"Year": "Année",
"all": "Tout",
"billing": {
"billingTitle": "Facture des produits",
"couponDiscount": "Réduction du code promo",
"duration": "Durée du forfait",
"fee": "Frais de service",
"months": "mois",
"price": "Prix",
"productDiscount": "Réduction sur le produit",
"total": "Prix total"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "mois",
"productDescription": "Description du produit",
"products": "produits"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "दिन",
"Hour": "घंटा",
"Minute": "मिनट",
"Month": "महीना",
"Year": "वर्ष",
"balanceRecharge": "शेष राशि रिचार्ज",
"buyNow": "अभी खरीदें",
"buySubscription": "सदस्यता खरीदें",
@@ -16,8 +21,6 @@
"stripe_alipay": "स्ट्राइप (अलीपे)",
"stripe_wechat_pay": "स्ट्राइप (वीचैट)"
},
"month": "महीना",
"months": "महीने",
"name": "नाम",
"orderClosed": "आदेश बंद कर दिया गया है",
"orderList": "आदेश सूची",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "दिन",
"Hour": "घंटा",
"Minute": "मिनट",
"Month": "महीना",
"Year": "वर्ष",
"all": "सभी",
"billing": {
"billingTitle": "उत्पाद बिल",
"couponDiscount": "कूपन छूट",
"duration": "पैकेज अवधि",
"fee": "शुल्क",
"months": "महीने",
"price": "मूल्य",
"productDiscount": "उत्पाद छूट",
"total": "कुल मूल्य"
@@ -25,7 +29,6 @@
"stripe_alipay": "स्ट्राइप (अलीपे)",
"stripe_wechat_pay": "स्ट्राइप (वीचैट)"
},
"perMonth": "महीना",
"productDescription": "उत्पाद विवरण",
"products": "उत्पाद"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Nap",
"Hour": "Óra",
"Minute": "Perc",
"Month": "Hónap",
"Year": "Év",
"balanceRecharge": "Egyenleg feltöltése",
"buyNow": "Vásároljon most",
"buySubscription": "Előfizetés vásárlása",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "hónap",
"months": "hónapok",
"name": "Név",
"orderClosed": "A rendelés lezárva",
"orderList": "Rendelési lista",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Nap",
"Hour": "Óra",
"Minute": "Perc",
"Month": "Hónap",
"Year": "Év",
"all": "Összes",
"billing": {
"billingTitle": "Termékszámla",
"couponDiscount": "Kuponkedvezmény",
"duration": "Csomag időtartama",
"fee": "Kezelési díj",
"months": "hónapok",
"price": "Ár",
"productDiscount": "Termékkedvezmény",
"total": "Teljes ár"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "hónap",
"productDescription": "Termékleírás",
"products": "termékek"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "日",
"Hour": "時",
"Minute": "分",
"Month": "月",
"Year": "年",
"balanceRecharge": "残高チャージ",
"buyNow": "今すぐ購入",
"buySubscription": "サブスクリプションを購入",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe(支付宝)",
"stripe_wechat_pay": "Stripe(微信)"
},
"month": "ヶ月",
"months": "ヶ月",
"name": "名前",
"orderClosed": "注文は締め切られました",
"orderList": "注文リスト",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "日",
"Hour": "時",
"Minute": "分",
"Month": "月",
"Year": "年",
"all": "すべて",
"billing": {
"billingTitle": "商品請求書",
"couponDiscount": "クーポン割引",
"duration": "プラン期間",
"fee": "手数料",
"months": "ヶ月",
"price": "価格",
"productDiscount": "商品割引",
"total": "合計"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe(支付宝)",
"stripe_wechat_pay": "Stripe(微信)"
},
"perMonth": "月",
"productDescription": "商品説明",
"products": "商品"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "일",
"Hour": "시",
"Minute": "분",
"Month": "월",
"Year": "년",
"balanceRecharge": "잔액 충전",
"buyNow": "지금 구매",
"buySubscription": "구독 구매",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe(알리페이)",
"stripe_wechat_pay": "Stripe(위챗)"
},
"month": "개월",
"months": "개월",
"name": "이름",
"orderClosed": "주문이 종료되었습니다",
"orderList": "주문 목록",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "일",
"Hour": "시",
"Minute": "분",
"Month": "월",
"Year": "년",
"all": "전체",
"billing": {
"billingTitle": "상품 청구서",
"couponDiscount": "할인 코드 혜택",
"duration": "패키지 기간",
"fee": "수수료",
"months": "개월",
"price": "가격",
"productDiscount": "상품 할인",
"total": "총액"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe(알리페이)",
"stripe_wechat_pay": "Stripe(위챗)"
},
"perMonth": "월",
"productDescription": "제품 설명",
"products": "상품"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Dag",
"Hour": "Time",
"Minute": "Minutt",
"Month": "Måned",
"Year": "År",
"balanceRecharge": "Saldoopplading",
"buyNow": "Kjøp nå",
"buySubscription": "Kjøp abonnement",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "måned",
"months": "måneder",
"name": "Navn",
"orderClosed": "Bestillingen er stengt",
"orderList": "Bestillingsliste",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Dag",
"Hour": "Time",
"Minute": "Minutt",
"Month": "Måned",
"Year": "År",
"all": "Alle",
"billing": {
"billingTitle": "Varefaktura",
"couponDiscount": "Rabattkode rabatt",
"duration": "Pakketid",
"fee": "Gebyr",
"months": "Måneder",
"price": "Pris",
"productDiscount": "Produkt rabatt",
"total": "Totalpris"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "måned",
"productDescription": "Produktbeskrivelse",
"products": "Produkter"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Dzień",
"Hour": "Godzina",
"Minute": "Minuta",
"Month": "Miesiąc",
"Year": "Rok",
"balanceRecharge": "Doładowanie salda",
"buyNow": "Kup teraz",
"buySubscription": "Kup subskrypcję",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "miesiąc",
"months": "miesięcy",
"name": "Nazwa",
"orderClosed": "Zamówienie zostało zamknięte",
"orderList": "Lista zamówień",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Dzień",
"Hour": "Godzina",
"Minute": "Minuta",
"Month": "Miesiąc",
"Year": "Rok",
"all": "Wszystko",
"billing": {
"billingTitle": "Rachunek za produkt",
"couponDiscount": "Zniżka z kodu rabatowego",
"duration": "Czas trwania pakietu",
"fee": "Opłata manipulacyjna",
"months": "miesiące",
"price": "Cena",
"productDiscount": "Zniżka na produkt",
"total": "Suma"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "miesiąc",
"productDescription": "Opis produktu",
"products": "Produkty"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Dia",
"Hour": "Hora",
"Minute": "Minuto",
"Month": "Mês",
"Year": "Ano",
"balanceRecharge": "Recarga de Saldo",
"buyNow": "Compre Agora",
"buySubscription": "Comprar Assinatura",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "mês",
"months": "meses",
"name": "nome",
"orderClosed": "Pedido encerrado",
"orderList": "Lista de Pedidos",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Dia",
"Hour": "Hora",
"Minute": "Minuto",
"Month": "Mês",
"Year": "Ano",
"all": "todos",
"billing": {
"billingTitle": "Fatura do Produto",
"couponDiscount": "Desconto do Cupom",
"duration": "Duração do Pacote",
"fee": "Taxa de Serviço",
"months": "meses",
"price": "Preço",
"productDiscount": "Desconto do Produto",
"total": "Preço Total"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "mês",
"productDescription": "Descrição do produto",
"products": "produtos"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Zi",
"Hour": "Oră",
"Minute": "Minută",
"Month": "Lună",
"Year": "An",
"balanceRecharge": "Reîncărcare sold",
"buyNow": "Cumpără acum",
"buySubscription": "Cumpără abonament",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "lună",
"months": "luni",
"name": "Nume",
"orderClosed": "Comanda a fost închisă",
"orderList": "Listă de comenzi",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Zi",
"Hour": "Oră",
"Minute": "Minut",
"Month": "Lună",
"Year": "An",
"all": "Toate",
"billing": {
"billingTitle": "Factură produs",
"couponDiscount": "Reducere cupon",
"duration": "Durata pachetului",
"fee": "Taxă de procesare",
"months": "luni",
"price": "Preț",
"productDiscount": "Reducere produs",
"total": "Total"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "lună",
"productDescription": "Descrierea produsului",
"products": "produse"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "День",
"Hour": "Час",
"Minute": "минута",
"Month": "Месяц",
"Year": "Год",
"balanceRecharge": "Пополнение баланса",
"buyNow": "Купить сейчас",
"buySubscription": "Купить подписку",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "месяц",
"months": "месяцы",
"name": "название",
"orderClosed": "Заказ закрыт",
"orderList": "Список заказов",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "День",
"Hour": "Час",
"Minute": "минута",
"Month": "Месяц",
"Year": "Год",
"all": "все",
"billing": {
"billingTitle": "Счет за товар",
"couponDiscount": "Скидка по промокоду",
"duration": "Продолжительность пакета",
"fee": "Комиссия",
"months": "месяцев",
"price": "Цена",
"productDiscount": "Скидка на товар",
"total": "Итоговая цена"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe(Alipay)",
"stripe_wechat_pay": "Stripe(WeChat)"
},
"perMonth": "месяц",
"productDescription": "Описание товара",
"products": "товары"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "วัน",
"Hour": "ชั่วโมง",
"Minute": "นาที",
"Month": "เดือน",
"Year": "ปี",
"balanceRecharge": "เติมเงินยอดคงเหลือ",
"buyNow": "ซื้อทันที",
"buySubscription": "ซื้อการสมัครสมาชิก",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (อาลีเพย์)",
"stripe_wechat_pay": "Stripe (วีแชท)"
},
"month": "เดือน",
"months": "เดือน",
"name": "ชื่อ",
"orderClosed": "คำสั่งซื้อถูกปิดแล้ว",
"orderList": "รายการสั่งซื้อ",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "วัน",
"Hour": "ชั่วโมง",
"Minute": "นาที",
"Month": "เดือน",
"Year": "ปี",
"all": "ทั้งหมด",
"billing": {
"billingTitle": "ใบแจ้งหนี้สินค้า",
"couponDiscount": "ส่วนลดคูปอง",
"duration": "ระยะเวลาแพ็กเกจ",
"fee": "ค่าธรรมเนียม",
"months": "เดือน",
"price": "ราคา",
"productDiscount": "ส่วนลดสินค้า",
"total": "ราคารวม"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (อาลีเพย์)",
"stripe_wechat_pay": "Stripe (วีแชท)"
},
"perMonth": "เดือน",
"productDescription": "รายละเอียดสินค้า",
"products": "สินค้า"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Gün",
"Hour": "Saat",
"Minute": "Dakika",
"Month": "Ay",
"Year": "Yıl",
"balanceRecharge": "Bakiye Yükleme",
"buyNow": "Şimdi Satın Al",
"buySubscription": "Abonelik Satın Al",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe(Alipay)",
"stripe_wechat_pay": "Stripe(WeChat)"
},
"month": "ay",
"months": "aylar",
"name": "Adı",
"orderClosed": "Sipariş kapatıldı",
"orderList": "Sipariş Listesi",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Gün",
"Hour": "Saat",
"Minute": "Dakika",
"Month": "Ay",
"Year": "Yıl",
"all": "Tümü",
"billing": {
"billingTitle": "Ürün Faturası",
"couponDiscount": "Kupon İndirimi",
"duration": "Paket Süresi",
"fee": "İşlem Ücreti",
"months": "Ay",
"price": "Fiyat",
"productDiscount": "Ürün İndirimi",
"total": "Toplam Fiyat"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe(Alipay)",
"stripe_wechat_pay": "Stripe(WeChat)"
},
"perMonth": "ay",
"productDescription": "Ürün Açıklaması",
"products": "ürünler"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "День",
"Hour": "Година",
"Minute": "Хвилина",
"Month": "Місяць",
"Year": "Рік",
"balanceRecharge": "Поповнення балансу",
"buyNow": "Купити зараз",
"buySubscription": "Придбати підписку",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe(Alipay)",
"stripe_wechat_pay": "Stripe(WeChat)"
},
"month": "місяць",
"months": "місяців",
"name": "Назва",
"orderClosed": "Замовлення закрито",
"orderList": "Список замовлень",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "День",
"Hour": "Година",
"Minute": "хвилина",
"Month": "Місяць",
"Year": "Рік",
"all": "всі",
"billing": {
"billingTitle": "Рахунок за товар",
"couponDiscount": "Знижка за промокодом",
"duration": "Тривалість пакету",
"fee": "Комісія",
"months": "місяців",
"price": "Ціна",
"productDiscount": "Знижка на товар",
"total": "Загальна сума"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "місяць",
"productDescription": "Опис товару",
"products": "товари"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "Ngày",
"Hour": "Giờ",
"Minute": "Phút",
"Month": "Tháng",
"Year": "Năm",
"balanceRecharge": "Nạp tiền số dư",
"buyNow": "Mua ngay",
"buySubscription": "Mua đăng ký",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"month": "tháng",
"months": "tháng",
"name": "Tên",
"orderClosed": "Đơn hàng đã đóng",
"orderList": "Danh sách đơn hàng",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "Ngày",
"Hour": "Giờ",
"Minute": "Phút",
"Month": "Tháng",
"Year": "Năm",
"all": "Tất cả",
"billing": {
"billingTitle": "Hóa đơn sản phẩm",
"couponDiscount": "Ưu đãi mã giảm giá",
"duration": "Thời gian gói",
"fee": "Phí dịch vụ",
"months": "tháng",
"price": "Giá",
"productDiscount": "Giảm giá sản phẩm",
"total": "Tổng giá"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe (Alipay)",
"stripe_wechat_pay": "Stripe (WeChat)"
},
"perMonth": "tháng",
"productDescription": "Mô tả sản phẩm",
"products": "Sản phẩm"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "天",
"Hour": "时",
"Minute": "分",
"Month": "月",
"Year": "年",
"balanceRecharge": "余额充值",
"buyNow": "立即购买",
"buySubscription": "购买订阅",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe(支付宝)",
"stripe_wechat_pay": "Stripe(微信)"
},
"month": "个月",
"months": "个月",
"name": "名称",
"orderClosed": "订单已关闭",
"orderList": "订单列表",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "天",
"Hour": "时",
"Minute": "分",
"Month": "月",
"Year": "年",
"all": "全部",
"billing": {
"billingTitle": "商品账单",
"couponDiscount": "折扣码优惠",
"duration": "套餐时长",
"fee": "手续费",
"months": "个月",
"price": "价格",
"productDiscount": "商品折扣",
"total": "总价"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe(支付宝)",
"stripe_wechat_pay": "Stripe(微信)"
},
"perMonth": "月",
"productDescription": "商品描述",
"products": "商品"
}
+5 -2
View File
@@ -1,4 +1,9 @@
{
"Day": "日",
"Hour": "時",
"Minute": "分鐘",
"Month": "月",
"Year": "年",
"balanceRecharge": "餘額儲值",
"buyNow": "立即購買",
"buySubscription": "購買訂閱",
@@ -16,8 +21,6 @@
"stripe_alipay": "Stripe(支付寶)",
"stripe_wechat_pay": "Stripe(微信)"
},
"month": "個月",
"months": "個月",
"name": "名稱",
"orderClosed": "訂單已關閉",
"orderList": "訂單列表",
+5 -2
View File
@@ -1,11 +1,15 @@
{
"Day": "日",
"Hour": "時",
"Minute": "分鐘",
"Month": "月",
"Year": "年",
"all": "全部",
"billing": {
"billingTitle": "商品帳單",
"couponDiscount": "折扣碼優惠",
"duration": "方案時長",
"fee": "手續費",
"months": "個月",
"price": "價格",
"productDiscount": "商品折扣",
"total": "總價"
@@ -25,7 +29,6 @@
"stripe_alipay": "Stripe(支付寶)",
"stripe_wechat_pay": "Stripe(微信)"
},
"perMonth": "每月",
"productDescription": "商品描述",
"products": "產品"
}
+9 -1
View File
@@ -4,6 +4,7 @@ declare namespace API {
title: string;
content: string;
enable: boolean;
type: number;
created_at: number;
updated_at: number;
};
@@ -266,6 +267,7 @@ declare namespace API {
created_at: number;
updated_at: number;
status: NodeStatus;
sort: number;
};
type ServerGroup = {
@@ -296,11 +298,17 @@ declare namespace API {
site_logo: string;
};
type SortItem = {
id: number;
sort: number;
};
type Subscribe = {
id: number;
name: string;
description: string;
unit_price: number;
unit_time: string;
discount: SubscribeDiscount[];
replacement: number;
inventory: number;
@@ -325,7 +333,7 @@ declare namespace API {
};
type SubscribeDiscount = {
months: number;
quantity: number;
discount: number;
};
+9 -1
View File
@@ -4,6 +4,7 @@ declare namespace API {
title: string;
content: string;
enable: boolean;
type: number;
created_at: number;
updated_at: number;
};
@@ -399,6 +400,7 @@ declare namespace API {
created_at: number;
updated_at: number;
status: NodeStatus;
sort: number;
};
type ServerGroup = {
@@ -429,6 +431,11 @@ declare namespace API {
site_logo: string;
};
type SortItem = {
id: number;
sort: number;
};
type StripePayment = {
method: string;
client_secret: string;
@@ -440,6 +447,7 @@ declare namespace API {
name: string;
description: string;
unit_price: number;
unit_time: string;
discount: SubscribeDiscount[];
replacement: number;
inventory: number;
@@ -464,7 +472,7 @@ declare namespace API {
};
type SubscribeDiscount = {
months: number;
quantity: number;
discount: number;
};