custom: correct typo in source.config.ts and add premium content translations

This commit is contained in:
javayhu 2025-08-31 16:48:11 +08:00
parent 4faa89c0ee
commit e5061b3b67
5 changed files with 77 additions and 3 deletions

View File

@ -0,0 +1,56 @@
---
title: "测试专用付费文章"
description: "这是一篇测试专用付费文章。"
date: "2025-08-30"
published: true
premium: true
categories: ["development"]
author: "fox"
image: "/images/blog/post-7.png"
---
这是一篇测试专用的付费文章。
如果你不是付费用户,你可以阅读这篇文章的这部分内容。
但如果你想阅读剩下的内容,你需要成为一个付费用户。
你可以点击 "登录" 按钮来以免费用户的身份登录。
然后你可以点击 "立即升级" 按钮来升级到付费计划。
<Callout type="warn">
不用担心,你实际上不需要支付任何费用,因为我们处于 Stripe 的沙盒环境中。
</Callout>
你可以使用测试卡号来支付月度或年度 PRO 计划或终身计划。
```
4242 4242 4242 4242
Exp: 12/34
CVV: 567
```
之后,你可以返回这篇博客文章,然后你可以阅读剩下的内容。
更多详情,请参考文档:[博客](https://mksaas.com/docs/blog)。
现在剩下的内容是付费内容。
<PremiumContent>
<Callout type="info">
这是付费内容部分的开始。
</Callout>
这是付费内容部分。
你可以阅读这篇内容,只要你是一个付费用户。
请不要分享这篇文章给其他人。
<Callout type="info">
这是付费内容部分的结束。
</Callout>
</PremiumContent>

View File

@ -5,6 +5,7 @@
"description": "MkSaaS is the best AI SaaS boilerplate. Make AI SaaS in days, simply and effortlessly"
},
"Common": {
"premium": "Premium",
"login": "Log in",
"logout": "Log out",
"signUp": "Sign up",

View File

@ -5,6 +5,7 @@
"description": "MkSaaS 是构建 AI SaaS 的最佳模板,使用 MkSaaS 可以在几天内轻松构建您的 AI SaaS简单且毫不费力。"
},
"Common": {
"premium": "付费文章",
"login": "登录",
"logout": "退出",
"signUp": "注册",
@ -281,7 +282,20 @@
"all": "全部",
"noPostsFound": "没有找到文章",
"allPosts": "全部文章",
"morePosts": "更多文章"
"morePosts": "更多文章",
"premiumContent": {
"title": "解锁付费内容",
"description": "订阅我们的付费计划,访问所有付费文章和独家内容。",
"upgradeCta": "立即升级",
"benefit1": "所有文章",
"benefit2": "独家内容",
"benefit3": "随时取消",
"signIn": "登录",
"loginRequired": "登录以继续阅读",
"loginDescription": "这是一篇付费文章,请登录您的账户以访问完整内容。",
"checkingAccess": "检查阅读权限...",
"loadingContent": "加载完整内容..."
}
},
"DocsPage": {
"toc": "目录",

View File

@ -85,7 +85,7 @@ export const category = defineCollections({
/**
* Blog posts
*
* dtitle is required, but description is optional in frontmatter
* title is required, but description is optional in frontmatter
*/
export const blog = defineCollections({
type: 'doc',

View File

@ -3,6 +3,7 @@
import { Badge } from '@/components/ui/badge';
import { cn } from '@/lib/utils';
import { CrownIcon } from 'lucide-react';
import { useTranslations } from 'next-intl';
interface PremiumBadgeProps {
className?: string;
@ -15,6 +16,8 @@ export function PremiumBadge({
variant = 'default',
size = 'default',
}: PremiumBadgeProps) {
const t = useTranslations('Common');
const sizeClasses = {
sm: 'text-xs h-5',
default: 'text-xs h-6',
@ -39,7 +42,7 @@ export function PremiumBadge({
)}
>
<CrownIcon className={iconSizes[size]} />
Premium
{t('premium')}
</Badge>
);
}