Add SaaS frontend code (#5879)

# Description of Changes
Adds the code for the SaaS frontend as proprietary code to the OSS repo.
This version of the code is adapted from 22/1/2026, which was the last
SaaS version based on the 'V2' design. This will move us closer to being
able to have the OSS products understand whether the user has a SaaS
account, and provide the correct UI in those cases.
This commit is contained in:
James Brunton
2026-03-11 11:53:54 +00:00
committed by GitHub
parent 8bc37bf5ae
commit fa8c52b2be
114 changed files with 12408 additions and 99 deletions
@@ -142,6 +142,10 @@ welcome = "Welcome"
white = "White"
WorkInProgess = "Work in progress, May not work or be buggy, Please report any problems!"
yes = "Yes"
insufficientCredits = "Insufficient credits. Required: {{requiredCredits}}, Available: {{currentBalance}}, Shortfall: {{shortfall}}"
loadingCredits = "Checking credits..."
loadingProStatus = "Checking subscription status..."
noticeTopUpOrPlan = "Not enough credits, please top up or upgrade to a plan"
[account]
accountSettings = "Account Settings"
@@ -2563,10 +2567,45 @@ title = "Quality Adjustment"
tags = "squish,small,tiny"
[config.account.overview]
confirmDelete = "Delete My Account"
deleteAccount = "Delete Account"
deleteAccountTitle = "Delete Account"
deleteFailed = "Failed to delete account."
deleteFailedTitle = "Unable to delete account"
deleteWarning = "This action is permanent and cannot be undone. All your data will be deleted."
enterEmailConfirm = "To confirm deletion, please type your email address ({{email}}) below:"
guestDescription = "You are signed in as a guest. Consider upgrading your account above."
label = "Overview"
manageAccountPreferences = "Manage your account preferences"
signedInAs = "Signed in as"
title = "Account Settings"
[config.account.profilePicture]
description = "Upload an image to personalize your account."
help = "PNG, JPG, or WebP up to 2MB."
remove = "Remove"
sizeError = "Please select an image smaller than 2MB."
switchedToCustom = "Switched to custom picture. You can now upload your own."
title = "Profile picture"
upload = "Upload"
useCustom = "Use custom picture"
usingProvider = "Using {{provider}} profile picture"
[config.account.profilePicture.cropper]
cropError = "Failed to crop image. Please try again."
invalidImage = "Invalid image file. Please select a valid PNG, JPG, or WebP file."
processing = "Processing crop..."
save = "Save Cropped Image"
sizeErrorAfterCrop = "Cropped image is too large. Please zoom out or crop a smaller area."
title = "Crop Profile Picture"
zoom = "Zoom"
[config.account.security]
changePassword = "Change password"
description = "Manage your password and security settings."
title = "Passwords & Security"
update = "Update password"
[config.account.upgrade]
description = "Link your account to preserve your history and access more features!"
email = "Email"
@@ -2580,9 +2619,13 @@ socialLogin = "Upgrade with Social Account"
title = "Upgrade Guest Account"
upgradeButton = "Upgrade Account"
[config]
plan = "Plan"
[config.apiKeys]
chartAriaLabel = "Credits usage: included {{includedUsed}} of {{includedTotal}}, purchased {{purchasedUsed}} of {{purchasedTotal}}"
copyKeyAriaLabel = "Copy API key"
creditsRemaining = "Credits Remaining"
description = "Your API key for accessing Stirling's suite of PDF tools. Copy it to your project or refresh to generate a new one."
docsDescription = "Learn more about integrating with Stirling PDF:"
docsLink = "API Documentation"
@@ -3842,6 +3885,7 @@ version = "Version"
accountCreatedSuccess = "Account created successfully! You can now sign in."
alreadyLoggedIn = "You are already logged in to"
alreadyLoggedIn2 = "devices. Please log out of the devices and try again."
backToSignIn = "Back to sign in"
cancel = "Cancel"
changePasswordWarning = "Please change your password after logging in for the first time"
credentialsUpdated = "Your credentials have been updated. Please sign in again."
@@ -3883,16 +3927,21 @@ or = "Or"
password = "Password"
passwordChangedSuccess = "Password changed successfully! Please sign in with your new password."
passwordResetSent = "Password reset link sent to {{email}}! Check your email and follow the instructions."
passwordUpdatedSuccess = "Your password has been updated successfully."
pleaseEnterBoth = "Please enter both email and password"
pleaseEnterEmail = "Please enter your email address"
relyingPartyRegistrationNotFound = "No relying party registration found"
rememberme = "Remember me"
resetHelp = "Enter your email to receive a secure link to reset your password. If the link has expired, please request a new one."
resetYourPassword = "Reset your password"
saml2RequiresLicense = "SAML login requires an Enterprise license. Please contact the administrator to upgrade your plan."
sending = "Sending…"
sendMagicLink = "Send Magic Link"
sendResetLink = "Send reset link"
sessionExpired = "Your session has expired. Please sign in again."
signin = "Sign in"
signInAnonymously = "Sign Up as a Guest"
subtitle = "Sign back in to Stirling PDF"
signingIn = "Signing in..."
signinTitle = "Please sign in"
signInWith = "Sign in with"
@@ -3901,6 +3950,7 @@ ssoSignIn = "Login via Single Sign-on"
title = "Sign in"
toManySessions = "You have too many active sessions"
unexpectedError = "Unexpected error: {{message}}"
updatePassword = "Update password"
useEmailInstead = "Login with email"
useMagicLink = "Use magic link instead"
userIsDisabled = "User is deactivated, login is currently blocked with this username. Please contact the administrator."
@@ -4210,6 +4260,15 @@ viewSwitcher = "Use these controls to select how you want to view your PDFs."
workbench = "This is the <strong>Workbench</strong> - the main area where you view and edit your PDFs."
wrapUp = "You're all set! You've learnt about the main areas of the app and how to use them. Click the <strong>Help</strong> button whenever you like to see this tour again."
[onboarding.freeTrial]
afterTrialWithoutPayment = "After your trial ends, you'll continue with our free tier. Add a payment method to keep Pro access."
afterTrialWithPayment = "Your Pro subscription will start automatically when the trial ends."
body = "You have full access to Stirling PDF Pro features during your trial. Enjoy unlimited conversions, larger file sizes, and priority processing."
daysRemaining = "{{days}} days remaining"
daysRemainingSingular = "{{days}} day remaining"
title = "Your 30-Day Pro Trial"
trialEnds = "Trial ends {{date}}"
[onboarding.buttons]
back = "Back"
download = "Download →"
@@ -4947,7 +5006,10 @@ perMonth = "/month"
perSeat = "/seat"
popular = "Popular"
selectPlan = "Select Plan"
selectCredits = "Select Credit Amount"
showComparison = "Compare All Features"
purchase = "Purchase"
totalCost = "Total Cost"
upgrade = "Upgrade"
withServer = "+ Server Plan"
@@ -5039,6 +5101,30 @@ successMessage = "Your license has been successfully activated. You can now clos
name = "Team"
siteLicense = "Site License"
[plan.api]
large = "5,000 Credits"
medium = "1,000 Credits"
small = "500 Credits"
xsmall = "100 Credits"
[plan.apiPackages]
subtitle = "Purchase API credits for your applications"
title = "API Credit Packages"
[plan.trial]
badge = "Trial"
continueWithFree = "Continue with Free"
daysRemaining = "Your trial ends in {{days}} days"
endDate = "Expires: {{date}}"
expired = "Your Trial Has Ended"
expiredMessage = "Your 30-day Pro trial has expired. Subscribe to Pro to continue accessing premium features, or continue with our free tier."
freeTierLimitations = "Free tier includes basic PDF tools with usage limits."
message = ""
subscribe = "Subscribe to Pro"
subscribeToPro = "Subscribe to Pro"
subscriptionScheduled = "Subscription scheduled - starts {{date}}"
title = "Free Trial Active"
[credits]
enableOverageBilling = "Enable Overage Billing"
maybeLater = "Maybe later"