Image_Optimizer_NAT-2.0-2.2/upload/admin/language/english/module/img_opti.php

546 lines
35 KiB
PHP

<?php
$_['heading_title_raw'] = 'Image Optimizer [NAT]: Compress Originals & Delete Junk';
$_['heading_title'] = '<b>Image Optimizer [NAT]:</b> Compress Originals & Delete Junk';
$_['text_extension'] = 'Extensions';
$_['text_edit'] = 'Module Settings';
$_['text_success'] = 'Settings have been successfully saved!';
$_['entry_warning'] = 'WARNING: Always make a backup of your files, especially the /image/catalog folder before starting!';
$_['text_tech'] = 'Server Technology Check:';
$_['text_author'] = 'Technical support and suggestions: <a href="mailto:info@nat.od.ua">info@nat.od.ua</a>';
$_['tab_optimize'] = 'Optimization & Resize';
$_['tab_cleaner'] = 'Clean Unused Images';
$_['tab_info'] = 'Info / Ecosystem [NAT]';
$_['tab_settings'] = 'Settings';
$_['tab_tools'] = 'Tools (pro)';
$_['tab_cron'] = 'Cron Jobs';
$_['entry_mode'] = 'Operation Mode';
$_['text_copy'] = 'Create a copy (Safe)';
$_['text_replace'] = 'Replace originals (Requires backup!)';
$_['entry_folder'] = 'Folder name for copy';
$_['entry_batch'] = 'Files per batch';
$_['entry_log_limit'] = 'Log lines per page';
$_['entry_max_width'] = 'Max width (px) [0 - no limit]';
$_['entry_max_height'] = 'Max height (px) [0 - no limit]';
$_['entry_jpg'] = 'JPG Quality (0-100)';
$_['entry_png'] = 'PNG Compression (0-9)';
$_['entry_webp'] = 'WebP Quality (0-100)';
$_['entry_targets'] = 'What to optimize?';
$_['text_all_catalog'] = '[ Entire image/catalog ]';
$_['text_root_files'] = 'Files only in image/catalog root';
$_['entry_threshold'] = 'Replacement threshold (%)';
$_['help_threshold'] = '0: replace only if file is smaller. 10: allow up to 10% file size increase.';
$_['entry_token'] = 'Activation Token (Root Domain)';
$_['entry_status'] = 'Module Status';
$_['entry_menu_position'] = 'Menu Position [NAT]';
$_['text_menu_module_only'] = 'Modules List Only';
$_['text_menu_header'] = 'Top Header';
$_['text_menu_sidebar'] = 'Sidebar Menu';
$_['text_menu_both'] = 'Both (Header + Sidebar)';
$_['text_status_on'] = 'Enabled';
$_['text_status_off'] = 'Disabled';
$_['entry_engine'] = 'Image Processing Engine';
$_['text_engine_gd'] = 'GD (Standard)';
$_['text_engine_imagick'] = 'Imagick (High quality, sRGB profile keeping)';
$_['entry_license'] = 'License';
$_['text_cleaner_info'] = 'This tool looks for files that physically exist on the server but are not linked in the database or template files.';
$_['entry_clean_targets'] = 'Folders to scan for junk?';
$_['entry_extended_log'] = 'Extended log (show used photos and their locations)';
$_['entry_process_broken'] = 'Include files with broken encoding ("?" in names)';
$_['button_scan_trash'] = 'FIND JUNK FILES';
$_['button_quarantine'] = 'Move to Quarantine (Safe)';
$_['button_delete_trash'] = 'Delete Permanently';
$_['button_empty_quarantine'] = 'Empty Quarantine Folder';
$_['button_restore_quarantine'] = 'Restore from Quarantine';
$_['text_scan_result'] = 'Scan Results';
$_['text_trash_files'] = 'Junk files found: ';
$_['text_trash_size'] = 'Potential space to free up: ';
$_['button_start'] = 'START OPTIMIZATION';
$_['button_pause'] = 'PAUSE';
$_['button_stop'] = 'STOP';
$_['button_continue'] = 'CONTINUE';
$_['button_start_new'] = 'START (New Run)';
$_['button_download_log'] = 'Download TXT Log';
$_['button_download'] = 'Download';
$_['button_save'] = 'Save';
$_['button_cancel'] = 'Cancel';
$_['text_progress'] = 'Progress:';
$_['text_old_size'] = 'Before:';
$_['text_new_size'] = 'After:';
$_['text_savings'] = 'Saved:';
$_['text_detailed_log'] = 'Detailed Log';
$_['text_page'] = 'Page';
$_['text_waiting'] = 'Waiting to start...';
$_['text_enabled'] = 'Enabled';
$_['text_disabled_error'] = 'Disabled (ERROR)';
$_['text_supported'] = 'Supported';
$_['text_no'] = 'No';
$_['error_permission'] = 'You do not have permission to modify this module!';
$_['error_license'] = 'Access Error: Invalid activation token for this domain!';
$_['error_domain'] = ' (Domain: ';
$_['text_found'] = 'Files found: ';
$_['text_compressed'] = 'Compressed';
$_['text_original'] = 'Original';
$_['text_error_process'] = 'Processing error: ';
$_['error_log_empty'] = 'Log is empty! Run the process first.';
$_['text_report_header'] = '=== REPORT ===';
$_['text_total_files'] = 'Total files: ';
$_['text_searching'] = 'Searching for files...';
$_['error_ajax'] = 'Error: ';
$_['text_resumed'] = '▶ PROCESS RESUMED...';
$_['text_paused'] = '⏸ PAUSED. Process suspended.';
$_['confirm_stop'] = 'Are you sure you want to completely abort the process?';
$_['confirm_delete'] = 'WARNING! Files will be permanently deleted from the server with no chance of recovery! Continue?';
$_['confirm_empty_q'] = 'Are you sure you want to completely empty the quarantine folder?';
$_['confirm_restore'] = 'All files from quarantine will be returned to their original locations. Continue?';
$_['button_stopping'] = 'Stopping...';
$_['text_stopped_user'] = '🛑 PROCESS ABORTED BY USER!';
$_['text_increase'] = 'Increased';
$_['text_done'] = '✅ DONE! Process completed.';
$_['error_timeout'] = 'Server timeout. Auto-retrying in 3 seconds...';
$_['text_building_index'] = 'Step 1/2: Indexing DB and templates (searching for used photos)...';
$_['text_comparing'] = 'Step 2/2: Comparing physical files with the index...';
$_['text_quarantine_done'] = '✅ Quarantined to image/catalog_trash/ successfully!';
$_['text_deleted_done'] = '✅ Junk deletion completed successfully!';
$_['text_quarantine_empty'] = '✅ Quarantine folder emptied successfully!';
$_['text_restore_done'] = '✅ Files restored from quarantine to their original locations!';
$_['text_quarantine_move'] = 'Quarantined: ';
$_['text_deleted_file'] = 'Deleted: ';
$_['text_no_trash'] = 'No junk found in selected folders! All files are in use.';
$_['text_scanning_dirs'] = 'Scanning directories: ';
$_['text_log_used'] = '[IN USE]';
$_['text_log_trash'] = '[JUNK]';
$_['text_log_deleted'] = '[DELETED]';
$_['text_log_del_err'] = '[DELETE ERROR]';
$_['text_log_quarantine'] = '[QUARANTINED]';
$_['text_log_q_err'] = '[MOVE ERROR]';
$_['text_log_restored'] = '[RESTORED]';
$_['text_log_rest_err'] = '[RESTORE ERROR]';
$_['text_used_in'] = 'in: ';
$_['text_analyzing'] = 'Analyzing database...';
$_['text_clean_empty'] = 'Clean! No junk found.';
$_['text_processing'] = 'Processing...';
$_['text_restoring'] = 'Restoring files...';
$_['text_all_folders'] = 'image/catalog/ (And all subfolders)';
$_['text_root_folder'] = 'image/catalog/ (Root only)';
$_['text_q_empty_err'] = 'Quarantine folder is empty or does not exist.';
$_['error_token'] = 'Invalid token. Please refresh the page.';
$_['text_apply_title'] = 'Optimization completed in folder: ';
$_['text_apply_info'] = 'Check the result. If everything looks good, apply changes to the main catalog.';
$_['entry_apply_backup'] = 'Move and create a backup (in Quarantine)';
$_['entry_apply_replace'] = 'Replace originals permanently';
$_['button_apply_main'] = 'APPLY TO MAIN CATALOG';
$_['button_delete_copies'] = 'Delete temporary copies (Cancel)';
$_['button_full_cleanup'] = 'Full cleanup of all temp folders and backups';
$_['text_apply_success'] = '✅ Files successfully moved. ';
$_['text_apply_backup_ok'] = 'Originals saved in folder: ';
$_['text_apply_no_backup'] = 'Originals deleted.';
$_['text_error_source'] = 'Error: Folder with optimized files not found.';
$_['confirm_full_cleanup'] = 'WARNING! This action will permanently delete ALL backup folders (backup_*) and temp copy folders. Continue?';
$_['text_tools_desc'] = 'Global scanners and tools for file system and database image optimization.';
$_['text_tool_select'] = 'Select Tool:';
$_['text_group_scanners'] = 'Scanners & Analysis';
$_['text_group_generators'] = 'Generators & Processing';
$_['text_group_experimental'] = 'Experimental Features (BETA)';
$_['text_experimental_warn'] = 'Warning: Experimental features modify system files or the database. Backup is highly recommended!';
$_['text_tool_broken_db'] = 'Broken/Empty DB Image Scanner';
$_['text_tool_watermark'] = 'Dynamic Watermark (Cache only)';
$_['text_tool_duplicates'] = 'Duplicate Finder (MD5)';
$_['text_tool_png_jpg'] = 'Heavy PNG to JPG Converter (non-transparent PNG scanner)';
$_['text_tool_placeholders'] = 'Placeholder Generator (Replaces No Image)';
$_['text_tool_exif'] = 'Clean EXIF Data (Geotags/Meta)';
$_['text_tool_small_photos'] = 'Too Small Photo Scanner';
$_['text_tool_html_broken'] = 'Broken Images in HTML';
$_['text_tool_empty_folders'] = 'Remove Empty Folders (image/catalog)';
$_['text_tool_smart_cache'] = 'Smart Cache Cleanup';
$_['text_tool_folder_tree'] = 'Folder Tree Statistics';
$_['text_tool_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load (No DB)';
$_['text_tool_translit'] = 'File Name Transliteration';
$_['text_tool_cache_restore'] = 'Restore Originals from Cache';
$_['entry_wm_type'] = 'Watermark Type';
$_['text_wm_image'] = 'Image (PNG)';
$_['text_wm_text'] = 'Text';
$_['entry_wm_image_path'] = 'Image Path';
$_['entry_wm_text_val'] = 'Watermark Text';
$_['entry_wm_position'] = 'Position (1-9)';
$_['entry_wm_opacity'] = 'Opacity (0-100)';
$_['entry_wm_category'] = 'Only for Categories';
$_['entry_wm_brand'] = 'Only for Brands';
$_['entry_min_width'] = 'Minimum Width (px)';
$_['entry_min_height'] = 'Minimum Height (px)';
$_['entry_ph_product'] = 'Placeholder for Products';
$_['entry_ph_category'] = 'Placeholder for Categories';
$_['entry_ph_brand'] = 'Placeholder for Brands';
$_['button_run_tool'] = 'Run Tool';
$_['button_scan_tool'] = 'Scan';
$_['button_fix_tool'] = 'Fix Found';
$_['text_th_path'] = 'File / Path';
$_['text_th_size'] = 'Size';
$_['text_th_action'] = 'Action';
$_['text_th_status'] = 'Status';
$_['text_th_problem'] = 'Problem / Value';
$_['text_cron_title'] = 'Cron Settings';
$_['text_cron_desc'] = 'Add the command to your hosting Cron for automatic background compression.';
$_['entry_cron_new_only'] = 'Process only new (unprocessed) files';
$_['entry_cron_folders'] = 'Folders to scan (leave empty for entire catalog)';
$_['text_promo_title'] = 'Other [NAT] Series Modules';
$_['text_promo_desc'] = '[NAT] Series Modules are tools for deep OpenCart optimization. We focus on automation, DB speed, and server cleanup. All modules are open-source and share the same core logic.';
$_['text_support'] = 'Technical support and suggestions:';
$_['button_more'] = 'View all extensions on OpenCart.com';
$_['button_more_forum'] = 'Opencartforum';
$_['text_mod_cat_opt'] = 'Catalog Optimizer [NAT]';
$_['text_mod_cat_opt_desc'] = 'Hide empty categories/brands + SEO sorting (in stock first) + DB junk cleanup.';
$_['text_mod_new_arrivals'] = 'New Arrivals [NAT]: Sort by exact date';
$_['text_mod_new_arrivals_desc'] = 'Automated SEO page for new arrivals. Displays items strictly by the real date added. Sliders, grid, and smart date archive sidebar.';
$_['text_mod_img_opt'] = 'Image Optimizer [NAT]';
$_['text_mod_img_opt_desc'] = '<strong>Current Module.</strong> Compress and resize ORIGINAL photos (image/catalog) to WebP + Server cleanup of unused images.';
$_['text_mod_dom_scan'] = 'Domain Scanner [NAT]';
$_['text_mod_dom_scan_desc'] = 'Find and clean external links and HTTP images in DB and theme files. Ideal for HTTPS migration or cleanup after parsing.';
$_['text_mod_poll'] = 'Poll Widget [NAT]';
$_['text_mod_poll_desc'] = 'Create polls and voting widgets with a visual design builder, deep statistics, and cheat protection.';
$_['text_mod_db_opt'] = 'Database Optimizer [NAT]';
$_['text_mod_db_opt_desc'] = 'Intelligent garbage cleanup in the database, system log management, and crucial index addition for speed boost.';
$_['text_mod_im_ex'] = 'Import/Export [NAT]';
$_['text_mod_im_ex_desc'] = 'Import/export prices and stock levels from/to files (xls, xlsx, csv, xml, json) or by url. Field mapping, Cron automation, text utilities.';
$_['text_mod_admin_tools'] = 'Admin Tools [NAT]';
$_['text_mod_admin_tools_desc'] = 'Handy administrator tools: login as customer, admin customization, user permissions management, and hiding unnecessary menu items.';
$_['text_mod_utm_tracker'] = 'Order UTM Tracker [NAT]';
$_['text_mod_utm_tracker_desc'] = 'Automatic tracking of UTM tags during checkout. Saves the traffic source, campaign, keywords, and displays this data in order details to analyze advertising effectiveness.';
$_['text_info_title_promo_top_bar'] = 'Promo Top Bar [NAT]: Upper promotional info-banner, information bar above header, marquee and top-banner';
$_['text_info_desc_promo_top_bar'] = 'Create interactive promo bars and header slideshows with a block builder, countdown timers, subscription forms, and flexible targeting.';
$_['text_tool_no_image'] = 'Products without main image (empty in DB)';
$_['text_problem_main_broken'] = 'Broken main image (file deleted)';
$_['text_problem_add_broken'] = 'Broken additional image (file deleted)';
$_['text_problem_no_image'] = 'Missing main image';
$_['text_err_dir'] = 'Error: Directory not found or invalid path.';
$_['text_err_no_queue'] = 'Error: No queue found. Run scan first.';
$_['text_log_del_empty_folder'] = 'Deleted empty folder: ';
$_['text_log_no_empty_folders'] = 'No empty folders found in image/catalog/.';
$_['text_log_total_empty_folders'] = 'Total empty folders removed: ';
$_['text_log_cache_cleared'] = 'Image cache has been cleared.';
$_['text_log_wm_smart_mode'] = 'Watermarks are operating in SMART mode: originals remain untouched, applied only on cache generation.';
$_['text_log_scan_dupes'] = 'Scanning image/catalog/ for MD5 duplicates... This may take a while.';
$_['text_log_found_dupe'] = 'Found duplicate: ';
$_['text_log_no_dupes'] = 'No duplicates found.';
$_['text_log_total_dupes'] = 'Found duplicates: %s. Potential savings: %s';
$_['text_log_fix_dupes_prompt'] = 'Click "Fix Found" to redirect DB links to original and delete duplicates.';
$_['text_log_fixed_dupe'] = 'Fixed and removed duplicate: ';
$_['text_log_success_dupes'] = 'Successfully fixed %s duplicates. DB updated.';
$_['text_log_scan_png'] = 'Scanning for heavy PNG files without transparency...';
$_['text_log_no_png'] = 'No suitable PNG files found.';
$_['text_log_total_png'] = 'Found %s PNG without transparency. Click "Fix Found" to convert to JPG.';
$_['text_log_converted_jpg'] = 'Converted to JPG: ';
$_['text_log_success_png'] = 'Successfully converted %s files. Space saved: %s';
$_['text_log_ph_prod'] = 'Updated %s Products with placeholder.';
$_['text_log_ph_cat'] = 'Updated %s Categories with placeholder.';
$_['text_log_ph_brand'] = 'Updated %s Brands with placeholder.';
$_['text_log_ph_empty'] = 'No placeholders selected in settings.';
$_['text_log_scan_exif'] = 'Scanning for EXIF data...';
$_['text_log_stripped_exif'] = 'Stripped EXIF: ';
$_['text_log_no_exif'] = 'No EXIF data found to clean.';
$_['text_log_success_exif'] = 'Cleaned EXIF from %s files. Saved: %s';
$_['text_log_scan_small'] = 'Scanning for photos smaller than %sx%s px...';
$_['text_log_too_small'] = 'Too small (%sx%s): ';
$_['text_log_no_small'] = 'No small photos found.';
$_['text_log_total_small'] = 'Found %s small photos. Please review and re-upload.';
$_['text_log_html_broken'] = 'Broken IMG in HTML table %s (ID: %s): ';
$_['text_log_no_html_broken'] = 'No broken images found in HTML descriptions.';
$_['text_log_total_html_broken'] = 'Found %s broken links in HTML. Please edit them manually.';
$_['text_log_scan_smart_cache'] = 'Scanning image/cache/ for orphaned files...';
$_['text_log_del_orph_cache'] = 'Deleted orphaned cache: ';
$_['text_log_no_orph_cache'] = 'No orphaned cache files found.';
$_['text_log_success_smart_cache'] = 'Removed %s orphaned cache files. Space saved: %s';
$_['text_log_scan_translit'] = 'Scanning for files with cyrillic or spaces...';
$_['text_log_no_bad_names'] = 'No files with bad names found.';
$_['text_log_total_bad_names'] = 'Found %s bad files. Click "Fix Found" to transliterate and update DB.';
$_['text_log_renamed'] = 'Renamed: ';
$_['text_log_success_translit'] = 'Successfully transliterated %s files and updated DB.';
$_['text_log_scan_restore'] = 'Scanning image/cache/ to restore lost originals...';
$_['text_log_restored_cache'] = 'Restored from cache: ';
$_['text_log_no_lost_orig'] = 'No missing originals found in cache.';
$_['text_log_success_restore'] = 'Successfully restored %s original images from cache.';
$_['error_invalid_folder'] = 'Error: Invalid folder name!';
$_['text_formats_title'] = 'Modern Formats (WebP & SVG)';
$_['text_formats_desc'] = 'Settings for integrating modern formats into the OpenCart file system and templates.';
$_['entry_support_svg'] = 'SVG Upload Support';
$_['help_support_svg'] = 'Allows uploading vector SVG images via the standard Filemanager and safely displaying them on the storefront without size distortion.';
$_['entry_support_webp'] = 'WebP Upload Support';
$_['help_support_webp'] = 'Allows manually uploading, linking, and displaying ready .webp files on the website via the Filemanager.';
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
$_['help_webp_on_fly'] = 'Ultra-fast replacement: automatically changes .jpg/.png extensions to .webp directly in the storefront HTML output and adds the loading="lazy" attribute. Does not touch the database!';
$_['help_tool_broken_db'] = 'Finds images in the database whose physical files have been deleted from the server. Clears broken links.';
$_['help_tool_empty_folders'] = 'Recursively scans image/catalog/ and safely removes all folders that contain no files.';
$_['help_tool_folder_tree'] = 'Builds a directory tree and shows the real size of each folder to find space eaters.';
$_['help_tool_html_broken'] = 'Scans HTML descriptions of products and categories for <img> tags with non-existent images.';
$_['help_tool_small_photos'] = 'Finds pictures with resolution below the specified one. Added search links to Google and Yandex Images so you can easily find high-quality replacements.';
$_['help_tool_duplicates'] = 'Searches for exact duplicates by MD5 hash (different names, same image). Merges them into one file and updates the DB.';
$_['help_tool_watermark'] = 'Applies watermarks in SMART mode (only to storefront cache, originals remain unchanged).';
$_['help_tool_placeholders'] = 'Massively sets the selected placeholder image for products and categories that have no photo.';
$_['help_tool_png_jpg'] = 'Scans for heavy PNG files without transparency (alpha channel). Since they do not need transparency, they can be safely converted to lightweight JPG. This greatly reduces file size (typically by 70-80%) and speeds up your website, automatically updating all links in the database.';
$_['help_tool_exif'] = 'Scans JPEG files and removes hidden EXIF data (geotags, camera data), reducing size by 10-15%.';
$_['help_tool_smart_cache'] = 'Finds cached files in image/cache/ whose originals have already been deleted, and removes this trash.';
$_['help_tool_translit'] = 'Finds files with Cyrillic or spaces, renames them using transliteration, and updates paths in the DB.';
$_['help_tool_cache_restore'] = 'If you accidentally deleted an original from catalog, this tool will try to find its copy in cache and restore it.';
$_['entry_quarantine'] = 'Move originals to Quarantine (instead of deleting)';
$_['entry_backup_db'] = 'Create database backup of modified tables in SQL before starting';
$_['button_fix_selected'] = 'FIX SELECTED';
$_['button_export_log'] = 'Export to CSV';
$_['text_th_before'] = 'State BEFORE';
$_['text_th_after'] = 'Expected result AFTER';
$_['text_th_select'] = 'Action';
$_['text_th_preview'] = 'Preview';
$_['text_th_name'] = 'Object / File';
$_['text_global_action'] = 'Bulk action for selected:';
$_['text_action_clear'] = 'Clear DB Link';
$_['text_action_disable'] = 'Disable (Status = 0)';
$_['text_action_stock'] = 'Set Out of Stock';
$_['text_action_placeholder'] = 'Set Placeholder';
$_['text_action_ignore'] = 'Do nothing';
$_['text_action_merge'] = 'Merge (delete duplicate, keep original)';
$_['text_action_convert'] = 'Convert to JPG';
$_['text_action_rename'] = 'Rename to translit';
$_['text_action_delete'] = 'Delete';
$_['text_action_restore'] = 'Restore';
$_['text_db_backup_created'] = 'Database backup created: %s';
$_['text_quarantine_created'] = 'Quarantined to: %s';
$_['text_fix_status_success'] = 'Successfully executed';
$_['text_fix_status_error'] = 'Error: %s';
$_['text_log_exported'] = 'Log successfully exported!';
$_['text_select_action'] = '-- Select Action --';
$_['error_empty_selection'] = 'Error: No rows selected for fixing!';
$_['text_link_admin'] = 'Admin';
$_['text_link_catalog'] = 'Store';
$_['entry_threads'] = 'Processing Threads';
$_['text_threads_optimal'] = 'optimal';
$_['button_download_zip'] = 'Download ZIP and Delete Folder';
$_['confirm_download_and_delete'] = 'Did the ZIP download successfully? Can we delete the temporary copies folder on the server?';
$_['button_clear_backups'] = 'Delete DB Backups';
$_['button_clear_backups_short'] = 'Clear Backups';
$_['confirm_clear_backups'] = 'Are you sure you want to delete all SQL database backups?';
$_['text_compare_title'] = 'Compare Images BEFORE / AFTER';
$_['text_compare_before'] = 'BEFORE';
$_['text_compare_after'] = 'AFTER';
$_['text_backups_cleared'] = 'All database backups deleted successfully!';
$_['error_no_backups'] = 'No backups found or folder is empty.';
$_['button_restore'] = 'Restore';
$_['button_empty'] = 'Clear';
$_['entry_wm_targets'] = 'Apply watermark to:';
$_['text_wm_target_product'] = 'Product Photos';
$_['text_wm_target_category'] = 'Category Photos';
$_['text_wm_target_brand'] = 'Brand Logos';
$_['text_wm_target_banner'] = 'Banners and Slides';
$_['text_wm_target_blog'] = 'Articles / Blog';
$_['error_no_scan_data'] = 'Error: No scan data found. Please run scan first!';
$_['error_row_not_found'] = 'Error: Row not found in scan results!';
$_['error_file_not_found'] = 'Error: File not found on server!';
$_['text_folder_rules_title'] = 'Individual Folder Rules';
$_['text_folder_rules_desc'] = 'You can override compression quality and maximum sizes for specific folders. Leave a field blank to use global settings. The path is relative to the image/ directory (e.g. catalog/banners/).';
$_['entry_folder_path'] = 'Folder Path';
$_['entry_jpg_quality'] = 'JPG Quality';
$_['entry_webp_quality'] = 'WebP Quality';
$_['button_add_rule'] = 'Add Rule';
$_['button_remove'] = 'Remove';
$_['entry_wm_angle'] = 'Watermark Rotation Angle (degrees)';
$_['entry_wm_corner_radius'] = 'Watermark Image Corner Radius (px)';
$_['entry_wm_size_type'] = 'Watermark Scaling';
$_['entry_wm_size_percent'] = 'Watermark Size (% of image width)';
$_['entry_wm_text_color'] = 'Watermark Text Color';
$_['entry_wm_text_font'] = 'Watermark Font (TTF)';
$_['entry_wm_filter_mode'] = 'Categories/Brands Filter Mode';
$_['text_wm_filter_include'] = 'Only for Selected';
$_['text_wm_filter_exclude'] = 'For All Except Selected';
$_['text_wm_size_original'] = 'Original Size';
$_['text_wm_size_percent'] = 'Proportional to image width (%)';
$_['button_preview_watermark'] = 'Preview Watermark';
$_['text_wm_preview_title'] = 'Watermark Preview';
$_['text_cron_exclude_folders'] = 'Exclude folders from scan';
$_['text_cron_entities'] = 'Which photo types to process?';
$_['text_cron_quality_override'] = 'Override compression settings for Cron';
$_['text_cron_recommendations'] = 'Recommended Cron Schedule';
$_['text_cron_recommendations_desc'] = '<ul><li><b>For small sites (up to 5000 products)</b>: run Cron every hour (<code>0 * * * *</code>).</li><li><b>For medium sites (5000-20000 products)</b>: run every 3-6 hours (<code>0 */6 * * *</code>).</li><li><b>For large sites (over 20000 products)</b>: run once a day at night (e.g. at 2:00 AM: <code>0 2 * * *</code>).</li></ul>';
$_['text_tool_broken_files'] = 'Server Broken/Empty Files Scanner';
$_['help_tool_broken_files'] = 'Scans physical files in image/catalog/ for corrupted images or empty files of 0 bytes.';
$_['text_grid_broken_file'] = 'Broken or empty file on server';
$_['text_grid_broken_file_after'] = 'Delete or replace with placeholder';
$_['text_description_broken_files'] = 'Scanning results of physical files in image/catalog/. Shows broken (corrupted) images or files with 0 bytes size.';
$_['text_action_strip'] = 'Strip EXIF';
$_['text_action_set_placeholder'] = 'Set Placeholder';
$_['text_th_entity'] = 'Entity / Related Links';
$_['text_cron_entity_product'] = 'Products';
$_['text_cron_entity_category'] = 'Categories';
$_['text_cron_entity_manufacturer'] = 'Manufacturers / Brands';
$_['text_cron_entity_banner'] = 'Banners';
$_['text_cron_entity_blog'] = 'Blog / Articles';
$_['entry_cron_jpg_quality'] = 'JPG Quality (Cron)';
$_['entry_cron_webp_quality'] = 'WebP Quality (Cron)';
$_['entry_cron_max_width'] = 'Max Width px (Cron)';
$_['entry_cron_max_height'] = 'Max Height px (Cron)';
$_['text_cron_folder_scan'] = 'Folders to scan';
$_['text_no_fonts'] = 'No TTF fonts found in system/library/font/';
$_['button_apply'] = 'Apply';
$_['text_backup_will_be_created'] = 'A database backup will be automatically created before running this action.';
$_['text_bulk_action'] = 'Bulk action for selected';
$_['text_grid_results'] = 'Scanner Results & Details';
$_['text_quarantine_will_be_created'] = 'Original files will be moved to quarantine (image/catalog_trash/) before modification.';
$_['text_success_apply'] = 'Changes successfully applied!';
$_['text_description_broken'] = 'Database scan results for broken links (table records referencing non-existent files).';
$_['text_description_cache_restore'] = 'Results of search for cache files whose originals are missing in the catalog.';
$_['text_description_duplicates'] = 'Results of search for exact duplicate images by MD5 hash.';
$_['text_description_empty_folders'] = 'List of empty folders in image/catalog/ directory for deletion.';
$_['text_description_exif'] = 'Results of search for images containing EXIF metadata that can be stripped.';
$_['text_description_folder_tree'] = 'Folder size statistics in image/catalog/ directory.';
$_['text_description_html_broken'] = 'Results of search for non-existent image files referenced in HTML descriptions.';
$_['text_description_placeholders'] = 'Results of search for entities without images to fill with placeholders.';
$_['text_description_png_jpg'] = 'Results of search for heavy PNG images without transparency that can be compressed to JPG.';
$_['text_description_small_photos'] = 'List of images with dimensions smaller than the minimum specified (%sx%s px).';
$_['text_description_smart_cache'] = 'Results of search for cache files whose original images have already been deleted.';
$_['text_description_translit'] = 'Results of search for files with Cyrillic characters or spaces in their names.';
$_['text_grid_broken_db_after'] = 'Clear link or set placeholder';
$_['text_grid_dupe_after'] = 'Original (remains)';
$_['text_grid_dupe_before'] = 'Duplicate (will be deleted)';
$_['text_grid_empty_folder'] = 'Empty folder';
$_['text_grid_empty_folder_after'] = 'Delete empty folder';
$_['text_grid_exif_after'] = 'Strip metadata';
$_['text_grid_exif_before'] = 'Contains EXIF';
$_['text_grid_html_after'] = 'Fix link manually';
$_['text_grid_missing_file'] = 'File is missing';
$_['text_grid_missing_html'] = 'Image not found in description';
$_['text_grid_missing_orig'] = 'Original is missing';
$_['text_grid_missing_orig_after'] = 'Restore original from cache';
$_['text_grid_no_image'] = 'No image (empty)';
$_['text_grid_orph_cache'] = 'Orphaned cache';
$_['text_grid_orph_cache_after'] = 'Delete unneeded cache';
$_['text_grid_ph_brand_after'] = 'Set brand placeholder';
$_['text_grid_ph_category_after'] = 'Set category placeholder';
$_['text_grid_ph_product_after'] = 'Set product placeholder';
$_['text_grid_small_photo_after'] = 'Recommended to replace with larger one';
$_['text_grid_too_small'] = 'Too small';
$_['text_no_relations'] = 'No database relations';
$_['text_action_archive'] = 'Archive (to ZIP)';
$_['text_action_archive_delete'] = 'Archive + Delete';
$_['text_tool_sanitizer'] = 'File Name Sanitizer';
$_['help_tool_sanitizer'] = 'Bulk cleanup of file and folder names from Cyrillic, spaces and special characters, normalization of extensions.';
$_['text_description_sanitizer'] = 'Results of file name analysis for sanitization based on selected rules.';
$_['entry_sz_translit'] = 'Transliterate (Cyrillic to Latin)';
$_['entry_sz_spaces'] = 'Replace spaces with "_"';
$_['entry_sz_special'] = 'Remove special characters';
$_['entry_sz_lowercase_name'] = 'Lowercase file name';
$_['entry_sz_lowercase_ext'] = 'Lowercase extension';
$_['entry_sz_normalize_ext'] = 'Normalize extension (jpeg -> jpg)';
$_['entry_cron_folder_mode'] = 'Folder filtering mode';
$_['text_cron_folder_mode_exclude'] = 'Scan all folders except selected (Exceptions)';
$_['text_cron_folder_mode_include'] = 'Scan only selected folders';
$_['button_select_all'] = 'Select All';
$_['button_deselect_all'] = 'Deselect All';
$_['entry_wm_upload_font'] = 'Upload custom TTF font';
$_['button_upload_font'] = 'Upload Font';
$_['text_success_font_upload'] = 'Font successfully uploaded!';
$_['error_font_upload'] = 'Error uploading font! Only .ttf files up to 5 MB are allowed.';
$_['entry_lazy_load'] = 'Progressive Lazy Load';
$_['help_lazy_load'] = 'Enables a premium progressive "blur-up" lazy loading on the frontend. Images are replaced with tiny blurred versions and loaded fully when scrolled into view.';
$_['confirm_replace_mode'] = 'WARNING! You have selected the "Replace originals" mode. All images will be overwritten directly on the server. We strongly recommend making a backup first. Are you sure you want to continue?';
$_['text_compare'] = 'Compare';
$_['text_home'] = 'Home';
$_['text_tech_gd'] = 'GD Library';
$_['text_tech_imagick'] = 'Imagick';
$_['text_tech_webp'] = 'WebP Support';
$_['text_position_1'] = '1 - Top Left';
$_['text_position_2'] = '2 - Top Center';
$_['text_position_3'] = '3 - Top Right';
$_['text_position_4'] = '4 - Middle Left';
$_['text_position_5'] = '5 - Center';
$_['text_position_6'] = '6 - Middle Right';
$_['text_position_7'] = '7 - Bottom Left';
$_['text_position_8'] = '8 - Bottom Center';
$_['text_position_9'] = '9 - Bottom Right';
$_['entry_log_level'] = 'Log Level';
$_['text_log_changed_only'] = 'Changed files only';
$_['text_log_all'] = 'All files (verbose)';
$_['text_skipped_no_gain'] = 'Skipped (no improvement)';
$_['text_reset_cache_hint'] = 'Reset optimization cache (force full rescan)';
$_['confirm_reset_cache'] = 'Reset optimization cache? Next scan will check ALL files again.';
$_['text_cache_cleared'] = 'Optimization cache cleared. Next scan will check all files.';
$_['error_wm_preview'] = 'Failed to generate watermark preview.';
$_['text_apply_errors_warning'] = 'WARNING: Some files could not be replaced (locked or permission denied):';
$_['text_action_compress'] = 'Compress Images';
$_['text_estimated'] = 'Estimated';
$_['entry_min_savings_bytes'] = 'Min savings (bytes)';
$_['entry_min_savings_percent'] = 'Min savings (%)';
$_['text_optimized'] = 'Optimized';
$_['entry_broken_fallback'] = 'Broken Image Fallback';
$_['help_broken_fallback'] = 'Automatically replaces missing or corrupted catalog images on the storefront with a fallback image.';
$_['entry_fallback_image'] = 'Fallback Image';
$_['help_fallback_image'] = 'Select a custom image to display when a product or category image is broken. Defaults to no_image.png.';
$_['text_tool_cmyk'] = 'CMYK to RGB Converter';
$_['help_tool_cmyk'] = 'Convert JPEG images from CMYK color profile to sRGB to ensure correct display on Safari and iOS devices.';
$_['text_tool_heavy_files'] = 'Top Heavy Files Scanner';
$_['help_tool_heavy_files'] = 'Scan and find the heaviest original files in catalog directory and optimize them directly.';
$_['entry_heavy_files_limit'] = 'Max files to find (total limit)';
$_['text_action_convert_rgb'] = 'Convert to RGB';
$_['text_description_cmyk'] = 'CMYK JPEGs found. Conversion to sRGB guarantees they are displayed correctly on all platforms, including iOS/macOS.';
$_['text_description_heavy'] = 'List of the top %d heaviest files in the image directory. You can optimize them here directly.';
$_['text_cron_folder_hint_exclude_all'] = 'Status: All folders will be scanned (no exclusions).';
$_['text_cron_folder_hint_exclude_some'] = 'Status: All folders will be scanned EXCEPT the %d checked folders.';
$_['text_cron_folder_hint_include_some'] = 'Status: Only the %d checked folders will be scanned.';
$_['text_cron_folder_hint_include_none'] = 'WARNING: No folders are selected! The Cron job will scan nothing.';
$_['text_action_apply_changes'] = 'Apply specified changes';
$_['entry_wm_status'] = 'Watermark Status';
$_['text_disabled'] = 'Disabled';
$_['entry_rule_name'] = 'Rule Name';
$_['entry_rule_status'] = 'Rule Status';
$_['entry_action'] = 'Action';
$_['entry_ph_status'] = 'Placeholder Status';
$_['entry_sanitizer_limit'] = 'Max files to scan (limit)';
$_['entry_heavy_files_min_size'] = 'Min Size Threshold';
$_['entry_png_jpg_limit'] = 'Max files to scan (limit)';
$_['entry_png_jpg_min_size'] = 'Min Size Threshold';
$_['text_wm_rule_title'] = 'Watermark Rule';
$_['button_close'] = 'Close';
$_['text_ph_rule_title'] = 'Placeholder Rule';
$_['entry_ph_image'] = 'Placeholder Image';
$_['button_clear_cache_wm'] = 'Clear Cache (apply watermarks)';
$_['text_active'] = 'Active';
$_['text_error'] = 'Not Active';
$_['text_th_dupe_delete'] = 'File to delete (Duplicate)';
$_['text_th_dupe_keep'] = 'File to keep (Original)';
$_['text_dupe_original_label'] = 'Original';
$_['text_dupe_duplicate_label'] = 'Duplicate';
$_['text_disk_usage'] = 'Disk Usage';
$_['text_cumulative_stats'] = 'Optimization Statistics';
$_['text_disk_catalog'] = 'Catalog images';
$_['text_disk_cache'] = 'OC Cache';
$_['text_disk_trash'] = 'Module trash';
$_['text_disk_other'] = 'Other';
$_['text_disk_free'] = 'Free';
$_['text_total_files_opt'] = 'Files optimized';
$_['text_total_saved'] = 'Total saved';
$_['text_avg_saving_pct'] = 'Avg. savings';
$_['text_stats_hint'] = 'Statistics accumulate across all optimization sessions (stored locally)';
$_['text_reset_stats'] = 'Reset statistics';
$_['text_reset_stats_confirm']= 'Are you sure you want to reset optimization statistics?';
$_['text_export_import'] = 'Export / Import Settings';
$_['button_export_settings'] = 'Export settings (JSON)';
$_['button_import_settings'] = 'Import settings';
$_['help_export_settings'] = 'Download all module settings as a JSON file';
$_['help_import_settings'] = 'Upload a previously exported JSON to restore settings';
$_['text_import_success'] = 'Settings imported successfully. Reload the page to apply.';
$_['error_import_file'] = 'No file uploaded or upload error';
$_['error_import_invalid'] = 'Invalid settings file (wrong module or format)';
$_['text_click_to_load'] = 'Click ↑ to load disk usage';
$_['tab_formats'] = 'Image Formats';
$_['text_disk_quota_legend'] = 'Hosting Disk Quota Limits (manual)';
$_['text_disk_quota_desc'] = 'If the disk space graph shows incorrect data (the server\'s physical partition instead of your hosting account limit), you can specify your hosting quota limits manually. Enter 0 for auto-detect.';
$_['entry_disk_quota_total'] = 'Total Hosting Disk Space (GB)';
$_['entry_disk_quota_used'] = 'Total Hosting Used Disk Space (GB)';
$_['entry_auto_disk'] = 'Auto-update on page load';
$_['entry_cron_task_name'] = 'Task Name';
$_['entry_cron_task_summary'] = 'Compression settings';
$_['button_add_cron_task'] = 'Add Cron Task';
$_['button_copy_cron_url'] = 'Copy URL';
$_['text_cron_recommended_url'] = 'Cron task execution URL:';
$_['button_online_instruction'] = 'Module Documentation (Online)';