|
|
@@ -0,0 +1,393 @@
|
|
|
+export const en = {
|
|
|
+ common: {
|
|
|
+ back: 'Back',
|
|
|
+ loading: 'Loading...',
|
|
|
+ save: 'Save',
|
|
|
+ cancel: 'Cancel',
|
|
|
+ confirm: 'Confirm',
|
|
|
+ delete: 'Delete',
|
|
|
+ edit: 'Edit',
|
|
|
+ search: 'Search',
|
|
|
+ actions: 'Actions',
|
|
|
+ status: 'Status',
|
|
|
+ success: 'Operation Successful',
|
|
|
+ failed: 'Operation Failed',
|
|
|
+ refresh: 'Refresh',
|
|
|
+ add: 'Add',
|
|
|
+ new_application: 'New Application',
|
|
|
+ format: 'Format',
|
|
|
+ copy: 'Copy',
|
|
|
+ copied: 'Copied',
|
|
|
+ valid: 'Valid',
|
|
|
+ invalid: 'Invalid',
|
|
|
+ json_invalid: 'Invalid JSON format',
|
|
|
+ json_syntax_error: 'Cannot format: Syntax error',
|
|
|
+ unknown_error: 'Unknown Error',
|
|
|
+ total: 'Total',
|
|
|
+ close: 'Close',
|
|
|
+ error: 'Error',
|
|
|
+ processing: 'Processing...',
|
|
|
+ select: 'Select',
|
|
|
+ enter: 'Enter',
|
|
|
+ },
|
|
|
+ auth: {
|
|
|
+ welcome_back: 'Welcome Back',
|
|
|
+ auto_register: 'Auto Register',
|
|
|
+ email_label: 'Email',
|
|
|
+ email_placeholder: 'name@example.com',
|
|
|
+ password_label: 'Password',
|
|
|
+ forgot_password: 'Forgot Password?',
|
|
|
+ login_btn: 'Login',
|
|
|
+ register_btn: 'Register',
|
|
|
+ no_account: "Don't have an account? Auto Register",
|
|
|
+ has_account: 'Already have an account? Login',
|
|
|
+ login_success_no_token: 'Login successful but token missing',
|
|
|
+ },
|
|
|
+ forgot_password: {
|
|
|
+ title: 'Forgot Password',
|
|
|
+ step1_desc: 'Enter your registered email address, and we will send you a verification code to reset your password.',
|
|
|
+ email_label: 'Email Address',
|
|
|
+ email_placeholder: 'name@example.com',
|
|
|
+ send_btn: 'Send Code',
|
|
|
+ code_sent_to: 'Code sent to',
|
|
|
+ code_label: 'Verification Code',
|
|
|
+ resend_btn: 'Resend',
|
|
|
+ new_password_label: 'New Password',
|
|
|
+ new_password_placeholder: 'Set new password',
|
|
|
+ reset_btn: 'Reset Password',
|
|
|
+ enter_email_alert: 'Please enter email',
|
|
|
+ code_sent_alert: 'Verification code sent to',
|
|
|
+ send_failed: 'Send failed',
|
|
|
+ send_failed_default: 'User not found or network error',
|
|
|
+ enter_code_alert: 'Please enter code',
|
|
|
+ enter_password_alert: 'Please enter new password',
|
|
|
+ reset_success: 'Password reset successfully! Please login with new password.',
|
|
|
+ reset_failed: 'Reset failed',
|
|
|
+ code_error: 'Invalid code',
|
|
|
+ },
|
|
|
+ bind_email: {
|
|
|
+ title_step1: 'Bind Email',
|
|
|
+ title_step2: 'Enter Code',
|
|
|
+ desc_step1: 'To ensure account security and receive order notifications, please bind your email address.',
|
|
|
+ desc_step2_prefix: 'Verification code sent to',
|
|
|
+ desc_step2_suffix: ', please check.',
|
|
|
+ email_label: 'Email',
|
|
|
+ email_placeholder: 'name@example.com',
|
|
|
+ code_label: 'Verification Code',
|
|
|
+ send_btn: 'Send Code',
|
|
|
+ resend_suffix: 's resend',
|
|
|
+ resend_btn: 'Resend',
|
|
|
+ change_email_btn: 'Change Email',
|
|
|
+ confirm_btn: 'Confirm Bind',
|
|
|
+ alert_input_email: 'Please enter email',
|
|
|
+ alert_invalid_email: 'Invalid email format',
|
|
|
+ alert_code_sent: 'Verification code sent to',
|
|
|
+ alert_send_failed: 'Send failed',
|
|
|
+ alert_input_code: 'Please enter code',
|
|
|
+ alert_code_length: 'Please enter 6-digit code',
|
|
|
+ success: 'Email bound successfully!',
|
|
|
+ failed: 'Bind failed',
|
|
|
+ },
|
|
|
+ settings: {
|
|
|
+ title: 'Account Settings',
|
|
|
+ subtitle: 'Manage your profile and security options',
|
|
|
+ security_tip_title: 'Account Security',
|
|
|
+ security_tip_desc: 'To ensure your account security, it is recommended to update your profile regularly. If you notice any unusual login activity, please contact support immediately.',
|
|
|
+ account_status: 'Account Status: ',
|
|
|
+ status_normal: 'Normal',
|
|
|
+ change_password: 'Change Password',
|
|
|
+ email_verification: 'Email Verification',
|
|
|
+ code_placeholder: '6-digit Code',
|
|
|
+ get_code: 'Get Code',
|
|
|
+ resend: 'resend', // 配合前端逻辑: "60s resend"
|
|
|
+ new_password_label: 'New Password',
|
|
|
+ new_password_placeholder: 'Enter new password',
|
|
|
+ confirm_password_placeholder: 'Confirm new password',
|
|
|
+ password_mismatch: 'Passwords do not match',
|
|
|
+ email_not_found: 'User email not found',
|
|
|
+ code_sent: 'Verification code sent to',
|
|
|
+ send_failed: 'Send failed',
|
|
|
+ enter_code: 'Please enter verification code',
|
|
|
+ enter_password: 'Please enter new password',
|
|
|
+ password_changed_success: 'Password changed successfully! Please login again.',
|
|
|
+ change_failed: 'Change failed',
|
|
|
+ },
|
|
|
+ home: {
|
|
|
+ hero_title_prefix: 'Visa Application, ',
|
|
|
+ hero_title_highlight: 'Never Been Easier',
|
|
|
+ hero_subtitle: 'Visafly provides global automated visa processing services. Real-time tracking and expert review ensure your trip is worry-free.',
|
|
|
+ cta_start: 'Start Application',
|
|
|
+ cta_check_slots: 'Check Slots',
|
|
|
+
|
|
|
+ process_title: 'How It Works',
|
|
|
+ process_subtitle: 'Just 4 steps to fully automate your visa needs',
|
|
|
+
|
|
|
+ step_1_title: '1. Select Service',
|
|
|
+ step_1_desc: 'Find the country and visa type you need (e.g., Japan Tourist Visa, France Schengen Visa).',
|
|
|
+ step_2_title: '2. Submit Info',
|
|
|
+ step_2_desc: 'Fill out a simple application form (JSON dynamic form support), no tedious handwriting required.',
|
|
|
+ step_3_title: '3. Smart Automation',
|
|
|
+ step_3_desc: 'Our 24/7 bot system automatically monitors slots and locks appointments for you, no waiting required.',
|
|
|
+ step_4_title: '4. Success',
|
|
|
+ step_4_desc: 'Pay after successful booking (random discounts supported), get confirmation, and prepare for submission.',
|
|
|
+
|
|
|
+ feat_global_title: 'Global Coverage',
|
|
|
+ feat_global_desc: 'Support for visa processing in over 50 countries and regions including US, Japan, and Schengen area.',
|
|
|
+ feat_success_title: 'High Success Rate',
|
|
|
+ feat_success_desc: 'AI system pre-check plus human expert review ensures your documents are accurate.',
|
|
|
+ feat_fast_title: 'Fast Processing',
|
|
|
+ feat_fast_desc: 'Connected to official APIs, automated workflows reduce application time to 1/3 of traditional methods.',
|
|
|
+ },
|
|
|
+ order: {
|
|
|
+ search_placeholder: 'Search Order ID or Product Name...',
|
|
|
+ history_title: 'Application History',
|
|
|
+ empty_title: 'No Orders Found',
|
|
|
+ empty_desc: 'No matching order records were found.',
|
|
|
+ unknown_service: 'Unnamed Service',
|
|
|
+ view_details: 'View Details',
|
|
|
+ pay_now: 'Pay Now',
|
|
|
+ support: 'Support',
|
|
|
+ detail_title: 'Order Details',
|
|
|
+ created_at: 'Created at',
|
|
|
+ application_data: 'Application Data',
|
|
|
+ no_application_data: 'No application data provided',
|
|
|
+ payment_history: 'Payment History',
|
|
|
+ load_product_failed: 'Failed to load product info',
|
|
|
+ product_not_found: 'Product not found',
|
|
|
+ create_failed: 'Order creation failed',
|
|
|
+ fill_form_hint: 'Please fill in the information carefully, as it will be used for your application.',
|
|
|
+ no_extra_info_needed: 'No extra information needed, please proceed.',
|
|
|
+ submit_and_pay: 'Submit & Pay',
|
|
|
+ },
|
|
|
+ status: {
|
|
|
+ pending: 'Pending',
|
|
|
+ paid: 'Paid',
|
|
|
+ succeeded: 'Succeeded',
|
|
|
+ completed: 'Completed',
|
|
|
+ failed: 'Failed',
|
|
|
+ cancelled: 'Cancelled',
|
|
|
+ },
|
|
|
+ product: {
|
|
|
+ title: 'Product Management',
|
|
|
+ name: 'Product Name',
|
|
|
+ price: 'Price',
|
|
|
+ country: 'Country/Region',
|
|
|
+ city: 'City',
|
|
|
+ visa_type: 'Visa Type',
|
|
|
+ provider: 'Provider',
|
|
|
+ enabled: 'Enabled',
|
|
|
+ disabled: 'Disabled',
|
|
|
+ edit_title: 'Edit Product',
|
|
|
+ create_title: 'Create Product',
|
|
|
+ },
|
|
|
+ ticket: {
|
|
|
+ title: 'Ticket Management',
|
|
|
+ order_id: 'Order ID',
|
|
|
+ type: 'Type',
|
|
|
+ reason: 'Reason',
|
|
|
+ my_tickets: 'My Tickets',
|
|
|
+ create_new: 'Submit New Ticket',
|
|
|
+ search_placeholder: 'Search Ticket ID, Order ID...',
|
|
|
+ empty_title: 'No Tickets Found',
|
|
|
+ empty_desc: 'If you have any issues, please submit a new ticket.',
|
|
|
+ reply: 'Reply',
|
|
|
+ view_details: 'View Details',
|
|
|
+ latest_feedback: 'Latest Feedback',
|
|
|
+ submit_modal_title: 'Submit Ticket',
|
|
|
+ submit_error_default: 'Submission failed, please try again later',
|
|
|
+ order_id_label: 'Related Order ID',
|
|
|
+ order_id_placeholder: 'Enter related order ID',
|
|
|
+ type_label: 'Ticket Type',
|
|
|
+ desc_label: 'Description',
|
|
|
+ desc_placeholder: 'Please describe your issue in detail...',
|
|
|
+ submit_btn: 'Submit Ticket',
|
|
|
+ title_prefix: 'Ticket',
|
|
|
+ related_order: 'Related Order',
|
|
|
+ created_at: 'Ticket Created at',
|
|
|
+ description_title: 'Description',
|
|
|
+ system_message: 'System',
|
|
|
+ sender_me: 'Me',
|
|
|
+ sender_support: 'Support',
|
|
|
+ reply_placeholder: 'Type your reply...',
|
|
|
+ send_failed: 'Send failed, please try again later',
|
|
|
+ upload_tooltip: 'Upload attachment (Coming soon)',
|
|
|
+ urgent_tip: 'For urgent matters, please email support@visafly.top',
|
|
|
+ types: {
|
|
|
+ refund: 'Refund Request',
|
|
|
+ dispute: 'Dispute',
|
|
|
+ change_request: 'Change Request',
|
|
|
+ },
|
|
|
+ status: {
|
|
|
+ pending: 'Pending',
|
|
|
+ info_required: 'Info Required',
|
|
|
+ resolved: 'Resolved',
|
|
|
+ rejected: 'Rejected',
|
|
|
+ }
|
|
|
+ },
|
|
|
+ nav: {
|
|
|
+ dashboard: 'Dashboard',
|
|
|
+ products: 'Products',
|
|
|
+ tickets: 'Tickets',
|
|
|
+ settings: 'Settings',
|
|
|
+ logout: 'Logout',
|
|
|
+ // === 新增以下 Key ===
|
|
|
+ services: 'Services',
|
|
|
+ slots: 'Slot Check',
|
|
|
+ guide: 'Guide',
|
|
|
+ admin: 'Admin Panel',
|
|
|
+ login: 'Login / Sign up',
|
|
|
+ },
|
|
|
+ dashboard: {
|
|
|
+ title: 'Dashboard',
|
|
|
+ subtitle: 'Manage your visa applications and support tickets',
|
|
|
+ logout_confirm: 'Are you sure you want to logout?',
|
|
|
+ },
|
|
|
+ knowledge: {
|
|
|
+ title: 'Guide & FAQ',
|
|
|
+ subtitle: 'Find answers to common questions, document preparation guides, and the latest policy updates here.',
|
|
|
+ search_placeholder: 'Search keywords, e.g., photo, stamp, fingerprint...',
|
|
|
+ empty_state: 'No guides found, please try different keywords',
|
|
|
+ read_more: 'Read More',
|
|
|
+ collapse: 'Collapse',
|
|
|
+ },
|
|
|
+ refund: {
|
|
|
+ title: 'Refund Policy & Terms',
|
|
|
+ subtitle: 'Please read the following terms carefully to protect your rights',
|
|
|
+
|
|
|
+ full_refund_title: 'Full Refund Eligibility',
|
|
|
+ full_refund_desc: 'You may apply for a full refund under the following circumstances:',
|
|
|
+ full_refund_item_1: 'You have paid for the order, but our system has not yet started any booking operations (Status is Pending).',
|
|
|
+ full_refund_item_2: 'Duplicate charges caused by Visafly system errors.',
|
|
|
+ full_refund_item_3: 'We failed to successfully book a slot for you within the promised timeframe (usually 30 days, depending on the service).',
|
|
|
+
|
|
|
+ no_refund_title: 'Non-refundable Scenarios',
|
|
|
+ important_note: 'Important Note',
|
|
|
+ important_note_desc: 'Once the service enters the execution stage or incurs third-party fees, refunds will be restricted.',
|
|
|
+ no_refund_item_1: 'Our system has successfully booked a slot for you (evidenced by a screenshot or confirmation letter).',
|
|
|
+ no_refund_item_2: 'Your visa application has already been submitted to the embassy or visa center.',
|
|
|
+ no_refund_item_3: 'Booking failure or invalidity caused by incorrect personal information (e.g., passport number) provided by you.',
|
|
|
+ no_refund_item_4: 'You decide to abandon the application due to personal reasons (e.g., change of itinerary, illness), but we have already completed the booking work.',
|
|
|
+
|
|
|
+ process_title: 'Refund Process',
|
|
|
+ step_1_title: 'Submit Ticket',
|
|
|
+ step_1_desc: 'Select the order in the dashboard and click "Support" to submit a request.',
|
|
|
+ step_2_title: 'Review',
|
|
|
+ step_2_desc: 'We will verify the order status within 1-3 business days.',
|
|
|
+ step_3_title: 'Refund',
|
|
|
+ step_3_desc: 'Once approved, funds will be returned to the original payment method within 5-10 business days.',
|
|
|
+
|
|
|
+ contact_title: 'Still have questions?',
|
|
|
+ contact_desc: 'If you have any questions regarding the refund policy, please contact our support team: ',
|
|
|
+ },
|
|
|
+ services: {
|
|
|
+ title: 'Popular Visa Services',
|
|
|
+ search_placeholder: 'Search country, city or service...',
|
|
|
+ all_countries: 'All Countries',
|
|
|
+ all_types: 'All Types',
|
|
|
+ reset_filter: 'Reset Filters',
|
|
|
+ no_result_title: 'No Services Found',
|
|
|
+ no_result_desc: 'Please try different keywords',
|
|
|
+ no_desc: 'No description available',
|
|
|
+ service_fee: 'Service Fee',
|
|
|
+ apply_now: 'Apply Now',
|
|
|
+ },
|
|
|
+ slots: {
|
|
|
+ title: 'Visa Slot Check',
|
|
|
+ subtitle: 'Check real-time appointment availability for embassies',
|
|
|
+ status_available: 'Slots Available',
|
|
|
+ status_unavailable: 'No Slots Available',
|
|
|
+ updated_at: 'Updated at',
|
|
|
+ earliest_date: 'Earliest Date',
|
|
|
+ slots_count: 'slots',
|
|
|
+ select_hint: 'Please select criteria and click search',
|
|
|
+ },
|
|
|
+ pagination: {
|
|
|
+ prev: 'Previous',
|
|
|
+ next: 'Next',
|
|
|
+ showing: 'Showing',
|
|
|
+ to: 'to',
|
|
|
+ of: 'of',
|
|
|
+ results: 'results',
|
|
|
+ },
|
|
|
+ profile: {
|
|
|
+ title: 'Profile',
|
|
|
+ subtitle: 'Manage your basic information',
|
|
|
+ edit_profile: 'Edit Profile',
|
|
|
+ no_nickname: 'No Nickname',
|
|
|
+ change_avatar: 'Change Avatar',
|
|
|
+ email_readonly: 'Email (Read-only)',
|
|
|
+ nickname_label: 'Nickname',
|
|
|
+ nickname_placeholder: 'Enter your nickname',
|
|
|
+ phone_label: 'Phone Number',
|
|
|
+ phone_placeholder: 'Enter phone number',
|
|
|
+ saving: 'Saving...',
|
|
|
+ login_password: 'Login Password',
|
|
|
+ password_tip: 'Recommended to change password regularly for security',
|
|
|
+ image_size_limit: 'Image size cannot exceed 2MB',
|
|
|
+ upload_failed: 'Upload failed, please try again or contact support',
|
|
|
+ update_success: 'Profile updated successfully!',
|
|
|
+ update_failed: 'Update failed',
|
|
|
+ fetch_failed: 'Failed to fetch user info',
|
|
|
+ },
|
|
|
+ sidebar: {
|
|
|
+ orders: 'My Orders',
|
|
|
+ tickets: 'Support Tickets',
|
|
|
+ settings: 'Account Settings',
|
|
|
+ contact_support: 'Contact Support',
|
|
|
+ contact_desc: 'Having trouble? Submit a ticket or contact us via:',
|
|
|
+ },
|
|
|
+ footer: {
|
|
|
+ description: 'Professional automated visa service platform. Making global visa applications simple, efficient, and transparent through technology.',
|
|
|
+ quick_links: 'Quick Links',
|
|
|
+ support: 'Help & Support',
|
|
|
+ refund_policy: 'Refund Policy',
|
|
|
+ terms: 'Terms of Service',
|
|
|
+ contact: 'Contact Us',
|
|
|
+ rights_reserved: 'All rights reserved.',
|
|
|
+ privacy: 'Privacy Policy',
|
|
|
+ cookie: 'Cookie Policy',
|
|
|
+ },
|
|
|
+ payment: {
|
|
|
+ order_created: 'Order Created',
|
|
|
+ order_id: 'Order ID',
|
|
|
+ select_method: 'Select Payment Method',
|
|
|
+ creating: 'Creating payment...',
|
|
|
+ reselect: 'Back',
|
|
|
+ expires: 'expires',
|
|
|
+ confirm_info: 'Confirm Payment',
|
|
|
+ original_amount: 'Original Amount',
|
|
|
+ exchange_rate: 'Exchange Rate',
|
|
|
+ random_discount: 'Random Discount',
|
|
|
+ actual_pay: 'Total to Pay',
|
|
|
+ link_pay_hint: 'Click the button below to proceed to payment',
|
|
|
+ go_to_pay: 'Pay Now',
|
|
|
+ qr_pay_hint: 'Please scan the QR code to pay',
|
|
|
+ completed_btn: 'I have paid, check order status',
|
|
|
+ link_gen_failed: 'Failed to generate payment link',
|
|
|
+ qr_gen_failed: 'Failed to get payment QR code',
|
|
|
+ unsupported_channel: 'Unsupported payment channel',
|
|
|
+ active_payment_exists: 'There is already an active payment for this order.',
|
|
|
+ init_failed: 'Payment initialization failed',
|
|
|
+ },
|
|
|
+ privacy_content: {
|
|
|
+ last_updated: 'Last Updated: January 1, 2025',
|
|
|
+ section1_title: '1. Information Collection',
|
|
|
+ section1_desc: 'We collect information necessary to process your visa application, including but not limited to name, contact details, and passport information.',
|
|
|
+ section2_title: '2. Use of Information',
|
|
|
+ section2_desc: 'Your information is used strictly for the purpose of submitting visa applications to the respective embassies or consulates. We do not sell your data to third parties.',
|
|
|
+ section3_title: '3. Data Security',
|
|
|
+ section3_desc: 'We implement industry-standard encryption and security measures to protect your personal information from unauthorized access.',
|
|
|
+ },
|
|
|
+ cookie_content: {
|
|
|
+ last_updated: 'Last Updated: January 1, 2025',
|
|
|
+ section1_title: '1. What are Cookies',
|
|
|
+ section1_desc: 'Cookies are small text files stored on your device that help us improve your website experience.',
|
|
|
+ section2_title: '2. How We Use Cookies',
|
|
|
+ section2_item1_label: 'Essential Cookies:',
|
|
|
+ section2_item1_desc: 'Used to maintain login status (e.g., Authentication Tokens).',
|
|
|
+ section2_item2_label: 'Functional Cookies:',
|
|
|
+ section2_item2_desc: 'Used to remember your language preferences.',
|
|
|
+ section3_title: '3. Managing Cookies',
|
|
|
+ section3_desc: 'You can control and manage cookies through your browser settings. However, disabling cookies may affect some website functionalities.',
|
|
|
+ }
|
|
|
+};
|