feat(i18n): localize admin plans page
Add 108 admin_plans.* translation keys to en.json and update admin_plans.html to use _() for all static text and window.__i18nAdminPlans for dynamic Alpine.js / JavaScript strings. Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
@@ -41,6 +41,114 @@
|
||||
"about.story_heading": "Our Story",
|
||||
"about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.",
|
||||
"about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.",
|
||||
"admin_plans.aria_delete_plan": "Delete {name}",
|
||||
"admin_plans.aria_edit_plan": "Edit {name}",
|
||||
"admin_plans.aria_feature_n": "Feature {n}",
|
||||
"admin_plans.aria_move_down": "Move {name} down",
|
||||
"admin_plans.aria_move_up": "Move {name} up",
|
||||
"admin_plans.aria_remove_feature_n": "Remove feature {n}",
|
||||
"admin_plans.btn_add_feature": "Add Feature",
|
||||
"admin_plans.btn_add_plan": "Add Plan",
|
||||
"admin_plans.btn_cancel": "Cancel",
|
||||
"admin_plans.btn_create": "Create Plan",
|
||||
"admin_plans.btn_delete": "Delete",
|
||||
"admin_plans.btn_edit": "Edit",
|
||||
"admin_plans.btn_restore_defaults": "Restore Defaults",
|
||||
"admin_plans.btn_restore_defaults_title": "Restore all four default plans (only if no plans exist yet)",
|
||||
"admin_plans.btn_restoring": "Restoring\u2026",
|
||||
"admin_plans.btn_save_changes": "Save Changes",
|
||||
"admin_plans.btn_save_order": "Save Order",
|
||||
"admin_plans.btn_saving": "Saving\u2026",
|
||||
"admin_plans.btn_stripe_setup": "Stripe Setup",
|
||||
"admin_plans.btn_stripe_setup_title": "Open the Stripe Setup Wizard to configure API keys and sync plans",
|
||||
"admin_plans.col_actions": "Actions",
|
||||
"admin_plans.col_active": "Active",
|
||||
"admin_plans.col_monthly": "Monthly",
|
||||
"admin_plans.col_monthly_limit": "Monthly Limit",
|
||||
"admin_plans.col_order": "Order",
|
||||
"admin_plans.col_overage_pct": "Overage %",
|
||||
"admin_plans.col_plan": "Plan",
|
||||
"admin_plans.col_yearly": "Yearly",
|
||||
"admin_plans.coming_soon": "Coming soon",
|
||||
"admin_plans.featured_badge": "Featured",
|
||||
"admin_plans.field_active": "Active",
|
||||
"admin_plans.field_allow_overage": "Allow Overage Billing",
|
||||
"admin_plans.field_api_access": "API Access",
|
||||
"admin_plans.field_badge_text": "Badge Text",
|
||||
"admin_plans.field_buffer": "Buffer:",
|
||||
"admin_plans.field_cta_text": "CTA Button Text",
|
||||
"admin_plans.field_docs_month": "Docs / Month",
|
||||
"admin_plans.field_featured": "Featured / Highlighted",
|
||||
"admin_plans.field_lifetime_docs": "Lifetime Docs",
|
||||
"admin_plans.field_mailboxes": "Email Mailboxes",
|
||||
"admin_plans.field_max_file_size": "Max File Size (MB)",
|
||||
"admin_plans.field_name": "Name",
|
||||
"admin_plans.field_ocr_pages": "OCR Pages / Month",
|
||||
"admin_plans.field_overage_doc_price": "Overage price / doc ($)",
|
||||
"admin_plans.field_overage_ocr_price": "Overage price / OCR page ($)",
|
||||
"admin_plans.field_plan_id": "Plan ID",
|
||||
"admin_plans.field_price_monthly": "Monthly Price ($)",
|
||||
"admin_plans.field_price_yearly": "Yearly Price ($)",
|
||||
"admin_plans.field_sort_order": "Sort Order",
|
||||
"admin_plans.field_storage_dests": "Storage Destinations",
|
||||
"admin_plans.field_stripe_monthly": "Stripe Price ID (monthly)",
|
||||
"admin_plans.field_stripe_yearly": "Stripe Price ID (yearly)",
|
||||
"admin_plans.field_tagline": "Tagline",
|
||||
"admin_plans.field_trial_days": "Trial Days",
|
||||
"admin_plans.free_label": "Free",
|
||||
"admin_plans.heading": "Plan Designer",
|
||||
"admin_plans.hint_features": "These bullet points appear on the pricing page card for this plan.",
|
||||
"admin_plans.hint_plan_id": "Lowercase slug, cannot be changed after creation.",
|
||||
"admin_plans.hint_zero_unlimited": "Enter 0 for unlimited.",
|
||||
"admin_plans.js_delete_confirm": "Delete plan \"{id}\"? This cannot be undone.",
|
||||
"admin_plans.js_delete_failed": "Delete failed",
|
||||
"admin_plans.js_failed_load": "Failed to load plans",
|
||||
"admin_plans.js_order_saved": "Order saved!",
|
||||
"admin_plans.js_plan_created": "Plan created!",
|
||||
"admin_plans.js_plan_deleted": "Plan \"{id}\" deleted.",
|
||||
"admin_plans.js_plan_updated": "Plan updated!",
|
||||
"admin_plans.js_reorder_failed": "Reorder failed",
|
||||
"admin_plans.js_save_failed": "Save failed",
|
||||
"admin_plans.js_seed_confirm": "Seed the four default plans? This is a no-op if plans already exist.",
|
||||
"admin_plans.js_seed_failed": "Seed failed",
|
||||
"admin_plans.js_yearly_enter": "Enter yearly price to show savings",
|
||||
"admin_plans.js_yearly_save": "Save {pct}% vs monthly",
|
||||
"admin_plans.loading": "Loading plans\u2026",
|
||||
"admin_plans.modal_close_aria": "Close modal",
|
||||
"admin_plans.modal_create_title": "Add Plan",
|
||||
"admin_plans.modal_edit_title_prefix": "Edit Plan: ",
|
||||
"admin_plans.no_plans_intro": "No plans yet. Click",
|
||||
"admin_plans.no_plans_suffix": "to seed the four built-in plans.",
|
||||
"admin_plans.overage_0pct": "0% (exact)",
|
||||
"admin_plans.overage_100pct": "100%",
|
||||
"admin_plans.overage_50pct": "50%",
|
||||
"admin_plans.overage_announce": "\u2192 announce",
|
||||
"admin_plans.overage_buffer_body_prefix": "The overage buffer is",
|
||||
"admin_plans.overage_buffer_body_suffix": ". We advertise X docs/month but only enforce at",
|
||||
"admin_plans.overage_buffer_formula": "X \u00d7 (1 + buffer%)",
|
||||
"admin_plans.overage_buffer_invisible": "invisible to users",
|
||||
"admin_plans.overage_buffer_tail": "docs. For example, a 150-doc/month plan with a 20% buffer enforces at 180 docs. This prevents hard cutoffs at the exact announced limit, giving users a graceful soft landing.",
|
||||
"admin_plans.overage_buffer_title": "About the Overage Buffer",
|
||||
"admin_plans.overage_docs": "docs,",
|
||||
"admin_plans.overage_docs_end": "docs",
|
||||
"admin_plans.overage_enforce_at": "enforce at",
|
||||
"admin_plans.page_title": "Plan Designer \u2014 DocuElevate Admin",
|
||||
"admin_plans.section_basic_info": "Basic Info",
|
||||
"admin_plans.section_display": "Display",
|
||||
"admin_plans.section_features": "Features List",
|
||||
"admin_plans.section_overage": "Overage Designer",
|
||||
"admin_plans.section_pricing": "Pricing",
|
||||
"admin_plans.section_stripe": "Stripe Integration",
|
||||
"admin_plans.section_volume": "Volume Limits",
|
||||
"admin_plans.status_active": "Active",
|
||||
"admin_plans.status_inactive": "Inactive",
|
||||
"admin_plans.stripe_desc_after": "to auto-create them. Free plans do not need Stripe Price IDs.",
|
||||
"admin_plans.stripe_desc_before": "Enter the Stripe Price IDs for this plan, or use the",
|
||||
"admin_plans.stripe_wizard_aria": "Open Stripe Setup Wizard in a new tab",
|
||||
"admin_plans.stripe_wizard_link": "Stripe Wizard",
|
||||
"admin_plans.stripe_wizard_text": "Stripe Setup Wizard",
|
||||
"admin_plans.subheading": "Manage subscription plans shown on the public pricing page.",
|
||||
"admin_plans.table_aria_label": "Subscription plans",
|
||||
"admin_users.add_user_profile_btn": "Add User Profile",
|
||||
"admin_users.admin_only_badge": "Admin Only",
|
||||
"admin_users.btn_password": "Password",
|
||||
|
||||
Reference in New Issue
Block a user