// Base catalog — the source of truth for this app's UI strings. Every key here // MUST be mirrored in `de.ts`; `defineLocale()` enforces that parity. import { defineCatalog } from '@voltro/i18n' export default defineCatalog({ // Browser tab titles. 'meta.login.title': 'Sign in', 'meta.overview.title': 'Account', 'meta.billing.title': 'Billing', 'meta.invoices.title': 'Invoices', 'meta.apiKeys.title': 'API keys', 'meta.profile.title': 'Profile', 'lang.label': 'Language', // ---- Auth form (/login) ---- 'auth.signIn.heading': 'Sign in', 'auth.signUp.heading': 'Create your account', 'auth.email': 'Email', 'auth.password': 'Password', 'auth.signIn.submit': 'Sign in', 'auth.signUp.submit': 'Create account', 'auth.toggle.toSignUp': 'No account? Create one', 'auth.toggle.toSignIn': 'Have an account? Sign in', 'auth.pending': 'Please wait…', 'auth.error': 'That didn’t work. Check your details and try again.', // ---- Sidebar nav ---- 'nav.overview': 'Overview', 'nav.billing': 'Billing', 'nav.invoices': 'Invoices', 'nav.apiKeys': 'API keys', 'nav.profile': 'Profile', // ---- Overview ---- 'overview.heading': 'Account overview', 'overview.renews': 'Renews', 'overview.link.billing': 'Plan & payment method', 'overview.link.invoices': 'Invoice history', 'overview.link.apiKeys': 'Manage API keys', // ---- Billing ---- 'billing.heading': 'Billing', 'billing.plan.label': 'Current plan', 'billing.plan.free': 'Free', 'billing.status.label': 'Status', 'billing.seats.label': 'Seats', 'billing.card.manage': 'Manage payment method →', 'billing.change.title': 'Change plan', 'billing.change.body': 'Upgrade to Pro. We’ll quote the exact prorated amount before charging.', 'billing.change.preview': 'Preview upgrade', 'billing.change.quote': 'This change settles at about {amount} today.', 'billing.change.confirm': 'Confirm upgrade', 'billing.change.done': 'Your plan has been updated.', 'billing.pending': 'Working…', // ---- Invoices ---- 'invoices.heading': 'Invoices', 'invoices.empty': 'No invoices yet.', 'invoices.view': 'View', 'invoices.pdf': 'PDF', // ---- API keys ---- 'apiKeys.heading': 'API keys', 'apiKeys.loading': 'Loading…', 'apiKeys.notEnabled': 'API keys aren’t enabled on this API. Set `apiKeys: true` in the API’s app.config.ts to turn on the built-in key management surface.', 'apiKeys.noAccess': 'Your account doesn’t have permission to manage API keys. An admin scope is required.', 'apiKeys.error': 'Couldn’t load API keys. Please try again.', 'apiKeys.name.placeholder': 'Key name (e.g. CI deploy)', 'apiKeys.issue': 'Create key', 'apiKeys.minted.title': 'Copy your key now', 'apiKeys.minted.body': 'This is the only time the full key is shown. Store it somewhere safe.', 'apiKeys.empty': 'No keys yet — create your first above.', 'apiKeys.revoke': 'Revoke', 'apiKeys.revoked': 'revoked', // ---- Profile ---- 'profile.heading': 'Profile', 'profile.id': 'User ID', 'profile.tenant': 'Organization', 'profile.cp.heading': 'Change password', 'profile.cp.email': 'Your account email', 'profile.cp.submit': 'Email me a reset link', 'profile.cp.sent': 'If that email has an account, a reset link is on its way.', 'profile.signOut': 'Sign out', // ---- Scoped fallbacks ---- 'error.heading': 'Something went wrong', 'error.retry': 'Try again', 'notFound.heading': 'Not found', 'notFound.body': 'That page doesn’t exist.', 'notFound.back': '← Back to overview', } as const)