feat(db): mesh data model — meshes, members, invites, audit log
- pgSchema "mesh" with 4 tables isolating the peer mesh domain - Enums: visibility, transport, tier, role - audit_log is metadata-only (E2E encryption enforced at broker/client) - Cascade on mesh delete, soft-delete via archivedAt/revokedAt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
111
packages/i18n/src/translations/en/admin.json
Normal file
111
packages/i18n/src/translations/en/admin.json
Normal file
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"home": {
|
||||
"header": {
|
||||
"title": "Super Admin",
|
||||
"description": "See your SaaS at glance and manage all your resources in one place."
|
||||
},
|
||||
"summary": {
|
||||
"users": "The number of personal accounts that have been created.",
|
||||
"organizations": "The number of organizations that have been created.",
|
||||
"customers": "The number of customers for your SaaS."
|
||||
}
|
||||
},
|
||||
"users": {
|
||||
"header": {
|
||||
"title": "Users",
|
||||
"description": "Manage your users and their roles."
|
||||
},
|
||||
"user": {
|
||||
"details": {
|
||||
"role": {
|
||||
"update": { "success": "User's role updated successfully!" }
|
||||
},
|
||||
"name": {
|
||||
"update": { "success": "User's name updated successfully!" }
|
||||
}
|
||||
},
|
||||
"ban": {
|
||||
"description": "Ban this user from the platform. You can specify a reason and an optional expiration date for the ban.",
|
||||
"success": "User banned successfully!",
|
||||
"form": {
|
||||
"reason": { "info": "Enter the reason for banning the user." },
|
||||
"expiresIn": {
|
||||
"info": "Enter the expiration date for the ban or leave it blank for no expiration."
|
||||
}
|
||||
}
|
||||
},
|
||||
"unban": { "success": "User unbanned successfully!" },
|
||||
"delete": {
|
||||
"title": "Delete {{name}}",
|
||||
"disclaimer": "You are about to delete this user. \n\nAfter deleting it, all user data (including sessions and permissions) will be permanently deleted and cannot be recovered. \n\nDo you want to continue?",
|
||||
"success": "User deleted successfully!"
|
||||
},
|
||||
"accounts": {
|
||||
"delete": { "success": "Account deleted successfully!" },
|
||||
"password": {
|
||||
"update": {
|
||||
"title": "Update {{name}}'s password",
|
||||
"description": "Make sure to choose a strong password that meets the security requirements. This action will immediately update the user's login credentials.",
|
||||
"success": "Account password updated successfully!",
|
||||
"info": "Enter the new password for the account."
|
||||
}
|
||||
}
|
||||
},
|
||||
"sessions": {
|
||||
"revokeAll": { "success": "All sessions revoked successfully!" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"organizations": {
|
||||
"header": {
|
||||
"title": "Organizations",
|
||||
"description": "Manage your organizations and their members."
|
||||
},
|
||||
"organization": {
|
||||
"delete": {
|
||||
"title": "Delete {{name}}",
|
||||
"disclaimer": "You are about to delete this organization. \n\nAfter deleting it, all organization data (including members and teams) will be permanently deleted and cannot be recovered. \n\nDo you want to continue?",
|
||||
"success": "Organization deleted successfully!"
|
||||
},
|
||||
"details": {
|
||||
"name": {
|
||||
"update": { "success": "Organization name updated successfully!" }
|
||||
},
|
||||
"slug": {
|
||||
"update": { "success": "Organization slug updated successfully!" }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"customers": {
|
||||
"header": {
|
||||
"title": "Customers",
|
||||
"description": "Manage your customers and their subscriptions."
|
||||
},
|
||||
"customer": {
|
||||
"delete": { "success": "Customer deleted successfully!" },
|
||||
"updatePlan": {
|
||||
"title": "Update {{name}}'s plan",
|
||||
"description": "Pick a plan and a status for the customer. This action will immediately update the customer's plan and status.`",
|
||||
"plan": {
|
||||
"info": "The plan determines the features and pricing for the customer."
|
||||
},
|
||||
"status": {
|
||||
"info": "The status determines the subscription status for the customer."
|
||||
},
|
||||
"success": "Customer plan updated successfully!"
|
||||
}
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"cannotCreateUsers": "You cannot create users.",
|
||||
"cannotListUsers": "You cannot list users.",
|
||||
"cannotUpdateUsers": "You cannot update users.",
|
||||
"cannotDeleteUsers": "You cannot delete users.",
|
||||
"cannotListUsersSessions": "You cannot list users sessions.",
|
||||
"cannotBanUsers": "You cannot ban users.",
|
||||
"cannotImpersonateUsers": "You cannot impersonate users.",
|
||||
"cannotRevokeUsersSessions": "You cannot revoke users sessions.",
|
||||
"cannotSetUsersPassword": "You cannot set users password."
|
||||
}
|
||||
}
|
||||
209
packages/i18n/src/translations/en/ai.json
Normal file
209
packages/i18n/src/translations/en/ai.json
Normal file
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"chat": {
|
||||
"title": "Chat",
|
||||
"description": "Ask questions and get responses from popular AI models with web search and deep thinking.",
|
||||
"headline": "How can I help you today?",
|
||||
"composer": {
|
||||
"placeholder": "What do you want to know?",
|
||||
"files": {
|
||||
"add": "Add files",
|
||||
"remove": "Remove",
|
||||
"preview": "Preview",
|
||||
"dropzone": {
|
||||
"title": "Drop your files here",
|
||||
"description": "Drop your files here to add them to the conversation"
|
||||
}
|
||||
}
|
||||
},
|
||||
"new": "Create new chat",
|
||||
"command": {
|
||||
"search": "Type a command or search...",
|
||||
"empty": "No results found."
|
||||
},
|
||||
"example": {
|
||||
"summarize": {
|
||||
"label": "Summarize",
|
||||
"prompt": "Please provide a concise summary of the following text, highlighting the key points and main ideas while maintaining the core message. Please ensure the summary is clear and well-structured: The Industrial Revolution was a period of major industrialization and innovation during the late 18th and early 19th centuries. The Industrial Revolution began in Great Britain and quickly spread throughout Western Europe and North America. This period saw the mechanization of manufacturing, development of factory systems, and significant technological innovations in areas like textile production, steam power, and transportation. It led to major social changes including urbanization, the rise of a new working class, and eventual improvements in living standards. However, it also brought challenges like poor working conditions, child labor, and environmental pollution."
|
||||
},
|
||||
"analyze": {
|
||||
"label": "Analyze",
|
||||
"prompt": "Please analyze this dataset and provide key statistical insights, trends, and patterns. Include relevant metrics, correlations, and any notable outliers: Year,GDP,Population,Life_Expectancy\n1960,543.3,179.3,69.7\n1970,1073.3,203.3,70.8\n1980,2862.5,226.5,73.7\n1990,5980.3,248.7,75.4\n2000,10284.8,281.4,76.8\n2010,14964.4,308.7,78.7\n2020,20893.7,329.5,77.3"
|
||||
},
|
||||
"code": {
|
||||
"label": "Code",
|
||||
"prompt": "Write a function that takes a list of numbers and returns the sum of all the numbers in the list. The function should be written in Python."
|
||||
},
|
||||
"brainstorm": {
|
||||
"label": "Brainstorm",
|
||||
"prompt": "Generate a list of 10 creative ideas for a new product or service. Each idea should be unique, innovative, and have a clear market opportunity. Please provide a brief explanation for each idea."
|
||||
},
|
||||
"surprise": {
|
||||
"label": "Surprise me",
|
||||
"prompt": "Please surprise me with a random fact or interesting tidbit. I'm curious about anything and everything!"
|
||||
}
|
||||
}
|
||||
},
|
||||
"agent": {
|
||||
"title": "Agents",
|
||||
"description": "Personalizable AI agents that operates on your knowledge base and helps with complex tasks.",
|
||||
"headline": {
|
||||
"title": "Agents are coming soon!",
|
||||
"subtitle": "We're working hard to bring you the best AI agents experience. Stay tuned for updates!"
|
||||
}
|
||||
},
|
||||
"image": {
|
||||
"title": "Image generation",
|
||||
"description": "Create visuals from text descriptions using different models like SDXL or Midjourney.",
|
||||
"headline": {
|
||||
"title": "Describe what you imagine 🖼️",
|
||||
"subtitle": "And let's make it live."
|
||||
},
|
||||
"composer": {
|
||||
"placeholder": "A cat shipping its startup in minutes, not hours..."
|
||||
},
|
||||
"history": {
|
||||
"title": "History",
|
||||
"description": "View your image generation history, and see how your images have evolved over time."
|
||||
},
|
||||
"generation": {
|
||||
"new": "Create new",
|
||||
"goTo": "Go to generation",
|
||||
"status": {
|
||||
"idle": "Idle",
|
||||
"created": "Created",
|
||||
"loading": "Loading...",
|
||||
"success": "Completed",
|
||||
"error": "Failed"
|
||||
},
|
||||
"empty": {
|
||||
"title": "No images yet",
|
||||
"description": "There are no images generated, start by describing what you want to see."
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
"fox": {
|
||||
"label": "Mystic Fox",
|
||||
"prompt": "A silver fox with glowing eyes emerging from a misty enchanted forest at twilight, surrounded by floating lanterns"
|
||||
},
|
||||
"penguin": {
|
||||
"label": "Dapper Penguin",
|
||||
"prompt": "A penguin in a tuxedo and monocle sipping tea at an ice bar, with northern lights dancing in the background"
|
||||
},
|
||||
"raccoon": {
|
||||
"label": "Tech Raccoon",
|
||||
"prompt": "A raccoon wearing glasses and a hoodie, coding on multiple screens in a cozy treehouse office filled with snacks"
|
||||
},
|
||||
"elephant": {
|
||||
"label": "Zen Elephant",
|
||||
"prompt": "A baby elephant meditating under a giant baobab tree at sunrise, with butterflies landing on its trunk and ears"
|
||||
},
|
||||
"dolphin": {
|
||||
"label": "Cosmic Dolphin",
|
||||
"prompt": "A dolphin leaping through space, leaving a trail of stardust and nebula colors, with distant planets visible in the background"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pdf": {
|
||||
"title": "Chat with PDF",
|
||||
"description": "Extract insights and answers by chatting directly with your PDF documents.",
|
||||
"new": "Upload new PDF document",
|
||||
"recent": "Recent documents",
|
||||
"command": {
|
||||
"search": "Type a command or search for a document...",
|
||||
"empty": "No results found."
|
||||
},
|
||||
"upload": {
|
||||
"description": "Upload a PDF file by dragging and dropping it here, from url or by selecting a file. Let's chat!",
|
||||
"fromDevice": "Select file from device",
|
||||
"fromUrl": {
|
||||
"placeholder": "Enter PDF url...",
|
||||
"cta": "Chat!"
|
||||
},
|
||||
"example": {
|
||||
"cta": "Try with example PDF"
|
||||
},
|
||||
"error": {
|
||||
"api": "Failed to upload the PDF file. Please try again.",
|
||||
"notFound": "Could not access the PDF file. Please check the URL and try again.",
|
||||
"unauthorized": "Please sign in to upload PDF files."
|
||||
},
|
||||
"signIn": {
|
||||
"title": "Sign in required",
|
||||
"description": "Create a free account or sign in to upload and chat with your PDF documents.",
|
||||
"cta": "Sign in"
|
||||
},
|
||||
"success": "The PDF file has been uploaded successfully!",
|
||||
"confirm": {
|
||||
"title": "Confirm document details",
|
||||
"description": "Please confirm the details of the document you are uploading."
|
||||
},
|
||||
"loading": {
|
||||
"title": "Bear with us...",
|
||||
"description": "We're processing your document, this may take a few seconds."
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
"zoom": {
|
||||
"options": "Zoom options",
|
||||
"fit": "Page fit",
|
||||
"in": "Zoom in",
|
||||
"out": "Zoom out"
|
||||
},
|
||||
"navigation": {
|
||||
"previous": "Previous page",
|
||||
"next": "Next page"
|
||||
},
|
||||
"toggle": "Toggle preview",
|
||||
"noDocuments": "No documents found to preview, please upload a document or try again later."
|
||||
},
|
||||
"composer": {
|
||||
"placeholder": "Ask me anything about this document...",
|
||||
"empty": "Start by asking a question. You can also preview the document by clicking on the preview button."
|
||||
},
|
||||
"download": {
|
||||
"success": "The PDF file has been downloaded!"
|
||||
},
|
||||
"processing": {
|
||||
"indexing": "Indexing document...",
|
||||
"indexingDescription": "We're analyzing your document to enable intelligent search and Q&A. This usually takes a few seconds."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Try asking...",
|
||||
"summarize": "Summarize this document",
|
||||
"keyPoints": "What are the key points?",
|
||||
"explain": "Explain the main concepts",
|
||||
"find": "Find specific information"
|
||||
},
|
||||
"followUp": {
|
||||
"moreDetail": "Tell me more about this",
|
||||
"clarify": "Can you clarify that?",
|
||||
"continue": "What else should I know?"
|
||||
},
|
||||
"selection": {
|
||||
"askAbout": "Ask about this"
|
||||
}
|
||||
},
|
||||
"tts": {
|
||||
"title": "Text to speech",
|
||||
"description": "Convert text to natural-sounding speech with customizable AI voices.",
|
||||
"composer": {
|
||||
"placeholder": "Start typing here or paste any text you want to turn into lifelike speech...",
|
||||
"settings": {
|
||||
"voice": {
|
||||
"speed": {
|
||||
"description": "Controls the speed of the generated speech. Values below 1.0 will slow down the speech, while values above 1.0 will speed it up. Extreme values may affect the quality of the generated speech."
|
||||
},
|
||||
"stability": {
|
||||
"description": "Increasing stability will make the voice more consistent between re-generations, but it can also make it sounds a bit monotone. On longer text fragments we recommend lowering this value."
|
||||
},
|
||||
"similarity": {
|
||||
"description": "High enhancement boosts overall voice clarity and target speaker similarity. Very high values can cause artifacts, so adjusting this setting to find the optimal value is encouraged."
|
||||
},
|
||||
"speakerBoost": {
|
||||
"description": "Boost the similarity of the synthesized speech and the voice at the cost of some generation speed."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
367
packages/i18n/src/translations/en/auth.json
Normal file
367
packages/i18n/src/translations/en/auth.json
Normal file
@@ -0,0 +1,367 @@
|
||||
{
|
||||
"account": {
|
||||
"personal": "Personal Account",
|
||||
"settings": {
|
||||
"title": "Settings",
|
||||
"header": {
|
||||
"title": "Account Settings",
|
||||
"description": "Manage your account settings and preferences."
|
||||
},
|
||||
"security": {
|
||||
"title": "Security",
|
||||
"description": "Manage your account security settings."
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"edit": {
|
||||
"description": "Please enter your full name, or a display name you are comfortable with.",
|
||||
"success": "Name updated successfully!",
|
||||
"info": "Please use 32 characters at maximum."
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"description": "This is your avatar.\nClick on the avatar to upload a custom one from your files.",
|
||||
"info": "An avatar is optional but strongly recommended.",
|
||||
"update": {
|
||||
"success": "Avatar updated successfully!"
|
||||
},
|
||||
"remove": {
|
||||
"success": "Avatar removed successfully!"
|
||||
},
|
||||
"validation": {
|
||||
"file": "Please select an image file.",
|
||||
"size": "File size must be less than {{size}}.",
|
||||
"type": "Only {{types}} files are accepted."
|
||||
}
|
||||
},
|
||||
"accounts": {
|
||||
"title": "Connections",
|
||||
"description": "Connect your TurboStarter Account with a third-party service to use it for login.",
|
||||
"connect": {
|
||||
"success": "{{provider}} account connected!"
|
||||
},
|
||||
"disconnect": {
|
||||
"cta": "Disconnect {{provider}} account",
|
||||
"success": "{{provider}} account disconnected!",
|
||||
"disclaimer": "You are about to remove the Login Connection for {{provider}}.\n\nAfter removing it, you won't be able to use {{provider}} to log into your Personal Account anymore.\n\nDo you want to continue?"
|
||||
},
|
||||
"info": "We only access basic profile information for secure sign-in.",
|
||||
"connectedAt": "Connected at {{date}}"
|
||||
},
|
||||
"sessions": {
|
||||
"title": "Active Sessions",
|
||||
"description": "Manage your active sessions and currently logged in devices.",
|
||||
"info": "You can revoke any session by clicking on the trash icon.",
|
||||
"revoke": {
|
||||
"cta": "Revoke session",
|
||||
"success": "Session revoked successfully!"
|
||||
},
|
||||
"noSessions": "No active sessions found."
|
||||
},
|
||||
"delete": {
|
||||
"title": "Delete Account",
|
||||
"description": "Permanently remove your Personal Account and all of its contents from the TurboStarter platform. This action is not reversible, so please continue with caution.",
|
||||
"cta": "Delete Account",
|
||||
"disclaimer": "You are about to delete your Personal Account. \n\nAfter deleting your account, all your data will be permanently deleted and cannot be recovered. We will send you a confirmation link to verify this action. \n\nDo you want to continue?",
|
||||
"email": {
|
||||
"subject": "We're sorry to see you go",
|
||||
"preview": "Delete your account for TurboStarter",
|
||||
"body": "Click the button below to permanently delete your account.",
|
||||
"or": "Or, copy and paste this link into your browser:",
|
||||
"cta": "Delete account",
|
||||
"disclaimer": "If you didn't request account deletion, there's nothing to worry about, you can safely ignore this email."
|
||||
},
|
||||
"confirmation": {
|
||||
"cta": "Send confirmation link",
|
||||
"success": "Confirmation link sent, check your inbox!"
|
||||
}
|
||||
},
|
||||
"email": {
|
||||
"change": {
|
||||
"description": "Enter the email address you want to use to log in. This will be used for account-related notifications.",
|
||||
"success": "Check your inbox to confirm your new email!",
|
||||
"info": "Email must be verified before it can be used.",
|
||||
"email": {
|
||||
"subject": "Confirm email address change",
|
||||
"preview": "Confirm changing your email address to {{newEmail}} for TurboStarter",
|
||||
"body": "You are requesting to change your email address to <bold>{{newEmail}}</bold>. Click the button below to confirm the change.",
|
||||
"or": "Or, copy and paste this link into your browser:",
|
||||
"cta": "Confirm change email request",
|
||||
"disclaimer": "If you didn't request to change your email address, there's nothing to worry about, you can safely ignore this email."
|
||||
}
|
||||
},
|
||||
"confirm": {
|
||||
"loading": "Sending email...",
|
||||
"cta": "Verify email",
|
||||
"email": {
|
||||
"subject": "Confirm your email address",
|
||||
"preview": "Confirm your email address for TurboStarter",
|
||||
"body": "One step left! Click the button below to verify your email address.",
|
||||
"or": "Or, copy and paste this link into your browser:",
|
||||
"cta": "Confirm email address",
|
||||
"disclaimer": "If you didn't sign up for an account, there's nothing to worry about, you can safely ignore this email.",
|
||||
"sent": "Verification email sent! Please check your inbox."
|
||||
}
|
||||
}
|
||||
},
|
||||
"password": {
|
||||
"update": {
|
||||
"title": "Update password",
|
||||
"description": "Change your password here. Password must contain an uppercase letter, a special character, a number and must be at least 8 characters long.",
|
||||
"info": "Try using a memorable phrase with mixed characters.",
|
||||
"header": {
|
||||
"title": "Update password",
|
||||
"description": "Enter your new password to update your account"
|
||||
},
|
||||
"email": {
|
||||
"subject": "Reset your password",
|
||||
"preview": "Reset your password for TurboStarter",
|
||||
"body": "Forgot password? Click the button below to reset your password.",
|
||||
"or": "Or, copy and paste this link into your browser:",
|
||||
"cta": "Reset password",
|
||||
"disclaimer": "If you didn't request a password reset, there's nothing to worry about, you can safely ignore this email."
|
||||
},
|
||||
"cta": "Update password",
|
||||
"noPassword": "You have no password set. Use the <bold>forgot password</bold> flow to set up a new one.",
|
||||
"success": "Password updated successfully!"
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Forgot password",
|
||||
"label": "Forgot password?",
|
||||
"header": {
|
||||
"title": "Forgot your password?",
|
||||
"description": "Please enter your email address and we'll send you a link to reset your password"
|
||||
},
|
||||
"success": {
|
||||
"title": "Success!",
|
||||
"description": "We've sent you an email with a link to reset your password."
|
||||
},
|
||||
"cta": "Send reset link",
|
||||
"back": "Back to sign in"
|
||||
},
|
||||
"require": {
|
||||
"title": "Reauthenticate",
|
||||
"description": "This operation requires your password to continue."
|
||||
}
|
||||
},
|
||||
"passkeys": {
|
||||
"title": "Passkeys",
|
||||
"description": "Use passkeys as a secure alternative to passwords.",
|
||||
"info": "Passkeys use biometrics or device PINs to provide stronger security.",
|
||||
"addedAt": "Added at {{date}}",
|
||||
"type": {
|
||||
"singleDevice": "Single device",
|
||||
"multiDevice": "Multi-device"
|
||||
},
|
||||
"add": {
|
||||
"cta": "Add passkey",
|
||||
"success": "Passkey added successfully!"
|
||||
},
|
||||
"remove": {
|
||||
"cta": "Remove passkey",
|
||||
"success": "Passkey removed successfully!",
|
||||
"disclaimer": "You are about to remove a Passkey from your account.\n\nAfter removing it, you won't be able to use it to log into your Personal Account anymore.\n\nDo you want to continue?"
|
||||
}
|
||||
},
|
||||
"twoFactor": {
|
||||
"title": "Two-factor Authentication",
|
||||
"description": "Add an additional layer of security by requiring a code sent to your email or phone number to sign in.",
|
||||
"info": "This is an optional (but recommended) feature and can be enabled or disabled at any time.",
|
||||
"enable": {
|
||||
"title": "Enable Two-factor Authentication",
|
||||
"description": "Once two-factor is enabled you will have to provide two methods of authentication in order to sign in into your account.\n\nIn order to enable two-factor authentication you must provide your current password below.",
|
||||
"success": "Two-factor authentication enabled successfully!"
|
||||
},
|
||||
"disable": {
|
||||
"title": "Disable Two-factor Authentication",
|
||||
"description": "Are you sure you want to disable two-factor authentication? Your one-time code via authenticator app (TOTP) will cease to work and your recovery codes will be invalidated.",
|
||||
"success": "Two-factor authentication disabled successfully!"
|
||||
},
|
||||
"totp": {
|
||||
"title": "Authenticator App (TOTP)",
|
||||
"description": "Generate codes using an app like Google Authenticator or Okta Verify.",
|
||||
"enable": {
|
||||
"title": "Enable Authenticator App",
|
||||
"description": "Scan the QR code below with your preferred authenticator app. Then, enter the 6 digit code that the app provides to continue. You can also copy the secret below and paste it into your app."
|
||||
},
|
||||
"success": "Code verified successfully!"
|
||||
},
|
||||
"backupCodes": {
|
||||
"title": "Recovery Codes",
|
||||
"description": "Security codes when you cannot access any of your other two-factor methods.",
|
||||
"save": {
|
||||
"title": "Recovery Codes",
|
||||
"description": "Copy and store these recovery codes in case you lost your device."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"password": "Password",
|
||||
"currentPassword": "Current password",
|
||||
"hidePassword": "Hide password",
|
||||
"showPassword": "Show password",
|
||||
"newPassword": "New password",
|
||||
"divider": "or continue with",
|
||||
"rememberMe": "Remember me",
|
||||
"logout": {
|
||||
"cta": "Log out",
|
||||
"confirm": "Are you sure you want to log out?"
|
||||
},
|
||||
"register": {
|
||||
"title": "Register",
|
||||
"header": {
|
||||
"title": "Create an account",
|
||||
"description": "Please fill in the form below to create your account"
|
||||
},
|
||||
"cta": "Sign up",
|
||||
"alreadyHaveAccount": "Already have an account?",
|
||||
"success": {
|
||||
"title": "Success!",
|
||||
"description": "You have successfully registered! Now verify your email to continue.",
|
||||
"notification": "Success! Now verify your email!"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"header": {
|
||||
"title": "Welcome back! 👋",
|
||||
"description": "Enter your data below to login to your account"
|
||||
},
|
||||
"magicLink": {
|
||||
"label": "Magic link",
|
||||
"cta": "Send me a magic link",
|
||||
"success": {
|
||||
"title": "Success!",
|
||||
"description": "Email with a magic link has been sent to your inbox. Click it to login!"
|
||||
},
|
||||
"email": {
|
||||
"preview": "Login to TurboStarter with a magic link",
|
||||
"subject": "Your magic link 🪄",
|
||||
"body": "Almost in! Click the button below to login.",
|
||||
"or": "Or, copy and paste this link into your browser:",
|
||||
"cta": "Login with magic link",
|
||||
"disclaimer": "If you didn't try to login, there's nothing to worry about, you can safely ignore this email."
|
||||
}
|
||||
},
|
||||
"twoFactor": {
|
||||
"totp": {
|
||||
"header": {
|
||||
"title": "Two-factor Authentication",
|
||||
"description": "Open your authenticator app to view your authentication code and enter it to sign in."
|
||||
},
|
||||
"cta": "Use an authenticator app"
|
||||
},
|
||||
"trustDevice": "Trust this device",
|
||||
"backupCode": {
|
||||
"header": {
|
||||
"title": "Two-factor Authentication",
|
||||
"description": "Enter one of your recovery codes to sign in."
|
||||
},
|
||||
"placeholder": "Enter recovery code",
|
||||
"cta": "Use a recovery code"
|
||||
}
|
||||
},
|
||||
"password": {
|
||||
"loading": "Signing in...",
|
||||
"success": "Signed in!"
|
||||
},
|
||||
"phone": {
|
||||
"label": "Phone"
|
||||
},
|
||||
"anonymous": {
|
||||
"cta": "Continue as Guest"
|
||||
},
|
||||
"passkey": {
|
||||
"cta": "Login with passkey"
|
||||
},
|
||||
"social": "Sign in with <capitalize>{{provider}}</capitalize>",
|
||||
"cta": "Sign in",
|
||||
"noAccount": "Don't have an account yet?"
|
||||
},
|
||||
"goToLogin": "Go to login",
|
||||
"banReason": "Ban reason",
|
||||
"banExpiresIn": "Ban expires in",
|
||||
"updateRole": "Update role",
|
||||
"error": {
|
||||
"cannotSetNonExistentValue": "You cannot set a non-existent value.",
|
||||
"authenticationFailed": "We couldn't authenticate you. Please try logging in again.",
|
||||
"noDataToUpdate": "No data to update.",
|
||||
"user": {
|
||||
"cannotImpersonateAdmins": "You cannot impersonate admins.",
|
||||
"notFound": "We couldn't find your account. Please check your credentials.",
|
||||
"alreadyExists": "An account with this email already exists.",
|
||||
"infoNotFound": "We couldn't retrieve your account information.",
|
||||
"emailNotFound": "No account found with this email address.",
|
||||
"accountNotFound": "We couldn't find your account.",
|
||||
"alreadyHasPassword": "You already have a password set. Please use the <bold>forgot password</bold> flow to reset your password.",
|
||||
"cannotBanYourself": "You cannot ban yourself.",
|
||||
"cannotChangeRole": "You cannot change your role.",
|
||||
"banned": "You are banned.",
|
||||
"cannotGetUser": "You cannot get user.",
|
||||
"cannotRemoveYourself": "You cannot remove yourself.",
|
||||
"alreadyExistsUseAnotherEmail": "An account with this email already exists. Please use a different email."
|
||||
},
|
||||
"session": {
|
||||
"creation": "Unable to start your session. Please try logging in again.",
|
||||
"retrieval": "Your session could not be retrieved. Please log in again.",
|
||||
"expired": "Your session has expired. Please log in again to continue."
|
||||
},
|
||||
"account": {
|
||||
"creation": "We encountered an issue creating your account. Please try again.",
|
||||
"update": "We couldn't update your account. Please try again."
|
||||
},
|
||||
"credentials": {
|
||||
"notFound": "We couldn't find your login credentials.",
|
||||
"password": {
|
||||
"invalid": "The password you entered is incorrect.",
|
||||
"tooShort": "Your password must be at least 8 characters long.",
|
||||
"tooLong": "Your password cannot exceed 100 characters.",
|
||||
"compromised": "The password you entered is compromised. Please use a different password."
|
||||
},
|
||||
"email": {
|
||||
"invalid": "Please enter a valid email address.",
|
||||
"invalidFormat": "Please enter a valid email address.",
|
||||
"notVerified": "Please verify your email address before continuing.",
|
||||
"cannotUpdate": "This email address cannot be updated."
|
||||
},
|
||||
"invalidEmailOrPassword": "The email or password you entered is incorrect."
|
||||
},
|
||||
"social": {
|
||||
"alreadyLinked": "This social account is already connected to another user.",
|
||||
"providerNotFound": "This login method is not available.",
|
||||
"unlinkLastAccount": "You must keep at least one login method connected to your account."
|
||||
},
|
||||
"token": {
|
||||
"invalid": "Your authentication token is invalid. Please try logging in again.",
|
||||
"idNotSupported": "This authentication method is not supported."
|
||||
},
|
||||
"passkey": {
|
||||
"challengeNotFound": "We couldn't find your passkey challenge.",
|
||||
"notAllowed": "You are not allowed to register this passkey.",
|
||||
"verificationFailed": "We couldn't verify your passkey. Please try again.",
|
||||
"notFound": "We couldn't find your passkey.",
|
||||
"updateFailed": "We couldn't update your passkey. Please try again."
|
||||
},
|
||||
"anonymous": {
|
||||
"cannotSignInAgain": "Anonymous users cannot sign in again."
|
||||
},
|
||||
"otp": {
|
||||
"notEnabled": "You must enable OTP to do this.",
|
||||
"expired": "Your OTP has expired. Please request a new one."
|
||||
},
|
||||
"totp": {
|
||||
"notEnabled": "You must enable TOTP to do this."
|
||||
},
|
||||
"twoFactor": {
|
||||
"notEnabled": "You must enable two-factor authentication to do this.",
|
||||
"invalidCookie": "Your two-factor authentication cookie is invalid. Please try again."
|
||||
},
|
||||
"backupCodes": {
|
||||
"notEnabled": "You must enable backup codes to do this."
|
||||
},
|
||||
"code": {
|
||||
"invalid": "The code you entered is invalid.",
|
||||
"tooManyAttempts": "You have made too many attempts. Please try again later."
|
||||
}
|
||||
}
|
||||
}
|
||||
108
packages/i18n/src/translations/en/billing.json
Normal file
108
packages/i18n/src/translations/en/billing.json
Normal file
@@ -0,0 +1,108 @@
|
||||
{
|
||||
"currency": "usd",
|
||||
"pricing": {
|
||||
"label": "Pricing",
|
||||
"title": "Simple plans for everyone",
|
||||
"description": "Choose the plan that suits your needs and start your journey to success."
|
||||
},
|
||||
"manage": {
|
||||
"plan": {
|
||||
"title": "Manage plan",
|
||||
"description": "Check the details of your current plan. You can change your plan or cancel your subscription at any time."
|
||||
},
|
||||
"billing": {
|
||||
"title": "Manage billing",
|
||||
"description": "Visit the Billing Portal to manage your subscription and billing. You can update your payment method, cancel your subscription, download invoices and more.",
|
||||
"visitPortal": "Visit Billing Portal"
|
||||
},
|
||||
"description": "Manage your billing and subscription."
|
||||
},
|
||||
"subscribe": "Subscribe now",
|
||||
"updatePlan": "Update plan",
|
||||
"getLifetimeAccess": "Get lifetime access",
|
||||
"interval": {
|
||||
"day": "day",
|
||||
"week": "week",
|
||||
"month": "month",
|
||||
"year": "year",
|
||||
"lifetime": "lifetime"
|
||||
},
|
||||
"trial": {
|
||||
"cta": "Start for free",
|
||||
"period": "Try with {{period}}-days trial"
|
||||
},
|
||||
"discount": {
|
||||
"specialOffer": "SPECIAL OFFER: <bold>-{{discount}} off</bold>"
|
||||
},
|
||||
"plan": {
|
||||
"starter": {
|
||||
"name": "Starter",
|
||||
"description": "For small projects just getting started",
|
||||
"features": {
|
||||
"sync": "Seamless sync",
|
||||
"basicSupport": "Basic support",
|
||||
"limitedStorage": "Limited storage",
|
||||
"emailNotifications": "Email notifications",
|
||||
"basicReports": "Basic reports"
|
||||
}
|
||||
},
|
||||
"premium": {
|
||||
"name": "Premium",
|
||||
"description": "Perfect for growing teams with advanced features",
|
||||
"badge": "Bestseller",
|
||||
"features": {
|
||||
"advancedSync": "Advanced sync",
|
||||
"prioritySupport": "Priority support",
|
||||
"moreStorage": "More storage",
|
||||
"teamCollaboration": "Team collaboration",
|
||||
"smsNotifications": "SMS notifications",
|
||||
"advancedReports": "Advanced reports"
|
||||
}
|
||||
},
|
||||
"enterprise": {
|
||||
"name": "Enterprise",
|
||||
"description": "Designed for organizations and big teams",
|
||||
"features": {
|
||||
"unlimitedStorage": "Unlimited storage",
|
||||
"customBranding": "Custom branding",
|
||||
"dedicatedSupport": "Dedicated support",
|
||||
"apiAccess": "API access",
|
||||
"userRoles": "User roles management",
|
||||
"auditLogs": "Audit logs",
|
||||
"singleSignOn": "Single sign-on",
|
||||
"advancedAnalytics": "Advanced analytics"
|
||||
}
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"checkout": "An error occurred while checking out.",
|
||||
"checkoutRetrieve": "An error occurred while retrieving the checkout session.",
|
||||
"portal": "An error occurred while getting the portal URL.",
|
||||
"invalidProvider": "Invalid billing provider!",
|
||||
"lemonSqueezy": "Lemon Squeezy API internal error!",
|
||||
"priceNotFound": "Price not found!",
|
||||
"customerNotFound": "Customer not found!",
|
||||
"orderNotFound": "Order not found!",
|
||||
"subscriptionNotFound": "Subscription not found!",
|
||||
"webhook": {
|
||||
"signatureNotFound": "Webhook signature not found!",
|
||||
"signatureInvalid": "Invalid webhook signature.",
|
||||
"metaInvalid": "Invalid webhook meta.",
|
||||
"dataInvalid": "Invalid webhook data.",
|
||||
"unsupportedEvent": "Unsupported webhook event.",
|
||||
"unhandledEvent": "Unhandled webhook event."
|
||||
},
|
||||
"customerCreation": "Customer creation failed.",
|
||||
"promotionCodeRetrieve": "Could not retrieve promotion code."
|
||||
},
|
||||
"status": {
|
||||
"active": "Active",
|
||||
"canceled": "Canceled",
|
||||
"incomplete": "Incomplete",
|
||||
"incompleteExpired": "Incomplete expired",
|
||||
"pastDue": "Past due",
|
||||
"paused": "Paused",
|
||||
"trialing": "Trialing",
|
||||
"unpaid": "Unpaid"
|
||||
}
|
||||
}
|
||||
306
packages/i18n/src/translations/en/common.json
Normal file
306
packages/i18n/src/translations/en/common.json
Normal file
@@ -0,0 +1,306 @@
|
||||
{
|
||||
"apps": "Apps",
|
||||
"freeTools": "Free Tools",
|
||||
"legal": {
|
||||
"label": "Legal",
|
||||
"privacy": "Privacy policy",
|
||||
"terms": "Terms and Conditions",
|
||||
"copyright": "All rights reserved"
|
||||
},
|
||||
"product": "Product",
|
||||
"success": "Success!",
|
||||
"auth": "Auth",
|
||||
"menu": "Menu",
|
||||
"open": "Open",
|
||||
"lastUsed": "Last used",
|
||||
"code": "Code",
|
||||
"security": "Security",
|
||||
"from": "From",
|
||||
"to": "To",
|
||||
"builtWith": "Built with",
|
||||
"about": "About",
|
||||
"dismiss": "Dismiss",
|
||||
"install": "Install",
|
||||
"contactUs": "Contact us",
|
||||
"remove": "Remove",
|
||||
"update": "Update",
|
||||
"reset": "Reset",
|
||||
"resources": "Resources",
|
||||
"or": "Or",
|
||||
"more": "More",
|
||||
"close": "Close",
|
||||
"toggle": "Toggle",
|
||||
"enable": "Enable",
|
||||
"disable": "Disable",
|
||||
"download": "Download",
|
||||
"edit": "Edit",
|
||||
"add": "Add",
|
||||
"regenerate": "Regenerate",
|
||||
"documentation": "Documentation",
|
||||
"done": "Done",
|
||||
"chat": "Chat",
|
||||
"copy": "Copy",
|
||||
"getStarted": "Get started",
|
||||
"goToDashboard": "Go to dashboard",
|
||||
"home": "Home",
|
||||
"ai": "AI",
|
||||
"aiTools": "AI Tools",
|
||||
"settings": "Settings",
|
||||
"billing": "Billing",
|
||||
"blog": "Blog",
|
||||
"support": "Support",
|
||||
"feedback": "Feedback",
|
||||
"dashboard": "Dashboard",
|
||||
"emojai": "Emojai",
|
||||
"enabled": "Enabled",
|
||||
"envin": "Envin",
|
||||
"extro": "Extro",
|
||||
"notEnabled": "Not enabled",
|
||||
"disabled": "Disabled",
|
||||
"platform": "Platform",
|
||||
"account": "Account",
|
||||
"continue": "Continue",
|
||||
"cancel": "Cancel",
|
||||
"save": "Save",
|
||||
"verify": "Verify",
|
||||
"slug": "Slug",
|
||||
"verified": "Verified",
|
||||
"tryAgain": "Try again",
|
||||
"checkForUpdates": "Check for updates",
|
||||
"unverified": "Unverified",
|
||||
"addNew": "Add new",
|
||||
"addMore": "Add more",
|
||||
"provider": "Provider",
|
||||
"credential": "Credential",
|
||||
"accounts": "Accounts",
|
||||
"banned": "Banned",
|
||||
"notBanned": "Not banned",
|
||||
"ban": "Ban",
|
||||
"unban": "Unban",
|
||||
"impersonate": "Impersonate",
|
||||
"impersonating": "Impersonating",
|
||||
"user": "User",
|
||||
"member": "Member",
|
||||
"admin": "Admin",
|
||||
"owner": "Owner",
|
||||
"filter": "Filter",
|
||||
"you": "You",
|
||||
"allRoles": "All roles",
|
||||
"date": "Date",
|
||||
"role": "Role",
|
||||
"joinedAt": "Joined at",
|
||||
"createdAt": "Created at",
|
||||
"expiresIn": "Expires in",
|
||||
"expiresAt": "Expires at",
|
||||
"expires": "Expires",
|
||||
"expired": "Expired",
|
||||
"review": "Review",
|
||||
"resend": "Resend",
|
||||
"status": "Status",
|
||||
"pending": "Pending",
|
||||
"anonymous": "Anonymous",
|
||||
"accepted": "Accepted",
|
||||
"canceled": "Canceled",
|
||||
"rejected": "Rejected",
|
||||
"accept": "Accept",
|
||||
"reject": "Reject",
|
||||
"first": "First",
|
||||
"last": "Last",
|
||||
"noResults": "No results",
|
||||
"rowsSelected": "{{selected}} of {{total}} row(s) selected",
|
||||
"pageOf": "Page {{page}} of {{total}}",
|
||||
"selected": "selected",
|
||||
"selectDate": "Select date",
|
||||
"selectDateRange": "Select date range",
|
||||
"clear": "Clear",
|
||||
"slider": "Slider",
|
||||
"rowsPerPage": "Rows per page",
|
||||
"leave": "Leave",
|
||||
"revokeAll": "Revoke all",
|
||||
"sessions": "Sessions",
|
||||
"view": "View",
|
||||
"searchColumns": "Search columns",
|
||||
"asc": "Asc",
|
||||
"desc": "Desc",
|
||||
"hide": "Hide",
|
||||
"previous": "Previous",
|
||||
"next": "Next",
|
||||
"id": "ID",
|
||||
"ideasGenerator": "Ideas Generator",
|
||||
"image": "Image",
|
||||
"connect": "Connect",
|
||||
"logo": "Logo",
|
||||
"disconnect": "Disconnect",
|
||||
"plan": "Plan",
|
||||
"plans": "Plans",
|
||||
"delete": "Delete",
|
||||
"invite": "Invite",
|
||||
"searchPlaceholder": "Search...",
|
||||
"organization": "Organization",
|
||||
"members": "Members",
|
||||
"memberships": "Memberships",
|
||||
"invitations": "Invitations",
|
||||
"actions": "Actions",
|
||||
"affiliates": "Affiliates",
|
||||
"agent": "Agent",
|
||||
"organizations": "Organizations",
|
||||
"avatar": "Avatar",
|
||||
"learnMore": "Learn more",
|
||||
"upgrade": "Upgrade",
|
||||
"updatedAt": "Updated at",
|
||||
"visitors": "Visitors",
|
||||
"desktop": "Desktop",
|
||||
"mobile": "Mobile",
|
||||
"other": "Other",
|
||||
"pdf": "PDF",
|
||||
"views": "Views",
|
||||
"users": "Users",
|
||||
"customers": "Customers",
|
||||
"lastDays": "Last {{count}} days",
|
||||
"lastMonths_one": "Last month",
|
||||
"lastMonths_other": "Last {{count}} months",
|
||||
"selectMonth": "Select month",
|
||||
"seeRoadmap": "See roadmap",
|
||||
"general": "General",
|
||||
"notifications": "Notifications",
|
||||
"rate": "Rate",
|
||||
"share": "Share",
|
||||
"syncreads": "SyncReads",
|
||||
"privacy": "Privacy",
|
||||
"reason": "Reason",
|
||||
"never": "Never",
|
||||
"language": {
|
||||
"label": "Language",
|
||||
"description": "Pick a language for your app.",
|
||||
"info": "This will change the language of the app. It will not change the language of the browser.",
|
||||
"change": "Change language"
|
||||
},
|
||||
"theme": {
|
||||
"title": "Theme",
|
||||
"customization": {
|
||||
"title": "Customize",
|
||||
"label": "Customize theme",
|
||||
"description": "Pick a style and color for your app."
|
||||
},
|
||||
"color": {
|
||||
"label": "Color",
|
||||
"orange": "Orange",
|
||||
"rose": "Rose",
|
||||
"red": "Red",
|
||||
"yellow": "Yellow",
|
||||
"gray": "Gray",
|
||||
"stone": "Stone",
|
||||
"green": "Green",
|
||||
"blue": "Blue",
|
||||
"violet": "Violet"
|
||||
},
|
||||
"mode": {
|
||||
"label": "Mode",
|
||||
"system": "System",
|
||||
"light": "Light",
|
||||
"dark": "Dark"
|
||||
}
|
||||
},
|
||||
"name": "Name",
|
||||
"message": "Message",
|
||||
"email": "Email",
|
||||
"skip": "Skip",
|
||||
"finish": "Finish",
|
||||
"two-factor": "Two-factor Authentication",
|
||||
"error": {
|
||||
"title": "Oops!",
|
||||
"general": "Something went wrong, please try again.",
|
||||
"apologies": "Apologies, an error occurred while processing your request. Please contact us if the issue persists.",
|
||||
"invalid": "Invalid payload!",
|
||||
"notFound": "Not found!",
|
||||
"resourceDoesNotExist": "The resource you are looking for does not exist.",
|
||||
"unauthorized": "You need to be logged in to access this feature!",
|
||||
"forbidden": "You don't have permission to access this feature!",
|
||||
"insufficientCredits": "Insufficient credits",
|
||||
"rateLimit": "Rate limit exceeded"
|
||||
},
|
||||
"search": {
|
||||
"label": "Search",
|
||||
"inProgress": "Searching...",
|
||||
"completed": "Search completed"
|
||||
},
|
||||
"greeting": {
|
||||
"morning": "Good morning",
|
||||
"afternoon": "Good afternoon",
|
||||
"evening": "Good evening",
|
||||
"night": "Good night"
|
||||
},
|
||||
"like": "Like",
|
||||
"dislike": "Dislike",
|
||||
"reload": "Reload",
|
||||
"creditsLeft": "Credits left",
|
||||
"credits": {
|
||||
"description": "You have {{count}} credits remaining",
|
||||
"description2": "Credits are used for AI operations",
|
||||
"description3": "Upgrade your plan for more credits",
|
||||
"cta": "Get more credits"
|
||||
},
|
||||
"rateLimit": {
|
||||
"description": "You've hit your rate limit",
|
||||
"description2": "Please wait before making more requests",
|
||||
"description3": "Upgrade your plan for higher limits",
|
||||
"cta": "Upgrade plan"
|
||||
},
|
||||
"goBackHome": "Go back home",
|
||||
"history": "History",
|
||||
"current": "Current",
|
||||
"stop": "Stop",
|
||||
"send": "Send",
|
||||
"record": "Record",
|
||||
"recording": "Recording...",
|
||||
"processing": "Processing",
|
||||
"transcribing": "Transcribing...",
|
||||
"microphoneDenied": "Microphone access denied",
|
||||
"transcriptionFailed": "Transcription failed. Please try again.",
|
||||
"pressEscapeToCancel": "Press Escape to cancel",
|
||||
"newTab": "Open in new tab",
|
||||
"results": "Results",
|
||||
"analyzingImage": "Analyzing image...",
|
||||
"reasoning": {
|
||||
"inProgress": "Thinking...",
|
||||
"completed": "Reasoning completed"
|
||||
},
|
||||
"theme.toggle": "Toggle theme",
|
||||
"tts": "Text to Speech",
|
||||
"speed": "Speed",
|
||||
"slower": "Slower",
|
||||
"faster": "Faster",
|
||||
"stability": "Stability",
|
||||
"moreVariable": "More variable",
|
||||
"moreStable": "More stable",
|
||||
"similarity": "Similarity",
|
||||
"low": "Low",
|
||||
"high": "High",
|
||||
"speakerBoost": "Speaker boost",
|
||||
"pause": "Pause",
|
||||
"play": "Play",
|
||||
"second_one": "{{count}} second",
|
||||
"second_other": "{{count}} seconds",
|
||||
"square": "Square",
|
||||
"standard": "Standard",
|
||||
"landscape": "Landscape",
|
||||
"portrait": "Portrait",
|
||||
"model": "Model",
|
||||
"aspectRatio": "Aspect ratio",
|
||||
"count": "Count",
|
||||
"completedAt": "Completed at",
|
||||
"details": "Details",
|
||||
"file": "File",
|
||||
"size": "Size",
|
||||
"type": "Type",
|
||||
"confirm": "Confirm",
|
||||
"downloading": "Downloading...",
|
||||
"canvases": "Canvases",
|
||||
"threads": "Threads",
|
||||
"briefing": "Briefing",
|
||||
"connections": "Connections",
|
||||
"vocabulary": "Vocabulary",
|
||||
"dataHealth": "Data Health",
|
||||
"demos": "Demos",
|
||||
"dev": "Dev"
|
||||
}
|
||||
26
packages/i18n/src/translations/en/dashboard.json
Normal file
26
packages/i18n/src/translations/en/dashboard.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"user": {
|
||||
"home": {
|
||||
"title": "Dashboard",
|
||||
"description": "An overview of your personal account's activity across all your projects."
|
||||
}
|
||||
},
|
||||
"organization": {
|
||||
"home": {
|
||||
"title": "Organization dashboard",
|
||||
"description": "An overview of your organization's activity and performance across all projects."
|
||||
}
|
||||
},
|
||||
"chart": {
|
||||
"showing": "Showing total visitors for the last period",
|
||||
"trending": "Trending by up to 5.2% this month",
|
||||
"period": "January - June 2024",
|
||||
"bar": "Bar Chart",
|
||||
"pie": "Pie Chart",
|
||||
"area": "Area Chart",
|
||||
"line": "Line Chart",
|
||||
"shape": "Shape Chart",
|
||||
"radial": "Radial Chart",
|
||||
"radar": "Radar Chart"
|
||||
}
|
||||
}
|
||||
11
packages/i18n/src/translations/en/index.ts
Normal file
11
packages/i18n/src/translations/en/index.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
export const en = {
|
||||
common: () => import("./common.json"),
|
||||
auth: () => import("./auth.json"),
|
||||
billing: () => import("./billing.json"),
|
||||
marketing: () => import("./marketing.json"),
|
||||
organization: () => import("./organization.json"),
|
||||
admin: () => import("./admin.json"),
|
||||
dashboard: () => import("./dashboard.json"),
|
||||
validation: () => import("./validation.json"),
|
||||
ai: () => import("./ai.json"),
|
||||
} as const;
|
||||
242
packages/i18n/src/translations/en/marketing.json
Normal file
242
packages/i18n/src/translations/en/marketing.json
Normal file
@@ -0,0 +1,242 @@
|
||||
{
|
||||
"product": {
|
||||
"title": "This could be your very own $1M startup",
|
||||
"description": "A fully customizable TurboStarter application. Swap in your content and launch your product faster than ever.",
|
||||
"mobile": {
|
||||
"ios": {
|
||||
"title": "iOS App",
|
||||
"description": "Native experience on iPhone and iPad"
|
||||
},
|
||||
"android": {
|
||||
"title": "Android App",
|
||||
"description": "Optimized for Android phones"
|
||||
}
|
||||
},
|
||||
"extension": {
|
||||
"chrome": {
|
||||
"title": "Chrome Extension",
|
||||
"description": "Integration with Chrome browser"
|
||||
},
|
||||
"firefox": {
|
||||
"title": "Firefox Add-on",
|
||||
"description": "Enhanced browsing for Firefox users"
|
||||
},
|
||||
"edge": {
|
||||
"title": "Edge Add-on",
|
||||
"description": "Powerful tools for Microsoft Edge"
|
||||
}
|
||||
}
|
||||
},
|
||||
"announcement": "Your feature announcement goes here",
|
||||
"shippedWith": "Shipped with production-ready tools",
|
||||
"cta": {
|
||||
"question": "Ready to start?",
|
||||
"button": "Start for free",
|
||||
"buy": {
|
||||
"question": "Ready to start?",
|
||||
"description": "Purchase to unlock full access to the codebase and start shipping your product today. On all platforms.",
|
||||
"button": "Get access",
|
||||
"join": {
|
||||
"description": "Join other founders customizing TurboStarter, share launch tactics, and stay close to new drops.",
|
||||
"button": "Join the community"
|
||||
}
|
||||
}
|
||||
},
|
||||
"editToReload": "Edit <code>{{file}}</code> and save to reload.",
|
||||
"workInProgress": {
|
||||
"title": "We're working on it!",
|
||||
"description": "{{feature}} is currently not available. We're working on it and it will be available soon."
|
||||
},
|
||||
"features": {
|
||||
"label": "Features",
|
||||
"title": "Turn visitors into customers",
|
||||
"description": "Everything you need to build, deploy, and scale your applications with confidence.",
|
||||
"feature": {
|
||||
"core": {
|
||||
"title": "Core foundation",
|
||||
"description": "Authentication, database, and API already wired up so you can focus on customer value."
|
||||
},
|
||||
"ai": {
|
||||
"title": "AI-powered capabilities",
|
||||
"description": "Intelligent features with smart recommendations and automated workflows powered by AI."
|
||||
},
|
||||
"mobile": {
|
||||
"title": "Native mobile experience",
|
||||
"description": "Fully-featured mobile app with seamless synchronization across all your devices."
|
||||
},
|
||||
"extension": {
|
||||
"title": "Browser extension",
|
||||
"description": "Keep users engaged in their browser with customizable shortcuts to your product."
|
||||
}
|
||||
}
|
||||
},
|
||||
"testimonials": {
|
||||
"label": "Testimonials",
|
||||
"title": "Teams ship faster with us",
|
||||
"description": "Hear from founders and developers who customized the starter to launch sooner and convert better.",
|
||||
"rating": "{{rating}} from {{count}}+ reviews",
|
||||
"reviews": {
|
||||
"jack": {
|
||||
"name": "Jack",
|
||||
"position": "Full Stack Developer",
|
||||
"body": "The starter freed our team from boilerplate work. We swapped in our copy over a weekend and focused on features customers actually wanted."
|
||||
},
|
||||
"jill": {
|
||||
"name": "Jill",
|
||||
"position": "Startup Founder",
|
||||
"body": "We launched our MVP in two weeks. Everything from marketing pages to auth was ready—we just rewrote the copy for our audience."
|
||||
},
|
||||
"john": {
|
||||
"name": "John",
|
||||
"position": "Senior Developer",
|
||||
"body": "The DX is unmatched. The stack works out of the box and stays flexible enough to shape around our product narrative."
|
||||
},
|
||||
"sarah": {
|
||||
"name": "Sarah",
|
||||
"position": "Product Manager",
|
||||
"body": "We scaled from prototype to thousands of users without drama. Analytics, billing, and marketing flows were ready to customize."
|
||||
},
|
||||
"mike": {
|
||||
"name": "Mike",
|
||||
"position": "Engineering Lead",
|
||||
"body": "The community is stellar. Fast answers, launch feedback, and constant improvements keep our team moving."
|
||||
}
|
||||
}
|
||||
},
|
||||
"faq": {
|
||||
"label": "FAQ",
|
||||
"title": "Have a question? We got answers",
|
||||
"description": "Find answers to frequently asked questions about features, pricing, implementation, and getting started with our platform.",
|
||||
"cta": "Contact us",
|
||||
"question": {
|
||||
"whatDoesOurPlatformDo": {
|
||||
"question": "What does our platform do?",
|
||||
"answer": "TurboStarter gives you a full-stack SaaS foundation—marketing site, web app, mobile apps, and extensions—so you can focus on your unique customer experience."
|
||||
},
|
||||
"howWillThisBenefitMyBusiness": {
|
||||
"question": "How will this benefit my business?",
|
||||
"answer": "You launch faster, ship features sooner, and convert more leads because the core product, analytics, and billing flows are already in place."
|
||||
},
|
||||
"isMyDataSafe": {
|
||||
"question": "Is my data safe?",
|
||||
"answer": "Yes. We follow enterprise-grade security practices and provide guardrails so you can adapt policies to your industry requirements."
|
||||
},
|
||||
"whatKindOfIntegrationsAreAvailable": {
|
||||
"question": "What kind of integrations are available?",
|
||||
"answer": "TurboStarter ships with popular SaaS integrations out of the box, and the modular architecture makes adding your stack straightforward."
|
||||
},
|
||||
"howEasyIsItToOnboardMyTeam": {
|
||||
"question": "How easy is it to onboard my team?",
|
||||
"answer": "Your team can dive in quickly with clear docs, TypeScript-first patterns, and examples that show exactly where to customize."
|
||||
},
|
||||
"whatTypesOfBusinessesCanUseThis": {
|
||||
"question": "What types of businesses can use this?",
|
||||
"answer": "From solo founders to enterprise innovation teams, TurboStarter adapts to any SaaS use case that needs a head start."
|
||||
},
|
||||
"canICustomizeThisToFitMyBusinessNeeds": {
|
||||
"question": "Can I customize this to fit my business needs?",
|
||||
"answer": "Absolutely. Every module is designed for quick customization—update copy, swap components, and extend logic without fighting the framework."
|
||||
}
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"label": "Contact",
|
||||
"title": "Get in touch with us today for support",
|
||||
"cta": "Talk to sales",
|
||||
"description": "Reach us for assistance or feedback",
|
||||
"form": {
|
||||
"name": {
|
||||
"placeholder": "John Doe"
|
||||
},
|
||||
"email": {
|
||||
"placeholder": "your@email.com"
|
||||
},
|
||||
"message": {
|
||||
"placeholder": "How can we help you?"
|
||||
},
|
||||
"submit": "Send message",
|
||||
"success": {
|
||||
"title": "Message sent!",
|
||||
"description": "Thank you for your message. We'll get back to you soon."
|
||||
}
|
||||
},
|
||||
"email": {
|
||||
"subject": "You've received a new contact form submission",
|
||||
"body": "New contact form submission"
|
||||
}
|
||||
},
|
||||
"blog": {
|
||||
"label": "Blog",
|
||||
"title": "News and updates about the platform",
|
||||
"description": "Stay up to date with the latest news, insights, and updates from our platform. Discover new features, best practices, and industry trends.",
|
||||
"timeToRead": "{{time}} min read",
|
||||
"tag": {
|
||||
"learning": "learning",
|
||||
"skills": "skills",
|
||||
"progress": "progress",
|
||||
"product": "product",
|
||||
"development": "development",
|
||||
"prototype": "prototype",
|
||||
"launch": "launch"
|
||||
}
|
||||
},
|
||||
"api": {
|
||||
"title": "API Reference",
|
||||
"description": "Build integrations with our API"
|
||||
},
|
||||
"roadmap": {
|
||||
"title": "Roadmap",
|
||||
"description": "See what's coming next"
|
||||
},
|
||||
"docs": {
|
||||
"title": "Docs",
|
||||
"description": "Learn how to use TurboStarter"
|
||||
},
|
||||
"ai": {
|
||||
"description": "Unlock productivity and innovation with TurboStarter's AI assistant. Get instant answers, automate tasks, and boost your workflow using advanced artificial intelligence—secure, reliable, and designed for modern teams.",
|
||||
"prompt": {
|
||||
"history": "Tell the history of the internet",
|
||||
"capitals": "Quiz me on the world capitals",
|
||||
"quantum": "Explain quantum computing",
|
||||
"realWorld": "Describe a real-world AI case"
|
||||
},
|
||||
"placeholder": "Ask a question...",
|
||||
"cta": "Submit"
|
||||
},
|
||||
"setup": {
|
||||
"steps": {
|
||||
"step": {
|
||||
"start": {
|
||||
"title": "This is a simple step",
|
||||
"description": "You need to press Continue button to proceed to the next step"
|
||||
},
|
||||
"required": {
|
||||
"title": "This is a required step",
|
||||
"description": "You have to complete all the required fields to proceed to the next step",
|
||||
"fields": {
|
||||
"data": "I understand that my data is private and encrypted",
|
||||
"privacy": "I've read and agree to the <a>Privacy Policy</a>"
|
||||
}
|
||||
},
|
||||
"skip": {
|
||||
"title": "This is a skip step",
|
||||
"description": "You can skip this step and proceed to the next step"
|
||||
},
|
||||
"final": {
|
||||
"title": "This is a final step",
|
||||
"description": "You have completed all the steps, enjoy your new app!"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"available": {
|
||||
"title": "New update available!",
|
||||
"description": "A new update is ready to be installed. Click below to install it or dismiss for later."
|
||||
},
|
||||
"installing": {
|
||||
"title": "Installing update...",
|
||||
"description": "The update is being installed. Please wait a moment."
|
||||
}
|
||||
}
|
||||
}
|
||||
198
packages/i18n/src/translations/en/organization.json
Normal file
198
packages/i18n/src/translations/en/organization.json
Normal file
@@ -0,0 +1,198 @@
|
||||
{
|
||||
"create": {
|
||||
"title": "Create organization",
|
||||
"description": "Create a new organization to manage your team and projects.",
|
||||
"cta": "Create organization",
|
||||
"info": "Your organization name should be unique and descriptive."
|
||||
},
|
||||
"join": {
|
||||
"title": "Join organization",
|
||||
"description": "Join an organization to collaborate with your team, manage projects efficiently, and access shared resources."
|
||||
},
|
||||
"settings": {
|
||||
"title": "Settings",
|
||||
"header": {
|
||||
"title": "Organization settings",
|
||||
"description": "Manage your organization settings and preferences."
|
||||
}
|
||||
},
|
||||
"invitations": {
|
||||
"title": "Invitations",
|
||||
"disclaimer": {
|
||||
"title": "You have been invited to join an organization",
|
||||
"description": "Sign in or create an account to accept the invitation and join the organization."
|
||||
},
|
||||
"resend": {
|
||||
"success": "Invitation resent successfully!"
|
||||
},
|
||||
"cancel": {
|
||||
"success": "Invitation canceled successfully!"
|
||||
},
|
||||
"accept": {
|
||||
"success": "You're now a member of {{organization}}!"
|
||||
},
|
||||
"reject": {
|
||||
"success": "You have rejected to join {{organization}}."
|
||||
},
|
||||
"expired": {
|
||||
"title": "Invitation not found or expired",
|
||||
"description": "The invitation you are looking for is either expired or does not exist. Please contact the organization owner to renew the invite.",
|
||||
"cta": "Back to dashboard"
|
||||
},
|
||||
"emailMismatch": {
|
||||
"title": "You're currently logged in with a different account",
|
||||
"description": "The email you are trying to use does not match the invitation email. Please sign in as <bold>{{email}}</bold> or contact the organization owner to update the invitation.",
|
||||
"cta": "Sign in as {{email}}",
|
||||
"skip": "Skip to dashboard"
|
||||
},
|
||||
"invitation": {
|
||||
"title": "Join {{organizationName}}",
|
||||
"description": "<bold>{{inviterEmail}}</bold> has invited you to join <bold>{{organizationName}}</bold> on TurboStarter.",
|
||||
"skip": "Skip to dashboard"
|
||||
},
|
||||
"user": {
|
||||
"banner": {
|
||||
"title_one": "You have pending invitation",
|
||||
"title_other": "You have {{count}} pending invitations",
|
||||
"description": "Click to review the details and accept or reject the invitation."
|
||||
},
|
||||
"list": {
|
||||
"title": "Pending invitations",
|
||||
"description": "View and manage your pending invitations."
|
||||
}
|
||||
}
|
||||
},
|
||||
"members": {
|
||||
"title": "Members",
|
||||
"header": {
|
||||
"title": "Organization members",
|
||||
"description": "Manage your organization members, invitations and roles."
|
||||
},
|
||||
"invite": {
|
||||
"title": "Invite member",
|
||||
"description": "To add a new member to your organization, send them an invitation.",
|
||||
"info": "You can invite multiple members at once.",
|
||||
"missingPermission": "You need additional permissions to invite members to this organization.",
|
||||
"success_one": "Member invited successfully!",
|
||||
"success_other": "Members invited successfully!",
|
||||
"email": {
|
||||
"subject": "You have been invited to join an organization",
|
||||
"preview": "Join {{inviter}} on TurboStarter",
|
||||
"body": "<bold>{{inviter}}</bold> has invited you to join <bold>{{organization}}</bold> on TurboStarter.",
|
||||
"or": "Or, copy and paste this link into your browser:",
|
||||
"cta": "Join {{organization}}",
|
||||
"disclaimer": "If you were not expecting this invitation, there's nothing to worry about, you can safely ignore this email."
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"role": {
|
||||
"title": "Update {{name}}'s role",
|
||||
"description": "Change the role of the selected member by selecting it from the dropdown menu.",
|
||||
"info": "The role determines the permissions of the member.",
|
||||
"success": "Member's role updated successfully!"
|
||||
}
|
||||
},
|
||||
"remove": {
|
||||
"success": "Member removed successfully!"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"edit": {
|
||||
"description": "Please enter your organization name, or a display name you are comfortable with.",
|
||||
"success": "Organization name updated successfully!",
|
||||
"info": "Please use 32 characters at maximum.",
|
||||
"missingPermission": "You need additional permissions to manage your organization's name."
|
||||
}
|
||||
},
|
||||
"logo": {
|
||||
"description": "This is your organization logo.\nClick on the logo to upload a custom one from your files.",
|
||||
"info": "While not required, adding a logo is highly recommended.",
|
||||
"missingPermission": "You need additional permissions to manage your organization's logo.",
|
||||
"update": {
|
||||
"success": "Organization logo updated successfully!"
|
||||
},
|
||||
"remove": {
|
||||
"success": "Organization logo removed successfully!"
|
||||
}
|
||||
},
|
||||
"leave": {
|
||||
"title": "Leave organization",
|
||||
"description": "Revoke your access to this organization. Any resources you've added to the organization will remain.",
|
||||
"cta": "Leave organization",
|
||||
"disclaimer": "Are you sure you want to leave this organization?\n\nYou will no longer have access to its resources and will need to be invited again to join.\n\nDo you want to continue?",
|
||||
"success": "You have left the organization successfully!",
|
||||
"cannotLeaveAsOnlyOwner": "To leave this organization, ensure at least one more member has the Owner role."
|
||||
},
|
||||
"delete": {
|
||||
"title": "Delete organization",
|
||||
"description": "Permanently remove this organization and all of its contents from the TurboStarter platform. This action is not reversible, so please continue with caution.",
|
||||
"cta": "Delete organization",
|
||||
"disclaimer": "You are about to delete this organization. \n\nAfter deleting it, all organization data (including members and teams) will be permanently deleted and cannot be recovered. \n\nDo you want to continue?",
|
||||
"success": "Organization deleted successfully!",
|
||||
"missingPermission": "You need additional permissions to delete this organization."
|
||||
},
|
||||
"error": {
|
||||
"slugAlreadyTaken": "The slug is already taken.",
|
||||
"cannotCreateNew": "You cannot create a new organization.",
|
||||
"maximumNumberOfOrganizations": "You have reached the maximum number of organizations.",
|
||||
"alreadyExists": "An organization with this name already exists.",
|
||||
"notFound": "We couldn't find the organization.",
|
||||
"userNotMember": "You are not a member of this organization.",
|
||||
"cannotUpdate": "You cannot update this organization.",
|
||||
"cannotDelete": "You cannot delete this organization.",
|
||||
"noActive": "No active organization found.",
|
||||
"userAlreadyMember": "You are already a member of this organization.",
|
||||
"memberNotFound": "We couldn't find the member.",
|
||||
"roleNotFound": "We couldn't find the role.",
|
||||
"cannotLeaveAsOnlyOwner": "You cannot leave the organization as the only owner.",
|
||||
"cannotLeaveWithoutOwner": "You cannot leave the organization without an owner.",
|
||||
"cannotDeleteMember": "You cannot delete this member.",
|
||||
"cannotUpdateMember": "You cannot update this member.",
|
||||
"membershipLimitReached": "You have reached the membership limit for this organization.",
|
||||
"cannotAccess": "You cannot access this organization.",
|
||||
"slugNotAvailable": "The slug is not available.",
|
||||
"team": {
|
||||
"cannotCreateNew": "You cannot create a new team.",
|
||||
"alreadyExists": "A team with this name already exists.",
|
||||
"notFound": "We couldn't find the team.",
|
||||
"maximumNumberOfTeams": "You have reached the maximum number of teams.",
|
||||
"unableToRemoveLastTeam": "You cannot remove the last team.",
|
||||
"cannotCreate": "You cannot create a team in this organization.",
|
||||
"cannotDelete": "You cannot delete a team in this organization.",
|
||||
"cannotUpdate": "You cannot update a team in this organization.",
|
||||
"cannotAccessMembers": "You cannot access the members of this team.",
|
||||
"memberLimitReached": "You have reached the member limit for this team.",
|
||||
"userNotMember": "You are not a member of this team.",
|
||||
"noActive": "No active team found.",
|
||||
"cannotCreateNewMember": "You cannot create a new member.",
|
||||
"cannotRemoveMember": "You cannot remove this member.",
|
||||
"cannotAccess": "You cannot access this organization."
|
||||
},
|
||||
"invitation": {
|
||||
"cannotInviteUsers": "You cannot invite users to this organization.",
|
||||
"userAlreadyInvited": "This user is already invited to this organization.",
|
||||
"notFound": "We couldn't find the invitation.",
|
||||
"notRecipient": "You are not the recipient of this invitation.",
|
||||
"cannotCancel": "You cannot cancel this invitation.",
|
||||
"inviterNoLongerMember": "The inviter is no longer a member of the organization.",
|
||||
"cannotInviteUserWithRole": "You cannot invite a user with this role.",
|
||||
"emailVerificationRequired": "Email verification is required before accepting or rejecting an invitation.",
|
||||
"failedToRetrieve": "We couldn't retrieve the invitation.",
|
||||
"limitReached": "You have reached the invitation limit for this organization."
|
||||
},
|
||||
"ac": {
|
||||
"missingAcInstance": "Missing AC instance.",
|
||||
"mustBeInOrganizationToCreateRole": "You must be in an organization to create a role.",
|
||||
"cannotCreateRole": "You cannot create a role.",
|
||||
"cannotUpdateRole": "You cannot update a role.",
|
||||
"cannotDeleteRole": "You cannot delete a role.",
|
||||
"cannotReadRole": "You cannot read a role.",
|
||||
"cannotListRole": "You cannot list roles.",
|
||||
"cannotGetRole": "You cannot get a role.",
|
||||
"tooManyRoles": "You have reached the maximum number of roles.",
|
||||
"invalidResource": "The resource is invalid.",
|
||||
"cannotDeletePreDefinedRole": "You cannot delete a pre-defined role.",
|
||||
"roleNameAlreadyTaken": "The role name is already taken."
|
||||
}
|
||||
}
|
||||
}
|
||||
146
packages/i18n/src/translations/en/validation.json
Normal file
146
packages/i18n/src/translations/en/validation.json
Normal file
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"error": {
|
||||
"default": "Invalid input value",
|
||||
"type": "Expected {{expected}}, but received {{received}}",
|
||||
"type_with_path": "{{path}} should be {{expected}}, but received {{received}}",
|
||||
"undefined": "{{path}} is required",
|
||||
"date": "Invalid date format",
|
||||
"custom": "Invalid input value",
|
||||
"notMultipleOf": "Number must be a multiple of {{multipleOf}}",
|
||||
"invalidKey": "Invalid key",
|
||||
"invalidElement": "Invalid element: {{- origin}}",
|
||||
"invalidValue_one": "Invalid value: {{- values}}, expected {{expected}}",
|
||||
"invalidValue_other": "Invalid values: {{- values}}, expected {{expected}}",
|
||||
"string": {
|
||||
"generic": "Invalid format - {{format}}",
|
||||
"email": "Please enter a valid email address",
|
||||
"url": "Please enter a valid URL",
|
||||
"uuid": "Please enter a valid UUID",
|
||||
"cuid": "Please enter a valid CUID",
|
||||
"regex": "Invalid format - {{validation}}",
|
||||
"datetime": "Invalid format - {{validation}}",
|
||||
"startsWith": "Must start with {{startsWith}}",
|
||||
"endsWith": "Must end with {{endsWith}}"
|
||||
},
|
||||
"file": {
|
||||
"type": "Only {{type}} files are accepted.",
|
||||
"maxCount_one": "You can only upload {{count}} file.",
|
||||
"maxCount_other": "You can only upload up to {{count}} files."
|
||||
},
|
||||
|
||||
"tooSmall": {
|
||||
"array": {
|
||||
"inclusive": "Must contain at least {{minimum}} element(s)",
|
||||
"inclusive_one": "Must contain at least {{minimum}} element",
|
||||
"inclusive_other": "Must contain at least {{minimum}} elements",
|
||||
"notInclusive": "Must contain more than {{minimum}} element(s)",
|
||||
"notInclusive_one": "Must contain more than {{minimum}} element",
|
||||
"notInclusive_other": "Must contain more than {{minimum}} elements"
|
||||
},
|
||||
"string": {
|
||||
"inclusive": "Must contain at least {{minimum}} character(s)",
|
||||
"inclusive_one": "Must contain at least {{minimum}} character",
|
||||
"inclusive_other": "Must contain at least {{minimum}} characters",
|
||||
"inclusive_with_path": "{{path}} must contain at least {{minimum}} character(s)",
|
||||
"inclusive_with_path_one": "{{path}} must contain at least {{minimum}} character",
|
||||
"inclusive_with_path_other": "{{path}} must contain at least {{minimum}} characters",
|
||||
"notInclusive": "Must contain more than {{minimum}} character(s)",
|
||||
"notInclusive_one": "Must contain more than {{minimum}} character",
|
||||
"notInclusive_other": "Must contain more than {{minimum}} characters",
|
||||
"notInclusive_with_path": "{{path}} must contain more than {{minimum}} character(s)",
|
||||
"notInclusive_with_path_one": "{{path}} must contain more than {{minimum}} character",
|
||||
"notInclusive_with_path_other": "{{path}} must contain more than {{minimum}} characters"
|
||||
},
|
||||
"number": {
|
||||
"inclusive": "Must be greater than or equal to {{minimum}}",
|
||||
"inclusive_with_path": "{{path}} must be greater than or equal to {{minimum}}",
|
||||
"notInclusive": "Must be greater than {{minimum}}",
|
||||
"notInclusive_with_path": "{{path}} must be greater than {{minimum}}"
|
||||
},
|
||||
"set": {
|
||||
"inclusive": "Invalid input value",
|
||||
"notInclusive": "Invalid input value"
|
||||
},
|
||||
"date": {
|
||||
"inclusive": "Date must be on or after {{- minimum, datetime}}",
|
||||
"notInclusive": "Date must be after {{- minimum, datetime}}"
|
||||
},
|
||||
"file": {
|
||||
"inclusive": "File size must be greater than or equal to {{minimum}}MB",
|
||||
"notInclusive": "File size must be greater than {{minimum}}MB"
|
||||
}
|
||||
},
|
||||
"tooBig": {
|
||||
"array": {
|
||||
"inclusive": "Must contain at most {{maximum}} element(s)",
|
||||
"inclusive_one": "Must contain at most {{maximum}} element",
|
||||
"inclusive_other": "Must contain at most {{maximum}} elements",
|
||||
"notInclusive": "Must contain fewer than {{maximum}} element(s)",
|
||||
"notInclusive_one": "Must contain fewer than {{maximum}} element",
|
||||
"notInclusive_other": "Must contain fewer than {{maximum}} elements"
|
||||
},
|
||||
"string": {
|
||||
"inclusive": "Must contain at most {{maximum}} character(s)",
|
||||
"inclusive_one": "Must contain at most {{maximum}} character",
|
||||
"inclusive_other": "Must contain at most {{maximum}} characters",
|
||||
"inclusive_with_path": "{{path}} must not exceed {{maximum}} character(s)",
|
||||
"inclusive_with_path_one": "{{path}} must not exceed {{maximum}} character",
|
||||
"inclusive_with_path_other": "{{path}} must not exceed {{maximum}} characters",
|
||||
"notInclusive": "Must contain fewer than {{maximum}} character(s)",
|
||||
"notInclusive_one": "Must contain fewer than {{maximum}} character",
|
||||
"notInclusive_other": "Must contain fewer than {{maximum}} characters",
|
||||
"notInclusive_with_path": "{{path}} must contain fewer than {{maximum}} character(s)",
|
||||
"notInclusive_with_path_one": "{{path}} must contain fewer than {{maximum}} character",
|
||||
"notInclusive_with_path_other": "{{path}} must contain fewer than {{maximum}} characters"
|
||||
},
|
||||
"number": {
|
||||
"inclusive": "Must be less than or equal to {{maximum}}",
|
||||
"inclusive_with_path": "{{path}} must be less than or equal to {{maximum}}",
|
||||
"notInclusive": "Must be less than {{maximum}}",
|
||||
"notInclusive_with_path": "{{path}} must be less than {{maximum}}"
|
||||
},
|
||||
"set": {
|
||||
"inclusive": "Invalid input value",
|
||||
"notInclusive": "Invalid input value"
|
||||
},
|
||||
"date": {
|
||||
"inclusive": "Date must be on or before {{- maximum, datetime}}",
|
||||
"notInclusive": "Date must be before {{- maximum, datetime}}"
|
||||
},
|
||||
"file": {
|
||||
"inclusive": "File size must be less than or equal to {{maximum}}MB",
|
||||
"notInclusive": "File size must be less than {{maximum}}MB"
|
||||
}
|
||||
}
|
||||
},
|
||||
"validation": {
|
||||
"email": "email",
|
||||
"url": "url",
|
||||
"uuid": "uuid",
|
||||
"cuid": "cuid",
|
||||
"regex": "regex",
|
||||
"datetime": "datetime"
|
||||
},
|
||||
"type": {
|
||||
"function": "function",
|
||||
"number": "number",
|
||||
"string": "string",
|
||||
"nan": "nan",
|
||||
"integer": "integer",
|
||||
"float": "float",
|
||||
"boolean": "boolean",
|
||||
"date": "date",
|
||||
"bigint": "bigint",
|
||||
"undefined": "undefined",
|
||||
"symbol": "symbol",
|
||||
"null": "null",
|
||||
"array": "array",
|
||||
"object": "object",
|
||||
"unknown": "unknown",
|
||||
"promise": "promise",
|
||||
"void": "void",
|
||||
"never": "never",
|
||||
"map": "map",
|
||||
"set": "set"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user