feat(ui): internationalize profile, subscription, integrations templates and user menu JS

- Add 155 new translation keys to en.json (common, nav, integrations, profile, subscription sections)
- Add window.__i18n script block to base.html for user menu strings
- Replace all hardcoded English strings in common.js with window.__i18n lookups using safe fallback pattern
- Internationalize profile.html (page title, headings, labels, hints, placeholders, theme options)
- Internationalize subscription.html (page title, plan cards, usage stats, plan actions, badges)
- Internationalize integrations_dashboard.html (header, quota bars, modal, all form fields, action buttons, webhook section, delete modal)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-03-14 12:30:27 +00:00
parent 36172160ac
commit 5a025576c4
6 changed files with 380 additions and 217 deletions
+157
View File
@@ -187,6 +187,7 @@
"common.actions": "Actions",
"common.active": "Active",
"common.all": "All",
"common.avatar": "Avatar",
"common.back": "Back",
"common.cancel": "Cancel",
"common.close": "Close",
@@ -218,6 +219,7 @@
"common.no": "No",
"common.none": "None",
"common.page": "Page",
"common.paused": "Paused",
"common.pending": "Pending",
"common.prev_page": "Previous page",
"common.previous": "Previous",
@@ -234,7 +236,10 @@
"common.submit": "Submit",
"common.success": "Success",
"common.tags": "Tags",
"common.test": "Test",
"common.test_connection": "Test Connection",
"common.type": "Type",
"common.update": "Update",
"common.updated": "Updated",
"common.upload": "Upload",
"common.view": "View",
@@ -597,20 +602,94 @@
"index.usage_my_usage": "My usage",
"index.usage_today": "Files today",
"index.usage_unlimited": "Unlimited",
"integrations.access_key_label": "Access Key ID",
"integrations.active_label": "Active",
"integrations.add_button": "Add Integration",
"integrations.add_first_button": "Add Your First Integration",
"integrations.api_token_label": "API Token",
"integrations.authorize_btn": "Authorize",
"integrations.authorize_reauth": "Re-Authorize",
"integrations.bucket_label": "Bucket",
"integrations.configure": "Configure",
"integrations.connect": "Connect",
"integrations.connected": "Connected",
"integrations.connection_failed": "Connection failed",
"integrations.connection_success": "Connection successful",
"integrations.delete_confirm_are_you_sure": "Are you sure you want to delete",
"integrations.delete_confirm_title": "Delete Integration?",
"integrations.delete_confirm_undone": "This action cannot be undone.",
"integrations.delete_emails_label": "Delete emails after processing",
"integrations.delete_files_label": "Delete files after processing",
"integrations.destinations_quota_label": "Storage Destinations:",
"integrations.destinations_section": "Destinations",
"integrations.direction_destination": "Destination (storage)",
"integrations.direction_label": "Direction",
"integrations.direction_placeholder": "— Select —",
"integrations.direction_source": "Source (ingestion)",
"integrations.disconnect": "Disconnect",
"integrations.email_settings": "Email Forward Settings",
"integrations.empty_state": "No integrations configured",
"integrations.endpoint_label": "Endpoint URL",
"integrations.endpoint_optional": "(optional, for S3-compatible)",
"integrations.folder_label": "Folder",
"integrations.folder_optional": "(optional)",
"integrations.folder_path_label": "Folder Path",
"integrations.folder_prefix_label": "Folder Prefix",
"integrations.generic_settings_hint": "Configuration for this integration type can be provided as JSON after creation via the API.",
"integrations.gmail_hint": "Gmail labels & star: when enabled, processed emails are starred and tagged with an \"Ingested\" label in Gmail. Only applies to Gmail servers.",
"integrations.gmail_labels": "Apply Gmail labels & star",
"integrations.host_label": "Host",
"integrations.imap_settings": "IMAP Settings",
"integrations.loading": "Loading integrations…",
"integrations.modal_close": "Close modal",
"integrations.modal_title_add": "Add Integration",
"integrations.modal_title_edit": "Edit Integration",
"integrations.name_label": "Label",
"integrations.name_placeholder": "e.g. Work Gmail, S3 Archive",
"integrations.nextcloud_settings": "Nextcloud Settings",
"integrations.no_integrations_body": "Add your first integration to connect ingestion sources (like IMAP) and storage destinations (like S3, Dropbox, or Google Drive).",
"integrations.not_connected": "Not Connected",
"integrations.oauth_folder_label": "Folder",
"integrations.oauth_hint": "Save this integration first, then use the Authorize button to complete the OAuth flow. Your credentials will be stored securely in your personal integration record.",
"integrations.page_title": "Integrations",
"integrations.paperless_settings": "Paperless NGX Settings",
"integrations.password_label": "Password",
"integrations.paused": "Paused",
"integrations.plan_label": "Plan:",
"integrations.port_label": "Port",
"integrations.quota_not_available": "(not available)",
"integrations.quota_unlimited": "/ unlimited",
"integrations.recipient_label": "Recipient Email",
"integrations.region_label": "Region",
"integrations.remote_path_label": "Remote Path",
"integrations.s3_prefix_label": "Prefix (folder path)",
"integrations.s3_settings": "S3 Settings",
"integrations.secret_key_label": "Secret Access Key",
"integrations.show_password": "Show password",
"integrations.show_secrets": "Show secrets",
"integrations.show_token": "Show token",
"integrations.source_local": "Local Filesystem",
"integrations.source_type_label": "Source Type",
"integrations.sources_quota_label": "Mailbox Sources:",
"integrations.sources_section": "Sources",
"integrations.subtitle": "Manage your ingestion sources and storage destinations in one place.",
"integrations.title": "Integrations",
"integrations.type_label": "Integration Type",
"integrations.type_placeholder": "— Select direction first —",
"integrations.upgrade_plan": "Upgrade Plan",
"integrations.use_ssl": "Use SSL",
"integrations.username_label": "Username",
"integrations.watch_folder_settings": "Watch Folder Settings",
"integrations.webdav_settings": "WebDAV Settings",
"integrations.webdav_url_label": "WebDAV URL",
"integrations.webhook_create_token": "and create a personal token.",
"integrations.webhook_heading": "Webhook Ingestion",
"integrations.webhook_how_heading": "How Webhook Ingestion Works",
"integrations.webhook_how_text": "A webhook integration allows external systems to push documents directly into DocuElevate via the REST API. Instead of DocuElevate polling for new files (like IMAP), your application sends files to DocuElevate using an HTTP request with an API token for authentication.",
"integrations.webhook_ideal_text": "This is ideal for CI/CD pipelines, automation scripts, scanner integrations, or any system that generates documents and needs to send them for processing.",
"integrations.webhook_quick_start": "Quick Start",
"integrations.webhook_security_tip": "Create a dedicated API token for each integration and revoke it immediately if compromised. Tokens can be managed on the API Tokens page.",
"integrations.webhook_upload_with_token": "Use the token to upload documents via the API:",
"language.bg": "Български",
"language.ca": "Català",
"language.change_success": "Language changed to {language}",
@@ -649,6 +728,8 @@
"language.uk": "Українська",
"language.zh": "中文",
"nav.about": "About",
"nav.account_menu": "Account menu",
"nav.account_menu_for": "Account menu for {name}",
"nav.admin": "Admin",
"nav.admin.audit_logs": "Audit Logs",
"nav.admin.backups": "Backups",
@@ -667,6 +748,7 @@
"nav.duplicates": "Duplicates",
"nav.file_manager": "File Manager",
"nav.files": "Files",
"nav.get_started": "Get Started",
"nav.help": "Help",
"nav.help_center": "Help Center",
"nav.imap": "Email Import",
@@ -675,18 +757,21 @@
"nav.login": "Log In",
"nav.logout": "Log Out",
"nav.main_navigation": "Main navigation",
"nav.my_subscription": "My Subscription",
"nav.notifications": "Notifications",
"nav.open_main_menu": "Open main menu",
"nav.pipelines": "Pipelines",
"nav.plan_designer": "Plan Designer",
"nav.pricing": "Pricing",
"nav.profile": "Profile",
"nav.profile_settings": "Profile Settings",
"nav.queue": "Queue",
"nav.queue_monitor": "Queue Monitor",
"nav.scheduled_jobs": "Scheduled Jobs",
"nav.search": "Search",
"nav.settings": "Settings",
"nav.shared_links": "Shared Links",
"nav.sign_out": "Sign Out",
"nav.signup": "Sign Up",
"nav.similarity": "Similarity",
"nav.skip_to_content": "Skip to main content",
@@ -742,6 +827,42 @@
"pipelines.system_label": "System",
"pipelines.system_pipeline_label": "System pipeline (visible to all users)",
"pipelines.title": "Processing Pipelines",
"profile.avatar_alt": "Your profile picture",
"profile.avatar_gravatar_suffix": "is shown.",
"profile.avatar_heading": "Profile Picture",
"profile.avatar_remove": "Remove custom avatar",
"profile.avatar_upload_hint": "Upload a JPEG, PNG, GIF, or WebP image up to 2 MB. If no custom picture is set, your",
"profile.choose_image": "Choose image…",
"profile.confirm_password": "Confirm New Password",
"profile.contact_email_hint": "Used for system notifications. This does not change your login e-mail.",
"profile.contact_email_label": "Contact / Notification E-mail",
"profile.contact_email_placeholder": "you@example.com",
"profile.current_password": "Current Password",
"profile.dismiss": "Dismiss",
"profile.display_name_hint": "Leave blank to use your account username or email.",
"profile.display_name_label": "Display Name",
"profile.display_name_placeholder": "Your name as shown in the UI",
"profile.general_heading": "General Information",
"profile.gravatar_link": "Gravatar",
"profile.heading": "Profile Settings",
"profile.language_auto_detect": "Auto-detect (from browser)",
"profile.language_hint": "Choose your preferred interface language. “Auto-detect” follows your browser settings.",
"profile.language_label": "UI Language",
"profile.new_password": "New Password",
"profile.new_password_hint": "Minimum 8 characters.",
"profile.page_title": "Profile Settings DocuElevate",
"profile.password_heading": "Change Password",
"profile.preferences_heading": "Preferences",
"profile.save_button": "Save Changes",
"profile.saving": "Saving…",
"profile.subtitle": "Manage your display name, avatar, language, and theme preferences.",
"profile.theme_dark": "Dark",
"profile.theme_hint": "“System Default” follows your devices dark-mode setting.",
"profile.theme_label": "Colour Scheme",
"profile.theme_light": "Light",
"profile.theme_system": "System Default",
"profile.update_password": "Update Password",
"profile.updating": "Updating…",
"queue.active_tasks": "Active Tasks",
"queue.auto_refresh_1": "Auto-refreshes every",
"queue.auto_refresh_2": "seconds",
@@ -927,6 +1048,42 @@
"status.page_title": "System Status",
"status.setting_label": "Setting",
"status.value_label": "Value",
"subscription.available_plans_heading": "Available Plans",
"subscription.back_to_dashboard": "Back to Dashboard",
"subscription.cancel_pending": "Cancel change",
"subscription.cancel_scheduled": "Cancel scheduled change",
"subscription.contact_sales": "Contact Sales",
"subscription.current_badge": "Current",
"subscription.current_plan": "Current Plan",
"subscription.current_plan_cta": "Your current plan",
"subscription.downgrade_to_prefix": "Downgrade to",
"subscription.features_heading": "Whats included in your plan",
"subscription.free": "Free",
"subscription.heading": "My Subscription",
"subscription.keep_plan_prefix": "Keep",
"subscription.lifetime_files": "Total files (lifetime)",
"subscription.month_files": "Files this month",
"subscription.more_features_label": "more",
"subscription.page_title": "My Subscription DocuElevate",
"subscription.pending_badge": "Pending",
"subscription.pending_benefits": "You keep all current plan benefits until then.",
"subscription.pending_on": "on",
"subscription.pending_title": "Pending plan change scheduled",
"subscription.pending_will_change": "Your plan will change to",
"subscription.per_mo": "/mo",
"subscription.per_month": "/month",
"subscription.since": "Since",
"subscription.single_user_body_after_link": ".",
"subscription.single_user_body_before_link": "Subscription tiers apply when multi-user mode is active. Your instance currently runs in single-user mode with no processing limits. An admin can enable multi-user mode via",
"subscription.single_user_title": "Multi-user mode is not enabled.",
"subscription.subtitle": "Your current plan, usage and available upgrades.",
"subscription.this_month_label": "this month",
"subscription.today_files": "Files today",
"subscription.today_label": "today",
"subscription.unlimited": "Unlimited",
"subscription.upgrade_info": "Upgrades take effect immediately. Downgrades are scheduled for the end of your current billing period.",
"subscription.upgrade_to_prefix": "Upgrade to",
"subscription.usage_heading": "Usage",
"upload.browse_button": "Browse Files",
"upload.button_processing": "Processing...",
"upload.camera_button": "Take Photo / Scan Document",