diff --git a/content/blog/premium.zh.mdx b/content/blog/premium.zh.mdx new file mode 100644 index 0000000..bcd2e71 --- /dev/null +++ b/content/blog/premium.zh.mdx @@ -0,0 +1,56 @@ +--- +title: "测试专用付费文章" +description: "这是一篇测试专用付费文章。" +date: "2025-08-30" +published: true +premium: true +categories: ["development"] +author: "fox" +image: "/images/blog/post-7.png" +--- + +这是一篇测试专用的付费文章。 + +如果你不是付费用户,你可以阅读这篇文章的这部分内容。 + +但如果你想阅读剩下的内容,你需要成为一个付费用户。 + +你可以点击 "登录" 按钮来以免费用户的身份登录。 + +然后你可以点击 "立即升级" 按钮来升级到付费计划。 + + + 不用担心,你实际上不需要支付任何费用,因为我们处于 Stripe 的沙盒环境中。 + + +你可以使用测试卡号来支付月度或年度 PRO 计划或终身计划。 + +``` +4242 4242 4242 4242 +Exp: 12/34 +CVV: 567 +``` + +之后,你可以返回这篇博客文章,然后你可以阅读剩下的内容。 + +更多详情,请参考文档:[博客](https://mksaas.com/docs/blog)。 + +现在剩下的内容是付费内容。 + + + + + 这是付费内容部分的开始。 + + +这是付费内容部分。 + +你可以阅读这篇内容,只要你是一个付费用户。 + +请不要分享这篇文章给其他人。 + + + 这是付费内容部分的结束。 + + + diff --git a/messages/en.json b/messages/en.json index 9399fc2..8b32a7e 100644 --- a/messages/en.json +++ b/messages/en.json @@ -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", diff --git a/messages/zh.json b/messages/zh.json index ffb9f34..9a23698 100644 --- a/messages/zh.json +++ b/messages/zh.json @@ -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": "目录", diff --git a/source.config.ts b/source.config.ts index b2feabf..1243d2d 100644 --- a/source.config.ts +++ b/source.config.ts @@ -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', diff --git a/src/components/blog/premium-badge.tsx b/src/components/blog/premium-badge.tsx index 51772df..cff5f75 100644 --- a/src/components/blog/premium-badge.tsx +++ b/src/components/blog/premium-badge.tsx @@ -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({ )} > - Premium + {t('premium')} ); }