refactor: 主题系统 → monorepo 五个独立网站
- packages/core: @aidir/core 底座库(src/pages 页面组件体 1:1 镜像路由树 / kit 站点外壳工厂 / content/blog / scripts) - sites/: 5 个独立 Next.js 网站(ai-stack / launchai / the-ai-ledger / devai-tools / findai) - 每站独立 package.json / next.config / tailwind / messages / .env / 构建 - src/app 约 56 个薄路由文件(re-export 底座页面 + 内联路由段配置 revalidate/dynamic) - src/site/brand.tsx 站点配置 + src/site/home.tsx 站点首页(createMarketingLayout / createHomePage 工厂) - generate-site.mjs: 站点生成器(新增网站 = SITES 加条目,零 Core 修改) - start-all-sites.sh: 一键启动 3001-3005 - next-config.mjs: 底座统一 Next 配置工厂(next-intl + MDX + standalone) - 五站共享同一套 PostgreSQL / Better Auth / Admin(设计文档 §42) - 验证: 5 站 build OK / typecheck OK / 55 路由冒烟 200 / 品牌-内容-截图 差异确认 / 登录-投票-重复检测 e2e PASS
This commit is contained in:
@@ -0,0 +1,796 @@
|
||||
{
|
||||
"common": {
|
||||
"brand": {
|
||||
"name": "DevAI.tools",
|
||||
"tagline": "AI tools for developers — curated, tested, ranked by the community.",
|
||||
"copyright": "Copyright © 2025",
|
||||
"allRightsReserved": "All rights reserved"
|
||||
},
|
||||
"actions": {
|
||||
"signIn": "Sign in",
|
||||
"signUp": "Sign Up",
|
||||
"signOut": "Sign Out",
|
||||
"getStarted": "Get Started",
|
||||
"startFree": "Start Free",
|
||||
"learnMore": "Learn More",
|
||||
"viewAll": "View All",
|
||||
"submit": "Submit",
|
||||
"cancel": "Cancel",
|
||||
"save": "Save",
|
||||
"delete": "Delete",
|
||||
"edit": "Edit",
|
||||
"update": "Update",
|
||||
"continue": "Continue",
|
||||
"back": "Back",
|
||||
"next": "Next",
|
||||
"contactSales": "Contact Sales",
|
||||
"startTrial": "Start Free Trial"
|
||||
},
|
||||
"status": {
|
||||
"loading": "Loading...",
|
||||
"verified": "Verified",
|
||||
"pending": "Pending",
|
||||
"active": "Active",
|
||||
"inactive": "Inactive"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"main": {
|
||||
"tools": "Tools",
|
||||
"blog": "Blog",
|
||||
"contact": "Contact",
|
||||
"dashboard": "Dashboard",
|
||||
"profile": "Profile"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"terms": "Terms of Service",
|
||||
"privacy": "Privacy Policy",
|
||||
"cookies": "Cookie Policy"
|
||||
},
|
||||
"social": {
|
||||
"twitter": "Twitter",
|
||||
"linkedin": "LinkedIn",
|
||||
"github": "GitHub"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hero": {
|
||||
"badge": "Discover the Best AI Tools",
|
||||
"title": "DevAI.tools — AI Tools for Developers",
|
||||
"description": "Code assistants, DevOps automation and testing copilots — the AI tools developers actually upvote, ranked daily.",
|
||||
"cta": {
|
||||
"primary": "Explore Tools",
|
||||
"secondary": "Read Blog"
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"title": "Everything You Need to Build Fast",
|
||||
"subtitle": "Stop wasting time on boilerplate. Focus on your unique features while this template handles the foundation.",
|
||||
"items": {
|
||||
"aiOptimized": {
|
||||
"title": "Modern Tech Stack",
|
||||
"description": "Built with Next.js 14, TypeScript, Tailwind CSS, and PostgreSQL. Production-ready from day one."
|
||||
},
|
||||
"zeroPipeline": {
|
||||
"title": "Authentication Ready",
|
||||
"description": "Email/password and Google OAuth configured. Session management and protected routes ready to use."
|
||||
},
|
||||
"nonTechnical": {
|
||||
"title": "Admin Dashboard",
|
||||
"description": "Complete admin panel for user management. Monitor your users and manage permissions easily."
|
||||
},
|
||||
"productionGrade": {
|
||||
"title": "Blog System Included",
|
||||
"description": "MDX-powered blog with i18n support. Create content in multiple languages with SEO optimization."
|
||||
}
|
||||
}
|
||||
},
|
||||
"testimonials": {
|
||||
"title": "Trusted by AI Enthusiasts",
|
||||
"subtitle": "Join thousands of users discovering the best AI tools for their workflows.",
|
||||
"items": [
|
||||
{
|
||||
"name": "Sarah Chen",
|
||||
"quote": "Toolso.AI helped me find the perfect AI writing assistant. The categorization makes discovery so easy!",
|
||||
"designation": "Content Creator"
|
||||
},
|
||||
{
|
||||
"name": "Michael Park",
|
||||
"quote": "Finally, a comprehensive AI tools directory that's well-organized. Saved me hours of research.",
|
||||
"designation": "Product Manager"
|
||||
},
|
||||
{
|
||||
"name": "Emily Rodriguez",
|
||||
"quote": "I discover new AI tools every week on Toolso.AI. It's become my go-to resource for AI exploration.",
|
||||
"designation": "Startup Founder"
|
||||
},
|
||||
{
|
||||
"name": "David Kim",
|
||||
"quote": "The search and filter features are incredibly helpful. Found exactly what I needed in minutes.",
|
||||
"designation": "Software Engineer"
|
||||
},
|
||||
{
|
||||
"name": "Lisa Wang",
|
||||
"quote": "Love the multilingual support! Makes it easy to explore AI tools in both English and Chinese.",
|
||||
"designation": "Digital Marketer"
|
||||
},
|
||||
{
|
||||
"name": "James Liu",
|
||||
"quote": "Great resource for staying up-to-date with the latest AI tools. The blog section is also very informative.",
|
||||
"designation": "AI Researcher"
|
||||
}
|
||||
]
|
||||
},
|
||||
"companies": {
|
||||
"title": "Built with Industry-Leading Technologies",
|
||||
"subtitle": "Built on modern stack trusted by the world's best teams"
|
||||
},
|
||||
"gridFeatures": {
|
||||
"aiReady": {
|
||||
"title": "Extensible Architecture",
|
||||
"description": "Clean, modular code structure. Easy to add new features and integrations."
|
||||
},
|
||||
"creem": {
|
||||
"title": "Database Ready",
|
||||
"description": "PostgreSQL with Drizzle ORM configured. Type-safe queries and migrations ready."
|
||||
},
|
||||
"auth": {
|
||||
"title": "Authentication System",
|
||||
"description": "Better Auth with email/password and OAuth. Session management and protected routes ready."
|
||||
},
|
||||
"deploy": {
|
||||
"title": "One-Click Deploy",
|
||||
"description": "Deploy to Vercel, Railway, or any platform instantly. Production-ready from day one."
|
||||
},
|
||||
"typescript": {
|
||||
"title": "TypeScript + Tailwind",
|
||||
"description": "Modern tech stack with Next.js 14, TypeScript, Tailwind CSS, and shadcn/ui components."
|
||||
},
|
||||
"database": {
|
||||
"title": "Admin Dashboard",
|
||||
"description": "Complete admin panel for user management and system monitoring."
|
||||
},
|
||||
"seo": {
|
||||
"title": "SEO & Marketing",
|
||||
"description": "Meta tags, Open Graph, sitemap, and analytics. Everything for organic growth."
|
||||
},
|
||||
"vibeCoding": {
|
||||
"title": "Blog System",
|
||||
"description": "MDX-powered blog with multi-language support. Create content that ranks."
|
||||
}
|
||||
},
|
||||
"cta": {
|
||||
"title": "Find Your Perfect AI Tool",
|
||||
"description": "Browse our curated collection of AI tools and discover what works best for you.",
|
||||
"button": "Explore Tools"
|
||||
},
|
||||
"auth": {
|
||||
"login": {
|
||||
"title": "Sign in to your account",
|
||||
"emailLabel": "Email address",
|
||||
"emailPlaceholder": "hello@example.com",
|
||||
"passwordLabel": "Password",
|
||||
"passwordPlaceholder": "••••••••",
|
||||
"forgotPassword": "Forgot password?",
|
||||
"noAccount": "Don't have an account?",
|
||||
"signUpLink": "Sign Up",
|
||||
"signInButton": "Sign in",
|
||||
"signingIn": "Signing in...",
|
||||
"errors": {
|
||||
"invalidEmail": "Please enter valid email",
|
||||
"emailRequired": "Please enter email",
|
||||
"passwordRequired": "Please enter password",
|
||||
"loginFailed": "Login failed. Please try again.",
|
||||
"googleLoginFailed": "Google login failed. Please try again."
|
||||
}
|
||||
},
|
||||
"signup": {
|
||||
"title": "Sign up for an account",
|
||||
"nameLabel": "Full name",
|
||||
"namePlaceholder": "John Doe",
|
||||
"emailLabel": "Email address",
|
||||
"emailPlaceholder": "hello@example.com",
|
||||
"passwordLabel": "Password",
|
||||
"passwordPlaceholder": "••••••••",
|
||||
"hasAccount": "Already have an account?",
|
||||
"signInLink": "Sign in",
|
||||
"signUpButton": "Sign Up",
|
||||
"signingUp": "Signing up...",
|
||||
"errors": {
|
||||
"nameRequired": "Please enter your name",
|
||||
"invalidEmail": "Please enter valid email",
|
||||
"emailRequired": "Please enter email",
|
||||
"passwordRequired": "Please enter password",
|
||||
"signupFailed": "Sign up failed. Please try again.",
|
||||
"googleSignupFailed": "Google sign up failed. Please try again."
|
||||
}
|
||||
},
|
||||
"social": {
|
||||
"googleSignIn": "Continue with Google",
|
||||
"or": "Or continue with",
|
||||
"githubSignIn": "Continue with GitHub"
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "Check Your Email",
|
||||
"description": "We've sent a verification link to your email address. Please click the link to verify your account and get started.",
|
||||
"notReceived": "Didn't receive the email?",
|
||||
"checkSpam": "Check your spam or junk folder",
|
||||
"checkEmailCorrect": "Make sure you entered the correct email",
|
||||
"waitAndCheck": "Wait a few minutes and check again",
|
||||
"resendButton": "Resend Verification Email",
|
||||
"resending": "Sending...",
|
||||
"resendSuccess": "Verification email sent successfully! Please check your inbox.",
|
||||
"resendError": "Failed to resend verification email.",
|
||||
"backToLogin": "Back to Login",
|
||||
"securityNote": "For your security, the verification link will expire in 24 hours."
|
||||
},
|
||||
"verifyEmail": {
|
||||
"verifying": "Verifying Email",
|
||||
"verifyingDescription": "Please wait while we verify your email address...",
|
||||
"success": "Email Verified!",
|
||||
"successDescription": "Your email has been successfully verified! Redirecting to login...",
|
||||
"alreadyVerified": "Already Verified",
|
||||
"failed": "Verification Failed",
|
||||
"goToLogin": "Go to Login",
|
||||
"backToSignUp": "Back to Sign Up",
|
||||
"requestNew": "Request New Verification Email",
|
||||
"checkSpamNote": "Check your spam folder if you don't see our emails"
|
||||
},
|
||||
"emailVerifiedGuard": {
|
||||
"title": "Email Verification Required",
|
||||
"description": "Please verify your email address to access this page. Check your inbox for the verification link we sent to:",
|
||||
"resendButton": "Resend Verification Email",
|
||||
"resending": "Sending...",
|
||||
"resendSuccess": "Verification email sent! Please check your inbox.",
|
||||
"resendError": "Failed to send verification email. Please try again.",
|
||||
"signOutLink": "Sign out and try a different account"
|
||||
}
|
||||
},
|
||||
"Admin": {
|
||||
"sidebar": {
|
||||
"title": "Admin Panel",
|
||||
"subtitle": "System Management",
|
||||
"dashboard": "Dashboard",
|
||||
"tools": "Tools",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags",
|
||||
"users": "Users",
|
||||
"backToDashboard": "Back to User Dashboard",
|
||||
"submissions": "Submissions",
|
||||
"claims": "Claims",
|
||||
"reviews": "Reviews",
|
||||
"discovery": "Discovery",
|
||||
"votes": "Vote Audit",
|
||||
"analytics": "Analytics"
|
||||
},
|
||||
"header": {
|
||||
"welcome": "Welcome",
|
||||
"adminBadge": "Admin"
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Admin Dashboard",
|
||||
"totalUsers": "Total Users",
|
||||
"activeUsers": "Active Users",
|
||||
"recentUsers": "Recent Users",
|
||||
"viewAllUsers": "View All Users"
|
||||
},
|
||||
"toolsManagement": {
|
||||
"title": "Tools Management",
|
||||
"totalCount": "{count} tools",
|
||||
"searchPlaceholder": "Search tool name or slug...",
|
||||
"allStatus": "All Status",
|
||||
"published": "Published",
|
||||
"draft": "Draft",
|
||||
"addTool": "Add Tool",
|
||||
"tool": "Tool",
|
||||
"slug": "Slug",
|
||||
"status": "Status",
|
||||
"createdAt": "Created",
|
||||
"actions": "Actions",
|
||||
"noData": "No tools data",
|
||||
"previous": "Previous",
|
||||
"next": "Next",
|
||||
"confirmDelete": "Are you sure you want to delete \"{name}\"? This action cannot be undone.",
|
||||
"deleted": "Tool deleted",
|
||||
"deleteFailed": "Delete failed",
|
||||
"statusUpdated": "Status updated",
|
||||
"statusUpdateFailed": "Status update failed",
|
||||
"toDraft": "Set to draft",
|
||||
"publish": "Publish",
|
||||
"edit": "Edit",
|
||||
"visitWebsite": "Visit website",
|
||||
"delete": "Delete",
|
||||
"modal": {
|
||||
"editTitle": "Edit Tool",
|
||||
"addTitle": "Add Tool",
|
||||
"basicInfo": "Basic Information",
|
||||
"linksAndImages": "Links & Images",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags",
|
||||
"slug": "Slug",
|
||||
"status": "Status",
|
||||
"nameEn": "English Name",
|
||||
"nameZh": "Chinese Name",
|
||||
"descriptionEn": "English Description",
|
||||
"descriptionZh": "Chinese Description",
|
||||
"domain": "Domain",
|
||||
"websiteUrl": "Website URL",
|
||||
"logoUrl": "Logo URL",
|
||||
"coverImageUrl": "Cover Image URL",
|
||||
"cancel": "Cancel",
|
||||
"saving": "Saving...",
|
||||
"saveChanges": "Save Changes",
|
||||
"createTool": "Create Tool",
|
||||
"requiredField": "Please fill in required fields",
|
||||
"updated": "Tool updated",
|
||||
"created": "Tool created",
|
||||
"updateFailed": "Update failed",
|
||||
"createFailed": "Create failed",
|
||||
"statusDraft": "Draft",
|
||||
"statusPublished": "Published",
|
||||
"pricing": "Pricing",
|
||||
"pricingNone": "Not set",
|
||||
"pricingFree": "Free",
|
||||
"pricingFreemium": "Freemium",
|
||||
"pricingPaid": "Paid",
|
||||
"featured": "Featured on homepage"
|
||||
}
|
||||
},
|
||||
"categoriesManagement": {
|
||||
"title": "Categories Management",
|
||||
"addCategory": "Add Category",
|
||||
"order": "Order",
|
||||
"category": "Category",
|
||||
"slug": "Slug",
|
||||
"toolCount": "Tools",
|
||||
"toolCountLabel": "{count} tools",
|
||||
"actions": "Actions",
|
||||
"noData": "No categories data",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"cannotDelete": "This category has {count} tools, cannot delete",
|
||||
"confirmDelete": "Are you sure you want to delete category \"{name}\"?",
|
||||
"deleted": "Category deleted",
|
||||
"deleteFailed": "Delete failed",
|
||||
"modal": {
|
||||
"editTitle": "Edit Category",
|
||||
"addTitle": "Add Category",
|
||||
"slug": "Slug",
|
||||
"icon": "Icon (emoji)",
|
||||
"nameEn": "English Name",
|
||||
"nameZh": "Chinese Name",
|
||||
"sortOrder": "Sort Order",
|
||||
"descriptionEn": "English Description",
|
||||
"descriptionZh": "Chinese Description",
|
||||
"cancel": "Cancel",
|
||||
"saving": "Saving...",
|
||||
"saveChanges": "Save Changes",
|
||||
"createCategory": "Create Category",
|
||||
"requiredField": "Please fill in required fields",
|
||||
"updated": "Category updated",
|
||||
"created": "Category created",
|
||||
"updateFailed": "Update failed",
|
||||
"createFailed": "Create failed"
|
||||
}
|
||||
},
|
||||
"tagsManagement": {
|
||||
"title": "Tags Management",
|
||||
"searchPlaceholder": "Search tags...",
|
||||
"addTag": "Add Tag",
|
||||
"toolCountLabel": "{count} tools",
|
||||
"noData": "No tags data",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"confirmDeleteWithTools": "This tag is used by {count} tools. Deleting it will remove the tag from these tools. Continue?",
|
||||
"confirmDelete": "Are you sure you want to delete tag \"{name}\"?",
|
||||
"deleted": "Tag deleted",
|
||||
"deleteFailed": "Delete failed",
|
||||
"modal": {
|
||||
"editTitle": "Edit Tag",
|
||||
"addTitle": "Add Tag",
|
||||
"slug": "Slug",
|
||||
"nameEn": "English Name",
|
||||
"nameZh": "Chinese Name",
|
||||
"cancel": "Cancel",
|
||||
"saving": "Saving...",
|
||||
"saveChanges": "Save Changes",
|
||||
"createTag": "Create Tag",
|
||||
"requiredField": "Please fill in required fields",
|
||||
"updated": "Tag updated",
|
||||
"created": "Tag created",
|
||||
"updateFailed": "Update failed",
|
||||
"createFailed": "Create failed"
|
||||
}
|
||||
},
|
||||
"users": {
|
||||
"searchPlaceholder": "Search by name or email...",
|
||||
"user": "User",
|
||||
"role": "Role",
|
||||
"status": "Status",
|
||||
"joined": "Joined",
|
||||
"actions": "Actions",
|
||||
"admin": "Admin",
|
||||
"banned": "Banned",
|
||||
"active": "Active",
|
||||
"unverified": "Unverified",
|
||||
"verified": "Verified",
|
||||
"emailVerified": "Email Verified",
|
||||
"edit": "Edit",
|
||||
"ban": "Ban",
|
||||
"unban": "Unban",
|
||||
"viewDetails": "View Details",
|
||||
"banReason": "Ban Reason",
|
||||
"banExpires": "Ban Expires",
|
||||
"userDetails": "User Details",
|
||||
"name": "Name",
|
||||
"email": "Email",
|
||||
"lastActive": "Last Active",
|
||||
"close": "Close",
|
||||
"roleUpdated": "Role updated successfully",
|
||||
"roleUpdateFailed": "Failed to update role",
|
||||
"userBanned": "User has been banned",
|
||||
"userUnbanned": "User has been unbanned",
|
||||
"banFailed": "Failed to ban/unban user",
|
||||
"cancel": "Cancel",
|
||||
"pagination": {
|
||||
"previous": "Previous",
|
||||
"next": "Next",
|
||||
"page": "Page {current} of {total}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Dashboard",
|
||||
"welcome": "Welcome back",
|
||||
"cards": {
|
||||
"personalInfo": {
|
||||
"title": "Personal Info",
|
||||
"labels": {
|
||||
"name": "Name",
|
||||
"email": "Email",
|
||||
"status": "Status",
|
||||
"notSet": "Not set"
|
||||
}
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Quick Actions",
|
||||
"editProfile": "Edit Profile",
|
||||
"accountSettings": "Account Settings",
|
||||
"securitySettings": "Security Settings"
|
||||
}
|
||||
},
|
||||
"favorites": {
|
||||
"title": "My Favorites",
|
||||
"empty": "No favorite tools yet.",
|
||||
"browseTools": "Browse tools and save your favorites"
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profile",
|
||||
"subtitle": "Manage your account settings and preferences",
|
||||
"sections": {
|
||||
"basicInfo": {
|
||||
"title": "Basic Information",
|
||||
"fullName": "Full Name",
|
||||
"email": "Email Address",
|
||||
"verificationStatus": "Verification Status",
|
||||
"notSet": "Not set",
|
||||
"nameNotSet": "Name not set",
|
||||
"accountId": "Account ID"
|
||||
},
|
||||
"accountSettings": {
|
||||
"title": "Account Settings",
|
||||
"memberSince": "Member Since",
|
||||
"lastLogin": "Last Login",
|
||||
"accountType": "Account Type"
|
||||
}
|
||||
},
|
||||
"form": {
|
||||
"nameLabel": "Name",
|
||||
"namePlaceholder": "Enter your name",
|
||||
"emailLabel": "Email",
|
||||
"emailPlaceholder": "Enter your email",
|
||||
"updateButton": "Update Profile",
|
||||
"updating": "Updating...",
|
||||
"updateSuccess": "Profile updated successfully!",
|
||||
"updateError": "Failed to update profile. Please try again."
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"title": "Contact Us",
|
||||
"subtitle": "We'd love to hear from you. Send us a message and we'll respond as soon as possible.",
|
||||
"description": "Please reach out to us and we will get back to you shortly.",
|
||||
"testimonial": {
|
||||
"title": "We're here to help",
|
||||
"description": "Our team is ready to assist you with any questions or feedback."
|
||||
},
|
||||
"form": {
|
||||
"nameLabel": "Full Name",
|
||||
"namePlaceholder": "John Doe",
|
||||
"emailLabel": "Email address",
|
||||
"emailPlaceholder": "hello@example.com",
|
||||
"companyLabel": "Company",
|
||||
"companyPlaceholder": "Your Company",
|
||||
"messageLabel": "Message",
|
||||
"messagePlaceholder": "Enter your message here",
|
||||
"submitButton": "Submit",
|
||||
"submitting": "Sending...",
|
||||
"submitSuccess": "Message sent successfully!",
|
||||
"submitError": "Failed to send message. Please try again."
|
||||
}
|
||||
},
|
||||
"blog": {
|
||||
"title": "Blog",
|
||||
"subtitle": "Latest insights and updates from our team",
|
||||
"readMore": "Read More",
|
||||
"minRead": "min read"
|
||||
},
|
||||
"errors": {
|
||||
"404": {
|
||||
"title": "404 - Page Not Found",
|
||||
"message": "The page you are looking for doesn't exist.",
|
||||
"backHome": "Go to Homepage"
|
||||
},
|
||||
"500": {
|
||||
"title": "Something Went Wrong",
|
||||
"message": "We're experiencing technical difficulties. Please try again later.",
|
||||
"backHome": "Back to Home"
|
||||
},
|
||||
"general": {
|
||||
"title": "An Error Occurred",
|
||||
"message": "Something unexpected happened. Please try again.",
|
||||
"tryAgain": "Try Again"
|
||||
}
|
||||
},
|
||||
"featuredTestimonials": {
|
||||
"people": [
|
||||
{
|
||||
"name": "John Doe",
|
||||
"designation": "Software Engineer"
|
||||
},
|
||||
{
|
||||
"name": "Jane Smith",
|
||||
"designation": "Product Manager"
|
||||
},
|
||||
{
|
||||
"name": "Bob Johnson",
|
||||
"designation": "Designer"
|
||||
},
|
||||
{
|
||||
"name": "Alice Brown",
|
||||
"designation": "Developer"
|
||||
}
|
||||
]
|
||||
},
|
||||
"footer": {
|
||||
"tagline": "Discover the best AI tools to boost your productivity.",
|
||||
"product": {
|
||||
"title": "Product",
|
||||
"features": "Features",
|
||||
"documentation": "Documentation"
|
||||
},
|
||||
"company": {
|
||||
"title": "Company",
|
||||
"about": "About",
|
||||
"blog": "Blog",
|
||||
"careers": "Careers"
|
||||
},
|
||||
"legal": {
|
||||
"title": "Legal",
|
||||
"privacy": "Privacy",
|
||||
"terms": "Terms",
|
||||
"cookies": "Cookies"
|
||||
},
|
||||
"social": {
|
||||
"title": "Social",
|
||||
"twitter": "Twitter",
|
||||
"linkedin": "LinkedIn",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"newsletter": {
|
||||
"title": "Subscribe to Newsletter",
|
||||
"description": "Get the latest updates and news directly in your inbox.",
|
||||
"placeholder": "Enter your email",
|
||||
"subscribe": "Subscribe",
|
||||
"success": "Subscribed! Thanks for joining.",
|
||||
"invalidEmail": "Please enter a valid email address.",
|
||||
"error": "Subscription failed. Please try again."
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"title": "AI Tools Directory",
|
||||
"subtitle": "Discover the best AI tools to boost your productivity",
|
||||
"searchPlaceholder": "Search tools...",
|
||||
"all": "All",
|
||||
"foundTools": "Found {count} tools",
|
||||
"visitWebsite": "Visit website",
|
||||
"noTools": "No tools found",
|
||||
"backToTools": "Back to tools",
|
||||
"about": "About",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags",
|
||||
"visitButton": "Visit Website",
|
||||
"toolInfo": "Tool Info",
|
||||
"domain": "Domain",
|
||||
"added": "Added",
|
||||
"notFound": "Tool Not Found",
|
||||
"favorites": {
|
||||
"add": "Save to Favorites",
|
||||
"remove": "Remove from Favorites",
|
||||
"loginRequired": "Please sign in to save favorites",
|
||||
"error": "Action failed. Please try again."
|
||||
},
|
||||
"pricing": {
|
||||
"free": "Free",
|
||||
"freemium": "Freemium",
|
||||
"paid": "Paid"
|
||||
},
|
||||
"categoryPage": {
|
||||
"viewAll": "View all {count} tools"
|
||||
},
|
||||
"reviewCta": "Ratings and reviews come from verified community members. Voted Helpful counts are shown next to each review.",
|
||||
"alternatives": "Alternatives",
|
||||
"seeAllAlternatives": "See all alternatives",
|
||||
"stats": {
|
||||
"votes": "Upvotes",
|
||||
"views": "Views"
|
||||
},
|
||||
"share": {
|
||||
"share": "Share",
|
||||
"copy": "Copy",
|
||||
"copyLink": "Copy link",
|
||||
"copied": "Link copied to clipboard"
|
||||
},
|
||||
"sort": {
|
||||
"latest": "Latest",
|
||||
"trending": "Trending"
|
||||
}
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
"title": "DevAI.tools — AI Tools for Developers",
|
||||
"description": "Code assistants, DevOps automation and testing copilots — the AI tools developers actually upvote, ranked daily.",
|
||||
"ogImage": "https://toolso.ai/banner.png"
|
||||
},
|
||||
"blog": {
|
||||
"title": "Blog - Toolso.AI",
|
||||
"description": "Latest insights, tutorials and updates about AI tools. Stay informed about the best AI tools and industry trends.",
|
||||
"ogImage": "https://toolso.ai/banner.png"
|
||||
},
|
||||
"contact": {
|
||||
"title": "Contact Us - Toolso.AI",
|
||||
"description": "Get in touch with us. We'd love to hear your feedback and tool suggestions.",
|
||||
"ogImage": "https://toolso.ai/banner.png"
|
||||
},
|
||||
"login": {
|
||||
"title": "Login - Toolso.AI",
|
||||
"description": "Sign in to your account to submit tools, save favorites, and contribute to our AI tools directory.",
|
||||
"ogImage": "https://toolso.ai/banner.png"
|
||||
},
|
||||
"signup": {
|
||||
"title": "Sign Up - Toolso.AI",
|
||||
"description": "Create your account and start contributing to our AI tools directory. Submit tools and join our community.",
|
||||
"ogImage": "https://toolso.ai/banner.png"
|
||||
},
|
||||
"terms": {
|
||||
"title": "Terms of Service - Toolso.AI",
|
||||
"description": "Read our terms of service to understand the rules and guidelines for using Toolso.AI.",
|
||||
"ogImage": "https://toolso.ai/banner.png"
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Privacy Policy - Toolso.AI",
|
||||
"description": "Learn how we collect, use, and protect your personal information and data on Toolso.AI.",
|
||||
"ogImage": "https://toolso.ai/banner.png"
|
||||
},
|
||||
"cookies": {
|
||||
"title": "Cookie Policy - Toolso.AI",
|
||||
"description": "Understand how we use cookies and similar tracking technologies on Toolso.AI.",
|
||||
"ogImage": "https://toolso.ai/banner.png"
|
||||
},
|
||||
"tools": {
|
||||
"title": "AI Tools Directory - Discover the Best AI Tools",
|
||||
"description": "Explore our curated collection of AI tools. Find the best AI tools for productivity, creativity, and more."
|
||||
}
|
||||
},
|
||||
"featuredTools": {
|
||||
"title": "Featured Tools",
|
||||
"subtitle": "Curated collection of AI tools to boost your productivity",
|
||||
"visitWebsite": "Visit website",
|
||||
"empty": "No tools yet. Add some in the admin panel.",
|
||||
"viewAll": "View All Tools"
|
||||
},
|
||||
"voting": {
|
||||
"vote": "Upvote",
|
||||
"voted": "Upvoted",
|
||||
"unvote": "Remove vote",
|
||||
"loginRequired": "Please sign in to vote — you'll be brought right back.",
|
||||
"rateLimited": "Slow down a bit — too many votes in a short time.",
|
||||
"error": "Vote failed. Please try again."
|
||||
},
|
||||
"reviews": {
|
||||
"title": "Reviews",
|
||||
"writeReview": "Write a review",
|
||||
"empty": "No reviews yet — be the first to share your experience.",
|
||||
"loadMore": "Load more",
|
||||
"loading": "Loading...",
|
||||
"helpful": "Helpful",
|
||||
"verifiedUser": "Verified user",
|
||||
"pros": "Pros",
|
||||
"cons": "Cons",
|
||||
"yourRating": "Your rating",
|
||||
"ratingRequired": "Please pick a star rating first.",
|
||||
"titlePlaceholder": "Sum it up in one line (optional)",
|
||||
"contentPlaceholder": "What did you use it for? How well does it work?",
|
||||
"prosPlaceholder": "What do you like about it?",
|
||||
"consPlaceholder": "What could be better?",
|
||||
"useCasePlaceholder": "Your use case (e.g. social media content)",
|
||||
"saving": "Saving...",
|
||||
"submit": "Publish review",
|
||||
"update": "Update review",
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete my review",
|
||||
"deleted": "Review deleted",
|
||||
"tooShort": "Review is a bit short — tell us at least a sentence.",
|
||||
"error": "Could not save your review. Please try again.",
|
||||
"basedOn": "Based on {count} reviews"
|
||||
},
|
||||
"submission": {
|
||||
"name": "Tool name",
|
||||
"websiteUrl": "Website URL",
|
||||
"tagline": "Tagline",
|
||||
"taglinePlaceholder": "One-line pitch shown on cards",
|
||||
"description": "Description",
|
||||
"descriptionPlaceholder": "What does it do? Who is it for? What makes it different?",
|
||||
"logoUrl": "Logo URL",
|
||||
"category": "Category",
|
||||
"pricingLabel": "Pricing model",
|
||||
"pricing": {
|
||||
"free": "Free",
|
||||
"freemium": "Freemium",
|
||||
"paid": "Paid",
|
||||
"freeTrial": "Free Trial",
|
||||
"openSource": "Open Source",
|
||||
"contact": "Contact for pricing"
|
||||
},
|
||||
"founderName": "Founder / company",
|
||||
"contactEmail": "Contact email",
|
||||
"socialLinks": "Social links",
|
||||
"note": "Notes for the editors",
|
||||
"notePlaceholder": "Anything that helps us review faster (launch date, metrics...)",
|
||||
"selectPlaceholder": "Select...",
|
||||
"submit": "Submit for review",
|
||||
"submitting": "Submitting...",
|
||||
"submitted": "Submitted! We'll review it within 48 hours.",
|
||||
"reviewNote": "Free listing · reviewed within 48h",
|
||||
"duplicateFound": "Looks like this tool may already be listed:",
|
||||
"duplicateBlocked": "This tool appears to be already listed. Duplicate submissions are not allowed.",
|
||||
"error": "Submission failed. Please check your inputs."
|
||||
},
|
||||
"claim": {
|
||||
"claimThisTool": "Claim this tool",
|
||||
"verifiedOwner": "Verified owner",
|
||||
"formTitle": "Claim ownership of this listing",
|
||||
"rolePlaceholder": "Your role (e.g. Founder, Marketing lead)",
|
||||
"messagePlaceholder": "How should we verify you? (same-domain email, press page...)",
|
||||
"proofPlaceholder": "Proof URL (optional)",
|
||||
"submit": "Send claim",
|
||||
"submitting": "Sending...",
|
||||
"submitted": "Claim sent! We'll review it shortly.",
|
||||
"pendingExists": "You already have a pending claim for this tool.",
|
||||
"cancel": "Cancel",
|
||||
"error": "Could not send your claim."
|
||||
},
|
||||
"rankings": {
|
||||
"title": "Community Rankings",
|
||||
"subtitle": "Seven live leaderboards powered by votes, reviews, saves and engagement — not sponsored placement.",
|
||||
"trending": "Trending",
|
||||
"popular": "Popular",
|
||||
"mostVoted": "Most Voted",
|
||||
"mostSaved": "Most Saved",
|
||||
"highestRated": "Highest Rated",
|
||||
"new": "New",
|
||||
"editorsChoice": "Editor's Choice",
|
||||
"empty": "No tools on this board yet."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user