fix(svg): isolate SVG CSS rules, add optional SVG autofix sub-setting, and exclude UI/language flags from sizing rules
This commit is contained in:
parent
0b9e19eccd
commit
c24b8d2ba8
Binary file not shown.
555
install.xml
555
install.xml
|
|
@ -1,24 +1,12 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<modification>
|
<modification>
|
||||||
<name>Image Optimizer [NAT] (OC 2.0-2.2)</name>
|
<name>Image Optimizer [NAT]</name>
|
||||||
<id>Image_Optimizer_nat</id>
|
<id>Image_Optimizer_nat</id>
|
||||||
<code>img_opti_nat_od_ua_v1</code>
|
<code>img_opti_nat_v1</code>
|
||||||
<version>1.2.0</version>
|
<version>1.2.0</version>
|
||||||
<author>NAT</author>
|
<author>NAT</author>
|
||||||
<link>mailto:info@nat.od.ua</link>
|
<link>mailto:info@nat.od.ua</link>
|
||||||
|
|
||||||
<!-- Inject registry global on OC 2.3 -->
|
|
||||||
<file path="system/engine/registry.php">
|
|
||||||
<operation error="skip">
|
|
||||||
<search><![CDATA[class Registry {]]></search>
|
|
||||||
<add position="after"><![CDATA[
|
|
||||||
public function __construct() {
|
|
||||||
$GLOBALS['registry'] = $this;
|
|
||||||
}
|
|
||||||
]]></add>
|
|
||||||
</operation>
|
|
||||||
</file>
|
|
||||||
|
|
||||||
<file path="admin/controller/common/column_left.php">
|
<file path="admin/controller/common/column_left.php">
|
||||||
<operation error="skip">
|
<operation error="skip">
|
||||||
<search><![CDATA[if ($this->user->hasPermission('access', 'catalog/product')) {]]></search>
|
<search><![CDATA[if ($this->user->hasPermission('access', 'catalog/product')) {]]></search>
|
||||||
|
|
@ -27,23 +15,34 @@
|
||||||
if ($this->config->get('module_img_opti_status')) {
|
if ($this->config->get('module_img_opti_status')) {
|
||||||
$nat_pos = $this->config->get('module_img_opti_menu_position');
|
$nat_pos = $this->config->get('module_img_opti_menu_position');
|
||||||
if ($nat_pos == 'sidebar' || $nat_pos == 'both') {
|
if ($nat_pos == 'sidebar' || $nat_pos == 'both') {
|
||||||
if ($this->user->hasPermission('access', 'module/img_opti')) {
|
if ($this->user->hasPermission('access', 'extension/module/img_opti')) {
|
||||||
$nat_item = array(
|
$nat_item = array(
|
||||||
'name' => 'Image Optimizer',
|
'name' => 'Image Optimizer',
|
||||||
'href' => $this->url->link('module/img_opti', 'token=' . $this->session->data['token'], true),
|
'href' => $this->url->link('extension/module/img_opti', 'user_token=' . $this->session->data['user_token'], true),
|
||||||
'children' => array()
|
'children' => array()
|
||||||
);
|
);
|
||||||
|
|
||||||
$nat_menu_index = -1;
|
$nat_menu_index = -1;
|
||||||
if (isset($data['menus'])) {
|
if (isset($data['menus'])) {
|
||||||
foreach ($data['menus'] as $k => $menu) {
|
foreach ($data['menus'] as $k => $menu) {
|
||||||
if ($menu['id'] == 'menu-nat') {
|
if (isset($menu['id']) && $menu['id'] == 'menu-nat') {
|
||||||
$nat_menu_index = $k;
|
$nat_menu_index = $k;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$exists = false;
|
||||||
|
if ($nat_menu_index > -1 && isset($data['menus'][$nat_menu_index]['children'])) {
|
||||||
|
foreach ($data['menus'][$nat_menu_index]['children'] as $child) {
|
||||||
|
if (isset($child['href']) && strpos($child['href'], 'route=extension/module/img_opti') !== false) {
|
||||||
|
$exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$exists) {
|
||||||
if ($nat_menu_index > -1) {
|
if ($nat_menu_index > -1) {
|
||||||
$data['menus'][$nat_menu_index]['children'][] = $nat_item;
|
$data['menus'][$nat_menu_index]['children'][] = $nat_item;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -58,6 +57,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
]]></add>
|
]]></add>
|
||||||
</operation>
|
</operation>
|
||||||
</file>
|
</file>
|
||||||
|
|
@ -73,34 +73,55 @@
|
||||||
if ($this->config->get('module_img_opti_status')) {
|
if ($this->config->get('module_img_opti_status')) {
|
||||||
$nat_pos = $this->config->get('module_img_opti_menu_position');
|
$nat_pos = $this->config->get('module_img_opti_menu_position');
|
||||||
if ($nat_pos == 'header' || $nat_pos == 'both') {
|
if ($nat_pos == 'header' || $nat_pos == 'both') {
|
||||||
if ($this->user->hasPermission('access', 'module/img_opti')) {
|
if ($this->user->hasPermission('access', 'extension/module/img_opti')) {
|
||||||
|
$exists = false;
|
||||||
|
foreach ($data['nat_menus'] as $m) {
|
||||||
|
if (isset($m['href']) && strpos($m['href'], 'route=extension/module/img_opti') !== false) {
|
||||||
|
$exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$exists) {
|
||||||
$data['nat_menus'][] = array(
|
$data['nat_menus'][] = array(
|
||||||
'name' => 'Image Optimizer',
|
'name' => 'Image Optimizer',
|
||||||
'href' => $this->url->link('module/img_opti', 'token=' . $this->session->data['token'], true)
|
'href' => $this->url->link('extension/module/img_opti', 'user_token=' . $this->session->data['user_token'], true)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
]]></add>
|
]]></add>
|
||||||
</operation>
|
</operation>
|
||||||
</file>
|
</file>
|
||||||
|
|
||||||
<file path="admin/view/template/common/header.tpl">
|
<file path="admin/view/template/common/header.twig">
|
||||||
<operation error="skip">
|
<operation error="skip">
|
||||||
<search><![CDATA[<li><a href="<?php echo $logout; ?>"]]></search>
|
<search><![CDATA[</head>]]></search>
|
||||||
<add position="before"><![CDATA[
|
<add position="before"><![CDATA[
|
||||||
<?php if (isset($nat_menus) && $nat_menus && !isset($nat_menu_rendered)) { ?>
|
<style>
|
||||||
<?php $nat_menu_rendered = true; ?>
|
a.img-thumbnail img, a.thumbnail img {
|
||||||
|
width: 100px !important;
|
||||||
|
height: 100px !important;
|
||||||
|
object-fit: contain !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
]]></add>
|
||||||
|
</operation>
|
||||||
|
<operation error="skip">
|
||||||
|
<search><![CDATA[<li><a href="{{ logout }}"]]></search>
|
||||||
|
<add position="before"><![CDATA[
|
||||||
|
{% if nat_menus is defined and nat_menus and not nat_menu_rendered|default(false) %}
|
||||||
|
{% set nat_menu_rendered = true %}
|
||||||
<li class="dropdown" id="nat-ecosystem-menu">
|
<li class="dropdown" id="nat-ecosystem-menu">
|
||||||
<a class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-rocket fa-lg" style="color:#e74c3c;"></i> <span class="hidden-xs hidden-sm hidden-md">[NAT]</span> <span class="caret"></span></a>
|
<a class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-rocket fa-lg" style="color:#e74c3c;"></i> <span class="hidden-xs hidden-sm hidden-md">[NAT]</span> <span class="caret"></span></a>
|
||||||
<ul class="dropdown-menu dropdown-menu-right" id="nat-ecosystem-list">
|
<ul class="dropdown-menu dropdown-menu-right" id="nat-ecosystem-list">
|
||||||
<li class="dropdown-header">Ecosystem [NAT]</li>
|
<li class="dropdown-header">Ecosystem [NAT]</li>
|
||||||
<?php foreach ($nat_menus as $n_menu) { ?>
|
{% for n_menu in nat_menus %}
|
||||||
<li><a href="<?php echo $n_menu['href']; ?>"><i class="fa fa-angle-right"></i> <?php echo $n_menu['name']; ?></a></li>
|
<li><a href="{{ n_menu.href }}"><i class="fa fa-angle-right"></i> {{ n_menu.name }}</a></li>
|
||||||
<?php } ?>
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<?php } ?>
|
{% endif %}
|
||||||
]]></add>
|
]]></add>
|
||||||
</operation>
|
</operation>
|
||||||
</file>
|
</file>
|
||||||
|
|
@ -162,6 +183,12 @@
|
||||||
<search><![CDATA[public function resize($filename, $width, $height) {]]></search>
|
<search><![CDATA[public function resize($filename, $width, $height) {]]></search>
|
||||||
<add position="after"><![CDATA[
|
<add position="after"><![CDATA[
|
||||||
$GLOBALS['registry'] = $this->registry;
|
$GLOBALS['registry'] = $this->registry;
|
||||||
|
if ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_auto_fake_jpg_guard') && !empty($filename)) {
|
||||||
|
$this->load->model('extension/module/img_opti');
|
||||||
|
try {
|
||||||
|
$filename = $this->model_extension_module_img_opti->checkAndFixFakeJpgOnTheFly($filename);
|
||||||
|
} catch (\Exception $e) {}
|
||||||
|
}
|
||||||
if (empty($filename) || ($filename !== 'no_image.png' && $filename !== 'placeholder.png' && !is_file(DIR_IMAGE . $filename))) {
|
if (empty($filename) || ($filename !== 'no_image.png' && $filename !== 'placeholder.png' && !is_file(DIR_IMAGE . $filename))) {
|
||||||
if ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_broken_fallback')) {
|
if ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_broken_fallback')) {
|
||||||
$fallback_image = $this->config->get('module_img_opti_fallback_image');
|
$fallback_image = $this->config->get('module_img_opti_fallback_image');
|
||||||
|
|
@ -194,9 +221,9 @@
|
||||||
<search><![CDATA[$image->save(DIR_IMAGE . $image_new);]]></search>
|
<search><![CDATA[$image->save(DIR_IMAGE . $image_new);]]></search>
|
||||||
<add position="after"><![CDATA[
|
<add position="after"><![CDATA[
|
||||||
if ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_wm_status')) {
|
if ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_wm_status')) {
|
||||||
$this->load->model('module/img_opti');
|
$this->load->model('extension/module/img_opti');
|
||||||
try {
|
try {
|
||||||
$this->model_module_img_opti->applyDynamicWatermark(DIR_IMAGE . $image_new, $filename);
|
$this->model_extension_module_img_opti->applyDynamicWatermark(DIR_IMAGE . $image_new, $filename);
|
||||||
} catch (\Exception $e) {}
|
} catch (\Exception $e) {}
|
||||||
}
|
}
|
||||||
]]></add>
|
]]></add>
|
||||||
|
|
@ -208,9 +235,9 @@
|
||||||
<add position="replace"><![CDATA[copy(DIR_IMAGE . $image_old, DIR_IMAGE . $image_new);
|
<add position="replace"><![CDATA[copy(DIR_IMAGE . $image_old, DIR_IMAGE . $image_new);
|
||||||
}
|
}
|
||||||
if ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_wm_status')) {
|
if ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_wm_status')) {
|
||||||
$this->load->model('module/img_opti');
|
$this->load->model('extension/module/img_opti');
|
||||||
try {
|
try {
|
||||||
$this->model_module_img_opti->applyDynamicWatermark(DIR_IMAGE . $image_new, $filename);
|
$this->model_extension_module_img_opti->applyDynamicWatermark(DIR_IMAGE . $image_new, $filename);
|
||||||
} catch (\Exception $e) {}
|
} catch (\Exception $e) {}
|
||||||
}
|
}
|
||||||
}]]></add>
|
}]]></add>
|
||||||
|
|
@ -222,6 +249,12 @@
|
||||||
<search><![CDATA[public function resize($filename, $width, $height) {]]></search>
|
<search><![CDATA[public function resize($filename, $width, $height) {]]></search>
|
||||||
<add position="after"><![CDATA[
|
<add position="after"><![CDATA[
|
||||||
$GLOBALS['registry'] = $this->registry;
|
$GLOBALS['registry'] = $this->registry;
|
||||||
|
if ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_auto_fake_jpg_guard') && !empty($filename)) {
|
||||||
|
$this->load->model('extension/module/img_opti');
|
||||||
|
try {
|
||||||
|
$filename = $this->model_extension_module_img_opti->checkAndFixFakeJpgOnTheFly($filename);
|
||||||
|
} catch (\Exception $e) {}
|
||||||
|
}
|
||||||
if (empty($filename) || ($filename !== 'no_image.png' && $filename !== 'placeholder.png' && !is_file(DIR_IMAGE . $filename))) {
|
if (empty($filename) || ($filename !== 'no_image.png' && $filename !== 'placeholder.png' && !is_file(DIR_IMAGE . $filename))) {
|
||||||
if ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_broken_fallback')) {
|
if ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_broken_fallback')) {
|
||||||
$fallback_image = $this->config->get('module_img_opti_fallback_image');
|
$fallback_image = $this->config->get('module_img_opti_fallback_image');
|
||||||
|
|
@ -251,7 +284,7 @@
|
||||||
</file>
|
</file>
|
||||||
|
|
||||||
<file path="system/library/image.php">
|
<file path="system/library/image.php">
|
||||||
<operation error="skip">
|
<operation>
|
||||||
<search><![CDATA[if ($this->mime == 'image/gif') {]]></search>
|
<search><![CDATA[if ($this->mime == 'image/gif') {]]></search>
|
||||||
<add position="before"><![CDATA[
|
<add position="before"><![CDATA[
|
||||||
if (($this->mime == 'image/webp' || $this->mime == 'image/vnd.webp' || $this->mime == 'image/x-webp') && function_exists('imagecreatefromwebp')) {
|
if (($this->mime == 'image/webp' || $this->mime == 'image/vnd.webp' || $this->mime == 'image/x-webp') && function_exists('imagecreatefromwebp')) {
|
||||||
|
|
@ -259,7 +292,7 @@
|
||||||
} else
|
} else
|
||||||
]]></add>
|
]]></add>
|
||||||
</operation>
|
</operation>
|
||||||
<operation error="skip">
|
<operation>
|
||||||
<search><![CDATA[if ($extension == 'jpeg' || $extension == 'jpg') {]]></search>
|
<search><![CDATA[if ($extension == 'jpeg' || $extension == 'jpg') {]]></search>
|
||||||
<add position="before"><![CDATA[
|
<add position="before"><![CDATA[
|
||||||
if ($extension == 'webp' && function_exists('imagewebp')) {
|
if ($extension == 'webp' && function_exists('imagewebp')) {
|
||||||
|
|
@ -267,7 +300,7 @@
|
||||||
} else
|
} else
|
||||||
]]></add>
|
]]></add>
|
||||||
</operation>
|
</operation>
|
||||||
<operation error="skip">
|
<operation>
|
||||||
<search><![CDATA[imagejpeg($this->image, $file, $quality);]]></search>
|
<search><![CDATA[imagejpeg($this->image, $file, $quality);]]></search>
|
||||||
<add position="before"><![CDATA[
|
<add position="before"><![CDATA[
|
||||||
@imageinterlace($this->image, true);
|
@imageinterlace($this->image, true);
|
||||||
|
|
@ -276,299 +309,9 @@
|
||||||
</file>
|
</file>
|
||||||
|
|
||||||
<file path="system/library/response.php">
|
<file path="system/library/response.php">
|
||||||
<operation error="skip">
|
<operation>
|
||||||
<search><![CDATA[echo $this->output;]]></search>
|
|
||||||
<add position="replace"><![CDATA[
|
|
||||||
$output = $this->output;
|
|
||||||
$registry = isset($GLOBALS['registry']) ? $GLOBALS['registry'] : null;
|
|
||||||
if ($registry && !defined('DIR_CATALOG')) {
|
|
||||||
$config = $registry->get('config');
|
|
||||||
if ($config && $config->get('module_img_opti_status')) {
|
|
||||||
$webp_on_fly = $config->get('module_img_opti_webp_on_fly');
|
|
||||||
$lazy_load = $config->get('module_img_opti_lazy_load');
|
|
||||||
$broken_fallback = $config->get('module_img_opti_broken_fallback');
|
|
||||||
$fallback_image = $config->get('module_img_opti_fallback_image');
|
|
||||||
|
|
||||||
$theme = $config->get('config_theme');
|
|
||||||
$additional_width = 0;
|
|
||||||
$additional_height = 0;
|
|
||||||
$thumb_width = 0;
|
|
||||||
$thumb_height = 0;
|
|
||||||
|
|
||||||
if ($theme) {
|
|
||||||
$additional_width = $config->get('theme_' . $theme . '_image_additional_width');
|
|
||||||
$additional_height = $config->get('theme_' . $theme . '_image_additional_height');
|
|
||||||
$thumb_width = $config->get('theme_' . $theme . '_image_thumb_width');
|
|
||||||
$thumb_height = $config->get('theme_' . $theme . '_image_thumb_height');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$additional_width) { $additional_width = $config->get('theme_default_image_additional_width'); }
|
|
||||||
if (!$additional_height) { $additional_height = $config->get('theme_default_image_additional_height'); }
|
|
||||||
if (!$thumb_width) { $thumb_width = $config->get('theme_default_image_thumb_width'); }
|
|
||||||
if (!$thumb_height) { $thumb_height = $config->get('theme_default_image_thumb_height'); }
|
|
||||||
|
|
||||||
if (!$additional_width) { $additional_width = $config->get('config_image_additional_width'); }
|
|
||||||
if (!$additional_height) { $additional_height = $config->get('config_image_additional_height'); }
|
|
||||||
if (!$thumb_width) { $thumb_width = $config->get('config_image_thumb_width'); }
|
|
||||||
if (!$thumb_height) { $thumb_height = $config->get('config_image_thumb_height'); }
|
|
||||||
|
|
||||||
if (!$additional_width) { $additional_width = 74; }
|
|
||||||
if (!$additional_height) { $additional_height = 74; }
|
|
||||||
if (!$thumb_width) { $thumb_width = 228; }
|
|
||||||
if (!$thumb_height) { $thumb_height = 228; }
|
|
||||||
|
|
||||||
$svg_style = '<style>' . "\n" .
|
|
||||||
'img[src*=".svg"], img[src*=".SVG"] {' . "\n" .
|
|
||||||
' max-width: 100% !important;' . "\n" .
|
|
||||||
' max-height: 100% !important;' . "\n" .
|
|
||||||
' object-fit: contain !important;' . "\n" .
|
|
||||||
'}' . "\n" .
|
|
||||||
'img.mfp-img[src*=".svg"], img.mfp-img[src*=".SVG"], #cboxLoadedContent img[src*=".svg"] {' . "\n" .
|
|
||||||
' width: 800px !important;' . "\n" .
|
|
||||||
' max-width: 100% !important;' . "\n" .
|
|
||||||
' height: auto !important;' . "\n" .
|
|
||||||
'}' . "\n" .
|
|
||||||
'.thumbnails img[src*=".svg"], .thumbnails img[src*=".SVG"], .thumbnail img[src*=".svg"], .thumbnail img[src*=".SVG"] {' . "\n" .
|
|
||||||
' max-width: 100% !important;' . "\n" .
|
|
||||||
' max-height: 100% !important;' . "\n" .
|
|
||||||
' width: ' . $thumb_width . 'px !important;' . "\n" .
|
|
||||||
' height: ' . $thumb_height . 'px !important;' . "\n" .
|
|
||||||
' object-fit: contain !important;' . "\n" .
|
|
||||||
'}' . "\n" .
|
|
||||||
'.image-additional img[src*=".svg"], .image-additional img[src*=".SVG"] {' . "\n" .
|
|
||||||
' width: ' . $additional_width . 'px !important;' . "\n" .
|
|
||||||
' height: ' . $additional_height . 'px !important;' . "\n" .
|
|
||||||
' max-width: 100% !important;' . "\n" .
|
|
||||||
' max-height: 100% !important;' . "\n" .
|
|
||||||
' object-fit: contain !important;' . "\n" .
|
|
||||||
'}' . "\n" .
|
|
||||||
'.product-thumb .image img[src*=".svg"], .product-thumb .image img[src*=".SVG"], .img-responsive[src*=".svg"], .img-responsive[src*=".SVG"] {' . "\n" .
|
|
||||||
' max-width: 100% !important;' . "\n" .
|
|
||||||
' max-height: 100% !important;' . "\n" .
|
|
||||||
' object-fit: contain !important;' . "\n" .
|
|
||||||
'}' . "\n" .
|
|
||||||
'</style>';
|
|
||||||
$output = str_ireplace('</head>', $svg_style . '</head>', $output);
|
|
||||||
|
|
||||||
if ($webp_on_fly || $lazy_load || $broken_fallback) {
|
|
||||||
$registry->get('load')->model('tool/image');
|
|
||||||
$model_tool_image = $registry->get('model_tool_image');
|
|
||||||
|
|
||||||
$output = preg_replace_callback('/<img\b([^>]*)>/is', function($matches) use ($config, $registry, $model_tool_image, $webp_on_fly, $lazy_load, $broken_fallback, $fallback_image) {
|
|
||||||
$attrs_str = $matches[1];
|
|
||||||
if (stripos($attrs_str, 'catalog_trash') !== false) {
|
|
||||||
return $matches[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
preg_match_all('/(\b[\w\-:]+)\s*=\s*(?:"([^"]*)"|\'([^\']*)\'|([^\s>]+))/is', $attrs_str, $attr_matches, PREG_SET_ORDER);
|
|
||||||
$attrs = array();
|
|
||||||
foreach ($attr_matches as $am) {
|
|
||||||
$name = strtolower($am[1]);
|
|
||||||
$val = ($am[2] !== '') ? $am[2] : (($am[3] !== '') ? $am[3] : $am[4]);
|
|
||||||
$attrs[$name] = $val;
|
|
||||||
}
|
|
||||||
|
|
||||||
$src = isset($attrs['src']) ? $attrs['src'] : '';
|
|
||||||
$data_src = isset($attrs['data-src']) ? $attrs['data-src'] : '';
|
|
||||||
$has_datasrc = ($data_src !== '');
|
|
||||||
|
|
||||||
$target_url = $has_datasrc ? $data_src : $src;
|
|
||||||
$rel_path = '';
|
|
||||||
if (preg_match('/\\/image\\/(.*\\.(?:jpg|jpeg|png|webp|svg))/is', $target_url, $m_rel)) {
|
|
||||||
$rel_path = urldecode($m_rel[1]);
|
|
||||||
} elseif (preg_match('/^image\\/(.*\\.(?:jpg|jpeg|png|webp|svg))/is', $target_url, $m_rel)) {
|
|
||||||
$rel_path = urldecode($m_rel[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$clean_rel_path = preg_replace('/\\?.*/', '', $rel_path);
|
|
||||||
$browser_supports_webp = isset($_SERVER['HTTP_ACCEPT']) && (strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') !== false);
|
|
||||||
|
|
||||||
if ($webp_on_fly && $browser_supports_webp && $clean_rel_path) {
|
|
||||||
$ext = strtolower(substr(strrchr($clean_rel_path, '.'), 1));
|
|
||||||
if (in_array($ext, array('jpg', 'jpeg', 'png'))) {
|
|
||||||
$phys_source = DIR_IMAGE . $clean_rel_path;
|
|
||||||
$phys_webp = DIR_IMAGE . preg_replace('/\\.(jpg|jpeg|png)$/i', '.webp', $clean_rel_path);
|
|
||||||
if (file_exists($phys_source)) {
|
|
||||||
if (!file_exists($phys_webp)) {
|
|
||||||
$img_data = @file_get_contents($phys_source);
|
|
||||||
if ($img_data) {
|
|
||||||
$im = @imagecreatefromstring($img_data);
|
|
||||||
if ($im) {
|
|
||||||
$webp_quality = (int)$config->get('module_img_opti_webp_quality');
|
|
||||||
if ($webp_quality <= 0 || $webp_quality > 100) {
|
|
||||||
$webp_quality = 80;
|
|
||||||
}
|
|
||||||
@imagewebp($im, $phys_webp, $webp_quality);
|
|
||||||
@imagedestroy($im);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (file_exists($phys_webp)) {
|
|
||||||
if (isset($attrs['src'])) {
|
|
||||||
$attrs['src'] = preg_replace('/\\.(jpg|jpeg|png)(\\?|$)/i', '.webp$2', $attrs['src']);
|
|
||||||
}
|
|
||||||
if (isset($attrs['data-src'])) {
|
|
||||||
$attrs['data-src'] = preg_replace('/\\.(jpg|jpeg|png)(\\?|$)/i', '.webp$2', $attrs['data-src']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($webp_on_fly && $browser_supports_webp) {
|
|
||||||
foreach (array('srcset', 'data-srcset') as $srcset_attr) {
|
|
||||||
if (isset($attrs[$srcset_attr])) {
|
|
||||||
$parts = explode(',', $attrs[$srcset_attr]);
|
|
||||||
foreach ($parts as &$part) {
|
|
||||||
$part = trim($part);
|
|
||||||
$subparts = preg_split('/\\s+/', $part);
|
|
||||||
if (!empty($subparts[0])) {
|
|
||||||
$s_url = $subparts[0];
|
|
||||||
$s_rel = '';
|
|
||||||
if (preg_match('/\\/image\\/(.*\\.(?:jpg|jpeg|png|webp|svg))/is', $s_url, $sm_rel)) {
|
|
||||||
$s_rel = urldecode($sm_rel[1]);
|
|
||||||
} elseif (preg_match('/^image\\/(.*\\.(?:jpg|jpeg|png|webp|svg))/is', $s_url, $sm_rel)) {
|
|
||||||
$s_rel = urldecode($sm_rel[1]);
|
|
||||||
}
|
|
||||||
$s_clean = preg_replace('/\\?.*/', '', $s_rel);
|
|
||||||
if ($s_clean) {
|
|
||||||
$s_ext = strtolower(substr(strrchr($s_clean, '.'), 1));
|
|
||||||
if (in_array($s_ext, array('jpg', 'jpeg', 'png'))) {
|
|
||||||
$s_phys_source = DIR_IMAGE . $s_clean;
|
|
||||||
$s_phys_webp = DIR_IMAGE . preg_replace('/\\.(jpg|jpeg|png)$/i', '.webp', $s_clean);
|
|
||||||
if (file_exists($s_phys_source)) {
|
|
||||||
if (!file_exists($s_phys_webp)) {
|
|
||||||
$img_data = @file_get_contents($s_phys_source);
|
|
||||||
if ($img_data) {
|
|
||||||
$im = @imagecreatefromstring($img_data);
|
|
||||||
if ($im) {
|
|
||||||
$webp_quality = (int)$config->get('module_img_opti_webp_quality');
|
|
||||||
if ($webp_quality <= 0 || $webp_quality > 100) {
|
|
||||||
$webp_quality = 80;
|
|
||||||
}
|
|
||||||
@imagewebp($im, $s_phys_webp, $webp_quality);
|
|
||||||
@imagedestroy($im);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (file_exists($s_phys_webp)) {
|
|
||||||
$subparts[0] = preg_replace('/\\.(jpg|jpeg|png)(\\?|$)/i', '.webp$2', $s_url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$part = implode(' ', $subparts);
|
|
||||||
}
|
|
||||||
$attrs[$srcset_attr] = implode(', ', $parts);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$is_svg = (strtolower(substr(strrchr($clean_rel_path, '.'), 1)) === 'svg');
|
|
||||||
|
|
||||||
if ($lazy_load && $clean_rel_path && is_file(DIR_IMAGE . $clean_rel_path) && !$is_svg) {
|
|
||||||
try {
|
|
||||||
$tiny_thumb = $model_tool_image->resize($clean_rel_path, 20, 20);
|
|
||||||
if ($has_datasrc) {
|
|
||||||
$attrs['src'] = $tiny_thumb;
|
|
||||||
} else {
|
|
||||||
$attrs['data-src'] = isset($attrs['src']) ? $attrs['src'] : '';
|
|
||||||
$attrs['src'] = $tiny_thumb;
|
|
||||||
}
|
|
||||||
if (isset($attrs['srcset'])) {
|
|
||||||
$attrs['data-srcset'] = $attrs['srcset'];
|
|
||||||
unset($attrs['srcset']);
|
|
||||||
}
|
|
||||||
$class = isset($attrs['class']) ? $attrs['class'] . ' img-lazyload' : 'img-lazyload';
|
|
||||||
$attrs['class'] = $class;
|
|
||||||
|
|
||||||
$style = 'filter: blur(10px); transition: filter 0.3s;';
|
|
||||||
if (isset($attrs['style'])) {
|
|
||||||
$attrs['style'] = rtrim(trim($attrs['style']), ';') . '; ' . $style;
|
|
||||||
} else {
|
|
||||||
$attrs['style'] = $style;
|
|
||||||
}
|
|
||||||
} catch (Exception $e) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($broken_fallback) {
|
|
||||||
$fallback_url = '';
|
|
||||||
$req_obj = $registry->get('request');
|
|
||||||
$is_https = isset($req_obj->server['HTTPS']) && ($req_obj->server['HTTPS'] == 'on' || $req_obj->server['HTTPS'] == '1');
|
|
||||||
$server_url = $is_https ? $config->get('config_ssl') : $config->get('config_url');
|
|
||||||
if ($fallback_image && is_file(DIR_IMAGE . $fallback_image)) {
|
|
||||||
$fallback_url = $server_url . 'image/' . $fallback_image;
|
|
||||||
} elseif ($config->get('config_logo') && is_file(DIR_IMAGE . $config->get('config_logo'))) {
|
|
||||||
$fallback_url = $server_url . 'image/' . $config->get('config_logo');
|
|
||||||
} else {
|
|
||||||
$fallback_url = $server_url . 'image/no_image.png';
|
|
||||||
}
|
|
||||||
if ($fallback_url) {
|
|
||||||
$attrs['onerror'] = "this.src='" . $fallback_url . "'; this.srcset=''; this.onerror=null;";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$new_attrs = array();
|
|
||||||
foreach ($attrs as $k => $v) {
|
|
||||||
$new_attrs[] = $k . '="' . htmlspecialchars($v, ENT_QUOTES, 'UTF-8') . '"';
|
|
||||||
}
|
|
||||||
return '<img ' . implode(' ', $new_attrs) . '>';
|
|
||||||
}, $output);
|
|
||||||
|
|
||||||
if ($lazy_load) {
|
|
||||||
$lazy_script = '<style>img.img-lazyload-loaded { filter: blur(0) !important; }</style>
|
|
||||||
<script>
|
|
||||||
document.addEventListener("DOMContentLoaded", function() {
|
|
||||||
var lazyImages = [].slice.call(document.querySelectorAll("img.img-lazyload"));
|
|
||||||
if ("IntersectionObserver" in window) {
|
|
||||||
var lazyImageObserver = new IntersectionObserver(function(entries, observer) {
|
|
||||||
entries.forEach(function(entry) {
|
|
||||||
if (entry.isIntersecting) {
|
|
||||||
var lazyImage = entry.target;
|
|
||||||
if (lazyImage.dataset.src) {
|
|
||||||
lazyImage.src = lazyImage.dataset.src;
|
|
||||||
}
|
|
||||||
if (lazyImage.dataset.srcset) {
|
|
||||||
lazyImage.srcset = lazyImage.dataset.srcset;
|
|
||||||
}
|
|
||||||
lazyImage.addEventListener("load", function() {
|
|
||||||
lazyImage.classList.remove("img-lazyload");
|
|
||||||
lazyImage.classList.add("img-lazyload-loaded");
|
|
||||||
});
|
|
||||||
lazyImageObserver.unobserve(lazyImage);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
lazyImages.forEach(function(lazyImage) {
|
|
||||||
lazyImageObserver.observe(lazyImage);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
lazyImages.forEach(function(lazyImage) {
|
|
||||||
if (lazyImage.dataset.src) {
|
|
||||||
lazyImage.src = lazyImage.dataset.src;
|
|
||||||
}
|
|
||||||
if (lazyImage.dataset.srcset) {
|
|
||||||
lazyImage.srcset = lazyImage.dataset.srcset;
|
|
||||||
}
|
|
||||||
lazyImage.style.filter = "none";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>';
|
|
||||||
$output = str_ireplace('</body>', $lazy_script, $output);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$this->output = $output;
|
|
||||||
echo $this->output;
|
|
||||||
]]></add>
|
|
||||||
</operation>
|
|
||||||
<operation error="skip">
|
|
||||||
<search><![CDATA[echo $output;]]></search>
|
<search><![CDATA[echo $output;]]></search>
|
||||||
<add position="replace"><![CDATA[
|
<add position="before"><![CDATA[
|
||||||
$registry = isset($GLOBALS['registry']) ? $GLOBALS['registry'] : null;
|
$registry = isset($GLOBALS['registry']) ? $GLOBALS['registry'] : null;
|
||||||
if ($registry && !defined('DIR_CATALOG')) {
|
if ($registry && !defined('DIR_CATALOG')) {
|
||||||
$config = $registry->get('config');
|
$config = $registry->get('config');
|
||||||
|
|
@ -577,6 +320,8 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||||
$lazy_load = $config->get('module_img_opti_lazy_load');
|
$lazy_load = $config->get('module_img_opti_lazy_load');
|
||||||
$broken_fallback = $config->get('module_img_opti_broken_fallback');
|
$broken_fallback = $config->get('module_img_opti_broken_fallback');
|
||||||
$fallback_image = $config->get('module_img_opti_fallback_image');
|
$fallback_image = $config->get('module_img_opti_fallback_image');
|
||||||
|
$support_svg = $config->get('module_img_opti_support_svg');
|
||||||
|
$support_svg_autofix = ($config->get('module_img_opti_support_svg_autofix') !== null) ? $config->get('module_img_opti_support_svg_autofix') : 1;
|
||||||
|
|
||||||
$theme = $config->get('config_theme');
|
$theme = $config->get('config_theme');
|
||||||
$additional_width = 0;
|
$additional_width = 0;
|
||||||
|
|
@ -606,8 +351,12 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||||
if (!$thumb_width) { $thumb_width = 228; }
|
if (!$thumb_width) { $thumb_width = 228; }
|
||||||
if (!$thumb_height) { $thumb_height = 228; }
|
if (!$thumb_height) { $thumb_height = 228; }
|
||||||
|
|
||||||
|
if ($support_svg && $support_svg_autofix) {
|
||||||
$svg_style = '<style>' . "\n" .
|
$svg_style = '<style>' . "\n" .
|
||||||
'img[src*=".svg"], img[src*=".SVG"] {' . "\n" .
|
'.product-thumb .image img[src*=".svg"], .product-thumb .image img[src*=".SVG"], ' . "\n" .
|
||||||
|
'.thumbnail img[src*=".svg"], .thumbnail img[src*=".SVG"], ' . "\n" .
|
||||||
|
'.image-additional img[src*=".svg"], .image-additional img[src*=".SVG"], ' . "\n" .
|
||||||
|
'img[src*="/image/catalog/"][src*=".svg"], img[src*="/image/catalog/"][src*=".SVG"] {' . "\n" .
|
||||||
' max-width: 100% !important;' . "\n" .
|
' max-width: 100% !important;' . "\n" .
|
||||||
' max-height: 100% !important;' . "\n" .
|
' max-height: 100% !important;' . "\n" .
|
||||||
' object-fit: contain !important;' . "\n" .
|
' object-fit: contain !important;' . "\n" .
|
||||||
|
|
@ -617,32 +366,86 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||||
' max-width: 100% !important;' . "\n" .
|
' max-width: 100% !important;' . "\n" .
|
||||||
' height: auto !important;' . "\n" .
|
' height: auto !important;' . "\n" .
|
||||||
'}' . "\n" .
|
'}' . "\n" .
|
||||||
'.thumbnails img[src*=".svg"], .thumbnails img[src*=".SVG"], .thumbnail img[src*=".svg"], .thumbnail img[src*=".SVG"] {' . "\n" .
|
'.thumbnails img[src*=".svg"], .thumbnails img[src*=".SVG"] {' . "\n" .
|
||||||
' max-width: 100% !important;' . "\n" .
|
' max-width: 100% !important;' . "\n" .
|
||||||
' max-height: 100% !important;' . "\n" .
|
' max-height: 100% !important;' . "\n" .
|
||||||
' width: ' . $thumb_width . 'px !important;' . "\n" .
|
' width: ' . $thumb_width . 'px !important;' . "\n" .
|
||||||
' height: ' . $thumb_height . 'px !important;' . "\n" .
|
' height: ' . $thumb_height . 'px !important;' . "\n" .
|
||||||
' object-fit: contain !important;' . "\n" .
|
' object-fit: contain !important;' . "\n" .
|
||||||
'}' . "\n" .
|
'}' . "\n" .
|
||||||
'.image-additional img[src*=".svg"], .image-additional img[src*=".SVG"] {' . "\n" .
|
'img[src*="catalog/language/"], img.lang, .language-select img, .pr-dropdown-box img {' . "\n" .
|
||||||
' width: ' . $additional_width . 'px !important;' . "\n" .
|
' max-width: none !important;' . "\n" .
|
||||||
' height: ' . $additional_height . 'px !important;' . "\n" .
|
' max-height: none !important;' . "\n" .
|
||||||
' max-width: 100% !important;' . "\n" .
|
' flex-shrink: 0 !important;' . "\n" .
|
||||||
' max-height: 100% !important;' . "\n" .
|
|
||||||
' object-fit: contain !important;' . "\n" .
|
|
||||||
'}' . "\n" .
|
'}' . "\n" .
|
||||||
'.product-thumb .image img[src*=".svg"], .product-thumb .image img[src*=".SVG"], .img-responsive[src*=".svg"], .img-responsive[src*=".SVG"] {' . "\n" .
|
'.pr-dropdown-button-check {' . "\n" .
|
||||||
' max-width: 100% !important;' . "\n" .
|
' flex-shrink: 0 !important;' . "\n" .
|
||||||
' max-height: 100% !important;' . "\n" .
|
|
||||||
' object-fit: contain !important;' . "\n" .
|
|
||||||
'}' . "\n" .
|
'}' . "\n" .
|
||||||
'</style>';
|
'</style>';
|
||||||
$output = str_ireplace('</head>', $svg_style . '</head>', $output);
|
$output = str_ireplace('</head>', $svg_style . '</head>', $output);
|
||||||
|
}
|
||||||
|
|
||||||
if ($webp_on_fly || $lazy_load || $broken_fallback) {
|
if ($webp_on_fly || $lazy_load || $broken_fallback) {
|
||||||
$registry->get('load')->model('tool/image');
|
$registry->get('load')->model('tool/image');
|
||||||
$model_tool_image = $registry->get('model_tool_image');
|
$model_tool_image = $registry->get('model_tool_image');
|
||||||
|
|
||||||
|
if ($webp_on_fly) {
|
||||||
|
$output = preg_replace_callback('/<a\b([^>]*)>/is', function($matches) use ($config, $registry, $model_tool_image, $webp_on_fly) {
|
||||||
|
$attrs_str = $matches[1];
|
||||||
|
preg_match_all('/(\b[\w\-:]+)\s*=\s*(?:"([^"]*)"|\'([^\']*)\'|([^\s>]+))/is', $attrs_str, $attr_matches, PREG_SET_ORDER);
|
||||||
|
$attrs = array();
|
||||||
|
foreach ($attr_matches as $am) {
|
||||||
|
$name = strtolower($am[1]);
|
||||||
|
$val = ($am[2] !== '') ? $am[2] : (($am[3] !== '') ? $am[3] : $am[4]);
|
||||||
|
$attrs[$name] = $val;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($attrs['href'])) {
|
||||||
|
$href = $attrs['href'];
|
||||||
|
$rel_path = '';
|
||||||
|
if (preg_match('/\\/image\\/(.*\\.(?:jpg|jpeg|png))/is', $href, $m_rel)) {
|
||||||
|
$rel_path = urldecode($m_rel[1]);
|
||||||
|
} elseif (preg_match('/^image\\/(.*\\.(?:jpg|jpeg|png))/is', $href, $m_rel)) {
|
||||||
|
$rel_path = urldecode($m_rel[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$clean_rel_path = preg_replace('/\\?.*/', '', $rel_path);
|
||||||
|
$browser_supports_webp = isset($_SERVER['HTTP_ACCEPT']) && (strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') !== false);
|
||||||
|
|
||||||
|
if ($browser_supports_webp && $clean_rel_path) {
|
||||||
|
$ext = strtolower(substr(strrchr($clean_rel_path, '.'), 1));
|
||||||
|
$phys_source = DIR_IMAGE . $clean_rel_path;
|
||||||
|
$phys_webp = DIR_IMAGE . preg_replace('/\\.(jpg|jpeg|png)$/i', '.webp', $clean_rel_path);
|
||||||
|
if (file_exists($phys_source)) {
|
||||||
|
if (!file_exists($phys_webp)) {
|
||||||
|
$img_data = @file_get_contents($phys_source);
|
||||||
|
if ($img_data) {
|
||||||
|
$im = @imagecreatefromstring($img_data);
|
||||||
|
if ($im) {
|
||||||
|
$webp_quality = (int)$config->get('module_img_opti_webp_quality');
|
||||||
|
if ($webp_quality <= 0 || $webp_quality > 100) {
|
||||||
|
$webp_quality = 80;
|
||||||
|
}
|
||||||
|
@imagewebp($im, $phys_webp, $webp_quality);
|
||||||
|
@imagedestroy($im);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (file_exists($phys_webp)) {
|
||||||
|
$attrs['href'] = preg_replace('/\\.(jpg|jpeg|png)(\\?|$)/i', '.webp$2', $attrs['href']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$new_attrs = array();
|
||||||
|
foreach ($attrs as $k => $v) {
|
||||||
|
$new_attrs[] = $k . '="' . htmlspecialchars($v, ENT_QUOTES, 'UTF-8') . '"';
|
||||||
|
}
|
||||||
|
return '<a ' . implode(' ', $new_attrs) . '>';
|
||||||
|
}, $output);
|
||||||
|
}
|
||||||
|
|
||||||
$output = preg_replace_callback('/<img\b([^>]*)>/is', function($matches) use ($config, $registry, $model_tool_image, $webp_on_fly, $lazy_load, $broken_fallback, $fallback_image) {
|
$output = preg_replace_callback('/<img\b([^>]*)>/is', function($matches) use ($config, $registry, $model_tool_image, $webp_on_fly, $lazy_load, $broken_fallback, $fallback_image) {
|
||||||
$attrs_str = $matches[1];
|
$attrs_str = $matches[1];
|
||||||
if (stripos($attrs_str, 'catalog_trash') !== false) {
|
if (stripos($attrs_str, 'catalog_trash') !== false) {
|
||||||
|
|
@ -851,57 +654,63 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo $output;
|
|
||||||
]]></add>
|
]]></add>
|
||||||
</operation>
|
</operation>
|
||||||
</file>
|
</file>
|
||||||
|
|
||||||
<file path="catalog/controller/product/product.php">
|
<file path="catalog/controller/product/product.php">
|
||||||
<operation error="skip">
|
<operation error="skip">
|
||||||
<search><![CDATA[if ($product_info['image']) {]]></search>
|
<search><![CDATA[if ($product_info['image']) {
|
||||||
<add position="before"><![CDATA[
|
$data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height'));
|
||||||
if (!$product_info['image'] && $this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_broken_fallback') && $this->config->get('module_img_opti_fallback_image')) {
|
} else {
|
||||||
$product_info['image'] = $this->config->get('module_img_opti_fallback_image');
|
$data['popup'] = '';
|
||||||
|
}]]></search>
|
||||||
|
<add position="replace"><![CDATA[
|
||||||
|
if ($product_info['image'] || ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_broken_fallback') && $this->config->get('module_img_opti_fallback_image'))) {
|
||||||
|
$data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height'));
|
||||||
|
} else {
|
||||||
|
$data['popup'] = '';
|
||||||
|
}
|
||||||
|
]]></add>
|
||||||
|
</operation>
|
||||||
|
<operation error="skip">
|
||||||
|
<search><![CDATA[if ($product_info['image']) {
|
||||||
|
$data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_thumb_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_thumb_height'));
|
||||||
|
} else {
|
||||||
|
$data['thumb'] = '';
|
||||||
|
}]]></search>
|
||||||
|
<add position="replace"><![CDATA[
|
||||||
|
if ($product_info['image'] || ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_broken_fallback') && $this->config->get('module_img_opti_fallback_image'))) {
|
||||||
|
$data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_thumb_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_thumb_height'));
|
||||||
|
} else {
|
||||||
|
$data['thumb'] = '';
|
||||||
}
|
}
|
||||||
]]></add>
|
]]></add>
|
||||||
</operation>
|
</operation>
|
||||||
</file>
|
</file>
|
||||||
|
|
||||||
<!-- Inject sidebar menu item on OC 2.0/2.1 (menu.php / menu.tpl) -->
|
<file path="system/framework.php">
|
||||||
<file path="admin/controller/common/menu.php">
|
|
||||||
<operation error="skip">
|
<operation error="skip">
|
||||||
<search><![CDATA[$data['module'] = $this->url->link('extension/module']]></search>
|
<search><![CDATA[$registry = new Registry();]]></search>
|
||||||
<add position="before"><![CDATA[
|
|
||||||
$this->load->model('setting/setting');
|
|
||||||
if ($this->config->get('module_img_opti_status')) {
|
|
||||||
$nat_pos = $this->config->get('module_img_opti_menu_position');
|
|
||||||
if ($nat_pos == 'sidebar' || $nat_pos == 'both') {
|
|
||||||
if ($this->user->hasPermission('access', 'module/img_opti')) {
|
|
||||||
$data['module_img_opti'] = $this->url->link('module/img_opti', 'token=' . $this->session->data['token'], 'SSL');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]]></add>
|
|
||||||
</operation>
|
|
||||||
</file>
|
|
||||||
|
|
||||||
<file path="admin/view/template/common/menu.tpl">
|
|
||||||
<operation error="skip">
|
|
||||||
<search><![CDATA[<li><a href="<?php echo $module; ?>"><?php echo $text_module; ?></a></li>]]></search>
|
|
||||||
<add position="after"><![CDATA[
|
<add position="after"><![CDATA[
|
||||||
<?php if (isset($module_img_opti)) { ?>
|
$GLOBALS['registry'] = $registry;
|
||||||
<li><a href="<?php echo $module_img_opti; ?>">Image Optimizer</a></li>
|
|
||||||
<?php } ?>
|
|
||||||
]]></add>
|
]]></add>
|
||||||
</operation>
|
</operation>
|
||||||
</file>
|
</file>
|
||||||
|
<file path="system/library/sitecreator/trueFileManager/ControllerCommonTrueFileManager.php">
|
||||||
<file path="system/library/sitecreator/trueFileManager/ControllerCommonTrueFileManager.php|admin/controller/common/truefilemanager.php" error="skip">
|
<operation error="skip">
|
||||||
<operation>
|
<search><![CDATA['uploadAllow' => array('image/jpeg', 'image/png','image/webp', 'image/gif', 'image/svg+xml',]]></search>
|
||||||
<search><![CDATA['image/pjpeg', 'image/x-png'),]]></search>
|
<add position="replace" offset="2"><![CDATA['uploadAllow' => ($this->config->get('module_img_opti_status') && $this->config->get('module_img_opti_support_webp')) ? array('image/jpeg', 'image/png', 'image/webp', 'image/gif', 'image/svg+xml', 'image/pjpeg', 'image/x-png') : array('image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/pjpeg', 'image/x-png'),]]></add>
|
||||||
<add position="replace"><![CDATA['image/pjpeg', 'image/x-png', ($this->config->get('module_img_opti_truefilemanager_webp') || $this->config->get('img_opti_truefilemanager_webp')) ? 'image/webp' : ''),]]></add>
|
</operation>
|
||||||
|
</file>
|
||||||
|
<file path="system/library/sitecreator/elFinder/php/elFinderVolumeDriver.class.php">
|
||||||
|
<operation error="skip">
|
||||||
|
<search><![CDATA['image/vnd.adobe.photoshop' => 'psd']]></search>
|
||||||
|
<add position="after"><![CDATA[,
|
||||||
|
'image/webp' => 'webp',
|
||||||
|
'image/vnd.webp' => 'webp',
|
||||||
|
'image/x-webp' => 'webp']]></add>
|
||||||
</operation>
|
</operation>
|
||||||
</file>
|
</file>
|
||||||
|
|
||||||
</modification>
|
</modification>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ class ControllerModuleImgOpti extends Controller {
|
||||||
'module_img_opti_wm_status',
|
'module_img_opti_wm_status',
|
||||||
'module_img_opti_ph_status',
|
'module_img_opti_ph_status',
|
||||||
'module_img_opti_support_svg',
|
'module_img_opti_support_svg',
|
||||||
|
'module_img_opti_support_svg_autofix',
|
||||||
'module_img_opti_support_webp',
|
'module_img_opti_support_webp',
|
||||||
'module_img_opti_webp_on_fly',
|
'module_img_opti_webp_on_fly',
|
||||||
'module_img_opti_lazy_load',
|
'module_img_opti_lazy_load',
|
||||||
|
|
@ -111,6 +112,7 @@ class ControllerModuleImgOpti extends Controller {
|
||||||
'module_img_opti_token' => '',
|
'module_img_opti_token' => '',
|
||||||
'module_img_opti_engine' => 'gd',
|
'module_img_opti_engine' => 'gd',
|
||||||
'module_img_opti_support_svg' => 0,
|
'module_img_opti_support_svg' => 0,
|
||||||
|
'module_img_opti_support_svg_autofix' => 1,
|
||||||
'module_img_opti_support_webp' => 0,
|
'module_img_opti_support_webp' => 0,
|
||||||
'module_img_opti_cron_new_only' => 1,
|
'module_img_opti_cron_new_only' => 1,
|
||||||
'module_img_opti_cron_folder_mode' => 'exclude',
|
'module_img_opti_cron_folder_mode' => 'exclude',
|
||||||
|
|
@ -2628,6 +2630,7 @@ class ControllerModuleImgOpti extends Controller {
|
||||||
'module_img_opti_max_height',
|
'module_img_opti_max_height',
|
||||||
'module_img_opti_convert_webp',
|
'module_img_opti_convert_webp',
|
||||||
'module_img_opti_support_svg',
|
'module_img_opti_support_svg',
|
||||||
|
'module_img_opti_support_svg_autofix',
|
||||||
'module_img_opti_support_webp',
|
'module_img_opti_support_webp',
|
||||||
'module_img_opti_webp_on_fly',
|
'module_img_opti_webp_on_fly',
|
||||||
'module_img_opti_lazy_load',
|
'module_img_opti_lazy_load',
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,608 @@
|
||||||
|
<?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_svg_autofix'] = 'Auto-fix SVG CSS Styles';
|
||||||
|
$_['help_support_svg_autofix'] = 'Applies isolated CSS sizing to catalog SVG product images without affecting language flags or theme icons.';
|
||||||
|
$_['entry_support_webp'] = 'WebP Upload Support (+ TrueFileManager)';
|
||||||
|
$_['help_support_webp'] = 'Allows uploading, selecting, and browsing WebP images via standard FileManager and TrueFileManager (elFinder).';
|
||||||
|
$_['entry_truefilemanager_webp'] = 'WebP in TrueFileManager';
|
||||||
|
$_['help_truefilemanager_webp'] = 'Adds WebP upload, preview, and thumbnail support to sitecreator\'s TrueFileManager (if installed).';
|
||||||
|
$_['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!';
|
||||||
|
$_['entry_auto_fake_jpg_guard'] = 'Fake JPG Guard (On-the-Fly Protection)';
|
||||||
|
$_['help_auto_fake_jpg_guard'] = 'Automatically detects uploaded/imported PNG files wrongly masked with a .jpg extension (which cause solid black backgrounds on storefront) and fixes them on-the-fly upon first access.';
|
||||||
|
$_['entry_fake_jpg_mode'] = 'Fake JPG Correction Mode:';
|
||||||
|
$_['text_fake_jpg_mode_jpg'] = 'Convert to clean JPG with White BG (#FFFFFF) [Recommended]';
|
||||||
|
$_['text_fake_jpg_mode_png'] = 'Save as real PNG (keep transparency + update DB links)';
|
||||||
|
$_['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.';
|
||||||
|
$_['error_wm_too_large'] = 'Watermark image is too large (%dx%d px)! Maximum allowed size is %dx%d px.';
|
||||||
|
$_['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 stored in site DB (accumulates Optimization, Cleaner, Tools & Cron)';
|
||||||
|
$_['text_reset_stats'] = 'Reset statistics';
|
||||||
|
$_['text_reset_stats_confirm']= 'Are you sure you want to reset all optimization statistics in DB?';
|
||||||
|
$_['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:';
|
||||||
|
$_['entry_cron_batch_limit'] = 'Batch limit per Cron run (files)';
|
||||||
|
$_['help_cron_batch_limit'] = 'Maximum number of files processed per single Cron run. Default is 100. Recommended 50 to 300 to prevent server execution timeouts.';
|
||||||
|
|
||||||
|
$_['text_license_required'] = 'License Key Required';
|
||||||
|
$_['text_license_required_desc'] = 'Please enter your license key to activate the module. All configuration and optimization features are locked until a valid key is provided.';
|
||||||
|
$_['entry_token_desc'] = 'Enter the activation token issued for your root domain. You can obtain it from your purchase page or by contacting support.';
|
||||||
|
$_['button_activate'] = 'Activate Module';
|
||||||
|
$_['text_support'] = 'Technical Support';
|
||||||
|
$_['text_support_desc'] = 'If you don\'t have a key yet, or face issues, please provide your order ID and domain name.';
|
||||||
|
|
||||||
|
$_['entry_wm_max_width'] = 'Watermark Max Width (px)';
|
||||||
|
$_['entry_wm_max_height'] = 'Watermark Max Height (px)';
|
||||||
|
$_['help_wm_max_width'] = 'If the source watermark image exceeds this width, it will be automatically scaled down. Set 0 or leave empty for default 800px.';
|
||||||
|
$_['help_wm_max_height'] = 'If the source watermark image exceeds this height, it will be automatically scaled down. Set 0 or leave empty for default 800px.';
|
||||||
|
$_['entry_disk_status'] = 'Enable Disk Space Scan & Graph';
|
||||||
|
$_['help_disk_status'] = 'If enabled, the module will periodically scan the image folder size and display a pie chart. Disable this on large sites to improve settings page load speed.';
|
||||||
|
$_['text_disk_settings_title'] = 'Disk Limits & Scanning Settings';
|
||||||
|
|
||||||
|
$_['text_tool_svg_security'] = 'SVG Security Sanitizer (XSS/XXE Protection)';
|
||||||
|
$_['help_tool_svg_security'] = 'Scans SVG vector images in image/catalog/ for dangerous code (scripts, event handlers, XXE entity declarations, foreignObjects, javascript: URIs) and cleans them.';
|
||||||
|
$_['text_description_svg_security'] = 'SVG Security Sanitizer inspects all SVG files in catalog directories for security vulnerabilities. Cleaning removes malicious scripts and entities while preserving visual SVG artwork.';
|
||||||
|
$_['text_svg_threats_found'] = '%d security threats found';
|
||||||
|
$_['text_svg_threat_xxe_entity'] = 'XXE Entity Attack';
|
||||||
|
$_['text_svg_threat_script_tag'] = 'Script Tag (<script>)';
|
||||||
|
$_['text_svg_threat_event_handler'] = 'Inline Event Handler (on*)';
|
||||||
|
$_['text_svg_threat_javascript_uri']= 'JavaScript URI (javascript:)';
|
||||||
|
$_['text_svg_threat_foreign_object']= 'Foreign Object (<foreignObject>)';
|
||||||
|
$_['text_svg_threat_embed_object'] = 'Embedded Object (<object>/<iframe>)';
|
||||||
|
$_['text_svg_threat_css_injection'] = 'CSS Code Injection';
|
||||||
|
$_['text_svg_clean_success'] = 'Sanitized & Safe';
|
||||||
|
|
||||||
|
$_['text_tool_black_bg'] = 'Black Background & Fake JPG Fixer';
|
||||||
|
$_['help_tool_black_bg'] = 'Detects PNG images masquerading with .jpg extension (from auto-imports) and images with solid black background/borders. Replaces black background with clean white (#FFFFFF).';
|
||||||
|
$_['text_description_black_bg'] = 'Black Background & Fake JPG Fixer scans catalog photos for black background artifacts caused by broken PNG-to-JPG imports or background cutouts. Applying fix converts fake JPGs and replaces black border fill with white.';
|
||||||
|
$_['entry_bb_darkness'] = 'Darkness Threshold (0-100)';
|
||||||
|
$_['entry_bb_threshold'] = 'Perimeter Black Pixels (%)';
|
||||||
|
$_['entry_bb_limit'] = 'Scan Limit (files)';
|
||||||
|
$_['entry_bb_scan_fake'] = 'Scan for Fake JPG (PNG in .jpg)';
|
||||||
|
$_['entry_bb_scan_black'] = 'Scan for Black Background';
|
||||||
|
$_['text_bb_fake_jpg'] = 'Fake JPG (PNG binary in .jpg file)';
|
||||||
|
$_['text_bb_black_bg'] = 'Black Background Detected';
|
||||||
|
$_['text_bb_fix_flatten_white'] = 'Convert to JPG (white background)';
|
||||||
|
$_['text_bb_fix_convert_png'] = 'Save as PNG (keep transparency)';
|
||||||
|
$_['text_bb_fix_white'] = 'Replace black background (GD: edges only)';
|
||||||
|
$_['text_bb_fix_white_all'] = 'Replace ALL black pixels (GD: aggressive)';
|
||||||
|
$_['text_bb_fix_white_smooth'] = 'Replace ALL black pixels (GD: Defringe + Smooth)';
|
||||||
|
$_['text_bb_fix_white_imagick'] = 'Replace black background (Imagick: edges only)';
|
||||||
|
$_['text_bb_fix_white_all_imagick'] = 'Replace ALL black pixels (Imagick: Fuzzy Lab)';
|
||||||
|
$_['text_bb_fix_white_smooth_imagick'] = 'Replace ALL black pixels (Imagick: Defringe + Smooth)';
|
||||||
|
$_['text_bb_type_fake'] = 'Fake JPG Import';
|
||||||
|
$_['text_bb_type_black'] = 'Black Background';
|
||||||
|
|
||||||
|
$_['button_online_instruction'] = 'Module Documentation (Online)';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,610 @@
|
||||||
|
<?php
|
||||||
|
$_['heading_title_raw'] = 'Image Optimizer [NAT]: Сжатие оригиналов и удаление мусора';
|
||||||
|
$_['heading_title'] = '<b>Image Optimizer [NAT]:</b> Сжатие оригиналов и удаление мусора';
|
||||||
|
$_['text_extension'] = 'Расширения';
|
||||||
|
$_['text_edit'] = 'Настройки модуля';
|
||||||
|
$_['text_success'] = 'Настройки успешно сохранены!';
|
||||||
|
$_['entry_warning'] = 'ВНИМАНИЕ: Обязательно сделайте бэкап файлов сайта и особенно папки /image/catalog перед началом работы!';
|
||||||
|
$_['text_tech'] = 'Проверка технологий сервера:';
|
||||||
|
$_['text_author'] = 'Техническая поддержка и пожелания: <a href="mailto:info@nat.od.ua">info@nat.od.ua</a>';
|
||||||
|
$_['tab_optimize'] = 'Оптимизация и Ресайз';
|
||||||
|
$_['tab_cleaner'] = 'Очистка неиспользуемых изображений';
|
||||||
|
$_['tab_info'] = 'Инфо / Экосистема [NAT]';
|
||||||
|
$_['tab_settings'] = 'Настройки';
|
||||||
|
$_['tab_tools'] = 'Инструменты (pro)';
|
||||||
|
$_['tab_cron'] = 'Крон-задачи';
|
||||||
|
$_['entry_mode'] = 'Режим работы';
|
||||||
|
$_['text_copy'] = 'Создать копию (безопасно)';
|
||||||
|
$_['text_replace'] = 'Заменять оригиналы (требует бэкап!)';
|
||||||
|
$_['entry_folder'] = 'Имя папки для копии';
|
||||||
|
$_['entry_batch'] = 'Файлов за проход';
|
||||||
|
$_['entry_log_limit'] = 'Строк лога на экране';
|
||||||
|
$_['entry_max_width'] = 'Макс. ширина (px) [0 - без лимита]';
|
||||||
|
$_['entry_max_height'] = 'Макс. высота (px) [0 - без лимита]';
|
||||||
|
$_['entry_jpg'] = 'Качество JPG (0-100)';
|
||||||
|
$_['entry_png'] = 'Сжатие PNG (0-9)';
|
||||||
|
$_['entry_webp'] = 'Качество WebP (0-100)';
|
||||||
|
$_['entry_targets'] = 'Что оптимизировать?';
|
||||||
|
$_['text_all_catalog'] = '[ Весь каталог image/catalog ]';
|
||||||
|
$_['text_root_files'] = 'Файлы только в корне image/catalog';
|
||||||
|
$_['entry_threshold'] = 'Порог замены (%)';
|
||||||
|
$_['help_threshold'] = '0: заменять только если вес стал меньше. 10: разрешить увеличение веса до 10%.';
|
||||||
|
$_['entry_token'] = 'Токен активации (на корень домена)';
|
||||||
|
$_['entry_status'] = 'Статус модуля';
|
||||||
|
$_['entry_menu_position'] = 'Позиция меню [NAT]';
|
||||||
|
$_['text_menu_module_only'] = 'Только в модулях';
|
||||||
|
$_['text_menu_header'] = 'В шапке (Header)';
|
||||||
|
$_['text_menu_sidebar'] = 'В боковом меню (Sidebar)';
|
||||||
|
$_['text_menu_both'] = 'Везде (Шапка + Сайдбар)';
|
||||||
|
$_['text_status_on'] = 'Включено';
|
||||||
|
$_['text_status_off'] = 'Отключено';
|
||||||
|
$_['entry_engine'] = 'Движок обработки изображений';
|
||||||
|
$_['text_engine_gd'] = 'GD (Стандарт)';
|
||||||
|
$_['text_engine_imagick'] = 'Imagick (Высокое качество, сохранение профилей sRGB)';
|
||||||
|
$_['entry_license'] = 'Лицензия';
|
||||||
|
$_['text_cleaner_info'] = 'Этот инструмент ищет файлы, которые физически существуют на диске, но нигде не используются в базе данных или файлах шаблона.';
|
||||||
|
$_['entry_clean_targets'] = 'В каких папках искать мусор?';
|
||||||
|
$_['entry_extended_log'] = 'Расширенный лог (показать используемые фото и где они найдены)';
|
||||||
|
$_['entry_process_broken'] = 'Учитывать файлы с битой кодировкой (имена с символом "?")';
|
||||||
|
$_['button_scan_trash'] = 'НАЙТИ МУСОР';
|
||||||
|
$_['button_quarantine'] = 'В Карантин (Безопасно)';
|
||||||
|
$_['button_delete_trash'] = 'Удалить навсегда';
|
||||||
|
$_['button_empty_quarantine'] = 'Очистить папку Карантина';
|
||||||
|
$_['button_restore_quarantine'] = 'Вернуть из Карантина';
|
||||||
|
$_['text_scan_result'] = 'Результаты сканирования';
|
||||||
|
$_['text_trash_files'] = 'Мусорных файлов: ';
|
||||||
|
$_['text_trash_size'] = 'Потенциально освободится: ';
|
||||||
|
$_['button_start'] = 'СТАРТ ОПТИМИЗАЦИИ';
|
||||||
|
$_['button_pause'] = 'ПАУЗА';
|
||||||
|
$_['button_stop'] = 'ОСТАНОВИТЬ';
|
||||||
|
$_['button_continue'] = 'ПРОДОЛЖИТЬ';
|
||||||
|
$_['button_start_new'] = 'СТАРТ (Новый запуск)';
|
||||||
|
$_['button_download_log'] = 'Скачать лог в TXT';
|
||||||
|
$_['button_download'] = 'Скачать';
|
||||||
|
$_['button_save'] = 'Сохранить';
|
||||||
|
$_['button_cancel'] = 'Отмена';
|
||||||
|
$_['text_progress'] = 'Прогресс:';
|
||||||
|
$_['text_old_size'] = 'Было:';
|
||||||
|
$_['text_new_size'] = 'Стало:';
|
||||||
|
$_['text_savings'] = 'Экономия:';
|
||||||
|
$_['text_detailed_log'] = 'Детальный лог';
|
||||||
|
$_['text_page'] = 'Стр.';
|
||||||
|
$_['text_waiting'] = 'Ожидание запуска...';
|
||||||
|
$_['text_enabled'] = 'Включено';
|
||||||
|
$_['text_disabled_error'] = 'Выключено (ОШИБКА)';
|
||||||
|
$_['text_supported'] = 'Поддерживается';
|
||||||
|
$_['text_no'] = 'Нет';
|
||||||
|
$_['error_permission'] = 'У вас нет прав для управления модулем!';
|
||||||
|
$_['error_license'] = 'Ошибка доступа: Неверный токен активации для этого домена!';
|
||||||
|
$_['error_domain'] = ' (Домен: ';
|
||||||
|
$_['text_found'] = 'Найдено файлов: ';
|
||||||
|
$_['text_compressed'] = 'Сжат';
|
||||||
|
$_['text_original'] = 'Оригинал';
|
||||||
|
$_['text_error_process'] = 'Ошибка обработки: ';
|
||||||
|
$_['error_log_empty'] = 'Лог пуст! Сначала запустите процесс.';
|
||||||
|
$_['text_report_header'] = '=== ОТЧЕТ ===';
|
||||||
|
$_['text_total_files'] = 'Всего файлов: ';
|
||||||
|
$_['text_searching'] = 'Поиск файлов...';
|
||||||
|
$_['error_ajax'] = 'Ошибка: ';
|
||||||
|
$_['text_resumed'] = '▶ ПРОЦЕСС ВОЗОБНОВЛЕН...';
|
||||||
|
$_['text_paused'] = '⏸ ПАУЗА. Процесс приостановлен.';
|
||||||
|
$_['confirm_stop'] = 'Вы уверены, что хотите полностью прервать процесс?';
|
||||||
|
$_['confirm_delete'] = 'ВНИМАНИЕ! Файлы будут удалены с сервера навсегда без возможности восстановления! Продолжить?';
|
||||||
|
$_['confirm_empty_q'] = 'Вы уверены, что хотите полностью очистить папку карантина?';
|
||||||
|
$_['confirm_restore'] = 'Все файлы из папки карантина будут возвращены на свои места. Продолжить?';
|
||||||
|
$_['button_stopping'] = 'Остановка...';
|
||||||
|
$_['text_stopped_user'] = '🛑 ПРОЦЕСС ПРЕРВАН ПОЛЬЗОВАТЕЛЕМ!';
|
||||||
|
$_['text_increase'] = 'Увеличение';
|
||||||
|
$_['text_done'] = '✅ ГОТОВО! Процесс завершен.';
|
||||||
|
$_['error_timeout'] = 'Таймаут сервера. Автоповтор через 3 секунды...';
|
||||||
|
$_['text_building_index'] = 'Шаг 1/2: Индексация БД и шаблонов (поиск используемых фото)...';
|
||||||
|
$_['text_comparing'] = 'Шаг 2/2: Сравнение физических файлов с индексом...';
|
||||||
|
$_['text_quarantine_done'] = '✅ Процесс переноса в image/catalog_trash/ завершен!';
|
||||||
|
$_['text_deleted_done'] = '✅ Процесс удаления мусора завершен!';
|
||||||
|
$_['text_quarantine_empty'] = '✅ Папка карантина успешно удалена с сервера!';
|
||||||
|
$_['text_restore_done'] = '✅ Файлы успешно возвращены из карантина в рабочую папку!';
|
||||||
|
$_['text_quarantine_move'] = 'В карантине: ';
|
||||||
|
$_['text_deleted_file'] = 'Удален: ';
|
||||||
|
$_['text_no_trash'] = 'В выбранных папках мусор не найден! Все файлы используются.';
|
||||||
|
$_['text_scanning_dirs'] = 'Сканируем директории: ';
|
||||||
|
$_['text_log_used'] = '[ИСПОЛЬЗУЕТСЯ]';
|
||||||
|
$_['text_log_trash'] = '[МУСОР]';
|
||||||
|
$_['text_log_deleted'] = '[УДАЛЕНО]';
|
||||||
|
$_['text_log_del_err'] = '[ОШИБКА УДАЛЕНИЯ]';
|
||||||
|
$_['text_log_quarantine'] = '[В КАРАНТИН]';
|
||||||
|
$_['text_log_q_err'] = '[ОШИБКА ПЕРЕНОСА]';
|
||||||
|
$_['text_log_restored'] = '[ВОССТАНОВЛЕНО]';
|
||||||
|
$_['text_log_rest_err'] = '[ОШИБКА ВОССТАНОВЛЕНИЯ]';
|
||||||
|
$_['text_used_in'] = 'в: ';
|
||||||
|
$_['text_analyzing'] = 'Анализ базы данных...';
|
||||||
|
$_['text_clean_empty'] = 'Чисто! Мусора нет.';
|
||||||
|
$_['text_processing'] = 'Обработка...';
|
||||||
|
$_['text_restoring'] = 'Восстановление файлов...';
|
||||||
|
$_['text_all_folders'] = 'image/catalog/ (И все вложенные)';
|
||||||
|
$_['text_root_folder'] = 'image/catalog/ (Только корень)';
|
||||||
|
$_['text_q_empty_err'] = 'Папка карантина пуста или не существует.';
|
||||||
|
$_['error_token'] = 'Неверный токен. Перезагрузите страницу.';
|
||||||
|
$_['text_apply_title'] = 'Оптимизация завершена в папку: ';
|
||||||
|
$_['text_apply_info'] = 'Проверьте результат. Если всё устраивает — примените изменения к основному каталогу.';
|
||||||
|
$_['entry_apply_backup'] = 'Перенести с созданием бэкапа (в Карантин)';
|
||||||
|
$_['entry_apply_replace'] = 'Заменить оригиналы безвозвратно';
|
||||||
|
$_['button_apply_main'] = 'ПРИМЕНИТЬ К ОСНОВНОМУ КАТАЛОГУ';
|
||||||
|
$_['button_delete_copies'] = 'Удалить временные копии (отмена)';
|
||||||
|
$_['button_full_cleanup'] = 'Полная очистка всех временных папок и бэкапов';
|
||||||
|
$_['text_apply_success'] = '✅ Файлы успешно перенесены. ';
|
||||||
|
$_['text_apply_backup_ok'] = 'Оригиналы сохранены в папку: ';
|
||||||
|
$_['text_apply_no_backup'] = 'Оригиналы удалены.';
|
||||||
|
$_['text_error_source'] = 'Ошибка: Папка с оптимизированными файлами не найдена.';
|
||||||
|
$_['confirm_full_cleanup'] = 'ВНИМАНИЕ! Это действие безвозвратно удалит ВСЕ папки бэкапов (backup_*) и временные папки с копиями. Продолжить?';
|
||||||
|
$_['text_tools_desc'] = 'Глобальные сканеры и инструменты для работы с файловой системой и БД изображений.';
|
||||||
|
$_['text_tool_select'] = 'Выберите инструмент:';
|
||||||
|
$_['text_group_scanners'] = 'Сканеры и Анализ';
|
||||||
|
$_['text_group_generators'] = 'Генераторы и Обработка';
|
||||||
|
$_['text_group_experimental'] = 'Экспериментальные функции (BETA)';
|
||||||
|
$_['text_experimental_warn'] = 'Внимание: Экспериментальные функции затрагивают системные файлы или базу данных. Настоятельно рекомендуется сделать бэкап!';
|
||||||
|
$_['text_tool_broken_db'] = 'Сканер битых/пустых фото БД';
|
||||||
|
$_['text_tool_watermark'] = 'Динамический Вотермарк (Только на кэш)';
|
||||||
|
$_['text_tool_duplicates'] = 'Поиск дубликатов файлов (по MD5)';
|
||||||
|
$_['text_tool_png_jpg'] = 'Конвертер тяжелых PNG в JPG (сканер файлов без прозрачности)';
|
||||||
|
$_['text_tool_placeholders'] = 'Генератор заглушек (Вместо No Image)';
|
||||||
|
$_['text_tool_exif'] = 'Очистка EXIF-данных (Геотеги/Мета)';
|
||||||
|
$_['text_tool_small_photos'] = 'Сканер слишком мелких фото';
|
||||||
|
$_['text_tool_html_broken'] = 'Поиск битых картинок в HTML (Описаниях)';
|
||||||
|
$_['text_tool_empty_folders'] = 'Очистка пустых папок (image/catalog)';
|
||||||
|
$_['text_tool_smart_cache'] = 'Умная очистка кэша изображений';
|
||||||
|
$_['text_tool_folder_tree'] = 'Дерево папок (Статистика веса)';
|
||||||
|
$_['text_tool_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load (Без БД)';
|
||||||
|
$_['text_tool_translit'] = 'Транслитерация названий файлов';
|
||||||
|
$_['text_tool_cache_restore'] = 'Воскрешение оригиналов из Кэша';
|
||||||
|
$_['entry_wm_type'] = 'Тип вотермарка';
|
||||||
|
$_['text_wm_image'] = 'Изображение (PNG)';
|
||||||
|
$_['text_wm_text'] = 'Текст';
|
||||||
|
$_['entry_wm_image_path'] = 'Путь к изображению';
|
||||||
|
$_['entry_wm_text_val'] = 'Текст вотермарка';
|
||||||
|
$_['entry_wm_position'] = 'Позиция (1-9)';
|
||||||
|
$_['entry_wm_opacity'] = 'Прозрачность (0-100)';
|
||||||
|
$_['entry_wm_category'] = 'Только для Категорий';
|
||||||
|
$_['entry_wm_brand'] = 'Только для Брендов';
|
||||||
|
$_['entry_min_width'] = 'Минимальная ширина (px)';
|
||||||
|
$_['entry_min_height'] = 'Минимальная высота (px)';
|
||||||
|
$_['entry_ph_product'] = 'Заглушка для Товаров';
|
||||||
|
$_['entry_ph_category'] = 'Заглушка для Категорий';
|
||||||
|
$_['entry_ph_brand'] = 'Заглушка для Брендов';
|
||||||
|
$_['button_run_tool'] = 'Запустить инструмент';
|
||||||
|
$_['button_scan_tool'] = 'Сканировать';
|
||||||
|
$_['button_fix_tool'] = 'Исправить найденное';
|
||||||
|
$_['text_th_path'] = 'Файл / Путь';
|
||||||
|
$_['text_th_size'] = 'Размер';
|
||||||
|
$_['text_th_action'] = 'Действие';
|
||||||
|
$_['text_th_status'] = 'Статус';
|
||||||
|
$_['text_th_problem'] = 'Проблема / Значение';
|
||||||
|
$_['text_cron_title'] = 'Настройка Cron';
|
||||||
|
$_['text_cron_desc'] = 'Добавьте команду в Cron хостинга для автоматического фонового сжатия.';
|
||||||
|
$_['entry_cron_new_only'] = 'Обрабатывать только новые (необработанные) файлы';
|
||||||
|
$_['entry_cron_folders'] = 'Папки для сканирования (оставьте пустым для всего каталога)';
|
||||||
|
$_['text_promo_title'] = 'Другие модули серии [NAT]';
|
||||||
|
$_['text_promo_desc'] = 'Модули серии [NAT] — это инструменты для глубокой оптимизации OpenCart. Мы фокусируемся на автоматизации рутины, ускорении базы данных и очистке серверов от мусора. Все модули имеют открытый исходный код и единую логику управления.';
|
||||||
|
$_['text_support'] = 'Техническая поддержка и пожелания:';
|
||||||
|
$_['button_more'] = 'Смотреть все модули на OpenCart.com';
|
||||||
|
$_['button_more_forum'] = 'Opencartforum';
|
||||||
|
$_['text_mod_cat_opt'] = 'Catalog Optimizer [NAT]';
|
||||||
|
$_['text_mod_cat_opt_desc'] = 'Скрытие пустых категорий и брендов + SEO сортировка товаров (в наличии сверху) + Очистка мусора БД.';
|
||||||
|
$_['text_mod_new_arrivals'] = 'New Arrivals [NAT]: Новинки по датам';
|
||||||
|
$_['text_mod_new_arrivals_desc'] = 'Автоматическая SEO-страница новинок. Отображает новинки строго по реальной дате добавления. Слайдеры, сетка и умный сайдбар архива дат.';
|
||||||
|
$_['text_mod_img_opt'] = 'Image Optimizer [NAT]';
|
||||||
|
$_['text_mod_img_opt_desc'] = '<strong>Текущий модуль.</strong> Сжатие и ресайз ОРИГИНАЛОВ фото (image/catalog) в WebP + Очистка хостинга от неиспользуемых изображений.';
|
||||||
|
$_['text_mod_dom_scan'] = 'Domain Scanner [NAT]';
|
||||||
|
$_['text_mod_dom_scan_desc'] = 'Поиск и чистка внешних ссылок и HTTP-картинок в БД и шаблонах (для переезда на HTTPS).';
|
||||||
|
$_['text_mod_poll'] = 'Poll Widget [NAT]';
|
||||||
|
$_['text_mod_poll_desc'] = 'Создание опросов и голосований с визуальным конструктором дизайна, глубокой статистикой и защитой от накруток.';
|
||||||
|
$_['text_mod_db_opt'] = 'Database Optimizer [NAT]';
|
||||||
|
$_['text_mod_db_opt_desc'] = 'Интеллектуальная очистка мусора в базе данных, управление системными логами и добавление критически важных индексов для ускорения.';
|
||||||
|
$_['text_mod_im_ex'] = 'Import/Export [NAT]';
|
||||||
|
$_['text_mod_im_ex_desc'] = 'Быстрый импорт/экспорт цен и остатков из файлов xls/xlsx/csv/xml/json или по ссылке. Маппинг полей, работа по Cron, текстовые функции.';
|
||||||
|
$_['text_mod_admin_tools'] = 'Admin Tools [NAT]';
|
||||||
|
$_['text_mod_admin_tools_desc'] = 'Удобные инструменты администратора: вход под клиентом, кастомизация админки, управление правами пользователей и скрытие ненужных пунктов меню.';
|
||||||
|
$_['text_mod_utm_tracker'] = 'Order UTM Tracker [NAT]';
|
||||||
|
$_['text_mod_utm_tracker_desc'] = 'Автоматическое отслеживание UTM-меток при оформлении заказа. Сохраняет источник перехода, кампанию, ключевые слова и выводит эти данные в заказе для аналитики рекламы.';
|
||||||
|
$_['text_info_title_promo_top_bar'] = 'Promo Top Bar [NAT]: Верхний рекламный инфо-баннер, информационная полоса над шапкой, бегущая строка и топ-баннер';
|
||||||
|
$_['text_info_desc_promo_top_bar'] = 'Создание интерактивных промо-панелей и слайд-шоу в шапке сайта с конструктором блоков, таймерами, формой подписки и гибким таргетингом.';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Молниеносная замена: автоматически меняет расширения .jpg/.png на .webp прямо в HTML-выводе витрины и добавляет атрибут loading="lazy". Не затрагивает базу данных!';
|
||||||
|
$_['entry_auto_fake_jpg_guard'] = 'Защита от фейковых JPG (On-the-Fly Guard)';
|
||||||
|
$_['help_auto_fake_jpg_guard'] = 'Автоматически выявляет при загрузке и импорте (1С, парсеры, CSV, FileManager) файлы PNG в маске .jpg, вызывающие чёрный фон на витрине, и исправляет их на лету при первом обращении.';
|
||||||
|
$_['entry_fake_jpg_mode'] = 'Режим исправления фейковых JPG:';
|
||||||
|
$_['text_fake_jpg_mode_jpg'] = 'Конвертировать в чистый JPG с белым фоном (#FFFFFF) [Рекомендуется]';
|
||||||
|
$_['text_fake_jpg_mode_png'] = 'Сохранить как настоящий PNG (прозрачность + обновление БД)';
|
||||||
|
$_['text_tool_no_image'] = 'Товары без главного фото (пусто в БД)';
|
||||||
|
$_['text_problem_main_broken'] = 'Битое главное фото (файл удален)';
|
||||||
|
$_['text_problem_add_broken'] = 'Битое доп. фото (файл удален)';
|
||||||
|
$_['text_problem_no_image'] = 'Отсутствует главное фото';
|
||||||
|
$_['text_err_dir'] = 'Ошибка: Директория не найдена или неверный путь.';
|
||||||
|
$_['text_err_no_queue'] = 'Ошибка: Очередь не найдена. Сначала запустите сканирование.';
|
||||||
|
$_['text_log_del_empty_folder'] = 'Удалена пустая папка: ';
|
||||||
|
$_['text_log_no_empty_folders'] = 'Пустых папок в image/catalog/ не найдено.';
|
||||||
|
$_['text_log_total_empty_folders'] = 'Всего удалено пустых папок: ';
|
||||||
|
$_['text_log_cache_cleared'] = 'Кэш изображений успешно очищен.';
|
||||||
|
$_['text_log_wm_smart_mode'] = 'Вотермарки работают в SMART-режиме: оригиналы не трогаются, логотип накладывается только при генерации кэша.';
|
||||||
|
$_['text_log_scan_dupes'] = 'Сканирование image/catalog/ на дубликаты (по хешу MD5)... Это может занять время.';
|
||||||
|
$_['text_log_found_dupe'] = 'Найден дубликат: ';
|
||||||
|
$_['text_log_no_dupes'] = 'Дубликаты не найдены.';
|
||||||
|
$_['text_log_total_dupes'] = 'Найдено дубликатов: %s. Потенциальная экономия: %s';
|
||||||
|
$_['text_log_fix_dupes_prompt'] = 'Нажмите "Исправить найденное" для перелинковки БД на оригинал и удаления дублей.';
|
||||||
|
$_['text_log_fixed_dupe'] = 'Исправлен и удален дубликат: ';
|
||||||
|
$_['text_log_success_dupes'] = 'Успешно исправлено дубликатов: %s. Ссылки в БД обновлены.';
|
||||||
|
$_['text_log_scan_png'] = 'Поиск тяжелых PNG файлов без прозрачности...';
|
||||||
|
$_['text_log_no_png'] = 'Подходящих PNG файлов не найдено.';
|
||||||
|
$_['text_log_total_png'] = 'Найдено PNG без прозрачности: %s. Нажмите "Исправить" для конвертации в JPG.';
|
||||||
|
$_['text_log_converted_jpg'] = 'Сконвертировано в JPG: ';
|
||||||
|
$_['text_log_success_png'] = 'Успешно сконвертировано %s файлов. Освобождено: %s';
|
||||||
|
$_['text_log_ph_prod'] = 'Обновлено товаров заглушкой: ';
|
||||||
|
$_['text_log_ph_cat'] = 'Обновлено категорий заглушкой: ';
|
||||||
|
$_['text_log_ph_brand'] = 'Обновлено брендов заглушкой: ';
|
||||||
|
$_['text_log_ph_empty'] = 'Заглушки не выбраны в настройках.';
|
||||||
|
$_['text_log_scan_exif'] = 'Сканирование EXIF-данных (мета-теги камер)...';
|
||||||
|
$_['text_log_stripped_exif'] = 'Очищен EXIF: ';
|
||||||
|
$_['text_log_no_exif'] = 'Файлов с EXIF для очистки не найдено.';
|
||||||
|
$_['text_log_success_exif'] = 'Очищен EXIF у %s файлов. Освобождено: %s';
|
||||||
|
$_['text_log_scan_small'] = 'Поиск фото размером менее %sx%s px...';
|
||||||
|
$_['text_log_too_small'] = 'Слишком маленькое (%sx%s): ';
|
||||||
|
$_['text_log_no_small'] = 'Мелких фото не найдено.';
|
||||||
|
$_['text_log_total_small'] = 'Найдено мелких фото: %s. Пожалуйста, замените их на качественные.';
|
||||||
|
$_['text_log_html_broken'] = 'Битый IMG в HTML таблицы %s (ID: %s): ';
|
||||||
|
$_['text_log_no_html_broken'] = 'Битых картинок в HTML-описаниях не найдено.';
|
||||||
|
$_['text_log_total_html_broken'] = 'Найдено битых ссылок в HTML: %s. Исправьте их вручную в редакторе.';
|
||||||
|
$_['text_log_scan_smart_cache'] = 'Поиск потерянных файлов в image/cache/...';
|
||||||
|
$_['text_log_del_orph_cache'] = 'Удален потерянный кэш: ';
|
||||||
|
$_['text_log_no_orph_cache'] = 'Потерянного кэша не найдено.';
|
||||||
|
$_['text_log_success_smart_cache'] = 'Удалено файлов потерянного кэша: %s. Освобождено: %s';
|
||||||
|
$_['text_log_scan_translit'] = 'Поиск файлов с кириллицей или пробелами...';
|
||||||
|
$_['text_log_no_bad_names'] = 'Файлов с некорректными именами не найдено.';
|
||||||
|
$_['text_log_total_bad_names'] = 'Найдено файлов с кириллицей/пробелами: %s. Нажмите "Исправить" для транслитерации и обновления БД.';
|
||||||
|
$_['text_log_renamed'] = 'Переименовано: ';
|
||||||
|
$_['text_log_success_translit'] = 'Успешно транслитерировано файлов: %s. БД обновлена.';
|
||||||
|
$_['text_log_scan_restore'] = 'Сканирование image/cache/ для восстановления утерянных оригиналов...';
|
||||||
|
$_['text_log_restored_cache'] = 'Восстановлено из кэша: ';
|
||||||
|
$_['text_log_no_lost_orig'] = 'Отсутствующих оригиналов в кэше не найдено.';
|
||||||
|
$_['text_log_success_restore'] = 'Успешно восстановлено оригиналов из кэша: %s.';
|
||||||
|
$_['error_invalid_folder'] = 'Ошибка: Недопустимое имя папки!';
|
||||||
|
$_['text_formats_title'] = 'Современные форматы (WebP & SVG)';
|
||||||
|
$_['text_formats_desc'] = 'Настройки интеграции современных форматов в файловую систему и шаблоны OpenCart.';
|
||||||
|
$_['entry_support_svg'] = 'Поддержка загрузки SVG';
|
||||||
|
$_['help_support_svg'] = 'Разрешает загрузку векторных SVG-изображений через стандартный Filemanager и их безопасный вывод на витрине без искажений размеров.';
|
||||||
|
$_['entry_support_svg_autofix'] = 'Автофикс CSS-стилей SVG';
|
||||||
|
$_['help_support_svg_autofix'] = 'Применяет изолированные CSS-стили размеров для каталожных SVG-товаров без влияния на флаги языков и системные иконки.';
|
||||||
|
$_['entry_support_webp'] = 'Поддержка загрузки WebP (+ TrueFileManager)';
|
||||||
|
$_['help_support_webp'] = 'Позволяет выбирать, загружать и просматривать WebP через стандартный FileManager и TrueFileManager (elFinder).';
|
||||||
|
$_['entry_truefilemanager_webp'] = 'WebP в TrueFileManager';
|
||||||
|
$_['help_truefilemanager_webp'] = 'Добавляет поддержку загрузки, предпросмотра и эскизов WebP в TrueFileManager от sitecreator (если он установлен).';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Сверхбыстрая подмена: автоматически меняет расширения .jpg/.png на .webp прямо в HTML-выводе витрины и добавляет атрибут loading="lazy". Не трогает базу данных!';
|
||||||
|
$_['help_tool_broken_db'] = 'Ищет в базе данных картинки, физические файлы которых были удалены с сервера. Позволяет очистить битые ссылки.';
|
||||||
|
$_['help_tool_empty_folders'] = 'Рекурсивно сканирует директорию image/catalog/ и безопасно удаляет все папки, в которых нет ни одного файла.';
|
||||||
|
$_['help_tool_folder_tree'] = 'Строит дерево каталогов и показывает реальный вес каждой папки для поиска "пожирателей" места.';
|
||||||
|
$_['help_tool_html_broken'] = 'Сканирует HTML-описания товаров и категорий на наличие тегов <img> с несуществующими картинками.';
|
||||||
|
$_['help_tool_small_photos'] = 'Находит картинки с разрешением ниже заданного (например, меньше 300x300 px). Добавлены ссылки на поиск качественных аналогов в Google Images и Яндекс Картинках.';
|
||||||
|
$_['help_tool_duplicates'] = 'Ищет полные дубликаты файлов по MD5 хешу (разные имена, но одинаковая картинка). Позволяет склеить их в один файл и обновить БД.';
|
||||||
|
$_['help_tool_watermark'] = 'Наложение водяных знаков в SMART-режиме (только на кэш витрины, оригиналы не изменяются).';
|
||||||
|
$_['help_tool_placeholders'] = 'Массово устанавливает выбранную картинку-заглушку для товаров и категорий, у которых вообще нет фото.';
|
||||||
|
$_['help_tool_png_jpg'] = 'Инструмент сканирует папку изображений и находит тяжелые PNG-файлы, которые не имеют прозрачного фона (альфа-канала). Поскольку прозрачность им не нужна, их можно безопасно конвертировать в формат JPG. Это значительно облегчает файлы (в среднем на 70-80%) и ускоряет загрузку сайта, а все ссылки в базе данных автоматически обновляются.';
|
||||||
|
$_['help_tool_exif'] = 'Сканирует JPEG-файлы и удаляет из них скрытые EXIF-данные (геотеги, данные о камере), уменьшая вес на 10-15%.';
|
||||||
|
$_['help_tool_smart_cache'] = 'Ищет в папке image/cache/ кэшированные файлы, оригиналы которых уже удалены из image/catalog/, и стирает этот мусор.';
|
||||||
|
$_['help_tool_translit'] = 'Находит файлы с кириллицей или пробелами в названиях, переименовывает их транслитом (tovar_1.jpg) и обновляет пути в БД.';
|
||||||
|
$_['help_tool_cache_restore'] = 'Если вы случайно удалили оригинал из catalog, инструмент попытается найти его копию в cache и восстановить обратно.';
|
||||||
|
$_['entry_quarantine'] = 'Переместить оригиналы в Карантин (вместо удаления)';
|
||||||
|
$_['entry_backup_db'] = 'Создать бэкап изменяемых таблиц в SQL перед запуском';
|
||||||
|
$_['button_fix_selected'] = 'ИСПРАВИТЬ ВЫБРАННЫЕ';
|
||||||
|
$_['button_export_log'] = 'Экспортировать в CSV';
|
||||||
|
$_['text_th_before'] = 'Состояние ДО';
|
||||||
|
$_['text_th_after'] = 'Ожидаемый результат ПОСЛЕ';
|
||||||
|
$_['text_th_select'] = 'Действие';
|
||||||
|
$_['text_th_preview'] = 'Предпросмотр';
|
||||||
|
$_['text_th_name'] = 'Объект / Файл';
|
||||||
|
$_['text_global_action'] = 'Групповое действие для выбранных:';
|
||||||
|
$_['text_action_clear'] = 'Очистить ссылку в БД';
|
||||||
|
$_['text_action_disable'] = 'Отключить (Статус = 0)';
|
||||||
|
$_['text_action_stock'] = 'Установить "Нет в наличии"';
|
||||||
|
$_['text_action_placeholder'] = 'Установить заглушку';
|
||||||
|
$_['text_action_ignore'] = 'Ничего не делать';
|
||||||
|
$_['text_action_merge'] = 'Склеить (удалить дубликат, оставить оригинал)';
|
||||||
|
$_['text_action_convert'] = 'Конвертировать в JPG';
|
||||||
|
$_['text_action_rename'] = 'Переименовать транслитом';
|
||||||
|
$_['text_action_delete'] = 'Удалить';
|
||||||
|
$_['text_action_restore'] = 'Восстановить';
|
||||||
|
$_['text_db_backup_created'] = 'Создан бэкап БД: %s';
|
||||||
|
$_['text_quarantine_created'] = 'Перенесено в карантин: %s';
|
||||||
|
$_['text_fix_status_success'] = 'Успешно выполнено';
|
||||||
|
$_['text_fix_status_error'] = 'Ошибка: %s';
|
||||||
|
$_['text_log_exported'] = 'Лог успешно экспортирован!';
|
||||||
|
$_['text_select_action'] = '-- Выберите действие --';
|
||||||
|
$_['error_empty_selection'] = 'Ошибка: Не выбрано ни одной строки для исправления!';
|
||||||
|
$_['text_link_admin'] = 'Админка';
|
||||||
|
$_['text_link_catalog'] = 'Витрина';
|
||||||
|
$_['entry_threads'] = 'Потоков обработки';
|
||||||
|
$_['text_threads_optimal'] = 'оптимально';
|
||||||
|
$_['button_download_zip'] = 'Скачать ZIP-архив и удалить папку';
|
||||||
|
$_['confirm_download_and_delete'] = 'Архив успешно скачался? Можно удалить временную папку копий на сервере?';
|
||||||
|
$_['button_clear_backups'] = 'Удалить бэкапы БД';
|
||||||
|
$_['button_clear_backups_short'] = 'Очистить бэкапы';
|
||||||
|
$_['confirm_clear_backups'] = 'Вы уверены, что хотите полностью удалить все SQL-бэкапы таблиц?';
|
||||||
|
$_['text_compare_title'] = 'Сравнение изображений ДО / ПОСЛЕ';
|
||||||
|
$_['text_compare_before'] = 'ДО';
|
||||||
|
$_['text_compare_after'] = 'ПОСЛЕ';
|
||||||
|
$_['text_backups_cleared'] = 'Все SQL-бэкапы таблиц успешно удалены!';
|
||||||
|
$_['error_no_backups'] = 'Бэкапы не найдены или папка пуста.';
|
||||||
|
$_['button_restore'] = 'Вернуть';
|
||||||
|
$_['button_empty'] = 'Очистить';
|
||||||
|
$_['entry_wm_targets'] = 'Применять водяной знак к:';
|
||||||
|
$_['text_wm_target_product'] = 'Фото товаров';
|
||||||
|
$_['text_wm_target_category'] = 'Фото категорий';
|
||||||
|
$_['text_wm_target_brand'] = 'Логотипы брендов';
|
||||||
|
$_['text_wm_target_banner'] = 'Баннеры и слайды';
|
||||||
|
$_['text_wm_target_blog'] = 'Статьи / Блог';
|
||||||
|
$_['error_no_scan_data'] = 'Ошибка: Данные сканирования не найдены. Сначала запустите сканирование!';
|
||||||
|
$_['error_row_not_found'] = 'Ошибка: Объект не найден в результатах сканирования!';
|
||||||
|
$_['error_file_not_found'] = 'Ошибка: Файл не найден на сервере!';
|
||||||
|
$_['text_folder_rules_title'] = 'Индивидуальные правила сжатия для папок';
|
||||||
|
$_['text_folder_rules_desc'] = 'Вы можете переопределить качество и максимальные размеры для конкретных папок. Если оставить поле пустым, будет использоваться глобальная настройка. Путь указывается относительно папки image (например, catalog/banners/).';
|
||||||
|
$_['entry_folder_path'] = 'Путь к папке';
|
||||||
|
$_['entry_jpg_quality'] = 'Качество JPG';
|
||||||
|
$_['entry_webp_quality'] = 'Качество WebP';
|
||||||
|
$_['button_add_rule'] = 'Добавить правило';
|
||||||
|
$_['button_remove'] = 'Удалить';
|
||||||
|
$_['entry_wm_angle'] = 'Угол наклона водяного знака (градусы)';
|
||||||
|
$_['entry_wm_corner_radius'] = 'Скругление углов водяного знака (px)';
|
||||||
|
$_['entry_wm_size_type'] = 'Масштабирование водяного знака';
|
||||||
|
$_['entry_wm_size_percent'] = 'Размер водяного знака (% от ширины изображения)';
|
||||||
|
$_['entry_wm_text_color'] = 'Цвет текста водяного знака';
|
||||||
|
$_['entry_wm_text_font'] = 'Шрифт водяного знака (TTF)';
|
||||||
|
$_['entry_wm_filter_mode'] = 'Режим фильтрации Категорий/Брендов';
|
||||||
|
$_['text_wm_filter_include'] = 'Только для выбранных';
|
||||||
|
$_['text_wm_filter_exclude'] = 'Для всех, кроме выбранных';
|
||||||
|
$_['text_wm_size_original'] = 'Оригинальный размер';
|
||||||
|
$_['text_wm_size_percent'] = 'Пропорционально ширине изображения (%)';
|
||||||
|
$_['button_preview_watermark'] = 'Предпросмотр водяного знака';
|
||||||
|
$_['text_wm_preview_title'] = 'Предпросмотр водяного знака';
|
||||||
|
$_['text_cron_exclude_folders'] = 'Исключить папки из сканирования';
|
||||||
|
$_['text_cron_entities'] = 'Какие типы фото обрабатывать?';
|
||||||
|
$_['text_cron_quality_override'] = 'Переопределить параметры сжатия для Крона';
|
||||||
|
$_['text_cron_recommendations'] = 'Рекомендации по расписанию запуска Cron';
|
||||||
|
$_['text_cron_recommendations_desc'] = '<ul><li><b>Для небольших сайтов (до 5000 товаров)</b> рекомендуется запускать Крон каждый час (<code>0 * * * *</code>).</li><li><b>Для средних сайтов (5000-20000 товаров)</b> рекомендуется запускать раз в 3-6 часов (<code>0 */6 * * *</code>).</li><li><b>Для крупных сайтов (более 20000 товаров)</b> — один раз в сутки ночью (например, в 2:00: <code>0 2 * * *</code>).</li></ul>';
|
||||||
|
$_['text_tool_broken_files'] = 'Сканер битых/пустых файлов на сервере';
|
||||||
|
$_['help_tool_broken_files'] = 'Сканирует физические файлы в папке image/catalog/ на наличие поврежденных изображений или пустых файлов размером 0 байт.';
|
||||||
|
$_['text_grid_broken_file'] = 'Битый или пустой файл на сервере';
|
||||||
|
$_['text_grid_broken_file_after'] = 'Удаление или замена заглушкой';
|
||||||
|
$_['text_description_broken_files'] = 'Результаты сканирования физических файлов в папке image/catalog/. Здесь отображаются битые (поврежденные) изображения или файлы размером 0 байт.';
|
||||||
|
$_['text_action_strip'] = 'Очистить EXIF';
|
||||||
|
$_['text_action_set_placeholder'] = 'Установить заглушку';
|
||||||
|
$_['text_th_entity'] = 'Объект / Связанные ссылки';
|
||||||
|
$_['text_cron_entity_product'] = 'Товары';
|
||||||
|
$_['text_cron_entity_category'] = 'Категории';
|
||||||
|
$_['text_cron_entity_manufacturer'] = 'Производители / Бренды';
|
||||||
|
$_['text_cron_entity_banner'] = 'Баннеры';
|
||||||
|
$_['text_cron_entity_blog'] = 'Блог / Статьи';
|
||||||
|
$_['entry_cron_jpg_quality'] = 'Качество JPG (Крон)';
|
||||||
|
$_['entry_cron_webp_quality'] = 'Качество WebP (Крон)';
|
||||||
|
$_['entry_cron_max_width'] = 'Макс. ширина px (Крон)';
|
||||||
|
$_['entry_cron_max_height'] = 'Макс. высота px (Крон)';
|
||||||
|
$_['text_cron_folder_scan'] = 'Папки для сканирования';
|
||||||
|
$_['text_no_fonts'] = 'TTF-шрифты не найдены в system/library/font/';
|
||||||
|
$_['button_apply'] = 'Применить';
|
||||||
|
$_['text_backup_will_be_created'] = 'Резервная копия базы данных будет автоматически создана перед выполнением этого действия.';
|
||||||
|
$_['text_bulk_action'] = 'Групповое действие для выбранных';
|
||||||
|
$_['text_grid_results'] = 'Результаты и детали сканирования';
|
||||||
|
$_['text_quarantine_will_be_created'] = 'Оригинальные файлы будут перемещены в карантин (image/catalog_trash/) перед изменением.';
|
||||||
|
$_['text_success_apply'] = 'Изменения успешно применены!';
|
||||||
|
$_['text_description_broken'] = 'Результаты сканирования базы данных на наличие битых ссылок (записи в таблицах с несуществующими файлами).';
|
||||||
|
$_['text_description_cache_restore'] = 'Результаты поиска файлов в кэше, оригиналы которых отсутствуют в каталоге.';
|
||||||
|
$_['text_description_duplicates'] = 'Результаты поиска полных дубликатов изображений по MD5-хешу.';
|
||||||
|
$_['text_description_empty_folders'] = 'Список пустых папок в директории image/catalog/ для удаления.';
|
||||||
|
$_['text_description_exif'] = 'Результаты поиска изображений с метаданными EXIF, которые можно очистить.';
|
||||||
|
$_['text_description_folder_tree'] = 'Статистика размера папок в каталоге image/catalog/.';
|
||||||
|
$_['text_description_html_broken'] = 'Результаты поиска несуществующих файлов картинок, на которые ссылаются описания в HTML.';
|
||||||
|
$_['text_description_placeholders'] = 'Результаты поиска сущностей без изображений для заполнения заглушками.';
|
||||||
|
$_['text_description_png_jpg'] = 'Результаты поиска тяжелых изображений PNG без прозрачности, которые можно пережать в JPG.';
|
||||||
|
$_['text_description_small_photos'] = 'Список изображений, размеры которых меньше минимально заданных (%sx%s px).';
|
||||||
|
$_['text_description_smart_cache'] = 'Результаты поиска файлов кэша, оригиналы которых уже были удалены.';
|
||||||
|
$_['text_description_translit'] = 'Результаты поиска файлов с кириллицей или пробелами в названиях.';
|
||||||
|
$_['text_grid_broken_db_after'] = 'Очистить ссылку или установить заглушку';
|
||||||
|
$_['text_grid_dupe_after'] = 'Оригинал (остаётся)';
|
||||||
|
$_['text_grid_dupe_before'] = 'Дубликат (будет удалён)';
|
||||||
|
$_['text_grid_empty_folder'] = 'Пустая папка';
|
||||||
|
$_['text_grid_empty_folder_after'] = 'Удалить пустую папку';
|
||||||
|
$_['text_grid_exif_after'] = 'Очистить метаданные';
|
||||||
|
$_['text_grid_exif_before'] = 'Содержит EXIF';
|
||||||
|
$_['text_grid_html_after'] = 'Исправить ссылку вручную';
|
||||||
|
$_['text_grid_missing_file'] = 'Файл отсутствует';
|
||||||
|
$_['text_grid_missing_html'] = 'Картинка не найдена в описании';
|
||||||
|
$_['text_grid_missing_orig'] = 'Оригинал отсутствует';
|
||||||
|
$_['text_grid_missing_orig_after'] = 'Восстановить оригинал из кэша';
|
||||||
|
$_['text_grid_no_image'] = 'Нет изображения (пусто)';
|
||||||
|
$_['text_grid_orph_cache'] = 'Осиротевший кэш';
|
||||||
|
$_['text_grid_orph_cache_after'] = 'Удалить ненужный кэш';
|
||||||
|
$_['text_grid_ph_brand_after'] = 'Установить заглушку бренда';
|
||||||
|
$_['text_grid_ph_category_after'] = 'Установить заглушку категории';
|
||||||
|
$_['text_grid_ph_product_after'] = 'Установить заглушку товара';
|
||||||
|
$_['text_grid_small_photo_after'] = 'Рекомендуется заменить на более крупное';
|
||||||
|
$_['text_grid_too_small'] = 'Слишком маленькое';
|
||||||
|
$_['text_no_relations'] = 'Нет связей в БД';
|
||||||
|
$_['text_action_archive'] = 'Архивировать (в ZIP)';
|
||||||
|
$_['text_action_archive_delete'] = 'Архивировать + Удалить';
|
||||||
|
$_['text_tool_sanitizer'] = 'Санитайзер имен файлов';
|
||||||
|
$_['help_tool_sanitizer'] = 'Массовая очистка имен файлов и папок от кириллицы, пробелов и спецсимволов, приведение расширений к единому виду.';
|
||||||
|
$_['text_description_sanitizer'] = 'Результаты анализа имен файлов для санитаризации по выбранным правилам.';
|
||||||
|
$_['entry_sz_translit'] = 'Транслитерация (кириллица в латиницу)';
|
||||||
|
$_['entry_sz_spaces'] = 'Заменять пробелы на символ "_"';
|
||||||
|
$_['entry_sz_special'] = 'Удалять специальные символы';
|
||||||
|
$_['entry_sz_lowercase_name'] = 'Имя файла в нижний регистр';
|
||||||
|
$_['entry_sz_lowercase_ext'] = 'Расширение в нижний регистр';
|
||||||
|
$_['entry_sz_normalize_ext'] = 'Нормализовать расширения (jpeg -> jpg)';
|
||||||
|
$_['entry_cron_folder_mode'] = 'Режим фильтрации папок';
|
||||||
|
$_['text_cron_folder_mode_exclude'] = 'Сканировать все, кроме выбранных (Исключения)';
|
||||||
|
$_['text_cron_folder_mode_include'] = 'Сканировать только выбранные папки';
|
||||||
|
$_['button_select_all'] = 'Выбрать все';
|
||||||
|
$_['button_deselect_all'] = 'Снять все';
|
||||||
|
$_['entry_wm_upload_font'] = 'Загрузить свой шрифт TTF';
|
||||||
|
$_['button_upload_font'] = 'Загрузить шрифт';
|
||||||
|
$_['text_success_font_upload'] = 'Шрифт успешно загружен!';
|
||||||
|
$_['error_font_upload'] = 'Ошибка загрузки шрифта! Разрешены только файлы .ttf весом до 5 МБ.';
|
||||||
|
$_['entry_lazy_load'] = 'Прогрессивная ленивая загрузка';
|
||||||
|
$_['help_lazy_load'] = 'Включает премиальную прогрессивную отложенную загрузку на витрине. Изображения заменяются микро-превью и плавно размываются (blur-up), подгружаясь по мере прокрутки.';
|
||||||
|
$_['confirm_replace_mode'] = 'ВНИМАНИЕ! Вы выбрали режим «Заменять оригиналы». Все изображения будут перезаписаны прямо на сервере. Настоятельно рекомендуем сделать резервную копию. Вы уверены, что хотите продолжить?';
|
||||||
|
$_['text_compare'] = 'Сравнить';
|
||||||
|
$_['text_home'] = 'Главная';
|
||||||
|
$_['text_tech_gd'] = 'Библиотека GD';
|
||||||
|
$_['text_tech_imagick'] = 'Imagick';
|
||||||
|
$_['text_tech_webp'] = 'Поддержка WebP';
|
||||||
|
$_['text_position_1'] = '1 - Слева вверху';
|
||||||
|
$_['text_position_2'] = '2 - По центру вверху';
|
||||||
|
$_['text_position_3'] = '3 - Справа вверху';
|
||||||
|
$_['text_position_4'] = '4 - Слева посередине';
|
||||||
|
$_['text_position_5'] = '5 - По центру';
|
||||||
|
$_['text_position_6'] = '6 - Справа посередине';
|
||||||
|
$_['text_position_7'] = '7 - Слева внизу';
|
||||||
|
$_['text_position_8'] = '8 - По центру внизу';
|
||||||
|
$_['text_position_9'] = '9 - Справа внизу';
|
||||||
|
|
||||||
|
$_['entry_log_level'] = 'Уровень лога';
|
||||||
|
$_['text_log_changed_only'] = 'Только изменённые';
|
||||||
|
$_['text_log_all'] = 'Все файлы (подробно)';
|
||||||
|
$_['text_skipped_no_gain'] = 'Пропущен (нет улучшения)';
|
||||||
|
$_['text_reset_cache_hint'] = 'Сбросить кэш оптимизации (полный пересканирование)';
|
||||||
|
$_['confirm_reset_cache'] = 'Сбросить кэш оптимизации? Следующее сканирование проверит ВСЕ файлы заново.';
|
||||||
|
$_['text_cache_cleared'] = 'Кэш оптимизации очищен. Следующее сканирование проверит все файлы.';
|
||||||
|
$_['error_wm_preview'] = 'Ошибка генерации превью водяного знака.';
|
||||||
|
$_['error_wm_too_large'] = 'Изображение водяного знака слишком большое (%dx%d px)! Максимально допустимый размер: %dx%d px.';
|
||||||
|
$_['text_apply_errors_warning'] = 'ВНИМАНИЕ: Некоторые файлы не удалось заменить (заблокированы или нет прав):';
|
||||||
|
$_['text_action_compress'] = 'Сжать изображения';
|
||||||
|
$_['text_estimated'] = 'Прогноз';
|
||||||
|
$_['entry_min_savings_bytes'] = 'Мин. сжатие (байт)';
|
||||||
|
$_['entry_min_savings_percent'] = 'Мин. сжатие (%)';
|
||||||
|
$_['text_optimized'] = 'Оптимизировано';
|
||||||
|
$_['entry_broken_fallback'] = 'Заглушка для битых фото';
|
||||||
|
$_['help_broken_fallback'] = 'Автоматически заменяет отсутствующие или поврежденные изображения каталога на витрине на изображение-заглушку.';
|
||||||
|
$_['entry_fallback_image'] = 'Изображение-заглушка';
|
||||||
|
$_['help_fallback_image'] = 'Выберите изображение, которое будет показано, если оригинальный файл картинки товара или категории отсутствует. По умолчанию используется no_image.png.';
|
||||||
|
$_['text_tool_cmyk'] = 'Конвертер CMYK в RGB';
|
||||||
|
$_['help_tool_cmyk'] = 'Конвертация JPEG изображений из цветового профиля CMYK в sRGB для корректного отображения в браузерах Safari и на устройствах iOS.';
|
||||||
|
$_['text_tool_heavy_files'] = 'Поиск тяжелых файлов';
|
||||||
|
$_['help_tool_heavy_files'] = 'Поиск самых тяжелых оригинальных изображений в каталоге с возможностью их быстрого сжатия прямо здесь.';
|
||||||
|
$_['entry_heavy_files_limit'] = 'Макс. количество найденных файлов (всего)';
|
||||||
|
$_['text_action_convert_rgb'] = 'Конвертировать в RGB';
|
||||||
|
$_['text_description_cmyk'] = 'Найдены файлы в цветовом пространстве CMYK. Конвертация в sRGB гарантирует корректное отображение на всех платформах, включая iOS/macOS.';
|
||||||
|
$_['text_description_heavy'] = 'Список из %d самых тяжелых файлов в каталоге изображений. Вы можете оптимизировать их прямо здесь.';
|
||||||
|
$_['text_cron_folder_hint_exclude_all'] = 'Статус: Будут сканироваться все папки (исключения не выбраны).';
|
||||||
|
$_['text_cron_folder_hint_exclude_some'] = 'Статус: Будут сканироваться все папки, КРОМЕ %d отмеченных.';
|
||||||
|
$_['text_cron_folder_hint_include_some'] = 'Статус: Будут сканироваться только %d отмеченных папок.';
|
||||||
|
$_['text_cron_folder_hint_include_none'] = 'ВНИМАНИЕ: Ни одна папка не выбрана! Крон ничего не будет сканировать.';
|
||||||
|
$_['text_action_apply_changes'] = 'Применить указанные изменения';
|
||||||
|
$_['entry_wm_status'] = 'Статус водяного знака';
|
||||||
|
$_['text_disabled'] = 'Отключено';
|
||||||
|
$_['entry_rule_name'] = 'Название правила';
|
||||||
|
$_['entry_rule_status'] = 'Статус правила';
|
||||||
|
$_['entry_action'] = 'Действие';
|
||||||
|
$_['entry_ph_status'] = 'Статус заглушек';
|
||||||
|
$_['entry_sanitizer_limit'] = 'Макс. файлов для поиска (лимит)';
|
||||||
|
$_['entry_heavy_files_min_size'] = 'Минимальный размер';
|
||||||
|
$_['entry_png_jpg_limit'] = 'Макс. файлов для поиска (лимит)';
|
||||||
|
$_['entry_png_jpg_min_size'] = 'Минимальный размер';
|
||||||
|
$_['text_wm_rule_title'] = 'Правило водяного знака';
|
||||||
|
$_['button_close'] = 'Закрыть';
|
||||||
|
$_['text_ph_rule_title'] = 'Правило заглушки';
|
||||||
|
$_['entry_ph_image'] = 'Изображение заглушки';
|
||||||
|
$_['button_clear_cache_wm'] = 'Очистить кэш (применить водяной знак)';
|
||||||
|
$_['text_active'] = 'Активна';
|
||||||
|
$_['text_error'] = 'Не активна';
|
||||||
|
$_['text_th_dupe_delete'] = 'Файл для удаления (Дубликат)';
|
||||||
|
$_['text_th_dupe_keep'] = 'Файл для сохранения (Оригинал)';
|
||||||
|
$_['text_dupe_original_label'] = 'Оригинал';
|
||||||
|
$_['text_dupe_duplicate_label'] = 'Дубликат';
|
||||||
|
|
||||||
|
$_['text_disk_usage'] = 'Использование диска';
|
||||||
|
$_['text_cumulative_stats'] = 'Статистика оптимизации';
|
||||||
|
$_['text_disk_catalog'] = 'Каталог изображений';
|
||||||
|
$_['text_disk_cache'] = 'Кэш OC';
|
||||||
|
$_['text_disk_trash'] = 'Корзина модуля';
|
||||||
|
$_['text_disk_other'] = 'Прочее';
|
||||||
|
$_['text_disk_free'] = 'Свободно';
|
||||||
|
$_['text_total_files_opt'] = 'Файлов обработано';
|
||||||
|
$_['text_total_saved'] = 'Всего сэкономлено';
|
||||||
|
$_['text_avg_saving_pct'] = 'Средняя экономия';
|
||||||
|
$_['text_stats_hint'] = 'Статистика хранится в БД сайта (учитывает Оптимизацию, Очистку, Инструменты и Крон)';
|
||||||
|
$_['text_reset_stats'] = 'Сбросить статистику';
|
||||||
|
$_['text_reset_stats_confirm']= 'Вы уверены, что хотите сбросить всю статистику из БД?';
|
||||||
|
$_['text_export_import'] = 'Экспорт / Импорт настроек';
|
||||||
|
$_['button_export_settings'] = 'Экспорт настроек (JSON)';
|
||||||
|
$_['button_import_settings'] = 'Импортировать настройки';
|
||||||
|
$_['help_export_settings'] = 'Скачать все настройки модуля в JSON-файл';
|
||||||
|
$_['help_import_settings'] = 'Загрузить ранее экспортированный JSON для восстановления настроек';
|
||||||
|
$_['text_import_success'] = 'Настройки успешно импортированы. Перезагрузите страницу для применения.';
|
||||||
|
$_['error_import_file'] = 'Файл не загружен или ошибка загрузки';
|
||||||
|
$_['error_import_invalid'] = 'Некорректный файл настроек (неверный модуль или формат)';
|
||||||
|
$_['text_click_to_load'] = 'Нажмите ↑ для загрузки данных диска';
|
||||||
|
$_['tab_formats'] = 'Форматы изображений';
|
||||||
|
|
||||||
|
$_['text_disk_quota_legend'] = 'Лимиты диска хостинга (вручную)';
|
||||||
|
$_['text_disk_quota_desc'] = 'Если график дискового пространства показывает неверные данные (физический диск сервера вместо лимита вашего хостинга), вы можете указать лимиты вашего тарифа вручную. Укажите 0, чтобы использовать автоопределение.';
|
||||||
|
$_['entry_disk_quota_total'] = 'Выделено диска на хостинге (ГБ)';
|
||||||
|
$_['entry_disk_quota_used'] = 'Занято диска на хостинге всего (ГБ)';
|
||||||
|
$_['entry_auto_disk'] = 'Автообновление при входе';
|
||||||
|
|
||||||
|
$_['entry_cron_task_name'] = 'Название задачи';
|
||||||
|
$_['entry_cron_task_summary'] = 'Параметры сжатия';
|
||||||
|
$_['button_add_cron_task'] = 'Добавить задачу';
|
||||||
|
$_['button_copy_cron_url'] = 'Копировать URL';
|
||||||
|
$_['text_cron_recommended_url'] = 'URL для запуска задачи крона:';
|
||||||
|
$_['entry_cron_batch_limit'] = 'Лимит пакета за один запуск Крона (файлов)';
|
||||||
|
$_['help_cron_batch_limit'] = 'Максимальное количество файлов, обрабатываемых за один запуск Крона. По умолчанию 100. Рекомендуется от 50 до 300 для предотвращения таймаута выполнения на хостинге.';
|
||||||
|
|
||||||
|
$_['text_license_required'] = 'Требуется лицензионный ключ';
|
||||||
|
$_['text_license_required_desc'] = 'Пожалуйста, введите лицензионный ключ для активации модуля. Все функции настроек и оптимизации заблокированы до ввода валидного ключа.';
|
||||||
|
$_['entry_token_desc'] = 'Введите токен активации, выданный для вашего основного домена. Вы можете получить его в личном кабинете на форуме или обратившись в поддержку.';
|
||||||
|
$_['button_activate'] = 'Активировать модуль';
|
||||||
|
$_['text_support'] = 'Техническая поддержка';
|
||||||
|
$_['text_support_desc'] = 'Если у вас ещё нет ключа или возникли проблемы, пожалуйста, сообщите номер вашего заказа и домен.';
|
||||||
|
|
||||||
|
$_['entry_wm_max_width'] = 'Макс. ширина водяного знака (px)';
|
||||||
|
$_['entry_wm_max_height'] = 'Макс. высота водяного знака (px)';
|
||||||
|
$_['help_wm_max_width'] = 'Если исходное изображение водяного знака превышает эту ширину, оно будет автоматически масштабировано. Укажите 0 или оставьте пустым для значения по умолчанию (800px).';
|
||||||
|
$_['help_wm_max_height'] = 'Если исходное изображение водяного знака превышает эту высоту, оно будет автоматически масштабировано. Укажите 0 или оставьте пустым для значения по умолчанию (800px).';
|
||||||
|
$_['entry_disk_status'] = 'Включить сканирование диска и график';
|
||||||
|
$_['help_disk_status'] = 'Если включено, модуль будет периодически сканировать объем папки картинок и отображать круговую диаграмму. Рекомендуется выключить на больших сайтах для ускорения загрузки панели.';
|
||||||
|
$_['text_disk_settings_title'] = 'Настройка лимитов и сканирования диска';
|
||||||
|
|
||||||
|
$_['text_tool_svg_security'] = 'SVG Security Sanitizer (Защита XSS/XXE)';
|
||||||
|
$_['help_tool_svg_security'] = 'Сканирует SVG-векторные изображения в image/catalog/ на наличие опасного кода (скрипты, обработчики событий, XXE entity, foreignObject, javascript: URI) и очищает их.';
|
||||||
|
$_['text_description_svg_security'] = 'SVG Security Sanitizer проверяет все SVG-файлы в каталоге на уязвимости безопасности. Очистка удаляет вредоносные скрипты и инъекции, сохраняя графическое изображение.';
|
||||||
|
$_['text_svg_threats_found'] = 'Найдено угроз безопасности: %d';
|
||||||
|
$_['text_svg_threat_xxe_entity'] = 'XXE Entity атака';
|
||||||
|
$_['text_svg_threat_script_tag'] = 'Тег скрипта (<script>)';
|
||||||
|
$_['text_svg_threat_event_handler'] = 'Обработчик событий (on*)';
|
||||||
|
$_['text_svg_threat_javascript_uri']= 'JavaScript URI (javascript:)';
|
||||||
|
$_['text_svg_threat_foreign_object']= 'Чужеродный объект (<foreignObject>)';
|
||||||
|
$_['text_svg_threat_embed_object'] = 'Вложенный объект (<object>/<iframe>)';
|
||||||
|
$_['text_svg_threat_css_injection'] = 'CSS-инъекция';
|
||||||
|
$_['text_svg_clean_success'] = 'Очищено и безопасно';
|
||||||
|
|
||||||
|
$_['text_tool_black_bg'] = 'Поиск чёрного фона и Фейковых JPG';
|
||||||
|
$_['help_tool_black_bg'] = 'Находит PNG-изображения с расширением .jpg (из автоимпортов) и фото с чёрным фоном/рамками. Заменяет чёрный фон на белый (#FFFFFF).';
|
||||||
|
$_['text_description_black_bg'] = 'Инструмент ищет картинки товаров с чёрным фоном или некорректным расширением после импорта. Применение преобразует фейковые JPG и заменяет чёрные рамки вокруг товара белым фоном.';
|
||||||
|
$_['entry_bb_darkness'] = 'Порог темноты пикселя (0-100)';
|
||||||
|
$_['entry_bb_threshold'] = '% чёрных пикселей по краю';
|
||||||
|
$_['entry_bb_limit'] = 'Лимит сканирования (файлов)';
|
||||||
|
$_['entry_bb_scan_fake'] = 'Искать Fake JPG (PNG в .jpg)';
|
||||||
|
$_['entry_bb_scan_black'] = 'Искать чёрный фон';
|
||||||
|
$_['text_bb_fake_jpg'] = 'Фейковый JPG (PNG внутри .jpg)';
|
||||||
|
$_['text_bb_black_bg'] = 'Обнаружен чёрный фон';
|
||||||
|
$_['text_bb_fix_flatten_white'] = 'Конвертировать в JPG (белый фон)';
|
||||||
|
$_['text_bb_fix_convert_png'] = 'Сохранить как PNG (прозрачность)';
|
||||||
|
$_['text_bb_fix_white'] = 'Заменить чёрный фон (GD: только края)';
|
||||||
|
$_['text_bb_fix_white_all'] = 'Заменить ВСЕ чёрные пиксели (GD: агрессивно)';
|
||||||
|
$_['text_bb_fix_white_smooth'] = 'Заменить ВСЕ чёрные пиксели (GD: Defringe + сглаживание)';
|
||||||
|
$_['text_bb_fix_white_imagick'] = 'Заменить чёрный фон (Imagick: только края)';
|
||||||
|
$_['text_bb_fix_white_all_imagick'] = 'Заменить ВСЕ чёрные пиксели (Imagick: Fuzzy Lab)';
|
||||||
|
$_['text_bb_fix_white_smooth_imagick'] = 'Заменить ВСЕ чёрные пиксели (Imagick: Defringe + сглаживание)';
|
||||||
|
$_['text_bb_type_fake'] = 'Ошибка импорта PNG';
|
||||||
|
$_['text_bb_type_black'] = 'Чёрный фон';
|
||||||
|
|
||||||
|
$_['button_online_instruction'] = 'Инструкция к модулю (Онлайн)';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,567 @@
|
||||||
|
<?php
|
||||||
|
$_['heading_title_raw'] = 'Image Optimizer [NAT]: Сжатие оригиналов и удаление мусора';
|
||||||
|
$_['heading_title'] = '<b>Image Optimizer [NAT]:</b> Сжатие оригиналов и удаление мусора';
|
||||||
|
$_['text_extension'] = 'Расширения';
|
||||||
|
$_['text_edit'] = 'Настройки модуля';
|
||||||
|
$_['text_success'] = 'Настройки успешно сохранены!';
|
||||||
|
$_['entry_warning'] = 'ВНИМАНИЕ: Обязательно сделайте бэкап файлов сайта и особенно папки /image/catalog перед началом работы!';
|
||||||
|
$_['text_tech'] = 'Проверка технологий сервера:';
|
||||||
|
$_['text_author'] = 'Техническая поддержка и пожелания: <a href="mailto:info@nat.od.ua">info@nat.od.ua</a>';
|
||||||
|
$_['tab_optimize'] = 'Оптимизация и Ресайз';
|
||||||
|
$_['tab_cleaner'] = 'Очистка неиспользуемых изображений';
|
||||||
|
$_['tab_info'] = 'Инфо / Экосистема [NAT]';
|
||||||
|
$_['tab_settings'] = 'Настройки';
|
||||||
|
$_['tab_tools'] = 'Инструменты (pro)';
|
||||||
|
$_['tab_cron'] = 'Крон-задачи';
|
||||||
|
$_['entry_mode'] = 'Режим работы';
|
||||||
|
$_['text_copy'] = 'Создать копию (безопасно)';
|
||||||
|
$_['text_replace'] = 'Заменять оригиналы (требует бэкап!)';
|
||||||
|
$_['entry_folder'] = 'Имя папки для копии';
|
||||||
|
$_['entry_batch'] = 'Файлов за проход';
|
||||||
|
$_['entry_log_limit'] = 'Строк лога на экране';
|
||||||
|
$_['entry_max_width'] = 'Макс. ширина (px) [0 - без лимита]';
|
||||||
|
$_['entry_max_height'] = 'Макс. высота (px) [0 - без лимита]';
|
||||||
|
$_['entry_jpg'] = 'Качество JPG (0-100)';
|
||||||
|
$_['entry_png'] = 'Сжатие PNG (0-9)';
|
||||||
|
$_['entry_webp'] = 'Качество WebP (0-100)';
|
||||||
|
$_['entry_targets'] = 'Что оптимизировать?';
|
||||||
|
$_['text_all_catalog'] = '[ Весь каталог image/catalog ]';
|
||||||
|
$_['text_root_files'] = 'Файлы только в корне image/catalog';
|
||||||
|
$_['entry_threshold'] = 'Порог замены (%)';
|
||||||
|
$_['help_threshold'] = '0: заменять только если вес стал меньше. 10: разрешить увеличение веса до 10%.';
|
||||||
|
$_['entry_token'] = 'Токен активации (на корень домена)';
|
||||||
|
$_['entry_status'] = 'Статус модуля';
|
||||||
|
$_['entry_menu_position'] = 'Позиция меню [NAT]';
|
||||||
|
$_['text_menu_module_only'] = 'Только в модулях';
|
||||||
|
$_['text_menu_header'] = 'В шапке (Header)';
|
||||||
|
$_['text_menu_sidebar'] = 'В боковом меню (Sidebar)';
|
||||||
|
$_['text_menu_both'] = 'Везде (Шапка + Сайдбар)';
|
||||||
|
$_['text_status_on'] = 'Включено';
|
||||||
|
$_['text_status_off'] = 'Отключено';
|
||||||
|
$_['entry_engine'] = 'Движок обработки изображений';
|
||||||
|
$_['text_engine_gd'] = 'GD (Стандарт)';
|
||||||
|
$_['text_engine_imagick'] = 'Imagick (Высокое качество, сохранение профилей sRGB)';
|
||||||
|
$_['entry_license'] = 'Лицензия';
|
||||||
|
$_['text_cleaner_info'] = 'Этот инструмент ищет файлы, которые физически существуют на диске, но нигде не используются в базе данных или файлах шаблона.';
|
||||||
|
$_['entry_clean_targets'] = 'В каких папках искать мусор?';
|
||||||
|
$_['entry_extended_log'] = 'Расширенный лог (показать используемые фото и где они найдены)';
|
||||||
|
$_['entry_process_broken'] = 'Учитывать файлы с битой кодировкой (имена с символом "?")';
|
||||||
|
$_['button_scan_trash'] = 'НАЙТИ МУСОР';
|
||||||
|
$_['button_quarantine'] = 'В Карантин (Безопасно)';
|
||||||
|
$_['button_delete_trash'] = 'Удалить навсегда';
|
||||||
|
$_['button_empty_quarantine'] = 'Очистить папку Карантина';
|
||||||
|
$_['button_restore_quarantine'] = 'Вернуть из Карантина';
|
||||||
|
$_['text_scan_result'] = 'Результаты сканирования';
|
||||||
|
$_['text_trash_files'] = 'Мусорных файлов: ';
|
||||||
|
$_['text_trash_size'] = 'Потенциально освободится: ';
|
||||||
|
$_['button_start'] = 'СТАРТ ОПТИМИЗАЦИИ';
|
||||||
|
$_['button_pause'] = 'ПАУЗА';
|
||||||
|
$_['button_stop'] = 'ОСТАНОВИТЬ';
|
||||||
|
$_['button_continue'] = 'ПРОДОЛЖИТЬ';
|
||||||
|
$_['button_start_new'] = 'СТАРТ (Новый запуск)';
|
||||||
|
$_['button_download_log'] = 'Скачать лог в TXT';
|
||||||
|
$_['button_download'] = 'Скачать';
|
||||||
|
$_['button_save'] = 'Сохранить';
|
||||||
|
$_['button_cancel'] = 'Отмена';
|
||||||
|
$_['text_progress'] = 'Прогресс:';
|
||||||
|
$_['text_old_size'] = 'Было:';
|
||||||
|
$_['text_new_size'] = 'Стало:';
|
||||||
|
$_['text_savings'] = 'Экономия:';
|
||||||
|
$_['text_detailed_log'] = 'Детальный лог';
|
||||||
|
$_['text_page'] = 'Стр.';
|
||||||
|
$_['text_waiting'] = 'Ожидание запуска...';
|
||||||
|
$_['text_enabled'] = 'Включено';
|
||||||
|
$_['text_disabled_error'] = 'Выключено (ОШИБКА)';
|
||||||
|
$_['text_supported'] = 'Поддерживается';
|
||||||
|
$_['text_no'] = 'Нет';
|
||||||
|
$_['error_permission'] = 'У вас нет прав для управления модулем!';
|
||||||
|
$_['error_license'] = 'Ошибка доступа: Неверный токен активации для этого домена!';
|
||||||
|
$_['error_domain'] = ' (Домен: ';
|
||||||
|
$_['text_found'] = 'Найдено файлов: ';
|
||||||
|
$_['text_compressed'] = 'Сжат';
|
||||||
|
$_['text_original'] = 'Оригинал';
|
||||||
|
$_['text_error_process'] = 'Ошибка обработки: ';
|
||||||
|
$_['error_log_empty'] = 'Лог пуст! Сначала запустите процесс.';
|
||||||
|
$_['text_report_header'] = '=== ОТЧЕТ ===';
|
||||||
|
$_['text_total_files'] = 'Всего файлов: ';
|
||||||
|
$_['text_searching'] = 'Поиск файлов...';
|
||||||
|
$_['error_ajax'] = 'Ошибка: ';
|
||||||
|
$_['text_resumed'] = '▶ ПРОЦЕСС ВОЗОБНОВЛЕН...';
|
||||||
|
$_['text_paused'] = '⏸ ПАУЗА. Процесс приостановлен.';
|
||||||
|
$_['confirm_stop'] = 'Вы уверены, что хотите полностью прервать процесс?';
|
||||||
|
$_['confirm_delete'] = 'ВНИМАНИЕ! Файлы будут удалены с сервера навсегда без возможности восстановления! Продолжить?';
|
||||||
|
$_['confirm_empty_q'] = 'Вы уверены, что хотите полностью очистить папку карантина?';
|
||||||
|
$_['confirm_restore'] = 'Все файлы из папки карантина будут возвращены на свои места. Продолжить?';
|
||||||
|
$_['button_stopping'] = 'Остановка...';
|
||||||
|
$_['text_stopped_user'] = '🛑 ПРОЦЕСС ПРЕРВАН ПОЛЬЗОВАТЕЛЕМ!';
|
||||||
|
$_['text_increase'] = 'Увеличение';
|
||||||
|
$_['text_done'] = '✅ ГОТОВО! Процесс завершен.';
|
||||||
|
$_['error_timeout'] = 'Таймаут сервера. Автоповтор через 3 секунды...';
|
||||||
|
$_['text_building_index'] = 'Шаг 1/2: Индексация БД и шаблонов (поиск используемых фото)...';
|
||||||
|
$_['text_comparing'] = 'Шаг 2/2: Сравнение физических файлов с индексом...';
|
||||||
|
$_['text_quarantine_done'] = '✅ Процесс переноса в image/catalog_trash/ завершен!';
|
||||||
|
$_['text_deleted_done'] = '✅ Процесс удаления мусора завершен!';
|
||||||
|
$_['text_quarantine_empty'] = '✅ Папка карантина успешно удалена с сервера!';
|
||||||
|
$_['text_restore_done'] = '✅ Файлы успешно возвращены из карантина в рабочую папку!';
|
||||||
|
$_['text_quarantine_move'] = 'В карантине: ';
|
||||||
|
$_['text_deleted_file'] = 'Удален: ';
|
||||||
|
$_['text_no_trash'] = 'В выбранных папках мусор не найден! Все файлы используются.';
|
||||||
|
$_['text_scanning_dirs'] = 'Сканируем директории: ';
|
||||||
|
$_['text_log_used'] = '[ИСПОЛЬЗУЕТСЯ]';
|
||||||
|
$_['text_log_trash'] = '[МУСОР]';
|
||||||
|
$_['text_log_deleted'] = '[УДАЛЕНО]';
|
||||||
|
$_['text_log_del_err'] = '[ОШИБКА УДАЛЕНИЯ]';
|
||||||
|
$_['text_log_quarantine'] = '[В КАРАНТИН]';
|
||||||
|
$_['text_log_q_err'] = '[ОШИБКА ПЕРЕНОСА]';
|
||||||
|
$_['text_log_restored'] = '[ВОССТАНОВЛЕНО]';
|
||||||
|
$_['text_log_rest_err'] = '[ОШИБКА ВОССТАНОВЛЕНИЯ]';
|
||||||
|
$_['text_used_in'] = 'в: ';
|
||||||
|
$_['text_analyzing'] = 'Анализ базы данных...';
|
||||||
|
$_['text_clean_empty'] = 'Чисто! Мусора нет.';
|
||||||
|
$_['text_processing'] = 'Обработка...';
|
||||||
|
$_['text_restoring'] = 'Восстановление файлов...';
|
||||||
|
$_['text_all_folders'] = 'image/catalog/ (И все вложенные)';
|
||||||
|
$_['text_root_folder'] = 'image/catalog/ (Только корень)';
|
||||||
|
$_['text_q_empty_err'] = 'Папка карантина пуста или не существует.';
|
||||||
|
$_['error_token'] = 'Неверный токен. Перезагрузите страницу.';
|
||||||
|
$_['text_apply_title'] = 'Оптимизация завершена в папку: ';
|
||||||
|
$_['text_apply_info'] = 'Проверьте результат. Если всё устраивает — примените изменения к основному каталогу.';
|
||||||
|
$_['entry_apply_backup'] = 'Перенести с созданием бэкапа (в Карантин)';
|
||||||
|
$_['entry_apply_replace'] = 'Заменить оригиналы безвозвратно';
|
||||||
|
$_['button_apply_main'] = 'ПРИМЕНИТЬ К ОСНОВНОМУ КАТАЛОГУ';
|
||||||
|
$_['button_delete_copies'] = 'Удалить временные копии (отмена)';
|
||||||
|
$_['button_full_cleanup'] = 'Полная очистка всех временных папок и бэкапов';
|
||||||
|
$_['text_apply_success'] = '✅ Файлы успешно перенесены. ';
|
||||||
|
$_['text_apply_backup_ok'] = 'Оригиналы сохранены в папку: ';
|
||||||
|
$_['text_apply_no_backup'] = 'Оригиналы удалены.';
|
||||||
|
$_['text_error_source'] = 'Ошибка: Папка с оптимизированными файлами не найдена.';
|
||||||
|
$_['confirm_full_cleanup'] = 'ВНИМАНИЕ! Это действие безвозвратно удалит ВСЕ папки бэкапов (backup_*) и временные папки с копиями. Продолжить?';
|
||||||
|
$_['text_tools_desc'] = 'Глобальные сканеры и инструменты для работы с файловой системой и БД изображений.';
|
||||||
|
$_['text_tool_select'] = 'Выберите инструмент:';
|
||||||
|
$_['text_group_scanners'] = 'Сканеры и Анализ';
|
||||||
|
$_['text_group_generators'] = 'Генераторы и Обработка';
|
||||||
|
$_['text_group_experimental'] = 'Экспериментальные функции (BETA)';
|
||||||
|
$_['text_experimental_warn'] = 'Внимание: Экспериментальные функции затрагивают системные файлы или базу данных. Настоятельно рекомендуется сделать бэкап!';
|
||||||
|
$_['text_tool_broken_db'] = 'Сканер битых/пустых фото БД';
|
||||||
|
$_['text_tool_watermark'] = 'Динамический Вотермарк (Только на кэш)';
|
||||||
|
$_['text_tool_duplicates'] = 'Поиск дубликатов файлов (по MD5)';
|
||||||
|
$_['text_tool_png_jpg'] = 'Конвертер тяжелых PNG в JPG (сканер файлов без прозрачности)';
|
||||||
|
$_['text_tool_placeholders'] = 'Генератор заглушек (Вместо No Image)';
|
||||||
|
$_['text_tool_exif'] = 'Очистка EXIF-данных (Геотеги/Мета)';
|
||||||
|
$_['text_tool_small_photos'] = 'Сканер слишком мелких фото';
|
||||||
|
$_['text_tool_html_broken'] = 'Поиск битых картинок в HTML (Описаниях)';
|
||||||
|
$_['text_tool_empty_folders'] = 'Очистка пустых папок (image/catalog)';
|
||||||
|
$_['text_tool_smart_cache'] = 'Умная очистка кэша изображений';
|
||||||
|
$_['text_tool_folder_tree'] = 'Дерево папок (Статистика веса)';
|
||||||
|
$_['text_tool_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load (Без БД)';
|
||||||
|
$_['text_tool_translit'] = 'Транслитерация названий файлов';
|
||||||
|
$_['text_tool_cache_restore'] = 'Воскрешение оригиналов из Кэша';
|
||||||
|
$_['entry_wm_type'] = 'Тип вотермарка';
|
||||||
|
$_['text_wm_image'] = 'Изображение (PNG)';
|
||||||
|
$_['text_wm_text'] = 'Текст';
|
||||||
|
$_['entry_wm_image_path'] = 'Путь к изображению';
|
||||||
|
$_['entry_wm_text_val'] = 'Текст вотермарка';
|
||||||
|
$_['entry_wm_position'] = 'Позиция (1-9)';
|
||||||
|
$_['entry_wm_opacity'] = 'Прозрачность (0-100)';
|
||||||
|
$_['entry_wm_category'] = 'Только для Категорий';
|
||||||
|
$_['entry_wm_brand'] = 'Только для Брендов';
|
||||||
|
$_['entry_min_width'] = 'Минимальная ширина (px)';
|
||||||
|
$_['entry_min_height'] = 'Минимальная высота (px)';
|
||||||
|
$_['entry_ph_product'] = 'Заглушка для Товаров';
|
||||||
|
$_['entry_ph_category'] = 'Заглушка для Категорий';
|
||||||
|
$_['entry_ph_brand'] = 'Заглушка для Брендов';
|
||||||
|
$_['button_run_tool'] = 'Запустить инструмент';
|
||||||
|
$_['button_scan_tool'] = 'Сканировать';
|
||||||
|
$_['button_fix_tool'] = 'Исправить найденное';
|
||||||
|
$_['text_th_path'] = 'Файл / Путь';
|
||||||
|
$_['text_th_size'] = 'Размер';
|
||||||
|
$_['text_th_action'] = 'Действие';
|
||||||
|
$_['text_th_status'] = 'Статус';
|
||||||
|
$_['text_th_problem'] = 'Проблема / Значение';
|
||||||
|
$_['text_cron_title'] = 'Настройка Cron';
|
||||||
|
$_['text_cron_desc'] = 'Добавьте команду в Cron хостинга для автоматического фонового сжатия.';
|
||||||
|
$_['entry_cron_new_only'] = 'Обрабатывать только новые (необработанные) файлы';
|
||||||
|
$_['entry_cron_folders'] = 'Папки для сканирования (оставьте пустым для всего каталога)';
|
||||||
|
$_['text_promo_title'] = 'Другие модули серии [NAT]';
|
||||||
|
$_['text_promo_desc'] = 'Модули серии [NAT] — это инструменты для глубокой оптимизации OpenCart. Мы фокусируемся на автоматизации рутины, ускорении базы данных и очистке серверов от мусора. Все модули имеют открытый исходный код и единую логику управления.';
|
||||||
|
$_['text_support'] = 'Техническая поддержка и пожелания:';
|
||||||
|
$_['button_more'] = 'Смотреть все модули на OpenCart.com';
|
||||||
|
$_['button_more_forum'] = 'Opencartforum';
|
||||||
|
$_['text_mod_cat_opt'] = 'Catalog Optimizer [NAT]';
|
||||||
|
$_['text_mod_cat_opt_desc'] = 'Скрытие пустых категорий и брендов + SEO сортировка товаров (в наличии сверху) + Очистка мусора БД.';
|
||||||
|
$_['text_mod_new_arrivals'] = 'New Arrivals [NAT]: Новинки по датам';
|
||||||
|
$_['text_mod_new_arrivals_desc'] = 'Автоматическая SEO-страница новинок. Отображает новинки строго по реальной дате добавления. Слайдеры, сетка и умный сайдбар архива дат.';
|
||||||
|
$_['text_mod_img_opt'] = 'Image Optimizer [NAT]';
|
||||||
|
$_['text_mod_img_opt_desc'] = '<strong>Текущий модуль.</strong> Сжатие и ресайз ОРИГИНАЛОВ фото (image/catalog) в WebP + Очистка хостинга от неиспользуемых изображений.';
|
||||||
|
$_['text_mod_dom_scan'] = 'Domain Scanner [NAT]';
|
||||||
|
$_['text_mod_dom_scan_desc'] = 'Поиск и чистка внешних ссылок и HTTP-картинок в БД и шаблонах (для переезда на HTTPS).';
|
||||||
|
$_['text_mod_poll'] = 'Poll Widget [NAT]';
|
||||||
|
$_['text_mod_poll_desc'] = 'Создание опросов и голосований с визуальным конструктором дизайна, глубокой статистикой и защитой от накруток.';
|
||||||
|
$_['text_mod_db_opt'] = 'Database Optimizer [NAT]';
|
||||||
|
$_['text_mod_db_opt_desc'] = 'Интеллектуальная очистка мусора в базе данных, управление системными логами и добавление критически важных индексов для ускорения.';
|
||||||
|
$_['text_mod_im_ex'] = 'Import/Export [NAT]';
|
||||||
|
$_['text_mod_im_ex_desc'] = 'Быстрый импорт/экспорт цен и остатков из файлов xls/xlsx/csv/xml/json или по ссылке. Маппинг полей, работа по Cron, текстовые функции.';
|
||||||
|
$_['text_mod_admin_tools'] = 'Admin Tools [NAT]';
|
||||||
|
$_['text_mod_admin_tools_desc'] = 'Удобные инструменты администратора: вход под клиентом, кастомизация админки, управление правами пользователей и скрытие ненужных пунктов меню.';
|
||||||
|
$_['text_mod_utm_tracker'] = 'Order UTM Tracker [NAT]';
|
||||||
|
$_['text_mod_utm_tracker_desc'] = 'Автоматическое отслеживание UTM-меток при оформлении заказа. Сохраняет источник перехода, кампанию, ключевые слова и выводит эти данные в заказе для аналитики рекламы.';
|
||||||
|
$_['text_info_title_promo_top_bar'] = 'Promo Top Bar [NAT]: Верхний рекламный инфо-баннер, информационная полоса над шапкой, бегущая строка и топ-баннер';
|
||||||
|
$_['text_info_desc_promo_top_bar'] = 'Создание интерактивных промо-панелей и слайд-шоу в шапке сайта с конструктором блоков, таймерами, формой подписки и гибким таргетингом.';
|
||||||
|
$_['text_tool_no_image'] = 'Товары без главного фото (пусто в БД)';
|
||||||
|
$_['text_problem_main_broken'] = 'Битое главное фото (файл удален)';
|
||||||
|
$_['text_problem_add_broken'] = 'Битое доп. фото (файл удален)';
|
||||||
|
$_['text_problem_no_image'] = 'Отсутствует главное фото';
|
||||||
|
$_['text_err_dir'] = 'Ошибка: Директория не найдена или неверный путь.';
|
||||||
|
$_['text_err_no_queue'] = 'Ошибка: Очередь не найдена. Сначала запустите сканирование.';
|
||||||
|
$_['text_log_del_empty_folder'] = 'Удалена пустая папка: ';
|
||||||
|
$_['text_log_no_empty_folders'] = 'Пустых папок в image/catalog/ не найдено.';
|
||||||
|
$_['text_log_total_empty_folders'] = 'Всего удалено пустых папок: ';
|
||||||
|
$_['text_log_cache_cleared'] = 'Кэш изображений успешно очищен.';
|
||||||
|
$_['text_log_wm_smart_mode'] = 'Вотермарки работают в SMART-режиме: оригиналы не трогаются, логотип накладывается только при генерации кэша.';
|
||||||
|
$_['text_log_scan_dupes'] = 'Сканирование image/catalog/ на дубликаты (по хешу MD5)... Это может занять время.';
|
||||||
|
$_['text_log_found_dupe'] = 'Найден дубликат: ';
|
||||||
|
$_['text_log_no_dupes'] = 'Дубликаты не найдены.';
|
||||||
|
$_['text_log_total_dupes'] = 'Найдено дубликатов: %s. Потенциальная экономия: %s';
|
||||||
|
$_['text_log_fix_dupes_prompt'] = 'Нажмите "Исправить найденное" для перелинковки БД на оригинал и удаления дублей.';
|
||||||
|
$_['text_log_fixed_dupe'] = 'Исправлен и удален дубликат: ';
|
||||||
|
$_['text_log_success_dupes'] = 'Успешно исправлено дубликатов: %s. Ссылки в БД обновлены.';
|
||||||
|
$_['text_log_scan_png'] = 'Поиск тяжелых PNG файлов без прозрачности...';
|
||||||
|
$_['text_log_no_png'] = 'Подходящих PNG файлов не найдено.';
|
||||||
|
$_['text_log_total_png'] = 'Найдено PNG без прозрачности: %s. Нажмите "Исправить" для конвертации в JPG.';
|
||||||
|
$_['text_log_converted_jpg'] = 'Сконвертировано в JPG: ';
|
||||||
|
$_['text_log_success_png'] = 'Успешно сконвертировано %s файлов. Освобождено: %s';
|
||||||
|
$_['text_log_ph_prod'] = 'Обновлено товаров заглушкой: ';
|
||||||
|
$_['text_log_ph_cat'] = 'Обновлено категорий заглушкой: ';
|
||||||
|
$_['text_log_ph_brand'] = 'Обновлено брендов заглушкой: ';
|
||||||
|
$_['text_log_ph_empty'] = 'Заглушки не выбраны в настройках.';
|
||||||
|
$_['text_log_scan_exif'] = 'Сканирование EXIF-данных (мета-теги камер)...';
|
||||||
|
$_['text_log_stripped_exif'] = 'Очищен EXIF: ';
|
||||||
|
$_['text_log_no_exif'] = 'Файлов с EXIF для очистки не найдено.';
|
||||||
|
$_['text_log_success_exif'] = 'Очищен EXIF у %s файлов. Освобождено: %s';
|
||||||
|
$_['text_log_scan_small'] = 'Поиск фото размером менее %sx%s px...';
|
||||||
|
$_['text_log_too_small'] = 'Слишком маленькое (%sx%s): ';
|
||||||
|
$_['text_log_no_small'] = 'Мелких фото не найдено.';
|
||||||
|
$_['text_log_total_small'] = 'Найдено мелких фото: %s. Пожалуйста, замените их на качественные.';
|
||||||
|
$_['text_log_html_broken'] = 'Битый IMG в HTML таблицы %s (ID: %s): ';
|
||||||
|
$_['text_log_no_html_broken'] = 'Битых картинок в HTML-описаниях не найдено.';
|
||||||
|
$_['text_log_total_html_broken'] = 'Найдено битых ссылок в HTML: %s. Исправьте их вручную в редакторе.';
|
||||||
|
$_['text_log_scan_smart_cache'] = 'Поиск потерянных файлов в image/cache/...';
|
||||||
|
$_['text_log_del_orph_cache'] = 'Удален потерянный кэш: ';
|
||||||
|
$_['text_log_no_orph_cache'] = 'Потерянного кэша не найдено.';
|
||||||
|
$_['text_log_success_smart_cache'] = 'Удалено файлов потерянного кэша: %s. Освобождено: %s';
|
||||||
|
$_['text_log_scan_translit'] = 'Поиск файлов с кириллицей или пробелами...';
|
||||||
|
$_['text_log_no_bad_names'] = 'Файлов с некорректными именами не найдено.';
|
||||||
|
$_['text_log_total_bad_names'] = 'Найдено файлов с кириллицей/пробелами: %s. Нажмите "Исправить" для транслитерации и обновления БД.';
|
||||||
|
$_['text_log_renamed'] = 'Переименовано: ';
|
||||||
|
$_['text_log_success_translit'] = 'Успешно транслитерировано файлов: %s. БД обновлена.';
|
||||||
|
$_['text_log_scan_restore'] = 'Сканирование image/cache/ для восстановления утерянных оригиналов...';
|
||||||
|
$_['text_log_restored_cache'] = 'Восстановлено из кэша: ';
|
||||||
|
$_['text_log_no_lost_orig'] = 'Отсутствующих оригиналов в кэше не найдено.';
|
||||||
|
$_['text_log_success_restore'] = 'Успешно восстановлено оригиналов из кэша: %s.';
|
||||||
|
$_['error_invalid_folder'] = 'Ошибка: Недопустимое имя папки!';
|
||||||
|
$_['text_formats_title'] = 'Современные форматы (WebP & SVG)';
|
||||||
|
$_['text_formats_desc'] = 'Настройки интеграции современных форматов в файловую систему и шаблоны OpenCart.';
|
||||||
|
$_['entry_support_svg'] = 'Поддержка загрузки SVG';
|
||||||
|
$_['help_support_svg'] = 'Разрешает загрузку векторных SVG-изображений через стандартный Filemanager и их безопасный вывод на витрине без искажений размеров.';
|
||||||
|
$_['entry_support_webp'] = 'Поддержка загрузки WebP';
|
||||||
|
$_['help_support_webp'] = 'Позволяет вручную загружать, подвязывать и выводить на сайте готовые файлы .webp через Filemanager.';
|
||||||
|
$_['entry_truefilemanager_webp'] = 'WebP в TrueFileManager';
|
||||||
|
$_['help_truefilemanager_webp'] = 'Добавляет поддержку загрузки, предпросмотра и эскизов WebP в TrueFileManager от sitecreator (если он установлен).';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Сверхбыстрая подмена: автоматически меняет расширения .jpg/.png на .webp прямо в HTML-выводе витрины и добавляет атрибут loading="lazy". Не трогает базу данных!';
|
||||||
|
$_['help_tool_broken_db'] = 'Ищет в базе данных картинки, физические файлы которых были удалены с сервера. Позволяет очистить битые ссылки.';
|
||||||
|
$_['help_tool_empty_folders'] = 'Рекурсивно сканирует директорию image/catalog/ и безопасно удаляет все папки, в которых нет ни одного файла.';
|
||||||
|
$_['help_tool_folder_tree'] = 'Строит дерево каталогов и показывает реальный вес каждой папки для поиска "пожирателей" места.';
|
||||||
|
$_['help_tool_html_broken'] = 'Сканирует HTML-описания товаров и категорий на наличие тегов <img> с несуществующими картинками.';
|
||||||
|
$_['help_tool_small_photos'] = 'Находит картинки с разрешением ниже заданного (например, меньше 300x300 px). Добавлены ссылки на поиск качественных аналогов в Google Images и Яндекс Картинках.';
|
||||||
|
$_['help_tool_duplicates'] = 'Ищет полные дубликаты файлов по MD5 хешу (разные имена, но одинаковая картинка). Позволяет склеить их в один файл и обновить БД.';
|
||||||
|
$_['help_tool_watermark'] = 'Наложение водяных знаков в SMART-режиме (только на кэш витрины, оригиналы не изменяются).';
|
||||||
|
$_['help_tool_placeholders'] = 'Массово устанавливает выбранную картинку-заглушку для товаров и категорий, у которых вообще нет фото.';
|
||||||
|
$_['help_tool_png_jpg'] = 'Инструмент сканирует папку изображений и находит тяжелые PNG-файлы, которые не имеют прозрачного фона (альфа-канала). Поскольку прозрачность им не нужна, их можно безопасно конвертировать в формат JPG. Это значительно облегчает файлы (в среднем на 70-80%) и ускоряет загрузку сайта, а все ссылки в базе данных автоматически обновляются.';
|
||||||
|
$_['help_tool_exif'] = 'Сканирует JPEG-файлы и удаляет из них скрытые EXIF-данные (геотеги, данные о камере), уменьшая вес на 10-15%.';
|
||||||
|
$_['help_tool_smart_cache'] = 'Ищет в папке image/cache/ кэшированные файлы, оригиналы которых уже удалены из image/catalog/, и стирает этот мусор.';
|
||||||
|
$_['help_tool_translit'] = 'Находит файлы с кириллицей или пробелами в названиях, переименовывает их транслитом (tovar_1.jpg) и обновляет пути в БД.';
|
||||||
|
$_['help_tool_cache_restore'] = 'Если вы случайно удалили оригинал из catalog, инструмент попытается найти его копию в cache и восстановить обратно.';
|
||||||
|
$_['entry_quarantine'] = 'Переместить оригиналы в Карантин (вместо удаления)';
|
||||||
|
$_['entry_backup_db'] = 'Создать бэкап изменяемых таблиц в SQL перед запуском';
|
||||||
|
$_['button_fix_selected'] = 'ИСПРАВИТЬ ВЫБРАННЫЕ';
|
||||||
|
$_['button_export_log'] = 'Экспортировать в CSV';
|
||||||
|
$_['text_th_before'] = 'Состояние ДО';
|
||||||
|
$_['text_th_after'] = 'Ожидаемый результат ПОСЛЕ';
|
||||||
|
$_['text_th_select'] = 'Действие';
|
||||||
|
$_['text_th_preview'] = 'Предпросмотр';
|
||||||
|
$_['text_th_name'] = 'Объект / Файл';
|
||||||
|
$_['text_global_action'] = 'Групповое действие для выбранных:';
|
||||||
|
$_['text_action_clear'] = 'Очистить ссылку в БД';
|
||||||
|
$_['text_action_disable'] = 'Отключить (Статус = 0)';
|
||||||
|
$_['text_action_stock'] = 'Установить "Нет в наличии"';
|
||||||
|
$_['text_action_placeholder'] = 'Установить заглушку';
|
||||||
|
$_['text_action_ignore'] = 'Ничего не делать';
|
||||||
|
$_['text_action_merge'] = 'Склеить (удалить дубликат, оставить оригинал)';
|
||||||
|
$_['text_action_convert'] = 'Конвертировать в JPG';
|
||||||
|
$_['text_action_rename'] = 'Переименовать транслитом';
|
||||||
|
$_['text_action_delete'] = 'Удалить';
|
||||||
|
$_['text_action_restore'] = 'Восстановить';
|
||||||
|
$_['text_db_backup_created'] = 'Создан бэкап БД: %s';
|
||||||
|
$_['text_quarantine_created'] = 'Перенесено в карантин: %s';
|
||||||
|
$_['text_fix_status_success'] = 'Успешно выполнено';
|
||||||
|
$_['text_fix_status_error'] = 'Ошибка: %s';
|
||||||
|
$_['text_log_exported'] = 'Лог успешно экспортирован!';
|
||||||
|
$_['text_select_action'] = '-- Выберите действие --';
|
||||||
|
$_['error_empty_selection'] = 'Ошибка: Не выбрано ни одной строки для исправления!';
|
||||||
|
$_['text_link_admin'] = 'Админка';
|
||||||
|
$_['text_link_catalog'] = 'Витрина';
|
||||||
|
$_['entry_threads'] = 'Потоков обработки';
|
||||||
|
$_['text_threads_optimal'] = 'оптимально';
|
||||||
|
$_['button_download_zip'] = 'Скачать ZIP-архив и удалить папку';
|
||||||
|
$_['confirm_download_and_delete'] = 'Архив успешно скачался? Можно удалить временную папку копий на сервере?';
|
||||||
|
$_['button_clear_backups'] = 'Удалить бэкапы БД';
|
||||||
|
$_['button_clear_backups_short'] = 'Очистить бэкапы';
|
||||||
|
$_['confirm_clear_backups'] = 'Вы уверены, что хотите полностью удалить все SQL-бэкапы таблиц?';
|
||||||
|
$_['text_compare_title'] = 'Сравнение изображений ДО / ПОСЛЕ';
|
||||||
|
$_['text_compare_before'] = 'ДО';
|
||||||
|
$_['text_compare_after'] = 'ПОСЛЕ';
|
||||||
|
$_['text_backups_cleared'] = 'Все SQL-бэкапы таблиц успешно удалены!';
|
||||||
|
$_['error_no_backups'] = 'Бэкапы не найдены или папка пуста.';
|
||||||
|
$_['button_restore'] = 'Вернуть';
|
||||||
|
$_['button_empty'] = 'Очистить';
|
||||||
|
$_['entry_wm_targets'] = 'Применять водяной знак к:';
|
||||||
|
$_['text_wm_target_product'] = 'Фото товаров';
|
||||||
|
$_['text_wm_target_category'] = 'Фото категорий';
|
||||||
|
$_['text_wm_target_brand'] = 'Логотипы брендов';
|
||||||
|
$_['text_wm_target_banner'] = 'Баннеры и слайды';
|
||||||
|
$_['text_wm_target_blog'] = 'Статьи / Блог';
|
||||||
|
$_['error_no_scan_data'] = 'Ошибка: Данные сканирования не найдены. Сначала запустите сканирование!';
|
||||||
|
$_['error_row_not_found'] = 'Ошибка: Объект не найден в результатах сканирования!';
|
||||||
|
$_['error_file_not_found'] = 'Ошибка: Файл не найден на сервере!';
|
||||||
|
$_['text_folder_rules_title'] = 'Индивидуальные правила сжатия для папок';
|
||||||
|
$_['text_folder_rules_desc'] = 'Вы можете переопределить качество и максимальные размеры для конкретных папок. Если оставить поле пустым, будет использоваться глобальная настройка. Путь указывается относительно папки image (например, catalog/banners/).';
|
||||||
|
$_['entry_folder_path'] = 'Путь к папке';
|
||||||
|
$_['entry_jpg_quality'] = 'Качество JPG';
|
||||||
|
$_['entry_webp_quality'] = 'Качество WebP';
|
||||||
|
$_['button_add_rule'] = 'Добавить правило';
|
||||||
|
$_['button_remove'] = 'Удалить';
|
||||||
|
$_['entry_wm_angle'] = 'Угол наклона водяного знака (градусы)';
|
||||||
|
$_['entry_wm_corner_radius'] = 'Скругление углов водяного знака (px)';
|
||||||
|
$_['entry_wm_size_type'] = 'Масштабирование водяного знака';
|
||||||
|
$_['entry_wm_size_percent'] = 'Размер водяного знака (% от ширины изображения)';
|
||||||
|
$_['entry_wm_text_color'] = 'Цвет текста водяного знака';
|
||||||
|
$_['entry_wm_text_font'] = 'Шрифт водяного знака (TTF)';
|
||||||
|
$_['entry_wm_filter_mode'] = 'Режим фильтрации Категорий/Брендов';
|
||||||
|
$_['text_wm_filter_include'] = 'Только для выбранных';
|
||||||
|
$_['text_wm_filter_exclude'] = 'Для всех, кроме выбранных';
|
||||||
|
$_['text_wm_size_original'] = 'Оригинальный размер';
|
||||||
|
$_['text_wm_size_percent'] = 'Пропорционально ширине изображения (%)';
|
||||||
|
$_['button_preview_watermark'] = 'Предпросмотр водяного знака';
|
||||||
|
$_['text_wm_preview_title'] = 'Предпросмотр водяного знака';
|
||||||
|
$_['text_cron_exclude_folders'] = 'Исключить папки из сканирования';
|
||||||
|
$_['text_cron_entities'] = 'Какие типы фото обрабатывать?';
|
||||||
|
$_['text_cron_quality_override'] = 'Переопределить параметры сжатия для Крона';
|
||||||
|
$_['text_cron_recommendations'] = 'Рекомендации по расписанию запуска Cron';
|
||||||
|
$_['text_cron_recommendations_desc'] = '<ul><li><b>Для небольших сайтов (до 5000 товаров)</b> рекомендуется запускать Крон каждый час (<code>0 * * * *</code>).</li><li><b>Для средних сайтов (5000-20000 товаров)</b> рекомендуется запускать раз в 3-6 часов (<code>0 */6 * * *</code>).</li><li><b>Для крупных сайтов (более 20000 товаров)</b> — один раз в сутки ночью (например, в 2:00: <code>0 2 * * *</code>).</li></ul>';
|
||||||
|
$_['text_tool_broken_files'] = 'Сканер битых/пустых файлов на сервере';
|
||||||
|
$_['help_tool_broken_files'] = 'Сканирует физические файлы в папке image/catalog/ на наличие поврежденных изображений или пустых файлов размером 0 байт.';
|
||||||
|
$_['text_grid_broken_file'] = 'Битый или пустой файл на сервере';
|
||||||
|
$_['text_grid_broken_file_after'] = 'Удаление или замена заглушкой';
|
||||||
|
$_['text_description_broken_files'] = 'Результаты сканирования физических файлов в папке image/catalog/. Здесь отображаются битые (поврежденные) изображения или файлы размером 0 байт.';
|
||||||
|
$_['text_action_strip'] = 'Очистить EXIF';
|
||||||
|
$_['text_action_set_placeholder'] = 'Установить заглушку';
|
||||||
|
$_['text_th_entity'] = 'Объект / Связанные ссылки';
|
||||||
|
$_['text_cron_entity_product'] = 'Товары';
|
||||||
|
$_['text_cron_entity_category'] = 'Категории';
|
||||||
|
$_['text_cron_entity_manufacturer'] = 'Производители / Бренды';
|
||||||
|
$_['text_cron_entity_banner'] = 'Баннеры';
|
||||||
|
$_['text_cron_entity_blog'] = 'Блог / Статьи';
|
||||||
|
$_['entry_cron_jpg_quality'] = 'Качество JPG (Крон)';
|
||||||
|
$_['entry_cron_webp_quality'] = 'Качество WebP (Крон)';
|
||||||
|
$_['entry_cron_max_width'] = 'Макс. ширина px (Крон)';
|
||||||
|
$_['entry_cron_max_height'] = 'Макс. высота px (Крон)';
|
||||||
|
$_['text_cron_folder_scan'] = 'Папки для сканирования';
|
||||||
|
$_['text_no_fonts'] = 'TTF-шрифты не найдены в system/library/font/';
|
||||||
|
$_['button_apply'] = 'Применить';
|
||||||
|
$_['text_backup_will_be_created'] = 'Резервная копия базы данных будет автоматически создана перед выполнением этого действия.';
|
||||||
|
$_['text_bulk_action'] = 'Групповое действие для выбранных';
|
||||||
|
$_['text_grid_results'] = 'Результаты и детали сканирования';
|
||||||
|
$_['text_quarantine_will_be_created'] = 'Оригинальные файлы будут перемещены в карантин (image/catalog_trash/) перед изменением.';
|
||||||
|
$_['text_success_apply'] = 'Изменения успешно применены!';
|
||||||
|
$_['text_description_broken'] = 'Результаты сканирования базы данных на наличие битых ссылок (записи в таблицах с несуществующими файлами).';
|
||||||
|
$_['text_description_cache_restore'] = 'Результаты поиска файлов в кэше, оригиналы которых отсутствуют в каталоге.';
|
||||||
|
$_['text_description_duplicates'] = 'Результаты поиска полных дубликатов изображений по MD5-хешу.';
|
||||||
|
$_['text_description_empty_folders'] = 'Список пустых папок в директории image/catalog/ для удаления.';
|
||||||
|
$_['text_description_exif'] = 'Результаты поиска изображений с метаданными EXIF, которые можно очистить.';
|
||||||
|
$_['text_description_folder_tree'] = 'Статистика размера папок в каталоге image/catalog/.';
|
||||||
|
$_['text_description_html_broken'] = 'Результаты поиска несуществующих файлов картинок, на которые ссылаются описания в HTML.';
|
||||||
|
$_['text_description_placeholders'] = 'Результаты поиска сущностей без изображений для заполнения заглушками.';
|
||||||
|
$_['text_description_png_jpg'] = 'Результаты поиска тяжелых изображений PNG без прозрачности, которые можно пережать в JPG.';
|
||||||
|
$_['text_description_small_photos'] = 'Список изображений, размеры которых меньше минимально заданных (%sx%s px).';
|
||||||
|
$_['text_description_smart_cache'] = 'Результаты поиска файлов кэша, оригиналы которых уже были удалены.';
|
||||||
|
$_['text_description_translit'] = 'Результаты поиска файлов с кириллицей или пробелами в названиях.';
|
||||||
|
$_['text_grid_broken_db_after'] = 'Очистить ссылку или установить заглушку';
|
||||||
|
$_['text_grid_dupe_after'] = 'Оригинал (остаётся)';
|
||||||
|
$_['text_grid_dupe_before'] = 'Дубликат (будет удалён)';
|
||||||
|
$_['text_grid_empty_folder'] = 'Пустая папка';
|
||||||
|
$_['text_grid_empty_folder_after'] = 'Удалить пустую папку';
|
||||||
|
$_['text_grid_exif_after'] = 'Очистить метаданные';
|
||||||
|
$_['text_grid_exif_before'] = 'Содержит EXIF';
|
||||||
|
$_['text_grid_html_after'] = 'Исправить ссылку вручную';
|
||||||
|
$_['text_grid_missing_file'] = 'Файл отсутствует';
|
||||||
|
$_['text_grid_missing_html'] = 'Картинка не найдена в описании';
|
||||||
|
$_['text_grid_missing_orig'] = 'Оригинал отсутствует';
|
||||||
|
$_['text_grid_missing_orig_after'] = 'Восстановить оригинал из кэша';
|
||||||
|
$_['text_grid_no_image'] = 'Нет изображения (пусто)';
|
||||||
|
$_['text_grid_orph_cache'] = 'Осиротевший кэш';
|
||||||
|
$_['text_grid_orph_cache_after'] = 'Удалить ненужный кэш';
|
||||||
|
$_['text_grid_ph_brand_after'] = 'Установить заглушку бренда';
|
||||||
|
$_['text_grid_ph_category_after'] = 'Установить заглушку категории';
|
||||||
|
$_['text_grid_ph_product_after'] = 'Установить заглушку товара';
|
||||||
|
$_['text_grid_small_photo_after'] = 'Рекомендуется заменить на более крупное';
|
||||||
|
$_['text_grid_too_small'] = 'Слишком маленькое';
|
||||||
|
$_['text_no_relations'] = 'Нет связей в БД';
|
||||||
|
$_['text_action_archive'] = 'Архивировать (в ZIP)';
|
||||||
|
$_['text_action_archive_delete'] = 'Архивировать + Удалить';
|
||||||
|
$_['text_tool_sanitizer'] = 'Санитайзер имен файлов';
|
||||||
|
$_['help_tool_sanitizer'] = 'Массовая очистка имен файлов и папок от кириллицы, пробелов и спецсимволов, приведение расширений к единому виду.';
|
||||||
|
$_['text_description_sanitizer'] = 'Результаты анализа имен файлов для санитаризации по выбранным правилам.';
|
||||||
|
$_['entry_sz_translit'] = 'Транслитерация (кириллица в латиницу)';
|
||||||
|
$_['entry_sz_spaces'] = 'Заменять пробелы на символ "_"';
|
||||||
|
$_['entry_sz_special'] = 'Удалять специальные символы';
|
||||||
|
$_['entry_sz_lowercase_name'] = 'Имя файла в нижний регистр';
|
||||||
|
$_['entry_sz_lowercase_ext'] = 'Расширение в нижний регистр';
|
||||||
|
$_['entry_sz_normalize_ext'] = 'Нормализовать расширения (jpeg -> jpg)';
|
||||||
|
$_['entry_cron_folder_mode'] = 'Режим фильтрации папок';
|
||||||
|
$_['text_cron_folder_mode_exclude'] = 'Сканировать все, кроме выбранных (Исключения)';
|
||||||
|
$_['text_cron_folder_mode_include'] = 'Сканировать только выбранные папки';
|
||||||
|
$_['button_select_all'] = 'Выбрать все';
|
||||||
|
$_['button_deselect_all'] = 'Снять все';
|
||||||
|
$_['entry_wm_upload_font'] = 'Загрузить свой шрифт TTF';
|
||||||
|
$_['button_upload_font'] = 'Загрузить шрифт';
|
||||||
|
$_['text_success_font_upload'] = 'Шрифт успешно загружен!';
|
||||||
|
$_['error_font_upload'] = 'Ошибка загрузки шрифта! Разрешены только файлы .ttf весом до 5 МБ.';
|
||||||
|
$_['entry_lazy_load'] = 'Прогрессивная ленивая загрузка';
|
||||||
|
$_['help_lazy_load'] = 'Включает премиальную прогрессивную отложенную загрузку на витрине. Изображения заменяются микро-превью и плавно размываются (blur-up), подгружаясь по мере прокрутки.';
|
||||||
|
$_['confirm_replace_mode'] = 'ВНИМАНИЕ! Вы выбрали режим «Заменять оригиналы». Все изображения будут перезаписаны прямо на сервере. Настоятельно рекомендуем сделать резервную копию. Вы уверены, что хотите продолжить?';
|
||||||
|
$_['text_compare'] = 'Сравнить';
|
||||||
|
$_['text_home'] = 'Главная';
|
||||||
|
$_['text_tech_gd'] = 'Библиотека GD';
|
||||||
|
$_['text_tech_imagick'] = 'Imagick';
|
||||||
|
$_['text_tech_webp'] = 'Поддержка WebP';
|
||||||
|
$_['text_position_1'] = '1 - Слева вверху';
|
||||||
|
$_['text_position_2'] = '2 - По центру вверху';
|
||||||
|
$_['text_position_3'] = '3 - Справа вверху';
|
||||||
|
$_['text_position_4'] = '4 - Слева посередине';
|
||||||
|
$_['text_position_5'] = '5 - По центру';
|
||||||
|
$_['text_position_6'] = '6 - Справа посередине';
|
||||||
|
$_['text_position_7'] = '7 - Слева внизу';
|
||||||
|
$_['text_position_8'] = '8 - По центру внизу';
|
||||||
|
$_['text_position_9'] = '9 - Справа внизу';
|
||||||
|
|
||||||
|
$_['entry_log_level'] = 'Уровень лога';
|
||||||
|
$_['text_log_changed_only'] = 'Только изменённые';
|
||||||
|
$_['text_log_all'] = 'Все файлы (подробно)';
|
||||||
|
$_['text_skipped_no_gain'] = 'Пропущен (нет улучшения)';
|
||||||
|
$_['text_reset_cache_hint'] = 'Сбросить кэш оптимизации (полный пересканирование)';
|
||||||
|
$_['confirm_reset_cache'] = 'Сбросить кэш оптимизации? Следующее сканирование проверит ВСЕ файлы заново.';
|
||||||
|
$_['text_cache_cleared'] = 'Кэш оптимизации очищен. Следующее сканирование проверит все файлы.';
|
||||||
|
$_['error_wm_preview'] = 'Ошибка генерации превью водяного знака.';
|
||||||
|
$_['error_wm_too_large'] = 'Изображение водяного знака слишком большое (%dx%d px)! Максимально допустимый размер: %dx%d px.';
|
||||||
|
$_['text_apply_errors_warning'] = 'ВНИМАНИЕ: Некоторые файлы не удалось заменить (заблокированы или нет прав):';
|
||||||
|
$_['text_action_compress'] = 'Сжать изображения';
|
||||||
|
$_['text_estimated'] = 'Прогноз';
|
||||||
|
$_['entry_min_savings_bytes'] = 'Мин. сжатие (байт)';
|
||||||
|
$_['entry_min_savings_percent'] = 'Мин. сжатие (%)';
|
||||||
|
$_['text_optimized'] = 'Оптимизировано';
|
||||||
|
$_['entry_broken_fallback'] = 'Заглушка для битых фото';
|
||||||
|
$_['help_broken_fallback'] = 'Автоматически заменяет отсутствующие или поврежденные изображения каталога на витрине на изображение-заглушку.';
|
||||||
|
$_['entry_fallback_image'] = 'Изображение-заглушка';
|
||||||
|
$_['help_fallback_image'] = 'Выберите изображение, которое будет показано, если оригинальный файл картинки товара или категории отсутствует. По умолчанию используется no_image.png.';
|
||||||
|
$_['text_tool_cmyk'] = 'Конвертер CMYK в RGB';
|
||||||
|
$_['help_tool_cmyk'] = 'Конвертация JPEG изображений из цветового профиля CMYK в sRGB для корректного отображения в браузерах Safari и на устройствах iOS.';
|
||||||
|
$_['text_tool_heavy_files'] = 'Поиск тяжелых файлов';
|
||||||
|
$_['help_tool_heavy_files'] = 'Поиск самых тяжелых оригинальных изображений в каталоге с возможностью их быстрого сжатия прямо здесь.';
|
||||||
|
$_['entry_heavy_files_limit'] = 'Макс. количество найденных файлов (всего)';
|
||||||
|
$_['text_action_convert_rgb'] = 'Конвертировать в RGB';
|
||||||
|
$_['text_description_cmyk'] = 'Найдены файлы в цветовом пространстве CMYK. Конвертация в sRGB гарантирует корректное отображение на всех платформах, включая iOS/macOS.';
|
||||||
|
$_['text_description_heavy'] = 'Список из %d самых тяжелых файлов в каталоге изображений. Вы можете оптимизировать их прямо здесь.';
|
||||||
|
$_['text_cron_folder_hint_exclude_all'] = 'Статус: Будут сканироваться все папки (исключения не выбраны).';
|
||||||
|
$_['text_cron_folder_hint_exclude_some'] = 'Статус: Будут сканироваться все папки, КРОМЕ %d отмеченных.';
|
||||||
|
$_['text_cron_folder_hint_include_some'] = 'Статус: Будут сканироваться только %d отмеченных папок.';
|
||||||
|
$_['text_cron_folder_hint_include_none'] = 'ВНИМАНИЕ: Ни одна папка не выбрана! Крон ничего не будет сканировать.';
|
||||||
|
$_['text_action_apply_changes'] = 'Применить указанные изменения';
|
||||||
|
$_['entry_wm_status'] = 'Статус водяного знака';
|
||||||
|
$_['text_disabled'] = 'Отключено';
|
||||||
|
$_['entry_rule_name'] = 'Название правила';
|
||||||
|
$_['entry_rule_status'] = 'Статус правила';
|
||||||
|
$_['entry_action'] = 'Действие';
|
||||||
|
$_['entry_ph_status'] = 'Статус заглушек';
|
||||||
|
$_['entry_sanitizer_limit'] = 'Макс. файлов для поиска (лимит)';
|
||||||
|
$_['entry_heavy_files_min_size'] = 'Минимальный размер';
|
||||||
|
$_['entry_png_jpg_limit'] = 'Макс. файлов для поиска (лимит)';
|
||||||
|
$_['entry_png_jpg_min_size'] = 'Минимальный размер';
|
||||||
|
$_['text_wm_rule_title'] = 'Правило водяного знака';
|
||||||
|
$_['button_close'] = 'Закрыть';
|
||||||
|
$_['text_ph_rule_title'] = 'Правило заглушки';
|
||||||
|
$_['entry_ph_image'] = 'Изображение заглушки';
|
||||||
|
$_['button_clear_cache_wm'] = 'Очистить кэш (применить водяной знак)';
|
||||||
|
$_['text_active'] = 'Активна';
|
||||||
|
$_['text_error'] = 'Не активна';
|
||||||
|
$_['text_th_dupe_delete'] = 'Файл для удаления (Дубликат)';
|
||||||
|
$_['text_th_dupe_keep'] = 'Файл для сохранения (Оригинал)';
|
||||||
|
$_['text_dupe_original_label'] = 'Оригинал';
|
||||||
|
$_['text_dupe_duplicate_label'] = 'Дубликат';
|
||||||
|
|
||||||
|
$_['text_disk_usage'] = 'Использование диска';
|
||||||
|
$_['text_cumulative_stats'] = 'Статистика оптимизации';
|
||||||
|
$_['text_disk_catalog'] = 'Каталог изображений';
|
||||||
|
$_['text_disk_cache'] = 'Кэш OC';
|
||||||
|
$_['text_disk_trash'] = 'Корзина модуля';
|
||||||
|
$_['text_disk_other'] = 'Прочее';
|
||||||
|
$_['text_disk_free'] = 'Свободно';
|
||||||
|
$_['text_total_files_opt'] = 'Файлов обработано';
|
||||||
|
$_['text_total_saved'] = 'Всего сэкономлено';
|
||||||
|
$_['text_avg_saving_pct'] = 'Средняя экономия';
|
||||||
|
$_['text_stats_hint'] = 'Статистика хранится в БД сайта (учитывает Оптимизацию, Очистку, Инструменты и Крон)';
|
||||||
|
$_['text_reset_stats'] = 'Сбросить статистику';
|
||||||
|
$_['text_reset_stats_confirm']= 'Вы уверены, что хотите сбросить всю статистику из БД?';
|
||||||
|
$_['text_export_import'] = 'Экспорт / Импорт настроек';
|
||||||
|
$_['button_export_settings'] = 'Экспорт настроек (JSON)';
|
||||||
|
$_['button_import_settings'] = 'Импортировать настройки';
|
||||||
|
$_['help_export_settings'] = 'Скачать все настройки модуля в JSON-файл';
|
||||||
|
$_['help_import_settings'] = 'Загрузить ранее экспортированный JSON для восстановления настроек';
|
||||||
|
$_['text_import_success'] = 'Настройки успешно импортированы. Перезагрузите страницу для применения.';
|
||||||
|
$_['error_import_file'] = 'Файл не загружен или ошибка загрузки';
|
||||||
|
$_['error_import_invalid'] = 'Некорректный файл настроек (неверный модуль или формат)';
|
||||||
|
$_['text_click_to_load'] = 'Нажмите ↑ для загрузки данных диска';
|
||||||
|
$_['tab_formats'] = 'Форматы изображений';
|
||||||
|
|
||||||
|
$_['text_disk_quota_legend'] = 'Лимиты диска хостинга (вручную)';
|
||||||
|
$_['text_disk_quota_desc'] = 'Если график дискового пространства показывает неверные данные (физический диск сервера вместо лимита вашего хостинга), вы можете указать лимиты вашего тарифа вручную. Укажите 0, чтобы использовать автоопределение.';
|
||||||
|
$_['entry_disk_quota_total'] = 'Выделено диска на хостинге (ГБ)';
|
||||||
|
$_['entry_disk_quota_used'] = 'Занято диска на хостинге всего (ГБ)';
|
||||||
|
$_['entry_auto_disk'] = 'Автообновление при входе';
|
||||||
|
|
||||||
|
$_['entry_cron_task_name'] = 'Название задачи';
|
||||||
|
$_['entry_cron_task_summary'] = 'Параметры сжатия';
|
||||||
|
$_['button_add_cron_task'] = 'Добавить задачу';
|
||||||
|
$_['button_copy_cron_url'] = 'Копировать URL';
|
||||||
|
$_['text_cron_recommended_url'] = 'URL для запуска задачи крона:';
|
||||||
|
$_['entry_cron_batch_limit'] = 'Лимит пакета за один запуск Крона (файлов)';
|
||||||
|
$_['help_cron_batch_limit'] = 'Максимальное количество файлов, обрабатываемых за один запуск Крона. По умолчанию 100. Рекомендуется от 50 до 300 для предотвращения таймаута выполнения на хостинге.';
|
||||||
|
|
||||||
|
$_['text_license_required'] = 'Требуется лицензионный ключ';
|
||||||
|
$_['text_license_required_desc'] = 'Пожалуйста, введите лицензионный ключ для активации модуля. Все функции настроек и оптимизации заблокированы до ввода валидного ключа.';
|
||||||
|
$_['entry_token_desc'] = 'Введите токен активации, выданный для вашего основного домена. Вы можете получить его в личном кабинете на форуме или обратившись в поддержку.';
|
||||||
|
$_['button_activate'] = 'Активировать модуль';
|
||||||
|
$_['text_support'] = 'Техническая поддержка';
|
||||||
|
$_['text_support_desc'] = 'Если у вас ещё нет ключа или возникли проблемы, пожалуйста, сообщите номер вашего заказа и домен.';
|
||||||
|
|
||||||
|
$_['entry_wm_max_width'] = 'Макс. ширина водяного знака (px)';
|
||||||
|
$_['entry_wm_max_height'] = 'Макс. высота водяного знака (px)';
|
||||||
|
$_['help_wm_max_width'] = 'Если исходное изображение водяного знака превышает эту ширину, оно будет автоматически масштабировано. Укажите 0 или оставьте пустым для значения по умолчанию (800px).';
|
||||||
|
$_['help_wm_max_height'] = 'Если исходное изображение водяного знака превышает эту высоту, оно будет автоматически масштабировано. Укажите 0 или оставьте пустым для значения по умолчанию (800px).';
|
||||||
|
$_['entry_disk_status'] = 'Включить сканирование диска и график';
|
||||||
|
$_['help_disk_status'] = 'Если включено, модуль будет периодически сканировать объем папки картинок и отображать круговую диаграмму. Рекомендуется выключить на больших сайтах для ускорения загрузки панели.';
|
||||||
|
$_['text_disk_settings_title'] = 'Настройка лимитов и сканирования диска';
|
||||||
|
|
||||||
|
$_['button_online_instruction'] = 'Инструкция к модулю (Онлайн)';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,567 @@
|
||||||
|
<?php
|
||||||
|
$_['heading_title_raw'] = 'Image Optimizer [NAT]: Сжатие оригиналов и удаление мусора';
|
||||||
|
$_['heading_title'] = '<b>Image Optimizer [NAT]:</b> Сжатие оригиналов и удаление мусора';
|
||||||
|
$_['text_extension'] = 'Расширения';
|
||||||
|
$_['text_edit'] = 'Настройки модуля';
|
||||||
|
$_['text_success'] = 'Настройки успешно сохранены!';
|
||||||
|
$_['entry_warning'] = 'ВНИМАНИЕ: Обязательно сделайте бэкап файлов сайта и особенно папки /image/catalog перед началом работы!';
|
||||||
|
$_['text_tech'] = 'Проверка технологий сервера:';
|
||||||
|
$_['text_author'] = 'Техническая поддержка и пожелания: <a href="mailto:info@nat.od.ua">info@nat.od.ua</a>';
|
||||||
|
$_['tab_optimize'] = 'Оптимизация и Ресайз';
|
||||||
|
$_['tab_cleaner'] = 'Очистка неиспользуемых изображений';
|
||||||
|
$_['tab_info'] = 'Инфо / Экосистема [NAT]';
|
||||||
|
$_['tab_settings'] = 'Настройки';
|
||||||
|
$_['tab_tools'] = 'Инструменты (pro)';
|
||||||
|
$_['tab_cron'] = 'Крон-задачи';
|
||||||
|
$_['entry_mode'] = 'Режим работы';
|
||||||
|
$_['text_copy'] = 'Создать копию (безопасно)';
|
||||||
|
$_['text_replace'] = 'Заменять оригиналы (требует бэкап!)';
|
||||||
|
$_['entry_folder'] = 'Имя папки для копии';
|
||||||
|
$_['entry_batch'] = 'Файлов за проход';
|
||||||
|
$_['entry_log_limit'] = 'Строк лога на экране';
|
||||||
|
$_['entry_max_width'] = 'Макс. ширина (px) [0 - без лимита]';
|
||||||
|
$_['entry_max_height'] = 'Макс. высота (px) [0 - без лимита]';
|
||||||
|
$_['entry_jpg'] = 'Качество JPG (0-100)';
|
||||||
|
$_['entry_png'] = 'Сжатие PNG (0-9)';
|
||||||
|
$_['entry_webp'] = 'Качество WebP (0-100)';
|
||||||
|
$_['entry_targets'] = 'Что оптимизировать?';
|
||||||
|
$_['text_all_catalog'] = '[ Весь каталог image/catalog ]';
|
||||||
|
$_['text_root_files'] = 'Файлы только в корне image/catalog';
|
||||||
|
$_['entry_threshold'] = 'Порог замены (%)';
|
||||||
|
$_['help_threshold'] = '0: заменять только если вес стал меньше. 10: разрешить увеличение веса до 10%.';
|
||||||
|
$_['entry_token'] = 'Токен активации (на корень домена)';
|
||||||
|
$_['entry_status'] = 'Статус модуля';
|
||||||
|
$_['entry_menu_position'] = 'Позиция меню [NAT]';
|
||||||
|
$_['text_menu_module_only'] = 'Только в модулях';
|
||||||
|
$_['text_menu_header'] = 'В шапке (Header)';
|
||||||
|
$_['text_menu_sidebar'] = 'В боковом меню (Sidebar)';
|
||||||
|
$_['text_menu_both'] = 'Везде (Шапка + Сайдбар)';
|
||||||
|
$_['text_status_on'] = 'Включено';
|
||||||
|
$_['text_status_off'] = 'Отключено';
|
||||||
|
$_['entry_engine'] = 'Движок обработки изображений';
|
||||||
|
$_['text_engine_gd'] = 'GD (Стандарт)';
|
||||||
|
$_['text_engine_imagick'] = 'Imagick (Высокое качество, сохранение профилей sRGB)';
|
||||||
|
$_['entry_license'] = 'Лицензия';
|
||||||
|
$_['text_cleaner_info'] = 'Этот инструмент ищет файлы, которые физически существуют на диске, но нигде не используются в базе данных или файлах шаблона.';
|
||||||
|
$_['entry_clean_targets'] = 'В каких папках искать мусор?';
|
||||||
|
$_['entry_extended_log'] = 'Расширенный лог (показать используемые фото и где они найдены)';
|
||||||
|
$_['entry_process_broken'] = 'Учитывать файлы с битой кодировкой (имена с символом "?")';
|
||||||
|
$_['button_scan_trash'] = 'НАЙТИ МУСОР';
|
||||||
|
$_['button_quarantine'] = 'В Карантин (Безопасно)';
|
||||||
|
$_['button_delete_trash'] = 'Удалить навсегда';
|
||||||
|
$_['button_empty_quarantine'] = 'Очистить папку Карантина';
|
||||||
|
$_['button_restore_quarantine'] = 'Вернуть из Карантина';
|
||||||
|
$_['text_scan_result'] = 'Результаты сканирования';
|
||||||
|
$_['text_trash_files'] = 'Мусорных файлов: ';
|
||||||
|
$_['text_trash_size'] = 'Потенциально освободится: ';
|
||||||
|
$_['button_start'] = 'СТАРТ ОПТИМИЗАЦИИ';
|
||||||
|
$_['button_pause'] = 'ПАУЗА';
|
||||||
|
$_['button_stop'] = 'ОСТАНОВИТЬ';
|
||||||
|
$_['button_continue'] = 'ПРОДОЛЖИТЬ';
|
||||||
|
$_['button_start_new'] = 'СТАРТ (Новый запуск)';
|
||||||
|
$_['button_download_log'] = 'Скачать лог в TXT';
|
||||||
|
$_['button_download'] = 'Скачать';
|
||||||
|
$_['button_save'] = 'Сохранить';
|
||||||
|
$_['button_cancel'] = 'Отмена';
|
||||||
|
$_['text_progress'] = 'Прогресс:';
|
||||||
|
$_['text_old_size'] = 'Было:';
|
||||||
|
$_['text_new_size'] = 'Стало:';
|
||||||
|
$_['text_savings'] = 'Экономия:';
|
||||||
|
$_['text_detailed_log'] = 'Детальный лог';
|
||||||
|
$_['text_page'] = 'Стр.';
|
||||||
|
$_['text_waiting'] = 'Ожидание запуска...';
|
||||||
|
$_['text_enabled'] = 'Включено';
|
||||||
|
$_['text_disabled_error'] = 'Выключено (ОШИБКА)';
|
||||||
|
$_['text_supported'] = 'Поддерживается';
|
||||||
|
$_['text_no'] = 'Нет';
|
||||||
|
$_['error_permission'] = 'У вас нет прав для управления модулем!';
|
||||||
|
$_['error_license'] = 'Ошибка доступа: Неверный токен активации для этого домена!';
|
||||||
|
$_['error_domain'] = ' (Домен: ';
|
||||||
|
$_['text_found'] = 'Найдено файлов: ';
|
||||||
|
$_['text_compressed'] = 'Сжат';
|
||||||
|
$_['text_original'] = 'Оригинал';
|
||||||
|
$_['text_error_process'] = 'Ошибка обработки: ';
|
||||||
|
$_['error_log_empty'] = 'Лог пуст! Сначала запустите процесс.';
|
||||||
|
$_['text_report_header'] = '=== ОТЧЕТ ===';
|
||||||
|
$_['text_total_files'] = 'Всего файлов: ';
|
||||||
|
$_['text_searching'] = 'Поиск файлов...';
|
||||||
|
$_['error_ajax'] = 'Ошибка: ';
|
||||||
|
$_['text_resumed'] = '▶ ПРОЦЕСС ВОЗОБНОВЛЕН...';
|
||||||
|
$_['text_paused'] = '⏸ ПАУЗА. Процесс приостановлен.';
|
||||||
|
$_['confirm_stop'] = 'Вы уверены, что хотите полностью прервать процесс?';
|
||||||
|
$_['confirm_delete'] = 'ВНИМАНИЕ! Файлы будут удалены с сервера навсегда без возможности восстановления! Продолжить?';
|
||||||
|
$_['confirm_empty_q'] = 'Вы уверены, что хотите полностью очистить папку карантина?';
|
||||||
|
$_['confirm_restore'] = 'Все файлы из папки карантина будут возвращены на свои места. Продолжить?';
|
||||||
|
$_['button_stopping'] = 'Остановка...';
|
||||||
|
$_['text_stopped_user'] = '🛑 ПРОЦЕСС ПРЕРВАН ПОЛЬЗОВАТЕЛЕМ!';
|
||||||
|
$_['text_increase'] = 'Увеличение';
|
||||||
|
$_['text_done'] = '✅ ГОТОВО! Процесс завершен.';
|
||||||
|
$_['error_timeout'] = 'Таймаут сервера. Автоповтор через 3 секунды...';
|
||||||
|
$_['text_building_index'] = 'Шаг 1/2: Индексация БД и шаблонов (поиск используемых фото)...';
|
||||||
|
$_['text_comparing'] = 'Шаг 2/2: Сравнение физических файлов с индексом...';
|
||||||
|
$_['text_quarantine_done'] = '✅ Процесс переноса в image/catalog_trash/ завершен!';
|
||||||
|
$_['text_deleted_done'] = '✅ Процесс удаления мусора завершен!';
|
||||||
|
$_['text_quarantine_empty'] = '✅ Папка карантина успешно удалена с сервера!';
|
||||||
|
$_['text_restore_done'] = '✅ Файлы успешно возвращены из карантина в рабочую папку!';
|
||||||
|
$_['text_quarantine_move'] = 'В карантине: ';
|
||||||
|
$_['text_deleted_file'] = 'Удален: ';
|
||||||
|
$_['text_no_trash'] = 'В выбранных папках мусор не найден! Все файлы используются.';
|
||||||
|
$_['text_scanning_dirs'] = 'Сканируем директории: ';
|
||||||
|
$_['text_log_used'] = '[ИСПОЛЬЗУЕТСЯ]';
|
||||||
|
$_['text_log_trash'] = '[МУСОР]';
|
||||||
|
$_['text_log_deleted'] = '[УДАЛЕНО]';
|
||||||
|
$_['text_log_del_err'] = '[ОШИБКА УДАЛЕНИЯ]';
|
||||||
|
$_['text_log_quarantine'] = '[В КАРАНТИН]';
|
||||||
|
$_['text_log_q_err'] = '[ОШИБКА ПЕРЕНОСА]';
|
||||||
|
$_['text_log_restored'] = '[ВОССТАНОВЛЕНО]';
|
||||||
|
$_['text_log_rest_err'] = '[ОШИБКА ВОССТАНОВЛЕНИЯ]';
|
||||||
|
$_['text_used_in'] = 'в: ';
|
||||||
|
$_['text_analyzing'] = 'Анализ базы данных...';
|
||||||
|
$_['text_clean_empty'] = 'Чисто! Мусора нет.';
|
||||||
|
$_['text_processing'] = 'Обработка...';
|
||||||
|
$_['text_restoring'] = 'Восстановление файлов...';
|
||||||
|
$_['text_all_folders'] = 'image/catalog/ (И все вложенные)';
|
||||||
|
$_['text_root_folder'] = 'image/catalog/ (Только корень)';
|
||||||
|
$_['text_q_empty_err'] = 'Папка карантина пуста или не существует.';
|
||||||
|
$_['error_token'] = 'Неверный токен. Перезагрузите страницу.';
|
||||||
|
$_['text_apply_title'] = 'Оптимизация завершена в папку: ';
|
||||||
|
$_['text_apply_info'] = 'Проверьте результат. Если всё устраивает — примените изменения к основному каталогу.';
|
||||||
|
$_['entry_apply_backup'] = 'Перенести с созданием бэкапа (в Карантин)';
|
||||||
|
$_['entry_apply_replace'] = 'Заменить оригиналы безвозвратно';
|
||||||
|
$_['button_apply_main'] = 'ПРИМЕНИТЬ К ОСНОВНОМУ КАТАЛОГУ';
|
||||||
|
$_['button_delete_copies'] = 'Удалить временные копии (отмена)';
|
||||||
|
$_['button_full_cleanup'] = 'Полная очистка всех временных папок и бэкапов';
|
||||||
|
$_['text_apply_success'] = '✅ Файлы успешно перенесены. ';
|
||||||
|
$_['text_apply_backup_ok'] = 'Оригиналы сохранены в папку: ';
|
||||||
|
$_['text_apply_no_backup'] = 'Оригиналы удалены.';
|
||||||
|
$_['text_error_source'] = 'Ошибка: Папка с оптимизированными файлами не найдена.';
|
||||||
|
$_['confirm_full_cleanup'] = 'ВНИМАНИЕ! Это действие безвозвратно удалит ВСЕ папки бэкапов (backup_*) и временные папки с копиями. Продолжить?';
|
||||||
|
$_['text_tools_desc'] = 'Глобальные сканеры и инструменты для работы с файловой системой и БД изображений.';
|
||||||
|
$_['text_tool_select'] = 'Выберите инструмент:';
|
||||||
|
$_['text_group_scanners'] = 'Сканеры и Анализ';
|
||||||
|
$_['text_group_generators'] = 'Генераторы и Обработка';
|
||||||
|
$_['text_group_experimental'] = 'Экспериментальные функции (BETA)';
|
||||||
|
$_['text_experimental_warn'] = 'Внимание: Экспериментальные функции затрагивают системные файлы или базу данных. Настоятельно рекомендуется сделать бэкап!';
|
||||||
|
$_['text_tool_broken_db'] = 'Сканер битых/пустых фото БД';
|
||||||
|
$_['text_tool_watermark'] = 'Динамический Вотермарк (Только на кэш)';
|
||||||
|
$_['text_tool_duplicates'] = 'Поиск дубликатов файлов (по MD5)';
|
||||||
|
$_['text_tool_png_jpg'] = 'Конвертер тяжелых PNG в JPG (сканер файлов без прозрачности)';
|
||||||
|
$_['text_tool_placeholders'] = 'Генератор заглушек (Вместо No Image)';
|
||||||
|
$_['text_tool_exif'] = 'Очистка EXIF-данных (Геотеги/Мета)';
|
||||||
|
$_['text_tool_small_photos'] = 'Сканер слишком мелких фото';
|
||||||
|
$_['text_tool_html_broken'] = 'Поиск битых картинок в HTML (Описаниях)';
|
||||||
|
$_['text_tool_empty_folders'] = 'Очистка пустых папок (image/catalog)';
|
||||||
|
$_['text_tool_smart_cache'] = 'Умная очистка кэша изображений';
|
||||||
|
$_['text_tool_folder_tree'] = 'Дерево папок (Статистика веса)';
|
||||||
|
$_['text_tool_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load (Без БД)';
|
||||||
|
$_['text_tool_translit'] = 'Транслитерация названий файлов';
|
||||||
|
$_['text_tool_cache_restore'] = 'Воскрешение оригиналов из Кэша';
|
||||||
|
$_['entry_wm_type'] = 'Тип вотермарка';
|
||||||
|
$_['text_wm_image'] = 'Изображение (PNG)';
|
||||||
|
$_['text_wm_text'] = 'Текст';
|
||||||
|
$_['entry_wm_image_path'] = 'Путь к изображению';
|
||||||
|
$_['entry_wm_text_val'] = 'Текст вотермарка';
|
||||||
|
$_['entry_wm_position'] = 'Позиция (1-9)';
|
||||||
|
$_['entry_wm_opacity'] = 'Прозрачность (0-100)';
|
||||||
|
$_['entry_wm_category'] = 'Только для Категорий';
|
||||||
|
$_['entry_wm_brand'] = 'Только для Брендов';
|
||||||
|
$_['entry_min_width'] = 'Минимальная ширина (px)';
|
||||||
|
$_['entry_min_height'] = 'Минимальная высота (px)';
|
||||||
|
$_['entry_ph_product'] = 'Заглушка для Товаров';
|
||||||
|
$_['entry_ph_category'] = 'Заглушка для Категорий';
|
||||||
|
$_['entry_ph_brand'] = 'Заглушка для Брендов';
|
||||||
|
$_['button_run_tool'] = 'Запустить инструмент';
|
||||||
|
$_['button_scan_tool'] = 'Сканировать';
|
||||||
|
$_['button_fix_tool'] = 'Исправить найденное';
|
||||||
|
$_['text_th_path'] = 'Файл / Путь';
|
||||||
|
$_['text_th_size'] = 'Размер';
|
||||||
|
$_['text_th_action'] = 'Действие';
|
||||||
|
$_['text_th_status'] = 'Статус';
|
||||||
|
$_['text_th_problem'] = 'Проблема / Значение';
|
||||||
|
$_['text_cron_title'] = 'Настройка Cron';
|
||||||
|
$_['text_cron_desc'] = 'Добавьте команду в Cron хостинга для автоматического фонового сжатия.';
|
||||||
|
$_['entry_cron_new_only'] = 'Обрабатывать только новые (необработанные) файлы';
|
||||||
|
$_['entry_cron_folders'] = 'Папки для сканирования (оставьте пустым для всего каталога)';
|
||||||
|
$_['text_promo_title'] = 'Другие модули серии [NAT]';
|
||||||
|
$_['text_promo_desc'] = 'Модули серии [NAT] — это инструменты для глубокой оптимизации OpenCart. Мы фокусируемся на автоматизации рутины, ускорении базы данных и очистке серверов от мусора. Все модули имеют открытый исходный код и единую логику управления.';
|
||||||
|
$_['text_support'] = 'Техническая поддержка и пожелания:';
|
||||||
|
$_['button_more'] = 'Смотреть все модули на OpenCart.com';
|
||||||
|
$_['button_more_forum'] = 'Opencartforum';
|
||||||
|
$_['text_mod_cat_opt'] = 'Catalog Optimizer [NAT]';
|
||||||
|
$_['text_mod_cat_opt_desc'] = 'Скрытие пустых категорий и брендов + SEO сортировка товаров (в наличии сверху) + Очистка мусора БД.';
|
||||||
|
$_['text_mod_new_arrivals'] = 'New Arrivals [NAT]: Новинки по датам';
|
||||||
|
$_['text_mod_new_arrivals_desc'] = 'Автоматическая SEO-страница новинок. Отображает новинки строго по реальной дате добавления. Слайдеры, сетка и умный сайдбар архива дат.';
|
||||||
|
$_['text_mod_img_opt'] = 'Image Optimizer [NAT]';
|
||||||
|
$_['text_mod_img_opt_desc'] = '<strong>Текущий модуль.</strong> Сжатие и ресайз ОРИГИНАЛОВ фото (image/catalog) в WebP + Очистка хостинга от неиспользуемых изображений.';
|
||||||
|
$_['text_mod_dom_scan'] = 'Domain Scanner [NAT]';
|
||||||
|
$_['text_mod_dom_scan_desc'] = 'Поиск и чистка внешних ссылок и HTTP-картинок в БД и шаблонах (для переезда на HTTPS).';
|
||||||
|
$_['text_mod_poll'] = 'Poll Widget [NAT]';
|
||||||
|
$_['text_mod_poll_desc'] = 'Создание опросов и голосований с визуальным конструктором дизайна, глубокой статистикой и защитой от накруток.';
|
||||||
|
$_['text_mod_db_opt'] = 'Database Optimizer [NAT]';
|
||||||
|
$_['text_mod_db_opt_desc'] = 'Интеллектуальная очистка мусора в базе данных, управление системными логами и добавление критически важных индексов для ускорения.';
|
||||||
|
$_['text_mod_im_ex'] = 'Import/Export [NAT]';
|
||||||
|
$_['text_mod_im_ex_desc'] = 'Быстрый импорт/экспорт цен и остатков из файлов xls/xlsx/csv/xml/json или по ссылке. Маппинг полей, работа по Cron, текстовые функции.';
|
||||||
|
$_['text_mod_admin_tools'] = 'Admin Tools [NAT]';
|
||||||
|
$_['text_mod_admin_tools_desc'] = 'Удобные инструменты администратора: вход под клиентом, кастомизация админки, управление правами пользователей и скрытие ненужных пунктов меню.';
|
||||||
|
$_['text_mod_utm_tracker'] = 'Order UTM Tracker [NAT]';
|
||||||
|
$_['text_mod_utm_tracker_desc'] = 'Автоматическое отслеживание UTM-меток при оформлении заказа. Сохраняет источник перехода, кампанию, ключевые слова и выводит эти данные в заказе для аналитики рекламы.';
|
||||||
|
$_['text_info_title_promo_top_bar'] = 'Promo Top Bar [NAT]: Верхний рекламный инфо-баннер, информационная полоса над шапкой, бегущая строка и топ-баннер';
|
||||||
|
$_['text_info_desc_promo_top_bar'] = 'Создание интерактивных промо-панелей и слайд-шоу в шапке сайта с конструктором блоков, таймерами, формой подписки и гибким таргетингом.';
|
||||||
|
$_['text_tool_no_image'] = 'Товары без главного фото (пусто в БД)';
|
||||||
|
$_['text_problem_main_broken'] = 'Битое главное фото (файл удален)';
|
||||||
|
$_['text_problem_add_broken'] = 'Битое доп. фото (файл удален)';
|
||||||
|
$_['text_problem_no_image'] = 'Отсутствует главное фото';
|
||||||
|
$_['text_err_dir'] = 'Ошибка: Директория не найдена или неверный путь.';
|
||||||
|
$_['text_err_no_queue'] = 'Ошибка: Очередь не найдена. Сначала запустите сканирование.';
|
||||||
|
$_['text_log_del_empty_folder'] = 'Удалена пустая папка: ';
|
||||||
|
$_['text_log_no_empty_folders'] = 'Пустых папок в image/catalog/ не найдено.';
|
||||||
|
$_['text_log_total_empty_folders'] = 'Всего удалено пустых папок: ';
|
||||||
|
$_['text_log_cache_cleared'] = 'Кэш изображений успешно очищен.';
|
||||||
|
$_['text_log_wm_smart_mode'] = 'Вотермарки работают в SMART-режиме: оригиналы не трогаются, логотип накладывается только при генерации кэша.';
|
||||||
|
$_['text_log_scan_dupes'] = 'Сканирование image/catalog/ на дубликаты (по хешу MD5)... Это может занять время.';
|
||||||
|
$_['text_log_found_dupe'] = 'Найден дубликат: ';
|
||||||
|
$_['text_log_no_dupes'] = 'Дубликаты не найдены.';
|
||||||
|
$_['text_log_total_dupes'] = 'Найдено дубликатов: %s. Потенциальная экономия: %s';
|
||||||
|
$_['text_log_fix_dupes_prompt'] = 'Нажмите "Исправить найденное" для перелинковки БД на оригинал и удаления дублей.';
|
||||||
|
$_['text_log_fixed_dupe'] = 'Исправлен и удален дубликат: ';
|
||||||
|
$_['text_log_success_dupes'] = 'Успешно исправлено дубликатов: %s. Ссылки в БД обновлены.';
|
||||||
|
$_['text_log_scan_png'] = 'Поиск тяжелых PNG файлов без прозрачности...';
|
||||||
|
$_['text_log_no_png'] = 'Подходящих PNG файлов не найдено.';
|
||||||
|
$_['text_log_total_png'] = 'Найдено PNG без прозрачности: %s. Нажмите "Исправить" для конвертации в JPG.';
|
||||||
|
$_['text_log_converted_jpg'] = 'Сконвертировано в JPG: ';
|
||||||
|
$_['text_log_success_png'] = 'Успешно сконвертировано %s файлов. Освобождено: %s';
|
||||||
|
$_['text_log_ph_prod'] = 'Обновлено товаров заглушкой: ';
|
||||||
|
$_['text_log_ph_cat'] = 'Обновлено категорий заглушкой: ';
|
||||||
|
$_['text_log_ph_brand'] = 'Обновлено брендов заглушкой: ';
|
||||||
|
$_['text_log_ph_empty'] = 'Заглушки не выбраны в настройках.';
|
||||||
|
$_['text_log_scan_exif'] = 'Сканирование EXIF-данных (мета-теги камер)...';
|
||||||
|
$_['text_log_stripped_exif'] = 'Очищен EXIF: ';
|
||||||
|
$_['text_log_no_exif'] = 'Файлов с EXIF для очистки не найдено.';
|
||||||
|
$_['text_log_success_exif'] = 'Очищен EXIF у %s файлов. Освобождено: %s';
|
||||||
|
$_['text_log_scan_small'] = 'Поиск фото размером менее %sx%s px...';
|
||||||
|
$_['text_log_too_small'] = 'Слишком маленькое (%sx%s): ';
|
||||||
|
$_['text_log_no_small'] = 'Мелких фото не найдено.';
|
||||||
|
$_['text_log_total_small'] = 'Найдено мелких фото: %s. Пожалуйста, замените их на качественные.';
|
||||||
|
$_['text_log_html_broken'] = 'Битый IMG в HTML таблицы %s (ID: %s): ';
|
||||||
|
$_['text_log_no_html_broken'] = 'Битых картинок в HTML-описаниях не найдено.';
|
||||||
|
$_['text_log_total_html_broken'] = 'Найдено битых ссылок в HTML: %s. Исправьте их вручную в редакторе.';
|
||||||
|
$_['text_log_scan_smart_cache'] = 'Поиск потерянных файлов в image/cache/...';
|
||||||
|
$_['text_log_del_orph_cache'] = 'Удален потерянный кэш: ';
|
||||||
|
$_['text_log_no_orph_cache'] = 'Потерянного кэша не найдено.';
|
||||||
|
$_['text_log_success_smart_cache'] = 'Удалено файлов потерянного кэша: %s. Освобождено: %s';
|
||||||
|
$_['text_log_scan_translit'] = 'Поиск файлов с кириллицей или пробелами...';
|
||||||
|
$_['text_log_no_bad_names'] = 'Файлов с некорректными именами не найдено.';
|
||||||
|
$_['text_log_total_bad_names'] = 'Найдено файлов с кириллицей/пробелами: %s. Нажмите "Исправить" для транслитерации и обновления БД.';
|
||||||
|
$_['text_log_renamed'] = 'Переименовано: ';
|
||||||
|
$_['text_log_success_translit'] = 'Успешно транслитерировано файлов: %s. БД обновлена.';
|
||||||
|
$_['text_log_scan_restore'] = 'Сканирование image/cache/ для восстановления утерянных оригиналов...';
|
||||||
|
$_['text_log_restored_cache'] = 'Восстановлено из кэша: ';
|
||||||
|
$_['text_log_no_lost_orig'] = 'Отсутствующих оригиналов в кэше не найдено.';
|
||||||
|
$_['text_log_success_restore'] = 'Успешно восстановлено оригиналов из кэша: %s.';
|
||||||
|
$_['error_invalid_folder'] = 'Ошибка: Недопустимое имя папки!';
|
||||||
|
$_['text_formats_title'] = 'Современные форматы (WebP & SVG)';
|
||||||
|
$_['text_formats_desc'] = 'Настройки интеграции современных форматов в файловую систему и шаблоны OpenCart.';
|
||||||
|
$_['entry_support_svg'] = 'Поддержка загрузки SVG';
|
||||||
|
$_['help_support_svg'] = 'Разрешает загрузку векторных SVG-изображений через стандартный Filemanager и их безопасный вывод на витрине без искажений размеров.';
|
||||||
|
$_['entry_support_webp'] = 'Поддержка загрузки WebP';
|
||||||
|
$_['help_support_webp'] = 'Позволяет вручную загружать, подвязывать и выводить на сайте готовые файлы .webp через Filemanager.';
|
||||||
|
$_['entry_truefilemanager_webp'] = 'WebP в TrueFileManager';
|
||||||
|
$_['help_truefilemanager_webp'] = 'Добавляет поддержку загрузки, предпросмотра и эскизов WebP в TrueFileManager от sitecreator (если он установлен).';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Сверхбыстрая подмена: автоматически меняет расширения .jpg/.png на .webp прямо в HTML-выводе витрины и добавляет атрибут loading="lazy". Не трогает базу данных!';
|
||||||
|
$_['help_tool_broken_db'] = 'Ищет в базе данных картинки, физические файлы которых были удалены с сервера. Позволяет очистить битые ссылки.';
|
||||||
|
$_['help_tool_empty_folders'] = 'Рекурсивно сканирует директорию image/catalog/ и безопасно удаляет все папки, в которых нет ни одного файла.';
|
||||||
|
$_['help_tool_folder_tree'] = 'Строит дерево каталогов и показывает реальный вес каждой папки для поиска "пожирателей" места.';
|
||||||
|
$_['help_tool_html_broken'] = 'Сканирует HTML-описания товаров и категорий на наличие тегов <img> с несуществующими картинками.';
|
||||||
|
$_['help_tool_small_photos'] = 'Находит картинки с разрешением ниже заданного (например, меньше 300x300 px). Добавлены ссылки на поиск качественных аналогов в Google Images и Яндекс Картинках.';
|
||||||
|
$_['help_tool_duplicates'] = 'Ищет полные дубликаты файлов по MD5 хешу (разные имена, но одинаковая картинка). Позволяет склеить их в один файл и обновить БД.';
|
||||||
|
$_['help_tool_watermark'] = 'Наложение водяных знаков в SMART-режиме (только на кэш витрины, оригиналы не изменяются).';
|
||||||
|
$_['help_tool_placeholders'] = 'Массово устанавливает выбранную картинку-заглушку для товаров и категорий, у которых вообще нет фото.';
|
||||||
|
$_['help_tool_png_jpg'] = 'Инструмент сканирует папку изображений и находит тяжелые PNG-файлы, которые не имеют прозрачного фона (альфа-канала). Поскольку прозрачность им не нужна, их можно безопасно конвертировать в формат JPG. Это значительно облегчает файлы (в среднем на 70-80%) и ускоряет загрузку сайта, а все ссылки в базе данных автоматически обновляются.';
|
||||||
|
$_['help_tool_exif'] = 'Сканирует JPEG-файлы и удаляет из них скрытые EXIF-данные (геотеги, данные о камере), уменьшая вес на 10-15%.';
|
||||||
|
$_['help_tool_smart_cache'] = 'Ищет в папке image/cache/ кэшированные файлы, оригиналы которых уже удалены из image/catalog/, и стирает этот мусор.';
|
||||||
|
$_['help_tool_translit'] = 'Находит файлы с кириллицей или пробелами в названиях, переименовывает их транслитом (tovar_1.jpg) и обновляет пути в БД.';
|
||||||
|
$_['help_tool_cache_restore'] = 'Если вы случайно удалили оригинал из catalog, инструмент попытается найти его копию в cache и восстановить обратно.';
|
||||||
|
$_['entry_quarantine'] = 'Переместить оригиналы в Карантин (вместо удаления)';
|
||||||
|
$_['entry_backup_db'] = 'Создать бэкап изменяемых таблиц в SQL перед запуском';
|
||||||
|
$_['button_fix_selected'] = 'ИСПРАВИТЬ ВЫБРАННЫЕ';
|
||||||
|
$_['button_export_log'] = 'Экспортировать в CSV';
|
||||||
|
$_['text_th_before'] = 'Состояние ДО';
|
||||||
|
$_['text_th_after'] = 'Ожидаемый результат ПОСЛЕ';
|
||||||
|
$_['text_th_select'] = 'Действие';
|
||||||
|
$_['text_th_preview'] = 'Предпросмотр';
|
||||||
|
$_['text_th_name'] = 'Объект / Файл';
|
||||||
|
$_['text_global_action'] = 'Групповое действие для выбранных:';
|
||||||
|
$_['text_action_clear'] = 'Очистить ссылку в БД';
|
||||||
|
$_['text_action_disable'] = 'Отключить (Статус = 0)';
|
||||||
|
$_['text_action_stock'] = 'Установить "Нет в наличии"';
|
||||||
|
$_['text_action_placeholder'] = 'Установить заглушку';
|
||||||
|
$_['text_action_ignore'] = 'Ничего не делать';
|
||||||
|
$_['text_action_merge'] = 'Склеить (удалить дубликат, оставить оригинал)';
|
||||||
|
$_['text_action_convert'] = 'Конвертировать в JPG';
|
||||||
|
$_['text_action_rename'] = 'Переименовать транслитом';
|
||||||
|
$_['text_action_delete'] = 'Удалить';
|
||||||
|
$_['text_action_restore'] = 'Восстановить';
|
||||||
|
$_['text_db_backup_created'] = 'Создан бэкап БД: %s';
|
||||||
|
$_['text_quarantine_created'] = 'Перенесено в карантин: %s';
|
||||||
|
$_['text_fix_status_success'] = 'Успешно выполнено';
|
||||||
|
$_['text_fix_status_error'] = 'Ошибка: %s';
|
||||||
|
$_['text_log_exported'] = 'Лог успешно экспортирован!';
|
||||||
|
$_['text_select_action'] = '-- Выберите действие --';
|
||||||
|
$_['error_empty_selection'] = 'Ошибка: Не выбрано ни одной строки для исправления!';
|
||||||
|
$_['text_link_admin'] = 'Админка';
|
||||||
|
$_['text_link_catalog'] = 'Витрина';
|
||||||
|
$_['entry_threads'] = 'Потоков обработки';
|
||||||
|
$_['text_threads_optimal'] = 'оптимально';
|
||||||
|
$_['button_download_zip'] = 'Скачать ZIP-архив и удалить папку';
|
||||||
|
$_['confirm_download_and_delete'] = 'Архив успешно скачался? Можно удалить временную папку копий на сервере?';
|
||||||
|
$_['button_clear_backups'] = 'Удалить бэкапы БД';
|
||||||
|
$_['button_clear_backups_short'] = 'Очистить бэкапы';
|
||||||
|
$_['confirm_clear_backups'] = 'Вы уверены, что хотите полностью удалить все SQL-бэкапы таблиц?';
|
||||||
|
$_['text_compare_title'] = 'Сравнение изображений ДО / ПОСЛЕ';
|
||||||
|
$_['text_compare_before'] = 'ДО';
|
||||||
|
$_['text_compare_after'] = 'ПОСЛЕ';
|
||||||
|
$_['text_backups_cleared'] = 'Все SQL-бэкапы таблиц успешно удалены!';
|
||||||
|
$_['error_no_backups'] = 'Бэкапы не найдены или папка пуста.';
|
||||||
|
$_['button_restore'] = 'Вернуть';
|
||||||
|
$_['button_empty'] = 'Очистить';
|
||||||
|
$_['entry_wm_targets'] = 'Применять водяной знак к:';
|
||||||
|
$_['text_wm_target_product'] = 'Фото товаров';
|
||||||
|
$_['text_wm_target_category'] = 'Фото категорий';
|
||||||
|
$_['text_wm_target_brand'] = 'Логотипы брендов';
|
||||||
|
$_['text_wm_target_banner'] = 'Баннеры и слайды';
|
||||||
|
$_['text_wm_target_blog'] = 'Статьи / Блог';
|
||||||
|
$_['error_no_scan_data'] = 'Ошибка: Данные сканирования не найдены. Сначала запустите сканирование!';
|
||||||
|
$_['error_row_not_found'] = 'Ошибка: Объект не найден в результатах сканирования!';
|
||||||
|
$_['error_file_not_found'] = 'Ошибка: Файл не найден на сервере!';
|
||||||
|
$_['text_folder_rules_title'] = 'Индивидуальные правила сжатия для папок';
|
||||||
|
$_['text_folder_rules_desc'] = 'Вы можете переопределить качество и максимальные размеры для конкретных папок. Если оставить поле пустым, будет использоваться глобальная настройка. Путь указывается относительно папки image (например, catalog/banners/).';
|
||||||
|
$_['entry_folder_path'] = 'Путь к папке';
|
||||||
|
$_['entry_jpg_quality'] = 'Качество JPG';
|
||||||
|
$_['entry_webp_quality'] = 'Качество WebP';
|
||||||
|
$_['button_add_rule'] = 'Добавить правило';
|
||||||
|
$_['button_remove'] = 'Удалить';
|
||||||
|
$_['entry_wm_angle'] = 'Угол наклона водяного знака (градусы)';
|
||||||
|
$_['entry_wm_corner_radius'] = 'Скругление углов водяного знака (px)';
|
||||||
|
$_['entry_wm_size_type'] = 'Масштабирование водяного знака';
|
||||||
|
$_['entry_wm_size_percent'] = 'Размер водяного знака (% от ширины изображения)';
|
||||||
|
$_['entry_wm_text_color'] = 'Цвет текста водяного знака';
|
||||||
|
$_['entry_wm_text_font'] = 'Шрифт водяного знака (TTF)';
|
||||||
|
$_['entry_wm_filter_mode'] = 'Режим фильтрации Категорий/Брендов';
|
||||||
|
$_['text_wm_filter_include'] = 'Только для выбранных';
|
||||||
|
$_['text_wm_filter_exclude'] = 'Для всех, кроме выбранных';
|
||||||
|
$_['text_wm_size_original'] = 'Оригинальный размер';
|
||||||
|
$_['text_wm_size_percent'] = 'Пропорционально ширине изображения (%)';
|
||||||
|
$_['button_preview_watermark'] = 'Предпросмотр водяного знака';
|
||||||
|
$_['text_wm_preview_title'] = 'Предпросмотр водяного знака';
|
||||||
|
$_['text_cron_exclude_folders'] = 'Исключить папки из сканирования';
|
||||||
|
$_['text_cron_entities'] = 'Какие типы фото обрабатывать?';
|
||||||
|
$_['text_cron_quality_override'] = 'Переопределить параметры сжатия для Крона';
|
||||||
|
$_['text_cron_recommendations'] = 'Рекомендации по расписанию запуска Cron';
|
||||||
|
$_['text_cron_recommendations_desc'] = '<ul><li><b>Для небольших сайтов (до 5000 товаров)</b> рекомендуется запускать Крон каждый час (<code>0 * * * *</code>).</li><li><b>Для средних сайтов (5000-20000 товаров)</b> рекомендуется запускать раз в 3-6 часов (<code>0 */6 * * *</code>).</li><li><b>Для крупных сайтов (более 20000 товаров)</b> — один раз в сутки ночью (например, в 2:00: <code>0 2 * * *</code>).</li></ul>';
|
||||||
|
$_['text_tool_broken_files'] = 'Сканер битых/пустых файлов на сервере';
|
||||||
|
$_['help_tool_broken_files'] = 'Сканирует физические файлы в папке image/catalog/ на наличие поврежденных изображений или пустых файлов размером 0 байт.';
|
||||||
|
$_['text_grid_broken_file'] = 'Битый или пустой файл на сервере';
|
||||||
|
$_['text_grid_broken_file_after'] = 'Удаление или замена заглушкой';
|
||||||
|
$_['text_description_broken_files'] = 'Результаты сканирования физических файлов в папке image/catalog/. Здесь отображаются битые (поврежденные) изображения или файлы размером 0 байт.';
|
||||||
|
$_['text_action_strip'] = 'Очистить EXIF';
|
||||||
|
$_['text_action_set_placeholder'] = 'Установить заглушку';
|
||||||
|
$_['text_th_entity'] = 'Объект / Связанные ссылки';
|
||||||
|
$_['text_cron_entity_product'] = 'Товары';
|
||||||
|
$_['text_cron_entity_category'] = 'Категории';
|
||||||
|
$_['text_cron_entity_manufacturer'] = 'Производители / Бренды';
|
||||||
|
$_['text_cron_entity_banner'] = 'Баннеры';
|
||||||
|
$_['text_cron_entity_blog'] = 'Блог / Статьи';
|
||||||
|
$_['entry_cron_jpg_quality'] = 'Качество JPG (Крон)';
|
||||||
|
$_['entry_cron_webp_quality'] = 'Качество WebP (Крон)';
|
||||||
|
$_['entry_cron_max_width'] = 'Макс. ширина px (Крон)';
|
||||||
|
$_['entry_cron_max_height'] = 'Макс. высота px (Крон)';
|
||||||
|
$_['text_cron_folder_scan'] = 'Папки для сканирования';
|
||||||
|
$_['text_no_fonts'] = 'TTF-шрифты не найдены в system/library/font/';
|
||||||
|
$_['button_apply'] = 'Применить';
|
||||||
|
$_['text_backup_will_be_created'] = 'Резервная копия базы данных будет автоматически создана перед выполнением этого действия.';
|
||||||
|
$_['text_bulk_action'] = 'Групповое действие для выбранных';
|
||||||
|
$_['text_grid_results'] = 'Результаты и детали сканирования';
|
||||||
|
$_['text_quarantine_will_be_created'] = 'Оригинальные файлы будут перемещены в карантин (image/catalog_trash/) перед изменением.';
|
||||||
|
$_['text_success_apply'] = 'Изменения успешно применены!';
|
||||||
|
$_['text_description_broken'] = 'Результаты сканирования базы данных на наличие битых ссылок (записи в таблицах с несуществующими файлами).';
|
||||||
|
$_['text_description_cache_restore'] = 'Результаты поиска файлов в кэше, оригиналы которых отсутствуют в каталоге.';
|
||||||
|
$_['text_description_duplicates'] = 'Результаты поиска полных дубликатов изображений по MD5-хешу.';
|
||||||
|
$_['text_description_empty_folders'] = 'Список пустых папок в директории image/catalog/ для удаления.';
|
||||||
|
$_['text_description_exif'] = 'Результаты поиска изображений с метаданными EXIF, которые можно очистить.';
|
||||||
|
$_['text_description_folder_tree'] = 'Статистика размера папок в каталоге image/catalog/.';
|
||||||
|
$_['text_description_html_broken'] = 'Результаты поиска несуществующих файлов картинок, на которые ссылаются описания в HTML.';
|
||||||
|
$_['text_description_placeholders'] = 'Результаты поиска сущностей без изображений для заполнения заглушками.';
|
||||||
|
$_['text_description_png_jpg'] = 'Результаты поиска тяжелых изображений PNG без прозрачности, которые можно пережать в JPG.';
|
||||||
|
$_['text_description_small_photos'] = 'Список изображений, размеры которых меньше минимально заданных (%sx%s px).';
|
||||||
|
$_['text_description_smart_cache'] = 'Результаты поиска файлов кэша, оригиналы которых уже были удалены.';
|
||||||
|
$_['text_description_translit'] = 'Результаты поиска файлов с кириллицей или пробелами в названиях.';
|
||||||
|
$_['text_grid_broken_db_after'] = 'Очистить ссылку или установить заглушку';
|
||||||
|
$_['text_grid_dupe_after'] = 'Оригинал (остаётся)';
|
||||||
|
$_['text_grid_dupe_before'] = 'Дубликат (будет удалён)';
|
||||||
|
$_['text_grid_empty_folder'] = 'Пустая папка';
|
||||||
|
$_['text_grid_empty_folder_after'] = 'Удалить пустую папку';
|
||||||
|
$_['text_grid_exif_after'] = 'Очистить метаданные';
|
||||||
|
$_['text_grid_exif_before'] = 'Содержит EXIF';
|
||||||
|
$_['text_grid_html_after'] = 'Исправить ссылку вручную';
|
||||||
|
$_['text_grid_missing_file'] = 'Файл отсутствует';
|
||||||
|
$_['text_grid_missing_html'] = 'Картинка не найдена в описании';
|
||||||
|
$_['text_grid_missing_orig'] = 'Оригинал отсутствует';
|
||||||
|
$_['text_grid_missing_orig_after'] = 'Восстановить оригинал из кэша';
|
||||||
|
$_['text_grid_no_image'] = 'Нет изображения (пусто)';
|
||||||
|
$_['text_grid_orph_cache'] = 'Осиротевший кэш';
|
||||||
|
$_['text_grid_orph_cache_after'] = 'Удалить ненужный кэш';
|
||||||
|
$_['text_grid_ph_brand_after'] = 'Установить заглушку бренда';
|
||||||
|
$_['text_grid_ph_category_after'] = 'Установить заглушку категории';
|
||||||
|
$_['text_grid_ph_product_after'] = 'Установить заглушку товара';
|
||||||
|
$_['text_grid_small_photo_after'] = 'Рекомендуется заменить на более крупное';
|
||||||
|
$_['text_grid_too_small'] = 'Слишком маленькое';
|
||||||
|
$_['text_no_relations'] = 'Нет связей в БД';
|
||||||
|
$_['text_action_archive'] = 'Архивировать (в ZIP)';
|
||||||
|
$_['text_action_archive_delete'] = 'Архивировать + Удалить';
|
||||||
|
$_['text_tool_sanitizer'] = 'Санитайзер имен файлов';
|
||||||
|
$_['help_tool_sanitizer'] = 'Массовая очистка имен файлов и папок от кириллицы, пробелов и спецсимволов, приведение расширений к единому виду.';
|
||||||
|
$_['text_description_sanitizer'] = 'Результаты анализа имен файлов для санитаризации по выбранным правилам.';
|
||||||
|
$_['entry_sz_translit'] = 'Транслитерация (кириллица в латиницу)';
|
||||||
|
$_['entry_sz_spaces'] = 'Заменять пробелы на символ "_"';
|
||||||
|
$_['entry_sz_special'] = 'Удалять специальные символы';
|
||||||
|
$_['entry_sz_lowercase_name'] = 'Имя файла в нижний регистр';
|
||||||
|
$_['entry_sz_lowercase_ext'] = 'Расширение в нижний регистр';
|
||||||
|
$_['entry_sz_normalize_ext'] = 'Нормализовать расширения (jpeg -> jpg)';
|
||||||
|
$_['entry_cron_folder_mode'] = 'Режим фильтрации папок';
|
||||||
|
$_['text_cron_folder_mode_exclude'] = 'Сканировать все, кроме выбранных (Исключения)';
|
||||||
|
$_['text_cron_folder_mode_include'] = 'Сканировать только выбранные папки';
|
||||||
|
$_['button_select_all'] = 'Выбрать все';
|
||||||
|
$_['button_deselect_all'] = 'Снять все';
|
||||||
|
$_['entry_wm_upload_font'] = 'Загрузить свой шрифт TTF';
|
||||||
|
$_['button_upload_font'] = 'Загрузить шрифт';
|
||||||
|
$_['text_success_font_upload'] = 'Шрифт успешно загружен!';
|
||||||
|
$_['error_font_upload'] = 'Ошибка загрузки шрифта! Разрешены только файлы .ttf весом до 5 МБ.';
|
||||||
|
$_['entry_lazy_load'] = 'Прогрессивная ленивая загрузка';
|
||||||
|
$_['help_lazy_load'] = 'Включает премиальную прогрессивную отложенную загрузку на витрине. Изображения заменяются микро-превью и плавно размываются (blur-up), подгружаясь по мере прокрутки.';
|
||||||
|
$_['confirm_replace_mode'] = 'ВНИМАНИЕ! Вы выбрали режим «Заменять оригиналы». Все изображения будут перезаписаны прямо на сервере. Настоятельно рекомендуем сделать резервную копию. Вы уверены, что хотите продолжить?';
|
||||||
|
$_['text_compare'] = 'Сравнить';
|
||||||
|
$_['text_home'] = 'Главная';
|
||||||
|
$_['text_tech_gd'] = 'Библиотека GD';
|
||||||
|
$_['text_tech_imagick'] = 'Imagick';
|
||||||
|
$_['text_tech_webp'] = 'Поддержка WebP';
|
||||||
|
$_['text_position_1'] = '1 - Слева вверху';
|
||||||
|
$_['text_position_2'] = '2 - По центру вверху';
|
||||||
|
$_['text_position_3'] = '3 - Справа вверху';
|
||||||
|
$_['text_position_4'] = '4 - Слева посередине';
|
||||||
|
$_['text_position_5'] = '5 - По центру';
|
||||||
|
$_['text_position_6'] = '6 - Справа посередине';
|
||||||
|
$_['text_position_7'] = '7 - Слева внизу';
|
||||||
|
$_['text_position_8'] = '8 - По центру внизу';
|
||||||
|
$_['text_position_9'] = '9 - Справа внизу';
|
||||||
|
|
||||||
|
$_['entry_log_level'] = 'Уровень лога';
|
||||||
|
$_['text_log_changed_only'] = 'Только изменённые';
|
||||||
|
$_['text_log_all'] = 'Все файлы (подробно)';
|
||||||
|
$_['text_skipped_no_gain'] = 'Пропущен (нет улучшения)';
|
||||||
|
$_['text_reset_cache_hint'] = 'Сбросить кэш оптимизации (полный пересканирование)';
|
||||||
|
$_['confirm_reset_cache'] = 'Сбросить кэш оптимизации? Следующее сканирование проверит ВСЕ файлы заново.';
|
||||||
|
$_['text_cache_cleared'] = 'Кэш оптимизации очищен. Следующее сканирование проверит все файлы.';
|
||||||
|
$_['error_wm_preview'] = 'Ошибка генерации превью водяного знака.';
|
||||||
|
$_['error_wm_too_large'] = 'Изображение водяного знака слишком большое (%dx%d px)! Максимально допустимый размер: %dx%d px.';
|
||||||
|
$_['text_apply_errors_warning'] = 'ВНИМАНИЕ: Некоторые файлы не удалось заменить (заблокированы или нет прав):';
|
||||||
|
$_['text_action_compress'] = 'Сжать изображения';
|
||||||
|
$_['text_estimated'] = 'Прогноз';
|
||||||
|
$_['entry_min_savings_bytes'] = 'Мин. сжатие (байт)';
|
||||||
|
$_['entry_min_savings_percent'] = 'Мин. сжатие (%)';
|
||||||
|
$_['text_optimized'] = 'Оптимизировано';
|
||||||
|
$_['entry_broken_fallback'] = 'Заглушка для битых фото';
|
||||||
|
$_['help_broken_fallback'] = 'Автоматически заменяет отсутствующие или поврежденные изображения каталога на витрине на изображение-заглушку.';
|
||||||
|
$_['entry_fallback_image'] = 'Изображение-заглушка';
|
||||||
|
$_['help_fallback_image'] = 'Выберите изображение, которое будет показано, если оригинальный файл картинки товара или категории отсутствует. По умолчанию используется no_image.png.';
|
||||||
|
$_['text_tool_cmyk'] = 'Конвертер CMYK в RGB';
|
||||||
|
$_['help_tool_cmyk'] = 'Конвертация JPEG изображений из цветового профиля CMYK в sRGB для корректного отображения в браузерах Safari и на устройствах iOS.';
|
||||||
|
$_['text_tool_heavy_files'] = 'Поиск тяжелых файлов';
|
||||||
|
$_['help_tool_heavy_files'] = 'Поиск самых тяжелых оригинальных изображений в каталоге с возможностью их быстрого сжатия прямо здесь.';
|
||||||
|
$_['entry_heavy_files_limit'] = 'Макс. количество найденных файлов (всего)';
|
||||||
|
$_['text_action_convert_rgb'] = 'Конвертировать в RGB';
|
||||||
|
$_['text_description_cmyk'] = 'Найдены файлы в цветовом пространстве CMYK. Конвертация в sRGB гарантирует корректное отображение на всех платформах, включая iOS/macOS.';
|
||||||
|
$_['text_description_heavy'] = 'Список из %d самых тяжелых файлов в каталоге изображений. Вы можете оптимизировать их прямо здесь.';
|
||||||
|
$_['text_cron_folder_hint_exclude_all'] = 'Статус: Будут сканироваться все папки (исключения не выбраны).';
|
||||||
|
$_['text_cron_folder_hint_exclude_some'] = 'Статус: Будут сканироваться все папки, КРОМЕ %d отмеченных.';
|
||||||
|
$_['text_cron_folder_hint_include_some'] = 'Статус: Будут сканироваться только %d отмеченных папок.';
|
||||||
|
$_['text_cron_folder_hint_include_none'] = 'ВНИМАНИЕ: Ни одна папка не выбрана! Крон ничего не будет сканировать.';
|
||||||
|
$_['text_action_apply_changes'] = 'Применить указанные изменения';
|
||||||
|
$_['entry_wm_status'] = 'Статус водяного знака';
|
||||||
|
$_['text_disabled'] = 'Отключено';
|
||||||
|
$_['entry_rule_name'] = 'Название правила';
|
||||||
|
$_['entry_rule_status'] = 'Статус правила';
|
||||||
|
$_['entry_action'] = 'Действие';
|
||||||
|
$_['entry_ph_status'] = 'Статус заглушек';
|
||||||
|
$_['entry_sanitizer_limit'] = 'Макс. файлов для поиска (лимит)';
|
||||||
|
$_['entry_heavy_files_min_size'] = 'Минимальный размер';
|
||||||
|
$_['entry_png_jpg_limit'] = 'Макс. файлов для поиска (лимит)';
|
||||||
|
$_['entry_png_jpg_min_size'] = 'Минимальный размер';
|
||||||
|
$_['text_wm_rule_title'] = 'Правило водяного знака';
|
||||||
|
$_['button_close'] = 'Закрыть';
|
||||||
|
$_['text_ph_rule_title'] = 'Правило заглушки';
|
||||||
|
$_['entry_ph_image'] = 'Изображение заглушки';
|
||||||
|
$_['button_clear_cache_wm'] = 'Очистить кэш (применить водяной знак)';
|
||||||
|
$_['text_active'] = 'Активна';
|
||||||
|
$_['text_error'] = 'Не активна';
|
||||||
|
$_['text_th_dupe_delete'] = 'Файл для удаления (Дубликат)';
|
||||||
|
$_['text_th_dupe_keep'] = 'Файл для сохранения (Оригинал)';
|
||||||
|
$_['text_dupe_original_label'] = 'Оригинал';
|
||||||
|
$_['text_dupe_duplicate_label'] = 'Дубликат';
|
||||||
|
|
||||||
|
$_['text_disk_usage'] = 'Использование диска';
|
||||||
|
$_['text_cumulative_stats'] = 'Статистика оптимизации';
|
||||||
|
$_['text_disk_catalog'] = 'Каталог изображений';
|
||||||
|
$_['text_disk_cache'] = 'Кэш OC';
|
||||||
|
$_['text_disk_trash'] = 'Корзина модуля';
|
||||||
|
$_['text_disk_other'] = 'Прочее';
|
||||||
|
$_['text_disk_free'] = 'Свободно';
|
||||||
|
$_['text_total_files_opt'] = 'Файлов обработано';
|
||||||
|
$_['text_total_saved'] = 'Всего сэкономлено';
|
||||||
|
$_['text_avg_saving_pct'] = 'Средняя экономия';
|
||||||
|
$_['text_stats_hint'] = 'Статистика хранится в БД сайта (учитывает Оптимизацию, Очистку, Инструменты и Крон)';
|
||||||
|
$_['text_reset_stats'] = 'Сбросить статистику';
|
||||||
|
$_['text_reset_stats_confirm']= 'Вы уверены, что хотите сбросить всю статистику из БД?';
|
||||||
|
$_['text_export_import'] = 'Экспорт / Импорт настроек';
|
||||||
|
$_['button_export_settings'] = 'Экспорт настроек (JSON)';
|
||||||
|
$_['button_import_settings'] = 'Импортировать настройки';
|
||||||
|
$_['help_export_settings'] = 'Скачать все настройки модуля в JSON-файл';
|
||||||
|
$_['help_import_settings'] = 'Загрузить ранее экспортированный JSON для восстановления настроек';
|
||||||
|
$_['text_import_success'] = 'Настройки успешно импортированы. Перезагрузите страницу для применения.';
|
||||||
|
$_['error_import_file'] = 'Файл не загружен или ошибка загрузки';
|
||||||
|
$_['error_import_invalid'] = 'Некорректный файл настроек (неверный модуль или формат)';
|
||||||
|
$_['text_click_to_load'] = 'Нажмите ↑ для загрузки данных диска';
|
||||||
|
$_['tab_formats'] = 'Форматы изображений';
|
||||||
|
|
||||||
|
$_['text_disk_quota_legend'] = 'Лимиты диска хостинга (вручную)';
|
||||||
|
$_['text_disk_quota_desc'] = 'Если график дискового пространства показывает неверные данные (физический диск сервера вместо лимита вашего хостинга), вы можете указать лимиты вашего тарифа вручную. Укажите 0, чтобы использовать автоопределение.';
|
||||||
|
$_['entry_disk_quota_total'] = 'Выделено диска на хостинге (ГБ)';
|
||||||
|
$_['entry_disk_quota_used'] = 'Занято диска на хостинге всего (ГБ)';
|
||||||
|
$_['entry_auto_disk'] = 'Автообновление при входе';
|
||||||
|
|
||||||
|
$_['entry_cron_task_name'] = 'Название задачи';
|
||||||
|
$_['entry_cron_task_summary'] = 'Параметры сжатия';
|
||||||
|
$_['button_add_cron_task'] = 'Добавить задачу';
|
||||||
|
$_['button_copy_cron_url'] = 'Копировать URL';
|
||||||
|
$_['text_cron_recommended_url'] = 'URL для запуска задачи крона:';
|
||||||
|
$_['entry_cron_batch_limit'] = 'Лимит пакета за один запуск Крона (файлов)';
|
||||||
|
$_['help_cron_batch_limit'] = 'Максимальное количество файлов, обрабатываемых за один запуск Крона. По умолчанию 100. Рекомендуется от 50 до 300 для предотвращения таймаута выполнения на хостинге.';
|
||||||
|
|
||||||
|
$_['text_license_required'] = 'Требуется лицензионный ключ';
|
||||||
|
$_['text_license_required_desc'] = 'Пожалуйста, введите лицензионный ключ для активации модуля. Все функции настроек и оптимизации заблокированы до ввода валидного ключа.';
|
||||||
|
$_['entry_token_desc'] = 'Введите токен активации, выданный для вашего основного домена. Вы можете получить его в личном кабинете на форуме или обратившись в поддержку.';
|
||||||
|
$_['button_activate'] = 'Активировать модуль';
|
||||||
|
$_['text_support'] = 'Техническая поддержка';
|
||||||
|
$_['text_support_desc'] = 'Если у вас ещё нет ключа или возникли проблемы, пожалуйста, сообщите номер вашего заказа и домен.';
|
||||||
|
|
||||||
|
$_['entry_wm_max_width'] = 'Макс. ширина водяного знака (px)';
|
||||||
|
$_['entry_wm_max_height'] = 'Макс. высота водяного знака (px)';
|
||||||
|
$_['help_wm_max_width'] = 'Если исходное изображение водяного знака превышает эту ширину, оно будет автоматически масштабировано. Укажите 0 или оставьте пустым для значения по умолчанию (800px).';
|
||||||
|
$_['help_wm_max_height'] = 'Если исходное изображение водяного знака превышает эту высоту, оно будет автоматически масштабировано. Укажите 0 или оставьте пустым для значения по умолчанию (800px).';
|
||||||
|
$_['entry_disk_status'] = 'Включить сканирование диска и график';
|
||||||
|
$_['help_disk_status'] = 'Если включено, модуль будет периодически сканировать объем папки картинок и отображать круговую диаграмму. Рекомендуется выключить на больших сайтах для ускорения загрузки панели.';
|
||||||
|
$_['text_disk_settings_title'] = 'Настройка лимитов и сканирования диска';
|
||||||
|
|
||||||
|
$_['button_online_instruction'] = 'Инструкция к модулю (Онлайн)';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,610 @@
|
||||||
|
<?php
|
||||||
|
$_['heading_title_raw'] = 'Image Optimizer [NAT]: Сжатие оригиналов и удаление мусора';
|
||||||
|
$_['heading_title'] = '<b>Image Optimizer [NAT]:</b> Сжатие оригиналов и удаление мусора';
|
||||||
|
$_['text_extension'] = 'Расширения';
|
||||||
|
$_['text_edit'] = 'Настройки модуля';
|
||||||
|
$_['text_success'] = 'Настройки успешно сохранены!';
|
||||||
|
$_['entry_warning'] = 'ВНИМАНИЕ: Обязательно сделайте бэкап файлов сайта и особенно папки /image/catalog перед началом работы!';
|
||||||
|
$_['text_tech'] = 'Проверка технологий сервера:';
|
||||||
|
$_['text_author'] = 'Техническая поддержка и пожелания: <a href="mailto:info@nat.od.ua">info@nat.od.ua</a>';
|
||||||
|
$_['tab_optimize'] = 'Оптимизация и Ресайз';
|
||||||
|
$_['tab_cleaner'] = 'Очистка неиспользуемых изображений';
|
||||||
|
$_['tab_info'] = 'Инфо / Экосистема [NAT]';
|
||||||
|
$_['tab_settings'] = 'Настройки';
|
||||||
|
$_['tab_tools'] = 'Инструменты (pro)';
|
||||||
|
$_['tab_cron'] = 'Крон-задачи';
|
||||||
|
$_['entry_mode'] = 'Режим работы';
|
||||||
|
$_['text_copy'] = 'Создать копию (безопасно)';
|
||||||
|
$_['text_replace'] = 'Заменять оригиналы (требует бэкап!)';
|
||||||
|
$_['entry_folder'] = 'Имя папки для копии';
|
||||||
|
$_['entry_batch'] = 'Файлов за проход';
|
||||||
|
$_['entry_log_limit'] = 'Строк лога на экране';
|
||||||
|
$_['entry_max_width'] = 'Макс. ширина (px) [0 - без лимита]';
|
||||||
|
$_['entry_max_height'] = 'Макс. высота (px) [0 - без лимита]';
|
||||||
|
$_['entry_jpg'] = 'Качество JPG (0-100)';
|
||||||
|
$_['entry_png'] = 'Сжатие PNG (0-9)';
|
||||||
|
$_['entry_webp'] = 'Качество WebP (0-100)';
|
||||||
|
$_['entry_targets'] = 'Что оптимизировать?';
|
||||||
|
$_['text_all_catalog'] = '[ Весь каталог image/catalog ]';
|
||||||
|
$_['text_root_files'] = 'Файлы только в корне image/catalog';
|
||||||
|
$_['entry_threshold'] = 'Порог замены (%)';
|
||||||
|
$_['help_threshold'] = '0: заменять только если вес стал меньше. 10: разрешить увеличение веса до 10%.';
|
||||||
|
$_['entry_token'] = 'Токен активации (на корень домена)';
|
||||||
|
$_['entry_status'] = 'Статус модуля';
|
||||||
|
$_['entry_menu_position'] = 'Позиция меню [NAT]';
|
||||||
|
$_['text_menu_module_only'] = 'Только в модулях';
|
||||||
|
$_['text_menu_header'] = 'В шапке (Header)';
|
||||||
|
$_['text_menu_sidebar'] = 'В боковом меню (Sidebar)';
|
||||||
|
$_['text_menu_both'] = 'Везде (Шапка + Сайдбар)';
|
||||||
|
$_['text_status_on'] = 'Включено';
|
||||||
|
$_['text_status_off'] = 'Отключено';
|
||||||
|
$_['entry_engine'] = 'Движок обработки изображений';
|
||||||
|
$_['text_engine_gd'] = 'GD (Стандарт)';
|
||||||
|
$_['text_engine_imagick'] = 'Imagick (Высокое качество, сохранение профилей sRGB)';
|
||||||
|
$_['entry_license'] = 'Лицензия';
|
||||||
|
$_['text_cleaner_info'] = 'Этот инструмент ищет файлы, которые физически существуют на диске, но нигде не используются в базе данных или файлах шаблона.';
|
||||||
|
$_['entry_clean_targets'] = 'В каких папках искать мусор?';
|
||||||
|
$_['entry_extended_log'] = 'Расширенный лог (показать используемые фото и где они найдены)';
|
||||||
|
$_['entry_process_broken'] = 'Учитывать файлы с битой кодировкой (имена с символом "?")';
|
||||||
|
$_['button_scan_trash'] = 'НАЙТИ МУСОР';
|
||||||
|
$_['button_quarantine'] = 'В Карантин (Безопасно)';
|
||||||
|
$_['button_delete_trash'] = 'Удалить навсегда';
|
||||||
|
$_['button_empty_quarantine'] = 'Очистить папку Карантина';
|
||||||
|
$_['button_restore_quarantine'] = 'Вернуть из Карантина';
|
||||||
|
$_['text_scan_result'] = 'Результаты сканирования';
|
||||||
|
$_['text_trash_files'] = 'Мусорных файлов: ';
|
||||||
|
$_['text_trash_size'] = 'Потенциально освободится: ';
|
||||||
|
$_['button_start'] = 'СТАРТ ОПТИМИЗАЦИИ';
|
||||||
|
$_['button_pause'] = 'ПАУЗА';
|
||||||
|
$_['button_stop'] = 'ОСТАНОВИТЬ';
|
||||||
|
$_['button_continue'] = 'ПРОДОЛЖИТЬ';
|
||||||
|
$_['button_start_new'] = 'СТАРТ (Новый запуск)';
|
||||||
|
$_['button_download_log'] = 'Скачать лог в TXT';
|
||||||
|
$_['button_download'] = 'Скачать';
|
||||||
|
$_['button_save'] = 'Сохранить';
|
||||||
|
$_['button_cancel'] = 'Отмена';
|
||||||
|
$_['text_progress'] = 'Прогресс:';
|
||||||
|
$_['text_old_size'] = 'Было:';
|
||||||
|
$_['text_new_size'] = 'Стало:';
|
||||||
|
$_['text_savings'] = 'Экономия:';
|
||||||
|
$_['text_detailed_log'] = 'Детальный лог';
|
||||||
|
$_['text_page'] = 'Стр.';
|
||||||
|
$_['text_waiting'] = 'Ожидание запуска...';
|
||||||
|
$_['text_enabled'] = 'Включено';
|
||||||
|
$_['text_disabled_error'] = 'Выключено (ОШИБКА)';
|
||||||
|
$_['text_supported'] = 'Поддерживается';
|
||||||
|
$_['text_no'] = 'Нет';
|
||||||
|
$_['error_permission'] = 'У вас нет прав для управления модулем!';
|
||||||
|
$_['error_license'] = 'Ошибка доступа: Неверный токен активации для этого домена!';
|
||||||
|
$_['error_domain'] = ' (Домен: ';
|
||||||
|
$_['text_found'] = 'Найдено файлов: ';
|
||||||
|
$_['text_compressed'] = 'Сжат';
|
||||||
|
$_['text_original'] = 'Оригинал';
|
||||||
|
$_['text_error_process'] = 'Ошибка обработки: ';
|
||||||
|
$_['error_log_empty'] = 'Лог пуст! Сначала запустите процесс.';
|
||||||
|
$_['text_report_header'] = '=== ОТЧЕТ ===';
|
||||||
|
$_['text_total_files'] = 'Всего файлов: ';
|
||||||
|
$_['text_searching'] = 'Поиск файлов...';
|
||||||
|
$_['error_ajax'] = 'Ошибка: ';
|
||||||
|
$_['text_resumed'] = '▶ ПРОЦЕСС ВОЗОБНОВЛЕН...';
|
||||||
|
$_['text_paused'] = '⏸ ПАУЗА. Процесс приостановлен.';
|
||||||
|
$_['confirm_stop'] = 'Вы уверены, что хотите полностью прервать процесс?';
|
||||||
|
$_['confirm_delete'] = 'ВНИМАНИЕ! Файлы будут удалены с сервера навсегда без возможности восстановления! Продолжить?';
|
||||||
|
$_['confirm_empty_q'] = 'Вы уверены, что хотите полностью очистить папку карантина?';
|
||||||
|
$_['confirm_restore'] = 'Все файлы из папки карантина будут возвращены на свои места. Продолжить?';
|
||||||
|
$_['button_stopping'] = 'Остановка...';
|
||||||
|
$_['text_stopped_user'] = '🛑 ПРОЦЕСС ПРЕРВАН ПОЛЬЗОВАТЕЛЕМ!';
|
||||||
|
$_['text_increase'] = 'Увеличение';
|
||||||
|
$_['text_done'] = '✅ ГОТОВО! Процесс завершен.';
|
||||||
|
$_['error_timeout'] = 'Таймаут сервера. Автоповтор через 3 секунды...';
|
||||||
|
$_['text_building_index'] = 'Шаг 1/2: Индексация БД и шаблонов (поиск используемых фото)...';
|
||||||
|
$_['text_comparing'] = 'Шаг 2/2: Сравнение физических файлов с индексом...';
|
||||||
|
$_['text_quarantine_done'] = '✅ Процесс переноса в image/catalog_trash/ завершен!';
|
||||||
|
$_['text_deleted_done'] = '✅ Процесс удаления мусора завершен!';
|
||||||
|
$_['text_quarantine_empty'] = '✅ Папка карантина успешно удалена с сервера!';
|
||||||
|
$_['text_restore_done'] = '✅ Файлы успешно возвращены из карантина в рабочую папку!';
|
||||||
|
$_['text_quarantine_move'] = 'В карантине: ';
|
||||||
|
$_['text_deleted_file'] = 'Удален: ';
|
||||||
|
$_['text_no_trash'] = 'В выбранных папках мусор не найден! Все файлы используются.';
|
||||||
|
$_['text_scanning_dirs'] = 'Сканируем директории: ';
|
||||||
|
$_['text_log_used'] = '[ИСПОЛЬЗУЕТСЯ]';
|
||||||
|
$_['text_log_trash'] = '[МУСОР]';
|
||||||
|
$_['text_log_deleted'] = '[УДАЛЕНО]';
|
||||||
|
$_['text_log_del_err'] = '[ОШИБКА УДАЛЕНИЯ]';
|
||||||
|
$_['text_log_quarantine'] = '[В КАРАНТИН]';
|
||||||
|
$_['text_log_q_err'] = '[ОШИБКА ПЕРЕНОСА]';
|
||||||
|
$_['text_log_restored'] = '[ВОССТАНОВЛЕНО]';
|
||||||
|
$_['text_log_rest_err'] = '[ОШИБКА ВОССТАНОВЛЕНИЯ]';
|
||||||
|
$_['text_used_in'] = 'в: ';
|
||||||
|
$_['text_analyzing'] = 'Анализ базы данных...';
|
||||||
|
$_['text_clean_empty'] = 'Чисто! Мусора нет.';
|
||||||
|
$_['text_processing'] = 'Обработка...';
|
||||||
|
$_['text_restoring'] = 'Восстановление файлов...';
|
||||||
|
$_['text_all_folders'] = 'image/catalog/ (И все вложенные)';
|
||||||
|
$_['text_root_folder'] = 'image/catalog/ (Только корень)';
|
||||||
|
$_['text_q_empty_err'] = 'Папка карантина пуста или не существует.';
|
||||||
|
$_['error_token'] = 'Неверный токен. Перезагрузите страницу.';
|
||||||
|
$_['text_apply_title'] = 'Оптимизация завершена в папку: ';
|
||||||
|
$_['text_apply_info'] = 'Проверьте результат. Если всё устраивает — примените изменения к основному каталогу.';
|
||||||
|
$_['entry_apply_backup'] = 'Перенести с созданием бэкапа (в Карантин)';
|
||||||
|
$_['entry_apply_replace'] = 'Заменить оригиналы безвозвратно';
|
||||||
|
$_['button_apply_main'] = 'ПРИМЕНИТЬ К ОСНОВНОМУ КАТАЛОГУ';
|
||||||
|
$_['button_delete_copies'] = 'Удалить временные копии (отмена)';
|
||||||
|
$_['button_full_cleanup'] = 'Полная очистка всех временных папок и бэкапов';
|
||||||
|
$_['text_apply_success'] = '✅ Файлы успешно перенесены. ';
|
||||||
|
$_['text_apply_backup_ok'] = 'Оригиналы сохранены в папку: ';
|
||||||
|
$_['text_apply_no_backup'] = 'Оригиналы удалены.';
|
||||||
|
$_['text_error_source'] = 'Ошибка: Папка с оптимизированными файлами не найдена.';
|
||||||
|
$_['confirm_full_cleanup'] = 'ВНИМАНИЕ! Это действие безвозвратно удалит ВСЕ папки бэкапов (backup_*) и временные папки с копиями. Продолжить?';
|
||||||
|
$_['text_tools_desc'] = 'Глобальные сканеры и инструменты для работы с файловой системой и БД изображений.';
|
||||||
|
$_['text_tool_select'] = 'Выберите инструмент:';
|
||||||
|
$_['text_group_scanners'] = 'Сканеры и Анализ';
|
||||||
|
$_['text_group_generators'] = 'Генераторы и Обработка';
|
||||||
|
$_['text_group_experimental'] = 'Экспериментальные функции (BETA)';
|
||||||
|
$_['text_experimental_warn'] = 'Внимание: Экспериментальные функции затрагивают системные файлы или базу данных. Настоятельно рекомендуется сделать бэкап!';
|
||||||
|
$_['text_tool_broken_db'] = 'Сканер битых/пустых фото БД';
|
||||||
|
$_['text_tool_watermark'] = 'Динамический Вотермарк (Только на кэш)';
|
||||||
|
$_['text_tool_duplicates'] = 'Поиск дубликатов файлов (по MD5)';
|
||||||
|
$_['text_tool_png_jpg'] = 'Конвертер тяжелых PNG в JPG (сканер файлов без прозрачности)';
|
||||||
|
$_['text_tool_placeholders'] = 'Генератор заглушек (Вместо No Image)';
|
||||||
|
$_['text_tool_exif'] = 'Очистка EXIF-данных (Геотеги/Мета)';
|
||||||
|
$_['text_tool_small_photos'] = 'Сканер слишком мелких фото';
|
||||||
|
$_['text_tool_html_broken'] = 'Поиск битых картинок в HTML (Описаниях)';
|
||||||
|
$_['text_tool_empty_folders'] = 'Очистка пустых папок (image/catalog)';
|
||||||
|
$_['text_tool_smart_cache'] = 'Умная очистка кэша изображений';
|
||||||
|
$_['text_tool_folder_tree'] = 'Дерево папок (Статистика веса)';
|
||||||
|
$_['text_tool_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load (Без БД)';
|
||||||
|
$_['text_tool_translit'] = 'Транслитерация названий файлов';
|
||||||
|
$_['text_tool_cache_restore'] = 'Воскрешение оригиналов из Кэша';
|
||||||
|
$_['entry_wm_type'] = 'Тип вотермарка';
|
||||||
|
$_['text_wm_image'] = 'Изображение (PNG)';
|
||||||
|
$_['text_wm_text'] = 'Текст';
|
||||||
|
$_['entry_wm_image_path'] = 'Путь к изображению';
|
||||||
|
$_['entry_wm_text_val'] = 'Текст вотермарка';
|
||||||
|
$_['entry_wm_position'] = 'Позиция (1-9)';
|
||||||
|
$_['entry_wm_opacity'] = 'Прозрачность (0-100)';
|
||||||
|
$_['entry_wm_category'] = 'Только для Категорий';
|
||||||
|
$_['entry_wm_brand'] = 'Только для Брендов';
|
||||||
|
$_['entry_min_width'] = 'Минимальная ширина (px)';
|
||||||
|
$_['entry_min_height'] = 'Минимальная высота (px)';
|
||||||
|
$_['entry_ph_product'] = 'Заглушка для Товаров';
|
||||||
|
$_['entry_ph_category'] = 'Заглушка для Категорий';
|
||||||
|
$_['entry_ph_brand'] = 'Заглушка для Брендов';
|
||||||
|
$_['button_run_tool'] = 'Запустить инструмент';
|
||||||
|
$_['button_scan_tool'] = 'Сканировать';
|
||||||
|
$_['button_fix_tool'] = 'Исправить найденное';
|
||||||
|
$_['text_th_path'] = 'Файл / Путь';
|
||||||
|
$_['text_th_size'] = 'Размер';
|
||||||
|
$_['text_th_action'] = 'Действие';
|
||||||
|
$_['text_th_status'] = 'Статус';
|
||||||
|
$_['text_th_problem'] = 'Проблема / Значение';
|
||||||
|
$_['text_cron_title'] = 'Настройка Cron';
|
||||||
|
$_['text_cron_desc'] = 'Добавьте команду в Cron хостинга для автоматического фонового сжатия.';
|
||||||
|
$_['entry_cron_new_only'] = 'Обрабатывать только новые (необработанные) файлы';
|
||||||
|
$_['entry_cron_folders'] = 'Папки для сканирования (оставьте пустым для всего каталога)';
|
||||||
|
$_['text_promo_title'] = 'Другие модули серии [NAT]';
|
||||||
|
$_['text_promo_desc'] = 'Модули серии [NAT] — это инструменты для глубокой оптимизации OpenCart. Мы фокусируемся на автоматизации рутины, ускорении базы данных и очистке серверов от мусора. Все модули имеют открытый исходный код и единую логику управления.';
|
||||||
|
$_['text_support'] = 'Техническая поддержка и пожелания:';
|
||||||
|
$_['button_more'] = 'Смотреть все модули на OpenCart.com';
|
||||||
|
$_['button_more_forum'] = 'Opencartforum';
|
||||||
|
$_['text_mod_cat_opt'] = 'Catalog Optimizer [NAT]';
|
||||||
|
$_['text_mod_cat_opt_desc'] = 'Скрытие пустых категорий и брендов + SEO сортировка товаров (в наличии сверху) + Очистка мусора БД.';
|
||||||
|
$_['text_mod_new_arrivals'] = 'New Arrivals [NAT]: Новинки по датам';
|
||||||
|
$_['text_mod_new_arrivals_desc'] = 'Автоматическая SEO-страница новинок. Отображает новинки строго по реальной дате добавления. Слайдеры, сетка и умный сайдбар архива дат.';
|
||||||
|
$_['text_mod_img_opt'] = 'Image Optimizer [NAT]';
|
||||||
|
$_['text_mod_img_opt_desc'] = '<strong>Текущий модуль.</strong> Сжатие и ресайз ОРИГИНАЛОВ фото (image/catalog) в WebP + Очистка хостинга от неиспользуемых изображений.';
|
||||||
|
$_['text_mod_dom_scan'] = 'Domain Scanner [NAT]';
|
||||||
|
$_['text_mod_dom_scan_desc'] = 'Поиск и чистка внешних ссылок и HTTP-картинок в БД и шаблонах (для переезда на HTTPS).';
|
||||||
|
$_['text_mod_poll'] = 'Poll Widget [NAT]';
|
||||||
|
$_['text_mod_poll_desc'] = 'Создание опросов и голосований с визуальным конструктором дизайна, глубокой статистикой и защитой от накруток.';
|
||||||
|
$_['text_mod_db_opt'] = 'Database Optimizer [NAT]';
|
||||||
|
$_['text_mod_db_opt_desc'] = 'Интеллектуальная очистка мусора в базе данных, управление системными логами и добавление критически важных индексов для ускорения.';
|
||||||
|
$_['text_mod_im_ex'] = 'Import/Export [NAT]';
|
||||||
|
$_['text_mod_im_ex_desc'] = 'Быстрый импорт/экспорт цен и остатков из файлов xls/xlsx/csv/xml/json или по ссылке. Маппинг полей, работа по Cron, текстовые функции.';
|
||||||
|
$_['text_mod_admin_tools'] = 'Admin Tools [NAT]';
|
||||||
|
$_['text_mod_admin_tools_desc'] = 'Удобные инструменты администратора: вход под клиентом, кастомизация админки, управление правами пользователей и скрытие ненужных пунктов меню.';
|
||||||
|
$_['text_mod_utm_tracker'] = 'Order UTM Tracker [NAT]';
|
||||||
|
$_['text_mod_utm_tracker_desc'] = 'Автоматическое отслеживание UTM-меток при оформлении заказа. Сохраняет источник перехода, кампанию, ключевые слова и выводит эти данные в заказе для аналитики рекламы.';
|
||||||
|
$_['text_info_title_promo_top_bar'] = 'Promo Top Bar [NAT]: Верхний рекламный инфо-баннер, информационная полоса над шапкой, бегущая строка и топ-баннер';
|
||||||
|
$_['text_info_desc_promo_top_bar'] = 'Создание интерактивных промо-панелей и слайд-шоу в шапке сайта';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Молниеносная замена: автоматически меняет расширения .jpg/.png на .webp прямо в HTML-выводе витрины и добавляет атрибут loading="lazy". Не затрагивает базу данных!';
|
||||||
|
$_['entry_auto_fake_jpg_guard'] = 'Защита от фейковых JPG (On-the-Fly Guard)';
|
||||||
|
$_['help_auto_fake_jpg_guard'] = 'Автоматически выявляет при загрузке и импорте (1С, парсеры, CSV, FileManager) файлы PNG в маске .jpg, вызывающие чёрный фон на витрине, и исправляет их на лету при первом обращении.';
|
||||||
|
$_['entry_fake_jpg_mode'] = 'Режим исправления фейковых JPG:';
|
||||||
|
$_['text_fake_jpg_mode_jpg'] = 'Конвертировать в чистый JPG с белым фоном (#FFFFFF) [Рекомендуется]';
|
||||||
|
$_['text_fake_jpg_mode_png'] = 'Сохранить как настоящий PNG (прозрачность + обновление БД)';
|
||||||
|
$_['text_tool_no_image'] = 'Товары без главного фото (пусто в БД)';
|
||||||
|
$_['text_problem_main_broken'] = 'Битое главное фото (файл удален)';
|
||||||
|
$_['text_problem_add_broken'] = 'Битое доп. фото (файл удален)';
|
||||||
|
$_['text_problem_no_image'] = 'Отсутствует главное фото';
|
||||||
|
$_['text_err_dir'] = 'Ошибка: Директория не найдена или неверный путь.';
|
||||||
|
$_['text_err_no_queue'] = 'Ошибка: Очередь не найдена. Сначала запустите сканирование.';
|
||||||
|
$_['text_log_del_empty_folder'] = 'Удалена пустая папка: ';
|
||||||
|
$_['text_log_no_empty_folders'] = 'Пустых папок в image/catalog/ не найдено.';
|
||||||
|
$_['text_log_total_empty_folders'] = 'Всего удалено пустых папок: ';
|
||||||
|
$_['text_log_cache_cleared'] = 'Кэш изображений успешно очищен.';
|
||||||
|
$_['text_log_wm_smart_mode'] = 'Вотермарки работают в SMART-режиме: оригиналы не трогаются, логотип накладывается только при генерации кэша.';
|
||||||
|
$_['text_log_scan_dupes'] = 'Сканирование image/catalog/ на дубликаты (по хешу MD5)... Это может занять время.';
|
||||||
|
$_['text_log_found_dupe'] = 'Найден дубликат: ';
|
||||||
|
$_['text_log_no_dupes'] = 'Дубликаты не найдены.';
|
||||||
|
$_['text_log_total_dupes'] = 'Найдено дубликатов: %s. Потенциальная экономия: %s';
|
||||||
|
$_['text_log_fix_dupes_prompt'] = 'Нажмите "Исправить найденное" для перелинковки БД на оригинал и удаления дублей.';
|
||||||
|
$_['text_log_fixed_dupe'] = 'Исправлен и удален дубликат: ';
|
||||||
|
$_['text_log_success_dupes'] = 'Успешно исправлено дубликатов: %s. Ссылки в БД обновлены.';
|
||||||
|
$_['text_log_scan_png'] = 'Поиск тяжелых PNG файлов без прозрачности...';
|
||||||
|
$_['text_log_no_png'] = 'Подходящих PNG файлов не найдено.';
|
||||||
|
$_['text_log_total_png'] = 'Найдено PNG без прозрачности: %s. Нажмите "Исправить" для конвертации в JPG.';
|
||||||
|
$_['text_log_converted_jpg'] = 'Сконвертировано в JPG: ';
|
||||||
|
$_['text_log_success_png'] = 'Успешно сконвертировано %s файлов. Освобождено: %s';
|
||||||
|
$_['text_log_ph_prod'] = 'Обновлено товаров заглушкой: ';
|
||||||
|
$_['text_log_ph_cat'] = 'Обновлено категорий заглушкой: ';
|
||||||
|
$_['text_log_ph_brand'] = 'Обновлено брендов заглушкой: ';
|
||||||
|
$_['text_log_ph_empty'] = 'Заглушки не выбраны в настройках.';
|
||||||
|
$_['text_log_scan_exif'] = 'Сканирование EXIF-данных (мета-теги камер)...';
|
||||||
|
$_['text_log_stripped_exif'] = 'Очищен EXIF: ';
|
||||||
|
$_['text_log_no_exif'] = 'Файлов с EXIF для очистки не найдено.';
|
||||||
|
$_['text_log_success_exif'] = 'Очищен EXIF у %s файлов. Освобождено: %s';
|
||||||
|
$_['text_log_scan_small'] = 'Поиск фото размером менее %sx%s px...';
|
||||||
|
$_['text_log_too_small'] = 'Слишком маленькое (%sx%s): ';
|
||||||
|
$_['text_log_no_small'] = 'Мелких фото не найдено.';
|
||||||
|
$_['text_log_total_small'] = 'Найдено мелких фото: %s. Пожалуйста, замените их на качественные.';
|
||||||
|
$_['text_log_html_broken'] = 'Битый IMG в HTML таблицы %s (ID: %s): ';
|
||||||
|
$_['text_log_no_html_broken'] = 'Битых картинок в HTML-описаниях не найдено.';
|
||||||
|
$_['text_log_total_html_broken'] = 'Найдено битых ссылок в HTML: %s. Исправьте их вручную в редакторе.';
|
||||||
|
$_['text_log_scan_smart_cache'] = 'Поиск потерянных файлов в image/cache/...';
|
||||||
|
$_['text_log_del_orph_cache'] = 'Удален потерянный кэш: ';
|
||||||
|
$_['text_log_no_orph_cache'] = 'Потерянного кэша не найдено.';
|
||||||
|
$_['text_log_success_smart_cache'] = 'Удалено файлов потерянного кэша: %s. Освобождено: %s';
|
||||||
|
$_['text_log_scan_translit'] = 'Поиск файлов с кириллицей или пробелами...';
|
||||||
|
$_['text_log_no_bad_names'] = 'Файлов с некорректными именами не найдено.';
|
||||||
|
$_['text_log_total_bad_names'] = 'Найдено файлов с кириллицей/пробелами: %s. Нажмите "Исправить" для транслитерации и обновления БД.';
|
||||||
|
$_['text_log_renamed'] = 'Переименовано: ';
|
||||||
|
$_['text_log_success_translit'] = 'Успешно транслитерировано файлов: %s. БД обновлена.';
|
||||||
|
$_['text_log_scan_restore'] = 'Сканирование image/cache/ для восстановления утерянных оригиналов...';
|
||||||
|
$_['text_log_restored_cache'] = 'Восстановлено из кэша: ';
|
||||||
|
$_['text_log_no_lost_orig'] = 'Отсутствующих оригиналов в кэше не найдено.';
|
||||||
|
$_['text_log_success_restore'] = 'Успешно восстановлено оригиналов из кэша: %s.';
|
||||||
|
$_['error_invalid_folder'] = 'Ошибка: Недопустимое имя папки!';
|
||||||
|
$_['text_formats_title'] = 'Современные форматы (WebP & SVG)';
|
||||||
|
$_['text_formats_desc'] = 'Настройки интеграции современных форматов в файловую систему и шаблоны OpenCart.';
|
||||||
|
$_['entry_support_svg'] = 'Поддержка загрузки SVG';
|
||||||
|
$_['help_support_svg'] = 'Разрешает загрузку векторных SVG-изображений через стандартный Filemanager и их безопасный вывод на витрине без искажений размеров.';
|
||||||
|
$_['entry_support_svg_autofix'] = 'Автофикс CSS-стилей SVG';
|
||||||
|
$_['help_support_svg_autofix'] = 'Применяет изолированные CSS-стили размеров для каталожных SVG-товаров без влияния на флаги языков и системные иконки.';
|
||||||
|
$_['entry_support_webp'] = 'Поддержка загрузки WebP (+ TrueFileManager)';
|
||||||
|
$_['help_support_webp'] = 'Позволяет выбирать, загружать и просматривать WebP через стандартный FileManager и TrueFileManager (elFinder).';
|
||||||
|
$_['entry_truefilemanager_webp'] = 'WebP в TrueFileManager';
|
||||||
|
$_['help_truefilemanager_webp'] = 'Добавляет поддержку загрузки, предпросмотра и эскизов WebP в TrueFileManager от sitecreator (если он установлен).';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Сверхбыстрая подмена: автоматически меняет расширения .jpg/.png на .webp прямо в HTML-выводе витрины и добавляет атрибут loading="lazy". Не трогает базу данных!';
|
||||||
|
$_['help_tool_broken_db'] = 'Ищет в базе данных картинки, физические файлы которых были удалены с сервера. Позволяет очистить битые ссылки.';
|
||||||
|
$_['help_tool_empty_folders'] = 'Рекурсивно сканирует директорию image/catalog/ и безопасно удаляет все папки, в которых нет ни одного файла.';
|
||||||
|
$_['help_tool_folder_tree'] = 'Строит дерево каталогов и показывает реальный вес каждой папки для поиска "пожирателей" места.';
|
||||||
|
$_['help_tool_html_broken'] = 'Сканирует HTML-описания товаров и категорий на наличие тегов <img> с несуществующими картинками.';
|
||||||
|
$_['help_tool_small_photos'] = 'Находит картинки с разрешением ниже заданного (например, меньше 300x300 px). Добавлены ссылки на поиск качественных аналогов в Google Images и Яндекс Картинках.';
|
||||||
|
$_['help_tool_duplicates'] = 'Ищет полные дубликаты файлов по MD5 хешу (разные имена, но одинаковая картинка). Позволяет склеить их в один файл и обновить БД.';
|
||||||
|
$_['help_tool_watermark'] = 'Наложение водяных знаков в SMART-режиме (только на кэш витрины, оригиналы не изменяются).';
|
||||||
|
$_['help_tool_placeholders'] = 'Массово устанавливает выбранную картинку-заглушку для товаров и категорий, у которых вообще нет фото.';
|
||||||
|
$_['help_tool_png_jpg'] = 'Инструмент сканирует папку изображений и находит тяжелые PNG-файлы, которые не имеют прозрачного фона (альфа-канала). Поскольку прозрачность им не нужна, их можно безопасно конвертировать в формат JPG. Это значительно облегчает файлы (в среднем на 70-80%) и ускоряет загрузку сайта, а все ссылки в базе данных автоматически обновляются.';
|
||||||
|
$_['help_tool_exif'] = 'Сканирует JPEG-файлы и удаляет из них скрытые EXIF-данные (геотеги, данные о камере), уменьшая вес на 10-15%.';
|
||||||
|
$_['help_tool_smart_cache'] = 'Ищет в папке image/cache/ кэшированные файлы, оригиналы которых уже удалены из image/catalog/, и стирает этот мусор.';
|
||||||
|
$_['help_tool_translit'] = 'Находит файлы с кириллицей или пробелами в названиях, переименовывает их транслитом (tovar_1.jpg) и обновляет пути в БД.';
|
||||||
|
$_['help_tool_cache_restore'] = 'Если вы случайно удалили оригинал из catalog, инструмент попытается найти его копию в cache и восстановить обратно.';
|
||||||
|
$_['entry_quarantine'] = 'Переместить оригиналы в Карантин (вместо удаления)';
|
||||||
|
$_['entry_backup_db'] = 'Создать бэкап изменяемых таблиц в SQL перед запуском';
|
||||||
|
$_['button_fix_selected'] = 'ИСПРАВИТЬ ВЫБРАННЫЕ';
|
||||||
|
$_['button_export_log'] = 'Экспортировать в CSV';
|
||||||
|
$_['text_th_before'] = 'Состояние ДО';
|
||||||
|
$_['text_th_after'] = 'Ожидаемый результат ПОСЛЕ';
|
||||||
|
$_['text_th_select'] = 'Действие';
|
||||||
|
$_['text_th_preview'] = 'Предпросмотр';
|
||||||
|
$_['text_th_name'] = 'Объект / Файл';
|
||||||
|
$_['text_global_action'] = 'Групповое действие для выбранных:';
|
||||||
|
$_['text_action_clear'] = 'Очистить ссылку в БД';
|
||||||
|
$_['text_action_disable'] = 'Отключить (Статус = 0)';
|
||||||
|
$_['text_action_stock'] = 'Установить "Нет в наличии"';
|
||||||
|
$_['text_action_placeholder'] = 'Установить заглушку';
|
||||||
|
$_['text_action_ignore'] = 'Ничего не делать';
|
||||||
|
$_['text_action_merge'] = 'Склеить (удалить дубликат, оставить оригинал)';
|
||||||
|
$_['text_action_convert'] = 'Конвертировать в JPG';
|
||||||
|
$_['text_action_rename'] = 'Переименовать транслитом';
|
||||||
|
$_['text_action_delete'] = 'Удалить';
|
||||||
|
$_['text_action_restore'] = 'Восстановить';
|
||||||
|
$_['text_db_backup_created'] = 'Создан бэкап БД: %s';
|
||||||
|
$_['text_quarantine_created'] = 'Перенесено в карантин: %s';
|
||||||
|
$_['text_fix_status_success'] = 'Успешно выполнено';
|
||||||
|
$_['text_fix_status_error'] = 'Ошибка: %s';
|
||||||
|
$_['text_log_exported'] = 'Лог успешно экспортирован!';
|
||||||
|
$_['text_select_action'] = '-- Выберите действие --';
|
||||||
|
$_['error_empty_selection'] = 'Ошибка: Не выбрано ни одной строки для исправления!';
|
||||||
|
$_['text_link_admin'] = 'Админка';
|
||||||
|
$_['text_link_catalog'] = 'Витрина';
|
||||||
|
$_['entry_threads'] = 'Потоков обработки';
|
||||||
|
$_['text_threads_optimal'] = 'оптимально';
|
||||||
|
$_['button_download_zip'] = 'Скачать ZIP-архив и удалить папку';
|
||||||
|
$_['confirm_download_and_delete'] = 'Архив успешно скачался? Можно удалить временную папку копий на сервере?';
|
||||||
|
$_['button_clear_backups'] = 'Удалить бэкапы БД';
|
||||||
|
$_['button_clear_backups_short'] = 'Очистить бэкапы';
|
||||||
|
$_['confirm_clear_backups'] = 'Вы уверены, что хотите полностью удалить все SQL-бэкапы таблиц?';
|
||||||
|
$_['text_compare_title'] = 'Сравнение изображений ДО / ПОСЛЕ';
|
||||||
|
$_['text_compare_before'] = 'ДО';
|
||||||
|
$_['text_compare_after'] = 'ПОСЛЕ';
|
||||||
|
$_['text_backups_cleared'] = 'Все SQL-бэкапы таблиц успешно удалены!';
|
||||||
|
$_['error_no_backups'] = 'Бэкапы не найдены или папка пуста.';
|
||||||
|
$_['button_restore'] = 'Вернуть';
|
||||||
|
$_['button_empty'] = 'Очистить';
|
||||||
|
$_['entry_wm_targets'] = 'Применять водяной знак к:';
|
||||||
|
$_['text_wm_target_product'] = 'Фото товаров';
|
||||||
|
$_['text_wm_target_category'] = 'Фото категорий';
|
||||||
|
$_['text_wm_target_brand'] = 'Логотипы брендов';
|
||||||
|
$_['text_wm_target_banner'] = 'Баннеры и слайды';
|
||||||
|
$_['text_wm_target_blog'] = 'Статьи / Блог';
|
||||||
|
$_['error_no_scan_data'] = 'Ошибка: Данные сканирования не найдены. Сначала запустите сканирование!';
|
||||||
|
$_['error_row_not_found'] = 'Ошибка: Объект не найден в результатах сканирования!';
|
||||||
|
$_['error_file_not_found'] = 'Ошибка: Файл не найден на сервере!';
|
||||||
|
$_['text_folder_rules_title'] = 'Индивидуальные правила сжатия для папок';
|
||||||
|
$_['text_folder_rules_desc'] = 'Вы можете переопределить качество и максимальные размеры для конкретных папок. Если оставить поле пустым, будет использоваться глобальная настройка. Путь указывается относительно папки image (например, catalog/banners/).';
|
||||||
|
$_['entry_folder_path'] = 'Путь к папке';
|
||||||
|
$_['entry_jpg_quality'] = 'Качество JPG';
|
||||||
|
$_['entry_webp_quality'] = 'Качество WebP';
|
||||||
|
$_['button_add_rule'] = 'Добавить правило';
|
||||||
|
$_['button_remove'] = 'Удалить';
|
||||||
|
$_['entry_wm_angle'] = 'Угол наклона водяного знака (градусы)';
|
||||||
|
$_['entry_wm_corner_radius'] = 'Скругление углов водяного знака (px)';
|
||||||
|
$_['entry_wm_size_type'] = 'Масштабирование водяного знака';
|
||||||
|
$_['entry_wm_size_percent'] = 'Размер водяного знака (% от ширины изображения)';
|
||||||
|
$_['entry_wm_text_color'] = 'Цвет текста водяного знака';
|
||||||
|
$_['entry_wm_text_font'] = 'Шрифт водяного знака (TTF)';
|
||||||
|
$_['entry_wm_filter_mode'] = 'Режим фильтрации Категорий/Брендов';
|
||||||
|
$_['text_wm_filter_include'] = 'Только для выбранных';
|
||||||
|
$_['text_wm_filter_exclude'] = 'Для всех, кроме выбранных';
|
||||||
|
$_['text_wm_size_original'] = 'Оригинальный размер';
|
||||||
|
$_['text_wm_size_percent'] = 'Пропорционально ширине изображения (%)';
|
||||||
|
$_['button_preview_watermark'] = 'Предпросмотр водяного знака';
|
||||||
|
$_['text_wm_preview_title'] = 'Предпросмотр водяного знака';
|
||||||
|
$_['text_cron_exclude_folders'] = 'Исключить папки из сканирования';
|
||||||
|
$_['text_cron_entities'] = 'Какие типы фото обрабатывать?';
|
||||||
|
$_['text_cron_quality_override'] = 'Переопределить параметры сжатия для Крона';
|
||||||
|
$_['text_cron_recommendations'] = 'Рекомендации по расписанию запуска Cron';
|
||||||
|
$_['text_cron_recommendations_desc'] = '<ul><li><b>Для небольших сайтов (до 5000 товаров)</b> рекомендуется запускать Крон каждый час (<code>0 * * * *</code>).</li><li><b>Для средних сайтов (5000-20000 товаров)</b> рекомендуется запускать раз в 3-6 часов (<code>0 */6 * * *</code>).</li><li><b>Для крупных сайтов (более 20000 товаров)</b> — один раз в сутки ночью (например, в 2:00: <code>0 2 * * *</code>).</li></ul>';
|
||||||
|
$_['text_tool_broken_files'] = 'Сканер битых/пустых файлов на сервере';
|
||||||
|
$_['help_tool_broken_files'] = 'Сканирует физические файлы в папке image/catalog/ на наличие поврежденных изображений или пустых файлов размером 0 байт.';
|
||||||
|
$_['text_grid_broken_file'] = 'Битый или пустой файл на сервере';
|
||||||
|
$_['text_grid_broken_file_after'] = 'Удаление или замена заглушкой';
|
||||||
|
$_['text_description_broken_files'] = 'Результаты сканирования физических файлов в папке image/catalog/. Здесь отображаются битые (поврежденные) изображения или файлы размером 0 байт.';
|
||||||
|
$_['text_action_strip'] = 'Очистить EXIF';
|
||||||
|
$_['text_action_set_placeholder'] = 'Установить заглушку';
|
||||||
|
$_['text_th_entity'] = 'Объект / Связанные ссылки';
|
||||||
|
$_['text_cron_entity_product'] = 'Товары';
|
||||||
|
$_['text_cron_entity_category'] = 'Категории';
|
||||||
|
$_['text_cron_entity_manufacturer'] = 'Производители / Бренды';
|
||||||
|
$_['text_cron_entity_banner'] = 'Баннеры';
|
||||||
|
$_['text_cron_entity_blog'] = 'Блог / Статьи';
|
||||||
|
$_['entry_cron_jpg_quality'] = 'Качество JPG (Крон)';
|
||||||
|
$_['entry_cron_webp_quality'] = 'Качество WebP (Крон)';
|
||||||
|
$_['entry_cron_max_width'] = 'Макс. ширина px (Крон)';
|
||||||
|
$_['entry_cron_max_height'] = 'Макс. высота px (Крон)';
|
||||||
|
$_['text_cron_folder_scan'] = 'Папки для сканирования';
|
||||||
|
$_['text_no_fonts'] = 'TTF-шрифты не найдены в system/library/font/';
|
||||||
|
$_['button_apply'] = 'Применить';
|
||||||
|
$_['text_backup_will_be_created'] = 'Резервная копия базы данных будет автоматически создана перед выполнением этого действия.';
|
||||||
|
$_['text_bulk_action'] = 'Групповое действие для выбранных';
|
||||||
|
$_['text_grid_results'] = 'Результаты и детали сканирования';
|
||||||
|
$_['text_quarantine_will_be_created'] = 'Оригинальные файлы будут перемещены в карантин (image/catalog_trash/) перед изменением.';
|
||||||
|
$_['text_success_apply'] = 'Изменения успешно применены!';
|
||||||
|
$_['text_description_broken'] = 'Результаты сканирования базы данных на наличие битых ссылок (записи в таблицах с несуществующими файлами).';
|
||||||
|
$_['text_description_cache_restore'] = 'Результаты поиска файлов в кэше, оригиналы которых отсутствуют в каталоге.';
|
||||||
|
$_['text_description_duplicates'] = 'Результаты поиска полных дубликатов изображений по MD5-хешу.';
|
||||||
|
$_['text_description_empty_folders'] = 'Список пустых папок в директории image/catalog/ для удаления.';
|
||||||
|
$_['text_description_exif'] = 'Результаты поиска изображений с метаданными EXIF, которые можно очистить.';
|
||||||
|
$_['text_description_folder_tree'] = 'Статистика размера папок в каталоге image/catalog/.';
|
||||||
|
$_['text_description_html_broken'] = 'Результаты поиска несуществующих файлов картинок, на которые ссылаются описания в HTML.';
|
||||||
|
$_['text_description_placeholders'] = 'Результаты поиска сущностей без изображений для заполнения заглушками.';
|
||||||
|
$_['text_description_png_jpg'] = 'Результаты поиска тяжелых изображений PNG без прозрачности, которые можно пережать в JPG.';
|
||||||
|
$_['text_description_small_photos'] = 'Список изображений, размеры которых меньше минимально заданных (%sx%s px).';
|
||||||
|
$_['text_description_smart_cache'] = 'Результаты поиска файлов кэша, оригиналы которых уже были удалены.';
|
||||||
|
$_['text_description_translit'] = 'Результаты поиска файлов с кириллицей или пробелами в названиях.';
|
||||||
|
$_['text_grid_broken_db_after'] = 'Очистить ссылку или установить заглушку';
|
||||||
|
$_['text_grid_dupe_after'] = 'Оригинал (остаётся)';
|
||||||
|
$_['text_grid_dupe_before'] = 'Дубликат (будет удалён)';
|
||||||
|
$_['text_grid_empty_folder'] = 'Пустая папка';
|
||||||
|
$_['text_grid_empty_folder_after'] = 'Удалить пустую папку';
|
||||||
|
$_['text_grid_exif_after'] = 'Очистить метаданные';
|
||||||
|
$_['text_grid_exif_before'] = 'Содержит EXIF';
|
||||||
|
$_['text_grid_html_after'] = 'Исправить ссылку вручную';
|
||||||
|
$_['text_grid_missing_file'] = 'Файл отсутствует';
|
||||||
|
$_['text_grid_missing_html'] = 'Картинка не найдена в описании';
|
||||||
|
$_['text_grid_missing_orig'] = 'Оригинал отсутствует';
|
||||||
|
$_['text_grid_missing_orig_after'] = 'Восстановить оригинал из кэша';
|
||||||
|
$_['text_grid_no_image'] = 'Нет изображения (пусто)';
|
||||||
|
$_['text_grid_orph_cache'] = 'Осиротевший кэш';
|
||||||
|
$_['text_grid_orph_cache_after'] = 'Удалить ненужный кэш';
|
||||||
|
$_['text_grid_ph_brand_after'] = 'Установить заглушку бренда';
|
||||||
|
$_['text_grid_ph_category_after'] = 'Установить заглушку категории';
|
||||||
|
$_['text_grid_ph_product_after'] = 'Установить заглушку товара';
|
||||||
|
$_['text_grid_small_photo_after'] = 'Рекомендуется заменить на более крупное';
|
||||||
|
$_['text_grid_too_small'] = 'Слишком маленькое';
|
||||||
|
$_['text_no_relations'] = 'Нет связей в БД';
|
||||||
|
$_['text_action_archive'] = 'Архивировать (в ZIP)';
|
||||||
|
$_['text_action_archive_delete'] = 'Архивировать + Удалить';
|
||||||
|
$_['text_tool_sanitizer'] = 'Санитайзер имен файлов';
|
||||||
|
$_['help_tool_sanitizer'] = 'Массовая очистка имен файлов и папок от кириллицы, пробелов и спецсимволов, приведение расширений к единому виду.';
|
||||||
|
$_['text_description_sanitizer'] = 'Результаты анализа имен файлов для санитаризации по выбранным правилам.';
|
||||||
|
$_['entry_sz_translit'] = 'Транслитерация (кириллица в латиницу)';
|
||||||
|
$_['entry_sz_spaces'] = 'Заменять пробелы на символ "_"';
|
||||||
|
$_['entry_sz_special'] = 'Удалять специальные символы';
|
||||||
|
$_['entry_sz_lowercase_name'] = 'Имя файла в нижний регистр';
|
||||||
|
$_['entry_sz_lowercase_ext'] = 'Расширение в нижний регистр';
|
||||||
|
$_['entry_sz_normalize_ext'] = 'Нормализовать расширения (jpeg -> jpg)';
|
||||||
|
$_['entry_cron_folder_mode'] = 'Режим фильтрации папок';
|
||||||
|
$_['text_cron_folder_mode_exclude'] = 'Сканировать все, кроме выбранных (Исключения)';
|
||||||
|
$_['text_cron_folder_mode_include'] = 'Сканировать только выбранные папки';
|
||||||
|
$_['button_select_all'] = 'Выбрать все';
|
||||||
|
$_['button_deselect_all'] = 'Снять все';
|
||||||
|
$_['entry_wm_upload_font'] = 'Загрузить свой шрифт TTF';
|
||||||
|
$_['button_upload_font'] = 'Загрузить шрифт';
|
||||||
|
$_['text_success_font_upload'] = 'Шрифт успешно загружен!';
|
||||||
|
$_['error_font_upload'] = 'Ошибка загрузки шрифта! Разрешены только файлы .ttf весом до 5 МБ.';
|
||||||
|
$_['entry_lazy_load'] = 'Прогрессивная ленивая загрузка';
|
||||||
|
$_['help_lazy_load'] = 'Включает премиальную прогрессивную отложенную загрузку на витрине. Изображения заменяются микро-превью и плавно размываются (blur-up), подгружаясь по мере прокрутки.';
|
||||||
|
$_['confirm_replace_mode'] = 'ВНИМАНИЕ! Вы выбрали режим «Заменять оригиналы». Все изображения будут перезаписаны прямо на сервере. Настоятельно рекомендуем сделать резервную копию. Вы уверены, что хотите продолжить?';
|
||||||
|
$_['text_compare'] = 'Сравнить';
|
||||||
|
$_['text_home'] = 'Главная';
|
||||||
|
$_['text_tech_gd'] = 'Библиотека GD';
|
||||||
|
$_['text_tech_imagick'] = 'Imagick';
|
||||||
|
$_['text_tech_webp'] = 'Поддержка WebP';
|
||||||
|
$_['text_position_1'] = '1 - Слева вверху';
|
||||||
|
$_['text_position_2'] = '2 - По центру вверху';
|
||||||
|
$_['text_position_3'] = '3 - Справа вверху';
|
||||||
|
$_['text_position_4'] = '4 - Слева посередине';
|
||||||
|
$_['text_position_5'] = '5 - По центру';
|
||||||
|
$_['text_position_6'] = '6 - Справа посередине';
|
||||||
|
$_['text_position_7'] = '7 - Слева внизу';
|
||||||
|
$_['text_position_8'] = '8 - По центру внизу';
|
||||||
|
$_['text_position_9'] = '9 - Справа внизу';
|
||||||
|
|
||||||
|
$_['entry_log_level'] = 'Уровень лога';
|
||||||
|
$_['text_log_changed_only'] = 'Только изменённые';
|
||||||
|
$_['text_log_all'] = 'Все файлы (подробно)';
|
||||||
|
$_['text_skipped_no_gain'] = 'Пропущен (нет улучшения)';
|
||||||
|
$_['text_reset_cache_hint'] = 'Сбросить кэш оптимизации (полный пересканирование)';
|
||||||
|
$_['confirm_reset_cache'] = 'Сбросить кэш оптимизации? Следующее сканирование проверит ВСЕ файлы заново.';
|
||||||
|
$_['text_cache_cleared'] = 'Кэш оптимизации очищен. Следующее сканирование проверит все файлы.';
|
||||||
|
$_['error_wm_preview'] = 'Ошибка генерации превью водяного знака.';
|
||||||
|
$_['error_wm_too_large'] = 'Изображение водяного знака слишком большое (%dx%d px)! Максимально допустимый размер: %dx%d px.';
|
||||||
|
$_['text_apply_errors_warning'] = 'ВНИМАНИЕ: Некоторые файлы не удалось заменить (заблокированы или нет прав):';
|
||||||
|
$_['text_action_compress'] = 'Сжать изображения';
|
||||||
|
$_['text_estimated'] = 'Прогноз';
|
||||||
|
$_['entry_min_savings_bytes'] = 'Мин. сжатие (байт)';
|
||||||
|
$_['entry_min_savings_percent'] = 'Мин. сжатие (%)';
|
||||||
|
$_['text_optimized'] = 'Оптимизировано';
|
||||||
|
$_['entry_broken_fallback'] = 'Заглушка для битых фото';
|
||||||
|
$_['help_broken_fallback'] = 'Автоматически заменяет отсутствующие или поврежденные изображения каталога на витрине на изображение-заглушку.';
|
||||||
|
$_['entry_fallback_image'] = 'Изображение-заглушка';
|
||||||
|
$_['help_fallback_image'] = 'Выберите изображение, которое будет показано, если оригинальный файл картинки товара или категории отсутствует. По умолчанию используется no_image.png.';
|
||||||
|
$_['text_tool_cmyk'] = 'Конвертер CMYK в RGB';
|
||||||
|
$_['help_tool_cmyk'] = 'Конвертация JPEG изображений из цветового профиля CMYK в sRGB для корректного отображения в браузерах Safari и на устройствах iOS.';
|
||||||
|
$_['text_tool_heavy_files'] = 'Поиск тяжелых файлов';
|
||||||
|
$_['help_tool_heavy_files'] = 'Поиск самых тяжелых оригинальных изображений в каталоге с возможностью их быстрого сжатия прямо здесь.';
|
||||||
|
$_['entry_heavy_files_limit'] = 'Макс. количество найденных файлов (всего)';
|
||||||
|
$_['text_action_convert_rgb'] = 'Конвертировать в RGB';
|
||||||
|
$_['text_description_cmyk'] = 'Найдены файлы в цветовом пространстве CMYK. Конвертация в sRGB гарантирует корректное отображение на всех платформах, включая iOS/macOS.';
|
||||||
|
$_['text_description_heavy'] = 'Список из %d самых тяжелых файлов в каталоге изображений. Вы можете оптимизировать их прямо здесь.';
|
||||||
|
$_['text_cron_folder_hint_exclude_all'] = 'Статус: Будут сканироваться все папки (исключения не выбраны).';
|
||||||
|
$_['text_cron_folder_hint_exclude_some'] = 'Статус: Будут сканироваться все папки, КРОМЕ %d отмеченных.';
|
||||||
|
$_['text_cron_folder_hint_include_some'] = 'Статус: Будут сканироваться только %d отмеченных папок.';
|
||||||
|
$_['text_cron_folder_hint_include_none'] = 'ВНИМАНИЕ: Ни одна папка не выбрана! Крон ничего не будет сканировать.';
|
||||||
|
$_['text_action_apply_changes'] = 'Применить указанные изменения';
|
||||||
|
$_['entry_wm_status'] = 'Статус водяного знака';
|
||||||
|
$_['text_disabled'] = 'Отключено';
|
||||||
|
$_['entry_rule_name'] = 'Название правила';
|
||||||
|
$_['entry_rule_status'] = 'Статус правила';
|
||||||
|
$_['entry_action'] = 'Действие';
|
||||||
|
$_['entry_ph_status'] = 'Статус заглушек';
|
||||||
|
$_['entry_sanitizer_limit'] = 'Макс. файлов для поиска (лимит)';
|
||||||
|
$_['entry_heavy_files_min_size'] = 'Минимальный размер';
|
||||||
|
$_['entry_png_jpg_limit'] = 'Макс. файлов для поиска (лимит)';
|
||||||
|
$_['entry_png_jpg_min_size'] = 'Минимальный размер';
|
||||||
|
$_['text_wm_rule_title'] = 'Правило водяного знака';
|
||||||
|
$_['button_close'] = 'Закрыть';
|
||||||
|
$_['text_ph_rule_title'] = 'Правило заглушки';
|
||||||
|
$_['entry_ph_image'] = 'Изображение заглушки';
|
||||||
|
$_['button_clear_cache_wm'] = 'Очистить кэш (применить водяной знак)';
|
||||||
|
$_['text_active'] = 'Активна';
|
||||||
|
$_['text_error'] = 'Не активна';
|
||||||
|
$_['text_th_dupe_delete'] = 'Файл для удаления (Дубликат)';
|
||||||
|
$_['text_th_dupe_keep'] = 'Файл для сохранения (Оригинал)';
|
||||||
|
$_['text_dupe_original_label'] = 'Оригинал';
|
||||||
|
$_['text_dupe_duplicate_label'] = 'Дубликат';
|
||||||
|
|
||||||
|
$_['text_disk_usage'] = 'Использование диска';
|
||||||
|
$_['text_cumulative_stats'] = 'Статистика оптимизации';
|
||||||
|
$_['text_disk_catalog'] = 'Каталог изображений';
|
||||||
|
$_['text_disk_cache'] = 'Кэш OC';
|
||||||
|
$_['text_disk_trash'] = 'Корзина модуля';
|
||||||
|
$_['text_disk_other'] = 'Прочее';
|
||||||
|
$_['text_disk_free'] = 'Свободно';
|
||||||
|
$_['text_total_files_opt'] = 'Файлов обработано';
|
||||||
|
$_['text_total_saved'] = 'Всего сэкономлено';
|
||||||
|
$_['text_avg_saving_pct'] = 'Средняя экономия';
|
||||||
|
$_['text_stats_hint'] = 'Статистика хранится в БД сайта (учитывает Оптимизацию, Очистку, Инструменты и Крон)';
|
||||||
|
$_['text_reset_stats'] = 'Сбросить статистику';
|
||||||
|
$_['text_reset_stats_confirm']= 'Вы уверены, что хотите сбросить всю статистику из БД?';
|
||||||
|
$_['text_export_import'] = 'Экспорт / Импорт настроек';
|
||||||
|
$_['button_export_settings'] = 'Экспорт настроек (JSON)';
|
||||||
|
$_['button_import_settings'] = 'Импортировать настройки';
|
||||||
|
$_['help_export_settings'] = 'Скачать все настройки модуля в JSON-файл';
|
||||||
|
$_['help_import_settings'] = 'Загрузить ранее экспортированный JSON для восстановления настроек';
|
||||||
|
$_['text_import_success'] = 'Настройки успешно импортированы. Перезагрузите страницу для применения.';
|
||||||
|
$_['error_import_file'] = 'Файл не загружен или ошибка загрузки';
|
||||||
|
$_['error_import_invalid'] = 'Некорректный файл настроек (неверный модуль или формат)';
|
||||||
|
$_['text_click_to_load'] = 'Нажмите ↑ для загрузки данных диска';
|
||||||
|
$_['tab_formats'] = 'Форматы изображений';
|
||||||
|
|
||||||
|
$_['text_disk_quota_legend'] = 'Лимиты диска хостинга (вручную)';
|
||||||
|
$_['text_disk_quota_desc'] = 'Если график дискового пространства показывает неверные данные (физический диск сервера вместо лимита вашего хостинга), вы можете указать лимиты вашего тарифа вручную. Укажите 0, чтобы использовать автоопределение.';
|
||||||
|
$_['entry_disk_quota_total'] = 'Выделено диска на хостинге (ГБ)';
|
||||||
|
$_['entry_disk_quota_used'] = 'Занято диска на хостинге всего (ГБ)';
|
||||||
|
$_['entry_auto_disk'] = 'Автообновление при входе';
|
||||||
|
|
||||||
|
$_['entry_cron_task_name'] = 'Название задачи';
|
||||||
|
$_['entry_cron_task_summary'] = 'Параметры сжатия';
|
||||||
|
$_['button_add_cron_task'] = 'Добавить задачу';
|
||||||
|
$_['button_copy_cron_url'] = 'Копировать URL';
|
||||||
|
$_['text_cron_recommended_url'] = 'URL для запуска задачи крона:';
|
||||||
|
$_['entry_cron_batch_limit'] = 'Лимит пакета за один запуск Крона (файлов)';
|
||||||
|
$_['help_cron_batch_limit'] = 'Максимальное количество файлов, обрабатываемых за один запуск Крона. По умолчанию 100. Рекомендуется от 50 до 300 для предотвращения таймаута выполнения на хостинге.';
|
||||||
|
|
||||||
|
$_['text_license_required'] = 'Требуется лицензионный ключ';
|
||||||
|
$_['text_license_required_desc'] = 'Пожалуйста, введите лицензионный ключ для активации модуля. Все функции настроек и оптимизации заблокированы до ввода валидного ключа.';
|
||||||
|
$_['entry_token_desc'] = 'Введите токен активации, выданный для вашего основного домена. Вы можете получить его в личном кабинете на форуме или обратившись в поддержку.';
|
||||||
|
$_['button_activate'] = 'Активировать модуль';
|
||||||
|
$_['text_support'] = 'Техническая поддержка';
|
||||||
|
$_['text_support_desc'] = 'Если у вас ещё нет ключа или возникли проблемы, пожалуйста, сообщите номер вашего заказа и домен.';
|
||||||
|
|
||||||
|
$_['entry_wm_max_width'] = 'Макс. ширина водяного знака (px)';
|
||||||
|
$_['entry_wm_max_height'] = 'Макс. высота водяного знака (px)';
|
||||||
|
$_['help_wm_max_width'] = 'Если исходное изображение водяного знака превышает эту ширину, оно будет автоматически масштабировано. Укажите 0 или оставьте пустым для значения по умолчанию (800px).';
|
||||||
|
$_['help_wm_max_height'] = 'Если исходное изображение водяного знака превышает эту высоту, оно будет автоматически масштабировано. Укажите 0 или оставьте пустым для значения по умолчанию (800px).';
|
||||||
|
$_['entry_disk_status'] = 'Включить сканирование диска и график';
|
||||||
|
$_['help_disk_status'] = 'Если включено, модуль будет периодически сканировать объем папки картинок и отображать круговую диаграмму. Рекомендуется выключить на больших сайтах для ускорения загрузки панели.';
|
||||||
|
$_['text_disk_settings_title'] = 'Настройка лимитов и сканирования диска';
|
||||||
|
|
||||||
|
$_['text_tool_svg_security'] = 'SVG Security Sanitizer (Защита XSS/XXE)';
|
||||||
|
$_['help_tool_svg_security'] = 'Сканирует SVG-векторные изображения в image/catalog/ на наличие опасного кода (скрипты, обработчики событий, XXE entity, foreignObject, javascript: URI) и очищает их.';
|
||||||
|
$_['text_description_svg_security'] = 'SVG Security Sanitizer проверяет все SVG-файлы в каталоге на уязвимости безопасности. Очистка удаляет вредоносные скрипты и инъекции, сохраняя графическое изображение.';
|
||||||
|
$_['text_svg_threats_found'] = 'Найдено угроз безопасности: %d';
|
||||||
|
$_['text_svg_threat_xxe_entity'] = 'XXE Entity атака';
|
||||||
|
$_['text_svg_threat_script_tag'] = 'Тег скрипта (<script>)';
|
||||||
|
$_['text_svg_threat_event_handler'] = 'Обработчик событий (on*)';
|
||||||
|
$_['text_svg_threat_javascript_uri']= 'JavaScript URI (javascript:)';
|
||||||
|
$_['text_svg_threat_foreign_object']= 'Чужеродный объект (<foreignObject>)';
|
||||||
|
$_['text_svg_threat_embed_object'] = 'Вложенный объект (<object>/<iframe>)';
|
||||||
|
$_['text_svg_threat_css_injection'] = 'CSS-инъекция';
|
||||||
|
$_['text_svg_clean_success'] = 'Очищено и безопасно';
|
||||||
|
|
||||||
|
$_['text_tool_black_bg'] = 'Поиск чёрного фона и Фейковых JPG';
|
||||||
|
$_['help_tool_black_bg'] = 'Находит PNG-изображения с расширением .jpg (из автоимпортов) и фото с чёрным фоном/рамками. Заменяет чёрный фон на белый (#FFFFFF).';
|
||||||
|
$_['text_description_black_bg'] = 'Инструмент ищет картинки товаров с чёрным фоном или некорректным расширением после импорта. Применение преобразует фейковые JPG и заменяет чёрные рамки вокруг товара белым фоном.';
|
||||||
|
$_['entry_bb_darkness'] = 'Порог темноты пикселя (0-100)';
|
||||||
|
$_['entry_bb_threshold'] = '% чёрных пикселей по краю';
|
||||||
|
$_['entry_bb_limit'] = 'Лимит сканирования (файлов)';
|
||||||
|
$_['entry_bb_scan_fake'] = 'Искать Fake JPG (PNG в .jpg)';
|
||||||
|
$_['entry_bb_scan_black'] = 'Искать чёрный фон';
|
||||||
|
$_['text_bb_fake_jpg'] = 'Фейковый JPG (PNG внутри .jpg)';
|
||||||
|
$_['text_bb_black_bg'] = 'Обнаружен чёрный фон';
|
||||||
|
$_['text_bb_fix_flatten_white'] = 'Конвертировать в JPG (белый фон)';
|
||||||
|
$_['text_bb_fix_convert_png'] = 'Сохранить как PNG (прозрачность)';
|
||||||
|
$_['text_bb_fix_white'] = 'Заменить чёрный фон (GD: только края)';
|
||||||
|
$_['text_bb_fix_white_all'] = 'Заменить ВСЕ чёрные пиксели (GD: агрессивно)';
|
||||||
|
$_['text_bb_fix_white_smooth'] = 'Заменить ВСЕ чёрные пиксели (GD: Defringe + сглаживание)';
|
||||||
|
$_['text_bb_fix_white_imagick'] = 'Заменить чёрный фон (Imagick: только края)';
|
||||||
|
$_['text_bb_fix_white_all_imagick'] = 'Заменить ВСЕ чёрные пиксели (Imagick: Fuzzy Lab)';
|
||||||
|
$_['text_bb_fix_white_smooth_imagick'] = 'Заменить ВСЕ чёрные пиксели (Imagick: Defringe + сглаживание)';
|
||||||
|
$_['text_bb_type_fake'] = 'Ошибка импорта PNG';
|
||||||
|
$_['text_bb_type_black'] = 'Чёрный фон';
|
||||||
|
|
||||||
|
$_['button_online_instruction'] = 'Инструкция к модулю (Онлайн)';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,569 @@
|
||||||
|
<?php
|
||||||
|
$_['heading_title_raw'] = 'Image Optimizer [NAT]: Стиснення оригіналів та видалення сміття';
|
||||||
|
$_['heading_title'] = '<b>Image Optimizer [NAT]:</b> Стиснення оригіналів та видалення сміття';
|
||||||
|
$_['text_extension'] = 'Розширення';
|
||||||
|
$_['text_edit'] = 'Налаштування модуля';
|
||||||
|
$_['text_success'] = 'Налаштування успішно збережено!';
|
||||||
|
$_['entry_warning'] = 'УВАГА: Обов`язково зробіть бекап файлів сайту і особливо папки /image/catalog перед початком роботи!';
|
||||||
|
$_['text_tech'] = 'Перевірка технологій сервера:';
|
||||||
|
$_['text_author'] = 'Технічна підтримка та побажання: <a href="mailto:info@nat.od.ua">info@nat.od.ua</a>';
|
||||||
|
$_['tab_optimize'] = 'Оптимізація та Ресайз';
|
||||||
|
$_['tab_cleaner'] = 'Очищення невикористовуваних зображень';
|
||||||
|
$_['tab_info'] = 'Інфо / Екосистема [NAT]';
|
||||||
|
$_['tab_settings'] = 'Налаштування';
|
||||||
|
$_['tab_tools'] = 'Інструменти (pro)';
|
||||||
|
$_['tab_cron'] = 'Крон-завдання';
|
||||||
|
$_['entry_mode'] = 'Режим роботи';
|
||||||
|
$_['text_copy'] = 'Створити копію (безпечно)';
|
||||||
|
$_['text_replace'] = 'Замінювати оригінали (потребує бекап!)';
|
||||||
|
$_['entry_folder'] = 'Ім`я папки для копії';
|
||||||
|
$_['entry_batch'] = 'Файлів за прохід';
|
||||||
|
$_['entry_log_limit'] = 'Рядків логу на екрані';
|
||||||
|
$_['entry_max_width'] = 'Макс. ширина (px) [0 - без ліміту]';
|
||||||
|
$_['entry_max_height'] = 'Макс. висота (px) [0 - без ліміту]';
|
||||||
|
$_['entry_jpg'] = 'Якість JPG (0-100)';
|
||||||
|
$_['entry_png'] = 'Стиснення PNG (0-9)';
|
||||||
|
$_['entry_webp'] = 'Якість WebP (0-100)';
|
||||||
|
$_['entry_targets'] = 'Що оптимізувати?';
|
||||||
|
$_['text_all_catalog'] = '[ Весь каталог image/catalog ]';
|
||||||
|
$_['text_root_files'] = 'Файли тільки в корені image/catalog';
|
||||||
|
$_['entry_threshold'] = 'Поріг заміни (%)';
|
||||||
|
$_['help_threshold'] = '0: замінювати тільки якщо вага стала меншою. 10: дозволити збільшення ваги до 10%.';
|
||||||
|
$_['entry_token'] = 'Токен активації (на корінь домену)';
|
||||||
|
$_['entry_status'] = 'Статус модуля';
|
||||||
|
$_['entry_menu_position'] = 'Позиція меню [NAT]';
|
||||||
|
$_['text_menu_module_only'] = 'Тільки в модулях';
|
||||||
|
$_['text_menu_header'] = 'У шапці (Header)';
|
||||||
|
$_['text_menu_sidebar'] = 'У бічному меню (Sidebar)';
|
||||||
|
$_['text_menu_both'] = 'Скрізь (Шапка + Сайдбар)';
|
||||||
|
$_['text_status_on'] = 'Увімкнено';
|
||||||
|
$_['text_status_off'] = 'Вимкнено';
|
||||||
|
$_['entry_engine'] = 'Рушій обробки зображень';
|
||||||
|
$_['text_engine_gd'] = 'GD (Стандарт)';
|
||||||
|
$_['text_engine_imagick'] = 'Imagick (Висока якість, збереження профілів sRGB)';
|
||||||
|
$_['entry_license'] = 'Ліцензія';
|
||||||
|
$_['text_cleaner_info'] = 'Цей інструмент шукає файли, які фізично існують на диску, але ніде не використовуються в базі даних або файлах шаблону.';
|
||||||
|
$_['entry_clean_targets'] = 'В яких папках шукати сміття?';
|
||||||
|
$_['entry_extended_log'] = 'Розширений лог (показати використовувані photo і де вони знайдені)';
|
||||||
|
$_['entry_process_broken'] = 'Враховувати файли з битим кодуванням (імена з символом "?")';
|
||||||
|
$_['button_scan_trash'] = 'ЗНАЙТИ СМІТТЯ';
|
||||||
|
$_['button_quarantine'] = 'В Карантин (Безпечно)';
|
||||||
|
$_['button_delete_trash'] = 'Видалити назавжди';
|
||||||
|
$_['button_empty_quarantine'] = 'Очистити папку Карантину';
|
||||||
|
$_['button_restore_quarantine'] = 'Повернути з Карантину';
|
||||||
|
$_['text_scan_result'] = 'Результати сканування';
|
||||||
|
$_['text_trash_files'] = 'Сміттєвих файлів: ';
|
||||||
|
$_['text_trash_size'] = 'Потенційно звільниться: ';
|
||||||
|
$_['button_start'] = 'СТАРТ ОПТИМІЗАЦІЇ';
|
||||||
|
$_['button_pause'] = 'ПАУЗА';
|
||||||
|
$_['button_stop'] = 'ЗУПИНИТИ';
|
||||||
|
$_['button_continue'] = 'ПРОДОВЖИТИ';
|
||||||
|
$_['button_start_new'] = 'СТАРТ (Новий запуск)';
|
||||||
|
$_['button_download_log'] = 'Завантажити лог в TXT';
|
||||||
|
$_['button_download'] = 'Завантажити';
|
||||||
|
$_['button_save'] = 'Зберегти';
|
||||||
|
$_['button_cancel'] = 'Скасувати';
|
||||||
|
$_['text_progress'] = 'Прогрес:';
|
||||||
|
$_['text_old_size'] = 'Було:';
|
||||||
|
$_['text_new_size'] = 'Стало:';
|
||||||
|
$_['text_savings'] = 'Економія:';
|
||||||
|
$_['text_detailed_log'] = 'Детальний лог';
|
||||||
|
$_['text_page'] = 'Стор.';
|
||||||
|
$_['text_waiting'] = 'Очікування запуску...';
|
||||||
|
$_['text_enabled'] = 'Увімкнено';
|
||||||
|
$_['text_disabled_error'] = 'Вимкнено (ПОМИЛКА)';
|
||||||
|
$_['text_supported'] = 'Підтримується';
|
||||||
|
$_['text_no'] = 'Ні';
|
||||||
|
$_['error_permission'] = 'У вас немає прав для керування модулем!';
|
||||||
|
$_['error_license'] = 'Помилка доступу: Невірний токен активації для цього домену!';
|
||||||
|
$_['error_domain'] = ' (Домен: ';
|
||||||
|
$_['text_found'] = 'Знайдено файлів: ';
|
||||||
|
$_['text_compressed'] = 'Стиснуто';
|
||||||
|
$_['text_original'] = 'Оригінал';
|
||||||
|
$_['text_error_process'] = 'Помилка обробки: ';
|
||||||
|
$_['error_log_empty'] = 'Лог порожній! Спочатку запустіть процес.';
|
||||||
|
$_['text_report_header'] = '=== ЗВІТ ===';
|
||||||
|
$_['text_total_files'] = 'Всього файлів: ';
|
||||||
|
$_['text_searching'] = 'Пошук файлів...';
|
||||||
|
$_['error_ajax'] = 'Помилка: ';
|
||||||
|
$_['text_resumed'] = '▶ ПРОЦЕС ВІДНОВЛЕНО...';
|
||||||
|
$_['text_paused'] = '⏸ ПАУЗА. Процес призупинено.';
|
||||||
|
$_['confirm_stop'] = 'Ви впевнені, що хочете повністю перервати процес?';
|
||||||
|
$_['confirm_delete'] = 'УВАГА! Файли будуть видалені з сервера назавжди без можливості відновлення! Продовжити?';
|
||||||
|
$_['confirm_empty_q'] = 'Ви впевнені, що хочете повністю очистити папку карантину?';
|
||||||
|
$_['confirm_restore'] = 'Всі файли з папки карантину будуть повернуті на свої місця. Продовжити?';
|
||||||
|
$_['button_stopping'] = 'Зупинка...';
|
||||||
|
$_['text_stopped_user'] = '🛑 ПРОЦЕС ПЕРЕРВАНО КОРИСТУВАЧЕМ!';
|
||||||
|
$_['text_increase'] = 'Збільшення';
|
||||||
|
$_['text_done'] = '✅ ГОТОВО! Процес завершено.';
|
||||||
|
$_['error_timeout'] = 'Таймаут сервера. Автоповтор через 3 секунди...';
|
||||||
|
$_['text_building_index'] = 'Крок 1/2: Індексація БД та шаблонів (пошук фото, що використовуються)...';
|
||||||
|
$_['text_comparing'] = 'Крок 2/2: Порівняння фізичних файлів з індексом...';
|
||||||
|
$_['text_quarantine_done'] = '✅ Процес перенесення в image/catalog_trash/ завершено!';
|
||||||
|
$_['text_deleted_done'] = '✅ Процес видалення сміття завершено!';
|
||||||
|
$_['text_quarantine_empty'] = '✅ Папку карантину успішно видалено з сервера!';
|
||||||
|
$_['text_restore_done'] = '✅ Файли успішно повернуто з карантину в робочу папку!';
|
||||||
|
$_['text_quarantine_move'] = 'В карантині: ';
|
||||||
|
$_['text_deleted_file'] = 'Видалено: ';
|
||||||
|
$_['text_no_trash'] = 'У вибраних папках сміття не знайдено! Всі файли використовуються.';
|
||||||
|
$_['text_scanning_dirs'] = 'Скануємо директорії: ';
|
||||||
|
$_['text_log_used'] = '[ВИКОРИСТОВУЄТЬСЯ]';
|
||||||
|
$_['text_log_trash'] = '[СМІТТЯ]';
|
||||||
|
$_['text_log_deleted'] = '[ВИДАЛЕНО]';
|
||||||
|
$_['text_log_del_err'] = '[ПОМИЛКА ВИДАЛЕННЯ]';
|
||||||
|
$_['text_log_quarantine'] = '[В КАРАНТИН]';
|
||||||
|
$_['text_log_q_err'] = '[ПОМИЛКА ПЕРЕНЕСЕННЯ]';
|
||||||
|
$_['text_log_restored'] = '[ВІДНОВЛЕНО]';
|
||||||
|
$_['text_log_rest_err'] = '[ПОМИЛКА ВІДНОВЛЕННЯ]';
|
||||||
|
$_['text_used_in'] = 'у: ';
|
||||||
|
$_['text_analyzing'] = 'Аналіз бази даних...';
|
||||||
|
$_['text_clean_empty'] = 'Чисто! Сміття немає.';
|
||||||
|
$_['text_processing'] = 'Обробка...';
|
||||||
|
$_['text_restoring'] = 'Відновлення файлів...';
|
||||||
|
$_['text_all_folders'] = 'image/catalog/ (Та всі вкладені)';
|
||||||
|
$_['text_root_folder'] = 'image/catalog/ (Тільки корінь)';
|
||||||
|
$_['text_q_empty_err'] = 'Папка карантину порожня або не існує.';
|
||||||
|
$_['error_token'] = 'Невірний токен. Перезавантажте сторінку.';
|
||||||
|
$_['text_apply_title'] = 'Оптимізацію завершено в папку: ';
|
||||||
|
$_['text_apply_info'] = 'Перевірте результат. Якщо все влаштовує — застосуйте зміни до основного каталогу.';
|
||||||
|
$_['entry_apply_backup'] = 'Перенести зі створенням бекапу (в Карантин)';
|
||||||
|
$_['entry_apply_replace'] = 'Замінити оригінали безповоротно';
|
||||||
|
$_['button_apply_main'] = 'ЗАСТОСУВАТИ ДО ОСНОВНОГО КАТАЛОГУ';
|
||||||
|
$_['button_delete_copies'] = 'Видалити тимчасові копії (скасування)';
|
||||||
|
$_['button_full_cleanup'] = 'Повне очищення всіх тимчасових папок та бекапів';
|
||||||
|
$_['text_apply_success'] = '✅ Файли успішно перенесено. ';
|
||||||
|
$_['text_apply_backup_ok'] = 'Оригінали збережено в папку: ';
|
||||||
|
$_['text_apply_no_backup'] = 'Оригінали видалено.';
|
||||||
|
$_['text_error_source'] = 'Помилка: Папку з оптимізованими файлами не знайдено.';
|
||||||
|
$_['confirm_full_cleanup'] = 'УВАГА! Ця дія безповоротно видалить УСІ папки бекапів (backup_*) та тимчасові папки з копіями. Продовжити?';
|
||||||
|
$_['text_tools_desc'] = 'Глобальні сканери та інструменти для роботи з файловою системою і БД зображень.';
|
||||||
|
$_['text_tool_select'] = 'Виберіть інструмент:';
|
||||||
|
$_['text_group_scanners'] = 'Сканери та Аналіз';
|
||||||
|
$_['text_group_generators'] = 'Генератори та Обробка';
|
||||||
|
$_['text_group_experimental'] = 'Експериментальні функції (BETA)';
|
||||||
|
$_['text_experimental_warn'] = 'Увага: Експериментальні функції зачіпають системні файли або базу даних. Настійно рекомендується зробити бекап!';
|
||||||
|
$_['text_tool_broken_db'] = 'Сканер битих/порожніх фото БД';
|
||||||
|
$_['text_tool_watermark'] = 'Динамічний Вотермарк (Тільки на кеш)';
|
||||||
|
$_['text_tool_duplicates'] = 'Поиск дубликатов файлов (за MD5)';
|
||||||
|
$_['text_tool_png_jpg'] = 'Конвертер важких PNG у JPG (сканер файлів без прозорості)';
|
||||||
|
$_['text_tool_placeholders'] = 'Генератор заглушок (Замість No Image)';
|
||||||
|
$_['text_tool_exif'] = 'Очищення EXIF-даних (Геотеги/Мета)';
|
||||||
|
$_['text_tool_small_photos'] = 'Сканер занадто дрібних фото';
|
||||||
|
$_['text_tool_html_broken'] = 'Пошук битих картинок в HTML (Описах)';
|
||||||
|
$_['text_tool_empty_folders'] = 'Очищення порожніх папок (image/catalog)';
|
||||||
|
$_['text_tool_smart_cache'] = 'Розумне очищення кешу зображень';
|
||||||
|
$_['text_tool_folder_tree'] = 'Дерево папок (Статистика ваги)';
|
||||||
|
$_['text_tool_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load (Без БД)';
|
||||||
|
$_['text_tool_translit'] = 'Транслітерація назв файлів';
|
||||||
|
$_['text_tool_cache_restore'] = 'Відновлення оригіналів із Кешу';
|
||||||
|
$_['entry_wm_type'] = 'Тип водяного знака';
|
||||||
|
$_['text_wm_image'] = 'Зображення (PNG)';
|
||||||
|
$_['text_wm_text'] = 'Текст';
|
||||||
|
$_['entry_wm_image_path'] = 'Шлях до зображення';
|
||||||
|
$_['entry_wm_text_val'] = 'Текст водяного знака';
|
||||||
|
$_['entry_wm_position'] = 'Позиція (1-9)';
|
||||||
|
$_['entry_wm_opacity'] = 'Прозорість (0-100)';
|
||||||
|
$_['entry_wm_category'] = 'Тільки для Категорій';
|
||||||
|
$_['entry_wm_brand'] = 'Тільки для Брендів';
|
||||||
|
$_['entry_min_width'] = 'Мінімальна ширина (px)';
|
||||||
|
$_['entry_min_height'] = 'Мінімальна висота (px)';
|
||||||
|
$_['entry_ph_product'] = 'Заглушка для Товарів';
|
||||||
|
$_['entry_ph_category'] = 'Заглушка для Категорій';
|
||||||
|
$_['entry_ph_brand'] = 'Заглушка для Брендів';
|
||||||
|
$_['button_run_tool'] = 'Запустити інструмент';
|
||||||
|
$_['button_scan_tool'] = 'Сканувати';
|
||||||
|
$_['button_fix_tool'] = 'Виправити знайдене';
|
||||||
|
$_['text_th_path'] = 'Файл / Шлях';
|
||||||
|
$_['text_th_size'] = 'Розмір';
|
||||||
|
$_['text_th_action'] = 'Дія';
|
||||||
|
$_['text_th_status'] = 'Статус';
|
||||||
|
$_['text_th_problem'] = 'Проблема / Значення';
|
||||||
|
$_['text_cron_title'] = 'Налаштування Cron';
|
||||||
|
$_['text_cron_desc'] = 'Додайте команду в Cron хостингу для автоматичного фонового стиснення.';
|
||||||
|
$_['entry_cron_new_only'] = 'Обробляти тільки нові (необроблені) файли';
|
||||||
|
$_['entry_cron_folders'] = 'Папки для сканування (залиште порожнім для всього каталогу)';
|
||||||
|
$_['text_promo_title'] = 'Інші модулі серії [NAT]';
|
||||||
|
$_['text_promo_desc'] = 'Модулі серії [NAT] – це інструменти для глибокої оптимізації OpenCart. Ми фокусуємося на автоматизації рутини, прискоренні бази даних та очищенні серверів від сміття. Усі модулі мають відкритий вихідний код та єдину логіку управління.';
|
||||||
|
$_['text_support'] = 'Технічна підтримка та побажання:';
|
||||||
|
$_['button_more'] = 'Дивитися всі модулі на OpenCart.com';
|
||||||
|
$_['button_more_forum'] = 'Opencartforum';
|
||||||
|
$_['text_mod_cat_opt'] = 'Catalog Optimizer [NAT]';
|
||||||
|
$_['text_mod_cat_opt_desc'] = 'Приховування порожніх категорій і брендів + SEO сортування товарів (у наявності зверху) + Очищення сміття БД.';
|
||||||
|
$_['text_mod_new_arrivals'] = 'New Arrivals [NAT]: Новинки за датами';
|
||||||
|
$_['text_mod_new_arrivals_desc'] = 'Автоматична SEO-сторінка новинок. Відображає новинки суворо за реальною датою додавання. Слайдери, сітка та розумний сайдбар архіву дат.';
|
||||||
|
$_['text_mod_img_opt'] = 'Image Optimizer [NAT]';
|
||||||
|
$_['text_mod_img_opt_desc'] = '<strong>Поточний модуль.</strong> Стиснення та ресайз ОРИГІНАЛІВ фото (image/catalog) у WebP + Очищення хостингу від невикористаних зображень.';
|
||||||
|
$_['text_mod_dom_scan'] = 'Domain Scanner [NAT]';
|
||||||
|
$_['text_mod_dom_scan_desc'] = 'Пошук і чищення зовнішніх посилань і HTTP-картинок у БД та файлах теми. Ідеально для HTTPS або очищення після парсингу.';
|
||||||
|
$_['text_mod_poll'] = 'Poll Widget [NAT]';
|
||||||
|
$_['text_mod_poll_desc'] = 'Створення опитувань та голосувань із візуальним конструктором дизайну, глибокою статистикою та захистом від накруток.';
|
||||||
|
$_['text_mod_db_opt'] = 'Database Optimizer [NAT]';
|
||||||
|
$_['text_mod_db_opt_desc'] = 'Інтелектуальне очищення сміття в базі даних, управління системними логами та додавання критично важливих індексів для прискорення.';
|
||||||
|
$_['text_mod_im_ex'] = 'Import/Export [NAT]';
|
||||||
|
$_['text_mod_im_ex_desc'] = 'Швидкий імпорт/експорт цін і залишків з файлів xls/xlsx/csv/xml/json або за посиланням. Маппінг полів, робота по Cron, текстові функції.';
|
||||||
|
$_['text_mod_admin_tools'] = 'Admin Tools [NAT]';
|
||||||
|
$_['text_mod_admin_tools_desc'] = 'Зручні інструменти адміністратора: вхід під клієнтом, кастомізація адмінки, управління правами користувачів та приховування непотрібних пунктів меню.';
|
||||||
|
$_['text_mod_utm_tracker'] = 'Order UTM Tracker [NAT]';
|
||||||
|
$_['text_mod_utm_tracker_desc'] = 'Автоматичне відстеження UTM-міток при оформленні замовлення. Зберігає джерело переходу, кампанію, ключові слова та виводить ці дані в замовленні для аналітики реклами.';
|
||||||
|
$_['text_info_title_promo_top_bar'] = 'Promo Top Bar [NAT]: Верхній рекламний інфо-баннер, інформаційна смуга над шапкою, рухомий рядок та топ-баннер';
|
||||||
|
$_['text_info_desc_promo_top_bar'] = 'Створення інтерактивних промо-панелей та слайд-шоу в шапці сайту з конструктором блоків, таймерами, формою підписки та гнучким націлюванням.';
|
||||||
|
$_['text_tool_no_image'] = 'Товари без головного фото (порожньо в БД)';
|
||||||
|
$_['text_problem_main_broken'] = 'Бите головне фото (файл видалено)';
|
||||||
|
$_['text_problem_add_broken'] = 'Бите дод. фото (файл видалено)';
|
||||||
|
$_['text_problem_no_image'] = 'Відсутнє головне фото';
|
||||||
|
$_['text_err_dir'] = 'Помилка: Директорію не знайдено або невірний шлях.';
|
||||||
|
$_['text_err_no_queue'] = 'Помилка: Чергу не знайдено. Спочатку запустіть сканування.';
|
||||||
|
$_['text_log_del_empty_folder'] = 'Видалено порожню папку: ';
|
||||||
|
$_['text_log_no_empty_folders'] = 'Порожніх папок в image/catalog/ не знайдено.';
|
||||||
|
$_['text_log_total_empty_folders'] = 'Всього видалено порожніх папок: ';
|
||||||
|
$_['text_log_cache_cleared'] = 'Кеш зображень успішно очищено.';
|
||||||
|
$_['text_log_wm_smart_mode'] = 'Вотермарки працюють в SMART-режимі: оригінали не зачіпаються, логотип накладається лише при генерації кешу.';
|
||||||
|
$_['text_log_scan_dupes'] = 'Сканування image/catalog/ на дублікати (за хешем MD5)... Це може зайняти час.';
|
||||||
|
$_['text_log_found_dupe'] = 'Знайдено дублікат: ';
|
||||||
|
$_['text_log_no_dupes'] = 'Дублікатів не знайдено.';
|
||||||
|
$_['text_log_total_dupes'] = 'Знайдено дублікатів: %s. Потенційна економія: %s';
|
||||||
|
$_['text_log_fix_dupes_prompt'] = 'Натисніть "Виправити знайдене" для перелінкування БД на оригинал та видалення дублів.';
|
||||||
|
$_['text_log_fixed_dupe'] = 'Виправлено та видалено дублікат: ';
|
||||||
|
$_['text_log_success_dupes'] = 'Успішно виправлено дублікатів: %s. Посилання в БД оновлено.';
|
||||||
|
$_['text_log_scan_png'] = 'Пошук важких PNG файлів без прозорості...';
|
||||||
|
$_['text_log_no_png'] = 'Відповідних PNG файлів не знайдено.';
|
||||||
|
$_['text_log_total_png'] = 'Знайдено PNG без прозорості: %s. Натисніть "Виправити" для конвертації в JPG.';
|
||||||
|
$_['text_log_converted_jpg'] = 'Сконвертовано в JPG: ';
|
||||||
|
$_['text_log_success_png'] = 'Успішно сконвертовано %s файлів. Звільнено: %s';
|
||||||
|
$_['text_log_ph_prod'] = 'Оновлено товарів заглушкою: ';
|
||||||
|
$_['text_log_ph_cat'] = 'Оновлено категорій заглушкою: ';
|
||||||
|
$_['text_log_ph_brand'] = 'Оновлено брендів заглушкою: ';
|
||||||
|
$_['text_log_ph_empty'] = 'Заглушки не вибрані в налаштуваннях.';
|
||||||
|
$_['text_log_scan_exif'] = 'Сканування EXIF-даних (мета-теги камер)...';
|
||||||
|
$_['text_log_stripped_exif'] = 'Очищено EXIF: ';
|
||||||
|
$_['text_log_no_exif'] = 'Файлів з EXIF для очищення не знайдено.';
|
||||||
|
$_['text_log_success_exif'] = 'Очищено EXIF у %s файлів. Звільнено: %s';
|
||||||
|
$_['text_log_scan_small'] = 'Пошук фото розміром менше %sx%s px...';
|
||||||
|
$_['text_log_too_small'] = 'Занадто мале (%sx%s): ';
|
||||||
|
$_['text_log_no_small'] = 'Дрібних фото не знайдено.';
|
||||||
|
$_['text_log_total_small'] = 'Знайдено дрібних фото: %s. Будь ласка, замініть їх на якісні.';
|
||||||
|
$_['text_log_html_broken'] = 'Битией IMG в HTML таблиці %s (ID: %s): ';
|
||||||
|
$_['text_log_no_html_broken'] = 'Битих картинок в HTML-описах не знайдено.';
|
||||||
|
$_['text_log_total_html_broken'] = 'Знайдено битих посилань в HTML: %s. Виправте їх вручну.';
|
||||||
|
$_['text_log_scan_smart_cache'] = 'Пошук втрачених файлів у image/cache/...';
|
||||||
|
$_['text_log_del_orph_cache'] = 'Видалено втрачений кеш: ';
|
||||||
|
$_['text_log_no_orph_cache'] = 'Втраченого кешу не знайдено.';
|
||||||
|
$_['text_log_success_smart_cache'] = 'Видалено файлів втраченого кешу: %s. Звільнено: %s';
|
||||||
|
$_['text_log_scan_translit'] = 'Пошук файлів з кирилицею або пробілами...';
|
||||||
|
$_['text_log_no_bad_names'] = 'Файлів з некоректними іменами не знайдено.';
|
||||||
|
$_['text_log_total_bad_names'] = 'Знайдено файлів з кирилицею/пробілами: %s. Натисніть "Виправити" для транслітерації та оновлення БД.';
|
||||||
|
$_['text_log_renamed'] = 'Перейменовано: ';
|
||||||
|
$_['text_log_success_translit'] = 'Успішно транслітеровано файлів: %s. БД оновлено.';
|
||||||
|
$_['text_log_scan_restore'] = 'Сканирование image/cache/ для відновлення втрачених оригіналів...';
|
||||||
|
$_['text_log_restored_cache'] = 'Відновлено з кешу: ';
|
||||||
|
$_['text_log_no_lost_orig'] = 'Відсутніх оригіналів у кеші не знайдено.';
|
||||||
|
$_['text_log_success_restore'] = 'Успішно відновлено оригіналів з кешу: %s.';
|
||||||
|
$_['error_invalid_folder'] = 'Помилка: Неприпустиме ім\'я папки!';
|
||||||
|
$_['text_formats_title'] = 'Сучасні формати (WebP & SVG)';
|
||||||
|
$_['text_formats_desc'] = 'Налаштування інтеграції сучасних форматів у файлову систему та шаблони OpenCart.';
|
||||||
|
$_['entry_support_svg'] = 'Підтримка завантаження SVG';
|
||||||
|
$_['help_support_svg'] = 'Дозволяє завантаження векторних SVG-зображень через стандартний Filemanager та їх безпечне виведення на вітрині без спотворення розмірів.';
|
||||||
|
$_['entry_support_webp'] = 'Підтримка завантаження WebP';
|
||||||
|
$_['help_support_webp'] = 'Дозволяє вручну завантажувати, підв\'язувати та виводити на сайті готові файли .webp через Filemanager.';
|
||||||
|
$_['entry_truefilemanager_webp'] = 'WebP у TrueFileManager';
|
||||||
|
$_['help_truefilemanager_webp'] = 'Додає підтримку завантаження, попереднього перегляду та ескізів WebP у TrueFileManager від sitecreator (якщо його встановлено).';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Надшвидка підміна: автоматично змінює розширення .jpg/.png на .webp прямо в HTML-виводі вітрини та додає атрибут loading="lazy". Не чіпає базу даних!';
|
||||||
|
$_['help_tool_broken_db'] = 'Шукає в базі даних зображення, фізичні файли яких були видалені з сервера. Дозволяє очистити биті посилання.';
|
||||||
|
$_['help_tool_empty_folders'] = 'Рекурсивно сканує директорію image/catalog/ та безпечно видаляє всі папки, в яких немає жодного файлу.';
|
||||||
|
$_['help_tool_folder_tree'] = 'Будує дерево каталогів та показує реальну вагу кожної папки для пошуку "пожирачів" місця.';
|
||||||
|
$_['help_tool_html_broken'] = 'Сканує HTML-описи товарів та категорій на наявність тегів <img> з неіснуючими зображеннями.';
|
||||||
|
$_['help_tool_small_photos'] = 'Знаходить зображення з роздільною здатністю нижче заданої. Додано посилання на пошук якісних аналогів у Google Images та Яндекс Зображеннях.';
|
||||||
|
$_['help_tool_duplicates'] = 'Шукає повні дублікати файлів за MD5-хешем (різні назви, але однакова картинка). Дозволяє склеїти їх в один файл та оновити БД.';
|
||||||
|
$_['help_tool_watermark'] = 'Накладення водяних знаків у SMART-режимі (тільки на кеш вітрини, оригінали не змінюються).';
|
||||||
|
$_['help_tool_placeholders'] = 'Масово встановлює вибране зображення-заглушку для товарів та категорій, у яких взагалі немає фото.';
|
||||||
|
$_['help_tool_png_jpg'] = 'Інструмент сканує папку зображень і знаходить важкі PNG-файли, які не мають прозорого фону (альфа-каналу). Оскільки прозорість їм не потрібна, їх можна безпечно конвертувати у формат JPG. Це значно полегшує файли (в середньому на 70-80%) та прискорює завантаження сайту, а всі посилання в базі даних автоматично оновлюються.';
|
||||||
|
$_['help_tool_exif'] = 'Сканує EXIF-дані та видаляє з них приховані теги, зменшуючи вагу на 10-15%.';
|
||||||
|
$_['help_tool_smart_cache'] = 'Шукає в папці image/cache/ кешовані файли, оригінали яких уже видалені, та очищає неактуальний кеш.';
|
||||||
|
$_['help_tool_translit'] = 'Знаходить файли з кирилицею або пробілами, перейменовує їх транслітом та оновлює шляхи в БД.';
|
||||||
|
$_['help_tool_cache_restore'] = 'Якщо ви випадково видалили оригінал з catalog, інструмент спробує знайти його копію в cache та відновити назад.';
|
||||||
|
$_['entry_quarantine'] = 'Перемістити оригінали в Карантин (замість видалення)';
|
||||||
|
$_['entry_backup_db'] = 'Створити бекап змінюваних таблиць у SQL перед запуском';
|
||||||
|
$_['button_fix_selected'] = 'ВИПРАВИТИ ВИБРАНІ';
|
||||||
|
$_['button_export_log'] = 'Експортувати в CSV';
|
||||||
|
$_['text_th_before'] = 'Стан ДО';
|
||||||
|
$_['text_th_after'] = 'Очікуваний результат ПІСЛЯ';
|
||||||
|
$_['text_th_select'] = 'Дія';
|
||||||
|
$_['text_th_preview'] = 'Передперегляд';
|
||||||
|
$_['text_th_name'] = 'Об`єкт / Файл';
|
||||||
|
$_['text_global_action'] = 'Групова дія для вибраних:';
|
||||||
|
$_['text_action_clear'] = 'Очистити посилання в БД';
|
||||||
|
$_['text_action_disable'] = 'Вимкнути (Статус = 0)';
|
||||||
|
$_['text_action_stock'] = 'Установити "Немає в наявності"';
|
||||||
|
$_['text_action_placeholder'] = 'Встановити заглушку';
|
||||||
|
$_['text_action_ignore'] = 'Нічого не робити';
|
||||||
|
$_['text_action_merge'] = 'Склеїти (видалити дублікат, залишити оригінал)';
|
||||||
|
$_['text_action_convert'] = 'Конвертувати в JPG';
|
||||||
|
$_['text_action_rename'] = 'Перейменувати транслітом';
|
||||||
|
$_['text_action_delete'] = 'Видалити';
|
||||||
|
$_['text_action_restore'] = 'Відновити';
|
||||||
|
$_['text_db_backup_created'] = 'Створено бекап БД: %s';
|
||||||
|
$_['text_quarantine_created'] = 'Перенесено в карантин: %s';
|
||||||
|
$_['text_fix_status_success'] = 'Успішно виконано';
|
||||||
|
$_['text_fix_status_error'] = 'Помилка: %s';
|
||||||
|
$_['text_log_exported'] = 'Лог успішно експортовано!';
|
||||||
|
$_['text_select_action'] = '-- Виберіть дію --';
|
||||||
|
$_['error_empty_selection'] = 'Помилка: Не вибрано жодного рядка для виправлення!';
|
||||||
|
$_['text_link_admin'] = 'Адмінка';
|
||||||
|
$_['text_link_catalog'] = 'Вітрина';
|
||||||
|
$_['entry_threads'] = 'Потоків обробки';
|
||||||
|
$_['text_threads_optimal'] = 'оптимально';
|
||||||
|
$_['button_download_zip'] = 'Завантажити ZIP-архів та видалити папку';
|
||||||
|
$_['confirm_download_and_delete'] = 'Архів успішно завантажився? Можна видалити тимчасову папку копій на сервері?';
|
||||||
|
$_['button_clear_backups'] = 'Видалити бекапи БД';
|
||||||
|
$_['button_clear_backups_short'] = 'Очистити бекапи';
|
||||||
|
$_['confirm_clear_backups'] = 'Ви впевнені, що хочете повністю видалити всі SQL-бекапи таблиць?';
|
||||||
|
$_['text_compare_title'] = 'Порівняння зображень ДО / ПІСЛЯ';
|
||||||
|
$_['text_compare_before'] = 'ДО';
|
||||||
|
$_['text_compare_after'] = 'ПІСЛЯ';
|
||||||
|
$_['text_backups_cleared'] = 'Усі SQL-бекапи таблиць успішно видалені!';
|
||||||
|
$_['error_no_backups'] = 'Бекапи не знайдені або папка порожня.';
|
||||||
|
$_['button_restore'] = 'Повернути';
|
||||||
|
$_['button_empty'] = 'Очистити';
|
||||||
|
$_['entry_wm_targets'] = 'Застосовувати водяний знак до:';
|
||||||
|
$_['text_wm_target_product'] = 'Фото товарів';
|
||||||
|
$_['text_wm_target_category'] = 'Фото категорій';
|
||||||
|
$_['text_wm_target_brand'] = 'Логотипи брендів';
|
||||||
|
$_['text_wm_target_banner'] = 'Банери та слайди';
|
||||||
|
$_['text_wm_target_blog'] = 'Статті / Блог';
|
||||||
|
$_['error_no_scan_data'] = 'Помилка: Дані сканування не знайдені. Спочатку запустіть сканування!';
|
||||||
|
$_['error_row_not_found'] = 'Помилка: Об`єкт не знайдено в результатах сканування!';
|
||||||
|
$_['error_file_not_found'] = 'Помилка: Файл не знайдено на сервері!';
|
||||||
|
$_['text_folder_rules_title'] = 'Індивідуальні правила стиснення для папок';
|
||||||
|
$_['text_folder_rules_desc'] = 'Ви можете перевизначити якість та максимальні розміри для конкретних папок. Якщо залишити поле порожнім, використовуватиметься глобальне налаштування. Шлях вказується відносно папки image (наприклад, catalog/banners/).';
|
||||||
|
$_['entry_folder_path'] = 'Шлях до папки';
|
||||||
|
$_['entry_jpg_quality'] = 'Якість JPG';
|
||||||
|
$_['entry_webp_quality'] = 'Якість WebP';
|
||||||
|
$_['button_add_rule'] = 'Додати правило';
|
||||||
|
$_['button_remove'] = 'Вилучити';
|
||||||
|
$_['entry_wm_angle'] = 'Кут нахилу водяного знака (градуси)';
|
||||||
|
$_['entry_wm_corner_radius'] = 'Закруглення кутів водяного знака (px)';
|
||||||
|
$_['entry_wm_size_type'] = 'Масштабування водяного знака';
|
||||||
|
$_['entry_wm_size_percent'] = 'Розмір водяного знака (% від ширини зображення)';
|
||||||
|
$_['entry_wm_text_color'] = 'Колір тексту водяного знака';
|
||||||
|
$_['entry_wm_text_font'] = 'Шрифт водяного знака (TTF)';
|
||||||
|
$_['entry_wm_filter_mode'] = 'Режим фільтрації Категорій/Брендів';
|
||||||
|
$_['text_wm_filter_include'] = 'Тільки для вибраних';
|
||||||
|
$_['text_wm_filter_exclude'] = 'Для всіх, крім вибраних';
|
||||||
|
$_['text_wm_size_original'] = 'Оригінальний розмір';
|
||||||
|
$_['text_wm_size_percent'] = 'Пропорційно ширині зображення (%)';
|
||||||
|
$_['button_preview_watermark'] = 'Попередній перегляд';
|
||||||
|
$_['text_wm_preview_title'] = 'Попередній перегляд водяного знака';
|
||||||
|
$_['text_cron_exclude_folders'] = 'Виключити папки зі сканування';
|
||||||
|
$_['text_cron_entities'] = 'Які типи фото обробляти?';
|
||||||
|
$_['text_cron_quality_override'] = 'Перевизначити параметри стиснення для Крона';
|
||||||
|
$_['text_cron_recommendations'] = 'Рекомендації щодо розкладу Cron';
|
||||||
|
$_['text_cron_recommendations_desc'] = '<ul><li><b>Для невеликих сайтів (до 5000 товарів)</b> рекомендується запускати Крон кожну годину (<code>0 * * * *</code>).</li><li><b>Для середніх сайтів (5000-20000 товарів)</b> рекомендується запускати раз на 3-6 годин (<code>0 */6 * * *</code>).</li><li><b>Для великих сайтів (понад 20000 товарів)</b> — один раз на добу вночі (наприклад, о 2:00: <code>0 2 * * *</code>).</li></ul>';
|
||||||
|
$_['text_tool_broken_files'] = 'Сканер битих/порожніх файлів на сервері';
|
||||||
|
$_['help_tool_broken_files'] = 'Сканує фізичні файли в папці image/catalog/ на наявність пошкоджених зображень або порожніх файлів розміром 0 байт.';
|
||||||
|
$_['text_grid_broken_file'] = 'Битий або порожній файл на сервері';
|
||||||
|
$_['text_grid_broken_file_after'] = 'Вилучення або заміна заглушкою';
|
||||||
|
$_['text_description_broken_files'] = 'Результати сканування фізичних файлів у папці image/catalog/. Тут відображаються биті (пошкоджені) зображення або файли розміром 0 байт.';
|
||||||
|
$_['text_action_strip'] = 'Очистити EXIF';
|
||||||
|
$_['text_action_set_placeholder'] = 'Встановити заглушку';
|
||||||
|
$_['text_th_entity'] = 'Об`єкт / Пов`язані посилання';
|
||||||
|
$_['text_cron_entity_product'] = 'Товари';
|
||||||
|
$_['text_cron_entity_category'] = 'Категорії';
|
||||||
|
$_['text_cron_entity_manufacturer'] = 'Виробники / Бренди';
|
||||||
|
$_['text_cron_entity_banner'] = 'Банери';
|
||||||
|
$_['text_cron_entity_blog'] = 'Блог / Статті';
|
||||||
|
$_['entry_cron_jpg_quality'] = 'Якість JPG (Крон)';
|
||||||
|
$_['entry_cron_webp_quality'] = 'Якість WebP (Крон)';
|
||||||
|
$_['entry_cron_max_width'] = 'Макс. ширина px (Крон)';
|
||||||
|
$_['entry_cron_max_height'] = 'Макс. висота px (Крон)';
|
||||||
|
$_['text_cron_folder_scan'] = 'Папки для сканування';
|
||||||
|
$_['text_no_fonts'] = 'TTF-шрифти не знайдено в system/library/font/';
|
||||||
|
$_['button_apply'] = 'Застосувати';
|
||||||
|
$_['text_backup_will_be_created'] = 'Резервна копія бази даних буде автоматично створена перед виконанням цієї дії.';
|
||||||
|
$_['text_bulk_action'] = 'Групова дія для вибраних';
|
||||||
|
$_['text_grid_results'] = 'Результати та деталі сканування';
|
||||||
|
$_['text_quarantine_will_be_created'] = 'Оригінальні файли будуть переміщені в карантин (image/catalog_trash/) перед зміною.';
|
||||||
|
$_['text_success_apply'] = 'Зміни успішно застосовані!';
|
||||||
|
$_['text_description_broken'] = 'Результати сканування бази даних на наявність битих посилань (записи в таблицях з неіснуючими файлами).';
|
||||||
|
$_['text_description_cache_restore'] = 'Результати пошуку файлів у кеші, оригінали яких відсутні в каталозі.';
|
||||||
|
$_['text_description_duplicates'] = 'Результати пошуку повних дублікатів зображень за MD5-хешем.';
|
||||||
|
$_['text_description_empty_folders'] = 'Список порожніх папок в директорії image/catalog/ для видалення.';
|
||||||
|
$_['text_description_exif'] = 'Результати пошуку зображень з метаданими EXIF, які можна очистити.';
|
||||||
|
$_['text_description_folder_tree'] = 'Статистика розміру папок у каталозі image/catalog/.';
|
||||||
|
$_['text_description_html_broken'] = 'Результати пошуку неіснуючих файлів картинок, на які посилаються описи в HTML.';
|
||||||
|
$_['text_description_placeholders'] = 'Результати пошуку сутностей без зображень для заповнення заглушками.';
|
||||||
|
$_['text_description_png_jpg'] = 'Результати пошуку важких зображень PNG без прозорості, які можна перетиснути в JPG.';
|
||||||
|
$_['text_description_small_photos'] = 'Список зображень, розміри яких менше мінімально заданих (%sx%s px).';
|
||||||
|
$_['text_description_smart_cache'] = 'Результати пошуку файлів кешу, оригінали яких уже було видалено.';
|
||||||
|
$_['text_description_translit'] = 'Результати пошуку файлів з кирилицею або пробілами в назвах.';
|
||||||
|
$_['text_grid_broken_db_after'] = 'Очистити посилання або встановити заглушку';
|
||||||
|
$_['text_grid_dupe_after'] = 'Оригінал (залишається)';
|
||||||
|
$_['text_grid_dupe_before'] = 'Дублікат (буде видалено)';
|
||||||
|
$_['text_grid_empty_folder'] = 'Порожня папка';
|
||||||
|
$_['text_grid_empty_folder_after'] = 'Вилучити порожню папку';
|
||||||
|
$_['text_grid_exif_after'] = 'Очистити метадані';
|
||||||
|
$_['text_grid_exif_before'] = 'Містить EXIF';
|
||||||
|
$_['text_grid_html_after'] = 'Виправити посилання вручну';
|
||||||
|
$_['text_grid_missing_file'] = 'Файл відсутній';
|
||||||
|
$_['text_grid_missing_html'] = 'Картинка не знайдена в описі';
|
||||||
|
$_['text_grid_missing_orig'] = 'Оригінал відсутній';
|
||||||
|
$_['text_grid_missing_orig_after'] = 'Відновити оригінал з кешу';
|
||||||
|
$_['text_grid_no_image'] = 'Немає зображення (порожньо)';
|
||||||
|
$_['text_grid_orph_cache'] = 'Осиротілий кеш';
|
||||||
|
$_['text_grid_orph_cache_after'] = 'Видалити непотрібний кеш';
|
||||||
|
$_['text_grid_ph_brand_after'] = 'Встановити заглушку бренду';
|
||||||
|
$_['text_grid_ph_category_after'] = 'Встановити заглушку категорії';
|
||||||
|
$_['text_grid_ph_product_after'] = 'Встановити заглушку товару';
|
||||||
|
$_['text_grid_small_photo_after'] = 'Рекомендується замінити на більше';
|
||||||
|
$_['text_grid_too_small'] = 'Занадто мале';
|
||||||
|
$_['text_no_relations'] = 'Немає зв’язків у БД';
|
||||||
|
$_['text_action_archive'] = 'Архівувати (в ZIP)';
|
||||||
|
$_['text_action_archive_delete'] = 'Архівувати + Видалити';
|
||||||
|
$_['text_tool_sanitizer'] = 'Санитайзер імен файлів';
|
||||||
|
$_['help_tool_sanitizer'] = 'Масове очищення імен файлів і папок від кирилиці, пробілів та спецсимволів, приведення розширень до єдиного вигляду.';
|
||||||
|
$_['text_description_sanitizer'] = 'Результати аналізу імен файлів для санітаризації за вибраними правилами.';
|
||||||
|
$_['entry_sz_translit'] = 'Транслітерація (кирилиця в латиницю)';
|
||||||
|
$_['entry_sz_spaces'] = 'Замінювати пробіли на символ "_"';
|
||||||
|
$_['entry_sz_special'] = 'Видаляти спеціальні символи';
|
||||||
|
$_['entry_sz_lowercase_name'] = 'Ім`я файлу в нижній регістр';
|
||||||
|
$_['entry_sz_lowercase_ext'] = 'Розширення в нижній регістр';
|
||||||
|
$_['entry_sz_normalize_ext'] = 'Нормалізувати розширення (jpeg -> jpg)';
|
||||||
|
$_['entry_cron_folder_mode'] = 'Режим фільтрації папок';
|
||||||
|
$_['text_cron_folder_mode_exclude'] = 'Сканувати все, крім вибраних (Винятки)';
|
||||||
|
$_['text_cron_folder_mode_include'] = 'Сканирувати тільки вибрані папки';
|
||||||
|
$_['button_select_all'] = 'Вибрати всі';
|
||||||
|
$_['button_deselect_all'] = 'Зняти всі';
|
||||||
|
$_['entry_wm_upload_font'] = 'Завантажити свій шрифт TTF';
|
||||||
|
$_['button_upload_font'] = 'Завантажити шрифт';
|
||||||
|
$_['text_success_font_upload'] = 'Шрифт успішно завантажено!';
|
||||||
|
$_['error_font_upload'] = 'Помилка завантаження шрифту! Дозволені тільки файли .ttf вагою до 5 МБ.';
|
||||||
|
$_['entry_lazy_load'] = 'Прогресивне лениве завантаження';
|
||||||
|
$_['help_lazy_load'] = 'Вмикає преміальне прогресивне відкладене завантаження на вітрині. Зображення замінюються на мікро-прев\'ю та плавно розмиваються (blur-up), підвантажуючись у міру прокручування.';
|
||||||
|
$_['confirm_replace_mode'] = 'УВАГА! Ви обрали режим «Замінювати оригінали». Усі зображення будуть перезаписані безпосередньо на сервері. Наполегливо рекомендуємо зробити резервну копію. Ви впевнені, що хочете продовжити?';
|
||||||
|
$_['text_compare'] = 'Порівняти';
|
||||||
|
$_['text_home'] = 'Головна';
|
||||||
|
$_['text_tech_gd'] = 'Бібліотека GD';
|
||||||
|
$_['text_tech_imagick'] = 'Imagick';
|
||||||
|
$_['text_tech_webp'] = 'Підтримка WebP';
|
||||||
|
$_['text_position_1'] = '1 - Зліва вгорі';
|
||||||
|
$_['text_position_2'] = '2 - По центру вгорі';
|
||||||
|
$_['text_position_3'] = '3 - Справа вгорі';
|
||||||
|
$_['text_position_4'] = '4 - Зліва посередині';
|
||||||
|
$_['text_position_5'] = '5 - По центру';
|
||||||
|
$_['text_position_6'] = '6 - Справа посередині';
|
||||||
|
$_['text_position_7'] = '7 - Зліва внизу';
|
||||||
|
$_['text_position_8'] = '8 - По центру внизу';
|
||||||
|
$_['text_position_9'] = '9 - Справа внизу';
|
||||||
|
|
||||||
|
$_['entry_log_level'] = 'Рівень логу';
|
||||||
|
$_['text_log_changed_only'] = 'Тільки змінені';
|
||||||
|
$_['text_log_all'] = 'Всі файли (детально)';
|
||||||
|
$_['text_skipped_no_gain'] = 'Пропущено (без покращення)';
|
||||||
|
$_['text_reset_cache_hint'] = 'Скинути кеш оптимізації (повне пересканування)';
|
||||||
|
$_['confirm_reset_cache'] = 'Скинути кеш оптимізації? Наступне сканування перевірить ВСІ файли знову.';
|
||||||
|
$_['text_cache_cleared'] = 'Кеш оптимізації очищено. Наступне сканування перевірить всі файли.';
|
||||||
|
$_['error_wm_preview'] = 'Помилка генерації прев\'ю водяного знаку.';
|
||||||
|
$_['error_wm_too_large'] = 'Зображення водяного знаку занадто велике (%dx%d px)! Максимально допустимий розмір: %dx%d px.';
|
||||||
|
$_['text_apply_errors_warning'] = 'УВАГА: Деякі файли не вдалося замінити (заблоковані або немає прав):';
|
||||||
|
$_['text_action_compress'] = 'Стиснути зображення';
|
||||||
|
$_['text_estimated'] = 'Прогноз';
|
||||||
|
$_['entry_min_savings_bytes'] = 'Мін. стиснення (байт)';
|
||||||
|
$_['entry_min_savings_percent'] = 'Мін. стиснення (%)';
|
||||||
|
$_['text_optimized'] = 'Оптимізовано';
|
||||||
|
$_['entry_broken_fallback'] = 'Заглушка для битих фото';
|
||||||
|
$_['help_broken_fallback'] = 'Автоматично замінює відсутні або пошкоджені зображення каталогу на вітрині на зображення-заглушку.';
|
||||||
|
$_['entry_fallback_image'] = 'Зображення-заглушка';
|
||||||
|
$_['help_fallback_image'] = 'Виберіть зображення, яке буде показано, якщо оригінальний файл картинки товару чи категорії відсутній. За замовчуванням використовується no_image.png.';
|
||||||
|
$_['text_tool_cmyk'] = 'Конвертер CMYK в RGB';
|
||||||
|
$_['help_tool_cmyk'] = 'Конвертація JPEG зображень з колірного профілю CMYK в sRGB для коректного відображення в браузерах Safari та на пристроях iOS.';
|
||||||
|
$_['text_tool_heavy_files'] = 'Пошук важких файлів';
|
||||||
|
$_['help_tool_heavy_files'] = 'Пошук найважчих оригінальних зображень у каталозі з можливістю їх швидкого стиснення безпосередньо тут.';
|
||||||
|
$_['entry_heavy_files_limit'] = 'Макс. кількість знайдених файлів (всього)';
|
||||||
|
$_['text_action_convert_rgb'] = 'Конвертувати в RGB';
|
||||||
|
$_['text_description_cmyk'] = 'Знайдено файли в колірному просторі CMYK. Конвертація в sRGB гарантує колірне відображення на всіх платформах, включаючи iOS/macOS.';
|
||||||
|
$_['text_description_heavy'] = 'Список із %d найважчих файлів у каталозі зображень. Ви можете оптимізувати їх безпосередньо тут.';
|
||||||
|
$_['text_cron_folder_hint_exclude_all'] = 'Статус: Скануватимуться всі папки (винятки не обрані).';
|
||||||
|
$_['text_cron_folder_hint_exclude_some'] = 'Статус: Скануватимуться всі папки, ОКРІМ %d позначених.';
|
||||||
|
$_['text_cron_folder_hint_include_some'] = 'Статус: Скануватимуться тільки %d позначених папок.';
|
||||||
|
$_['text_cron_folder_hint_include_none'] = 'УВАГА: Жодної папки не обрано! Крон нічого не буде сканувати.';
|
||||||
|
$_['text_action_apply_changes'] = 'Застосувати вказані зміни';
|
||||||
|
$_['entry_wm_status'] = 'Статус водяного знака';
|
||||||
|
$_['text_disabled'] = 'Відключено';
|
||||||
|
$_['entry_rule_name'] = 'Назва правила';
|
||||||
|
$_['entry_rule_status'] = 'Статус правила';
|
||||||
|
$_['entry_action'] = 'Дія';
|
||||||
|
$_['entry_ph_status'] = 'Статус заглушок';
|
||||||
|
$_['entry_sanitizer_limit'] = 'Макс. файлів для пошуку (ліміт)';
|
||||||
|
$_['entry_heavy_files_min_size'] = 'Мінимальний розмір';
|
||||||
|
$_['entry_png_jpg_limit'] = 'Макс. файлів для пошуку (ліміт)';
|
||||||
|
$_['entry_png_jpg_min_size'] = 'Мінімальний розмір';
|
||||||
|
$_['text_wm_rule_title'] = 'Правило водяного знака';
|
||||||
|
$_['button_close'] = 'Закрити';
|
||||||
|
$_['text_ph_rule_title'] = 'Правило заглушки';
|
||||||
|
$_['entry_ph_image'] = 'Зображення заглушки';
|
||||||
|
$_['button_clear_cache_wm'] = 'Очистити кеш (застосувати водяний знак)';
|
||||||
|
$_['text_active'] = 'Активна';
|
||||||
|
$_['text_error'] = 'Не активна';
|
||||||
|
$_['text_th_dupe_delete'] = 'Файл для видалення (Дублікат)';
|
||||||
|
$_['text_th_dupe_keep'] = 'Файл для збереження (Оригінал)';
|
||||||
|
$_['text_dupe_original_label'] = 'Оригінал';
|
||||||
|
$_['text_dupe_duplicate_label'] = 'Дублікат';
|
||||||
|
|
||||||
|
$_['text_disk_usage'] = 'Використання диска';
|
||||||
|
$_['text_cumulative_stats'] = 'Статистика оптимізації';
|
||||||
|
$_['text_disk_catalog'] = 'Каталог зображень';
|
||||||
|
$_['text_disk_cache'] = 'Кеш OC';
|
||||||
|
$_['text_disk_trash'] = 'Кошик модуля';
|
||||||
|
$_['text_disk_other'] = 'Інше';
|
||||||
|
$_['text_disk_free'] = 'Вільно';
|
||||||
|
$_['text_total_files_opt'] = 'Файлів оброблено';
|
||||||
|
$_['text_total_saved'] = 'Всього зекономлено';
|
||||||
|
$_['text_avg_saving_pct'] = 'Середня економія';
|
||||||
|
$_['text_stats_hint'] = 'Статистика зберігається в БД сайту (враховує Оптимізацію, Очищення, Інструменти та Крон)';
|
||||||
|
$_['text_reset_stats'] = 'Скинути статистику';
|
||||||
|
$_['text_reset_stats_confirm']= 'Ви впевнені, що хочете скинути всю статистику з БД?';
|
||||||
|
$_['text_export_import'] = 'Експорт / Імпорт налаштувань';
|
||||||
|
$_['button_export_settings'] = 'Експорт налаштувань (JSON)';
|
||||||
|
$_['button_import_settings'] = 'Імпортувати налаштування';
|
||||||
|
$_['help_export_settings'] = 'Завантажити всі налаштування модуля в JSON-файл';
|
||||||
|
$_['help_import_settings'] = 'Завантажити раніше експортований JSON для відновлення налаштувань';
|
||||||
|
$_['text_import_success'] = 'Налаштування успішно імпортовані. Перезавантажте сторінку для застосування.';
|
||||||
|
$_['error_import_file'] = 'Файл не завантажено або помилка завантаження';
|
||||||
|
$_['error_import_invalid'] = 'Некоректний файл налаштувань (невірний модуль або формат)';
|
||||||
|
$_['text_click_to_load'] = 'Натисніть ↑ для завантаження даних диска';
|
||||||
|
|
||||||
|
|
||||||
|
$_['tab_formats'] = 'Формати зображень';
|
||||||
|
|
||||||
|
$_['text_disk_quota_legend'] = 'Ліміти диска хостингу (вручну)';
|
||||||
|
$_['text_disk_quota_desc'] = 'Якщо графік дискового простору показує некоректні дані (фізичний диск сервера замість ліміту вашого хостингу), ви можете вказати ліміти вашого тарифу вручну. Вкажіть 0, щоб використовувати автовизначення.';
|
||||||
|
$_['entry_disk_quota_total'] = 'Виділено диска на хостингу (ГБ)';
|
||||||
|
$_['entry_disk_quota_used'] = 'Зайнято диска на хостингу всього (ГБ)';
|
||||||
|
$_['entry_auto_disk'] = 'Автооновлення при вході';
|
||||||
|
|
||||||
|
$_['entry_cron_task_name'] = 'Назва задачі';
|
||||||
|
$_['entry_cron_task_summary'] = 'Параметри стиснення';
|
||||||
|
$_['button_add_cron_task'] = 'Додати задачу';
|
||||||
|
$_['button_copy_cron_url'] = 'Копіювати URL';
|
||||||
|
$_['text_cron_recommended_url'] = 'URL для запуску задачі крону:';
|
||||||
|
$_['entry_cron_batch_limit'] = 'Ліміт пакета за один запуск Крона (файлів)';
|
||||||
|
$_['help_cron_batch_limit'] = 'Максимальна кількість файлів, що обробляються за один запуск Крона. За замовчуванням 100. Рекомендується від 50 до 300 для запобігання таймауту виконання на хостингу.';
|
||||||
|
|
||||||
|
$_['text_license_required'] = 'Необхідний ліцензійний ключ';
|
||||||
|
$_['text_license_required_desc'] = 'Будь ласка, введіть ліцензійний ключ для активації модуля. Усі функції налаштувань та оптимізації заблоковані до введення валідного ключа.';
|
||||||
|
$_['entry_token_desc'] = 'Введіть токен активації, виданий для вашого основного домену. Ви можете отримати його в особистому кабінеті на форумі або звернувшись у підтримку.';
|
||||||
|
$_['button_activate'] = 'Активувати модуль';
|
||||||
|
$_['text_support'] = 'Технічна підтримка';
|
||||||
|
$_['text_support_desc'] = 'Якщо у вас ще немає ключа або виникли проблеми, будь ласка, повідомте номер вашого замовлення та домен.';
|
||||||
|
|
||||||
|
$_['entry_wm_max_width'] = 'Макс. ширина водяного знака (px)';
|
||||||
|
$_['entry_wm_max_height'] = 'Макс. висота водяного знака (px)';
|
||||||
|
$_['help_wm_max_width'] = 'Якщо вихідне зображення водяного знака перевищує цю ширину, воно буде автоматично масштабоване. Вкажіть 0 або залиште порожнім для значення за замовчуванням (800px).';
|
||||||
|
$_['help_wm_max_height'] = 'Якщо вихідне зображення водяного знака перевищує цю висоту, воно буде автоматично масштабоване. Вкажіть 0 або залиште порожнім для значення за замовчуванням (800px).';
|
||||||
|
$_['entry_disk_status'] = 'Увімкнути сканування диска та графік';
|
||||||
|
$_['help_disk_status'] = 'Якщо увімкнено, модуль періодично скануватиме обсяг папки картинок та відображатиме круговую діаграму. Рекомендується вимкнути на великих сайтах для прискорення завантаження панелі.';
|
||||||
|
$_['text_disk_settings_title'] = 'Налаштування лімітів та сканування диска';
|
||||||
|
|
||||||
|
$_['button_online_instruction'] = 'Інструкція до модуля (Онлайн)';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,610 @@
|
||||||
|
<?php
|
||||||
|
$_['heading_title_raw'] = 'Image Optimizer [NAT]: Стиснення оригіналів та видалення сміття';
|
||||||
|
$_['heading_title'] = '<b>Image Optimizer [NAT]:</b> Стиснення оригіналів та видалення сміття';
|
||||||
|
$_['text_extension'] = 'Розширення';
|
||||||
|
$_['text_edit'] = 'Налаштування модуля';
|
||||||
|
$_['text_success'] = 'Налаштування успішно збережено!';
|
||||||
|
$_['entry_warning'] = 'УВАГА: Обов`язково зробіть бекап файлів сайту і особливо папки /image/catalog перед початком роботи!';
|
||||||
|
$_['text_tech'] = 'Перевірка технологій сервера:';
|
||||||
|
$_['text_author'] = 'Технічна підтримка та побажання: <a href="mailto:info@nat.od.ua">info@nat.od.ua</a>';
|
||||||
|
$_['tab_optimize'] = 'Оптимізація та Ресайз';
|
||||||
|
$_['tab_cleaner'] = 'Очищення невикористовуваних зображень';
|
||||||
|
$_['tab_info'] = 'Інфо / Екосистема [NAT]';
|
||||||
|
$_['tab_settings'] = 'Налаштування';
|
||||||
|
$_['tab_tools'] = 'Інструменти (pro)';
|
||||||
|
$_['tab_cron'] = 'Крон-завдання';
|
||||||
|
$_['entry_mode'] = 'Режим роботи';
|
||||||
|
$_['text_copy'] = 'Створити копію (безпечно)';
|
||||||
|
$_['text_replace'] = 'Замінювати оригінали (потребує бекап!)';
|
||||||
|
$_['entry_folder'] = 'Ім`я папки для копії';
|
||||||
|
$_['entry_batch'] = 'Файлів за прохід';
|
||||||
|
$_['entry_log_limit'] = 'Рядків логу на екрані';
|
||||||
|
$_['entry_max_width'] = 'Макс. ширина (px) [0 - без ліміту]';
|
||||||
|
$_['entry_max_height'] = 'Макс. висота (px) [0 - без ліміту]';
|
||||||
|
$_['entry_jpg'] = 'Якість JPG (0-100)';
|
||||||
|
$_['entry_png'] = 'Стиснення PNG (0-9)';
|
||||||
|
$_['entry_webp'] = 'Якість WebP (0-100)';
|
||||||
|
$_['entry_targets'] = 'Що оптимізувати?';
|
||||||
|
$_['text_all_catalog'] = '[ Весь каталог image/catalog ]';
|
||||||
|
$_['text_root_files'] = 'Файли тільки в корені image/catalog';
|
||||||
|
$_['entry_threshold'] = 'Поріг заміни (%)';
|
||||||
|
$_['help_threshold'] = '0: замінювати тільки якщо вага стала меншою. 10: дозволити збільшення ваги до 10%.';
|
||||||
|
$_['entry_token'] = 'Токен активації (на корінь домену)';
|
||||||
|
$_['entry_status'] = 'Статус модуля';
|
||||||
|
$_['entry_menu_position'] = 'Позиція меню [NAT]';
|
||||||
|
$_['text_menu_module_only'] = 'Тільки в модулях';
|
||||||
|
$_['text_menu_header'] = 'У шапці (Header)';
|
||||||
|
$_['text_menu_sidebar'] = 'У бічному меню (Sidebar)';
|
||||||
|
$_['text_menu_both'] = 'Скрізь (Шапка + Сайдбар)';
|
||||||
|
$_['text_status_on'] = 'Увімкнено';
|
||||||
|
$_['text_status_off'] = 'Вимкнено';
|
||||||
|
$_['entry_engine'] = 'Рушій обробки зображень';
|
||||||
|
$_['text_engine_gd'] = 'GD (Стандарт)';
|
||||||
|
$_['text_engine_imagick'] = 'Imagick (Висока якість, збереження профілів sRGB)';
|
||||||
|
$_['entry_license'] = 'Ліцензія';
|
||||||
|
$_['text_cleaner_info'] = 'Цей інструмент шукає файли, які фізично існують на диску, але ніде не використовуються в базі даних або файлах шаблону.';
|
||||||
|
$_['entry_clean_targets'] = 'В яких папках шукати сміття?';
|
||||||
|
$_['entry_extended_log'] = 'Розширений лог (показати використовувані photo і де вони знайдені)';
|
||||||
|
$_['entry_process_broken'] = 'Враховувати файли з битим кодуванням (імена з символом "?")';
|
||||||
|
$_['button_scan_trash'] = 'ЗНАЙТИ СМІТТЯ';
|
||||||
|
$_['button_quarantine'] = 'В Карантин (Безпечно)';
|
||||||
|
$_['button_delete_trash'] = 'Видалити назавжди';
|
||||||
|
$_['button_empty_quarantine'] = 'Очистити папку Карантину';
|
||||||
|
$_['button_restore_quarantine'] = 'Повернути з Карантину';
|
||||||
|
$_['text_scan_result'] = 'Результати сканування';
|
||||||
|
$_['text_trash_files'] = 'Сміттєвих файлів: ';
|
||||||
|
$_['text_trash_size'] = 'Потенційно звільниться: ';
|
||||||
|
$_['button_start'] = 'СТАРТ ОПТИМІЗАЦІЇ';
|
||||||
|
$_['button_pause'] = 'ПАУЗА';
|
||||||
|
$_['button_stop'] = 'ЗУПИНИТИ';
|
||||||
|
$_['button_continue'] = 'ПРОДОВЖИТИ';
|
||||||
|
$_['button_start_new'] = 'СТАРТ (Новий запуск)';
|
||||||
|
$_['button_download_log'] = 'Завантажити лог в TXT';
|
||||||
|
$_['button_download'] = 'Завантажити';
|
||||||
|
$_['button_save'] = 'Зберегти';
|
||||||
|
$_['button_cancel'] = 'Скасувати';
|
||||||
|
$_['text_progress'] = 'Прогрес:';
|
||||||
|
$_['text_old_size'] = 'Було:';
|
||||||
|
$_['text_new_size'] = 'Стало:';
|
||||||
|
$_['text_savings'] = 'Економія:';
|
||||||
|
$_['text_detailed_log'] = 'Детальний лог';
|
||||||
|
$_['text_page'] = 'Стор.';
|
||||||
|
$_['text_waiting'] = 'Очікування запуску...';
|
||||||
|
$_['text_enabled'] = 'Увімкнено';
|
||||||
|
$_['text_disabled_error'] = 'Вимкнено (ПОМИЛКА)';
|
||||||
|
$_['text_supported'] = 'Підтримується';
|
||||||
|
$_['text_no'] = 'Ні';
|
||||||
|
$_['error_permission'] = 'У вас немає прав для керування модулем!';
|
||||||
|
$_['error_license'] = 'Помилка доступу: Невірний токен активації для цього домену!';
|
||||||
|
$_['error_domain'] = ' (Домен: ';
|
||||||
|
$_['text_found'] = 'Знайдено файлів: ';
|
||||||
|
$_['text_compressed'] = 'Стиснуто';
|
||||||
|
$_['text_original'] = 'Оригінал';
|
||||||
|
$_['text_error_process'] = 'Помилка обробки: ';
|
||||||
|
$_['error_log_empty'] = 'Лог порожній! Спочатку запустіть процес.';
|
||||||
|
$_['text_report_header'] = '=== ЗВІТ ===';
|
||||||
|
$_['text_total_files'] = 'Всього файлів: ';
|
||||||
|
$_['text_searching'] = 'Пошук файлів...';
|
||||||
|
$_['error_ajax'] = 'Помилка: ';
|
||||||
|
$_['text_resumed'] = '▶ ПРОЦЕС ВІДНОВЛЕНО...';
|
||||||
|
$_['text_paused'] = '⏸ ПАУЗА. Процес призупинено.';
|
||||||
|
$_['confirm_stop'] = 'Ви впевнені, що хочете повністю перервати процес?';
|
||||||
|
$_['confirm_delete'] = 'УВАГА! Файли будуть видалені з сервера назавжди без можливості відновлення! Продовжити?';
|
||||||
|
$_['confirm_empty_q'] = 'Ви впевнені, що хочете повністю очистити папку карантину?';
|
||||||
|
$_['confirm_restore'] = 'Всі файли з папки карантину будуть повернуті на свої місця. Продовжити?';
|
||||||
|
$_['button_stopping'] = 'Зупинка...';
|
||||||
|
$_['text_stopped_user'] = '🛑 ПРОЦЕС ПЕРЕРВАНО КОРИСТУВАЧЕМ!';
|
||||||
|
$_['text_increase'] = 'Збільшення';
|
||||||
|
$_['text_done'] = '✅ ГОТОВО! Процес завершено.';
|
||||||
|
$_['error_timeout'] = 'Таймаут сервера. Автоповтор через 3 секунди...';
|
||||||
|
$_['text_building_index'] = 'Крок 1/2: Індексація БД та шаблонів (пошук фото, що використовуються)...';
|
||||||
|
$_['text_comparing'] = 'Крок 2/2: Порівняння фізичних файлів з індексом...';
|
||||||
|
$_['text_quarantine_done'] = '✅ Процес перенесення в image/catalog_trash/ завершено!';
|
||||||
|
$_['text_deleted_done'] = '✅ Процес видалення сміття завершено!';
|
||||||
|
$_['text_quarantine_empty'] = '✅ Папку карантину успішно видалено з сервера!';
|
||||||
|
$_['text_restore_done'] = '✅ Файли успішно повернуто з карантину в робочу папку!';
|
||||||
|
$_['text_quarantine_move'] = 'В карантині: ';
|
||||||
|
$_['text_deleted_file'] = 'Видалено: ';
|
||||||
|
$_['text_no_trash'] = 'У вибраних папках сміття не знайдено! Всі файли використовуються.';
|
||||||
|
$_['text_scanning_dirs'] = 'Скануємо директорії: ';
|
||||||
|
$_['text_log_used'] = '[ВИКОРИСТОВУЄТЬСЯ]';
|
||||||
|
$_['text_log_trash'] = '[СМІТТЯ]';
|
||||||
|
$_['text_log_deleted'] = '[ВИДАЛЕНО]';
|
||||||
|
$_['text_log_del_err'] = '[ПОМИЛКА ВИДАЛЕННЯ]';
|
||||||
|
$_['text_log_quarantine'] = '[В КАРАНТИН]';
|
||||||
|
$_['text_log_q_err'] = '[ПОМИЛКА ПЕРЕНЕСЕННЯ]';
|
||||||
|
$_['text_log_restored'] = '[ВІДНОВЛЕНО]';
|
||||||
|
$_['text_log_rest_err'] = '[ПОМИЛКА ВІДНОВЛЕННЯ]';
|
||||||
|
$_['text_used_in'] = 'у: ';
|
||||||
|
$_['text_analyzing'] = 'Аналіз бази даних...';
|
||||||
|
$_['text_clean_empty'] = 'Чисто! Сміття немає.';
|
||||||
|
$_['text_processing'] = 'Обробка...';
|
||||||
|
$_['text_restoring'] = 'Відновлення файлів...';
|
||||||
|
$_['text_all_folders'] = 'image/catalog/ (Та всі вкладені)';
|
||||||
|
$_['text_root_folder'] = 'image/catalog/ (Тільки корінь)';
|
||||||
|
$_['text_q_empty_err'] = 'Папка карантину порожня або не існує.';
|
||||||
|
$_['error_token'] = 'Невірний токен. Перезавантажте сторінку.';
|
||||||
|
$_['text_apply_title'] = 'Оптимізацію завершено в папку: ';
|
||||||
|
$_['text_apply_info'] = 'Перевірте результат. Якщо все влаштовує — застосуйте зміни до основного каталогу.';
|
||||||
|
$_['entry_apply_backup'] = 'Перенести зі створенням бекапу (в Карантин)';
|
||||||
|
$_['entry_apply_replace'] = 'Замінити оригінали безповоротно';
|
||||||
|
$_['button_apply_main'] = 'ЗАСТОСУВАТИ ДО ОСНОВНОГО КАТАЛОГУ';
|
||||||
|
$_['button_delete_copies'] = 'Видалити тимчасові копії (скасування)';
|
||||||
|
$_['button_full_cleanup'] = 'Повне очищення всіх тимчасових папок та бекапів';
|
||||||
|
$_['text_apply_success'] = '✅ Файли успішно перенесено. ';
|
||||||
|
$_['text_apply_backup_ok'] = 'Оригінали збережено в папку: ';
|
||||||
|
$_['text_apply_no_backup'] = 'Оригінали видалено.';
|
||||||
|
$_['text_error_source'] = 'Помилка: Папку з оптимізованими файлами не знайдено.';
|
||||||
|
$_['confirm_full_cleanup'] = 'УВАГА! Ця дія безповоротно видалить УСІ папки бекапів (backup_*) та тимчасові папки з копіями. Продовжити?';
|
||||||
|
$_['text_tools_desc'] = 'Глобальні сканери та інструменти для роботи з файловою системою і БД зображень.';
|
||||||
|
$_['text_tool_select'] = 'Виберіть інструмент:';
|
||||||
|
$_['text_group_scanners'] = 'Сканери та Аналіз';
|
||||||
|
$_['text_group_generators'] = 'Генератори та Обробка';
|
||||||
|
$_['text_group_experimental'] = 'Експериментальні функції (BETA)';
|
||||||
|
$_['text_experimental_warn'] = 'Увага: Експериментальні функції зачіпають системні файли або базу даних. Настійно рекомендується зробити бекап!';
|
||||||
|
$_['text_tool_broken_db'] = 'Сканер битих/порожніх фото БД';
|
||||||
|
$_['text_tool_watermark'] = 'Динамічний Вотермарк (Тільки на кеш)';
|
||||||
|
$_['text_tool_duplicates'] = 'Поиск дубликатов файлов (за MD5)';
|
||||||
|
$_['text_tool_png_jpg'] = 'Конвертер важких PNG у JPG (сканер файлів без прозорості)';
|
||||||
|
$_['text_tool_placeholders'] = 'Генератор заглушок (Замість No Image)';
|
||||||
|
$_['text_tool_exif'] = 'Очищення EXIF-даних (Геотеги/Мета)';
|
||||||
|
$_['text_tool_small_photos'] = 'Сканер занадто дрібних фото';
|
||||||
|
$_['text_tool_html_broken'] = 'Пошук битих картинок в HTML (Описах)';
|
||||||
|
$_['text_tool_empty_folders'] = 'Очищення порожніх папок (image/catalog)';
|
||||||
|
$_['text_tool_smart_cache'] = 'Розумне очищення кешу зображень';
|
||||||
|
$_['text_tool_folder_tree'] = 'Дерево папок (Статистика ваги)';
|
||||||
|
$_['text_tool_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load (Без БД)';
|
||||||
|
$_['text_tool_translit'] = 'Транслітерація назв файлів';
|
||||||
|
$_['text_tool_cache_restore'] = 'Відновлення оригіналів із Кешу';
|
||||||
|
$_['entry_wm_type'] = 'Тип водяного знака';
|
||||||
|
$_['text_wm_image'] = 'Зображення (PNG)';
|
||||||
|
$_['text_wm_text'] = 'Текст';
|
||||||
|
$_['entry_wm_image_path'] = 'Шлях до зображення';
|
||||||
|
$_['entry_wm_text_val'] = 'Текст водяного знака';
|
||||||
|
$_['entry_wm_position'] = 'Позиція (1-9)';
|
||||||
|
$_['entry_wm_opacity'] = 'Прозорість (0-100)';
|
||||||
|
$_['entry_wm_category'] = 'Тільки для Категорій';
|
||||||
|
$_['entry_wm_brand'] = 'Тільки для Брендів';
|
||||||
|
$_['entry_min_width'] = 'Мінімальна ширина (px)';
|
||||||
|
$_['entry_min_height'] = 'Мінімальна висота (px)';
|
||||||
|
$_['entry_ph_product'] = 'Заглушка для Товарів';
|
||||||
|
$_['entry_ph_category'] = 'Заглушка для Категорій';
|
||||||
|
$_['entry_ph_brand'] = 'Заглушка для Брендів';
|
||||||
|
$_['button_run_tool'] = 'Запустити інструмент';
|
||||||
|
$_['button_scan_tool'] = 'Сканувати';
|
||||||
|
$_['button_fix_tool'] = 'Виправити знайдене';
|
||||||
|
$_['text_th_path'] = 'Файл / Шлях';
|
||||||
|
$_['text_th_size'] = 'Розмір';
|
||||||
|
$_['text_th_action'] = 'Дія';
|
||||||
|
$_['text_th_status'] = 'Статус';
|
||||||
|
$_['text_th_problem'] = 'Проблема / Значення';
|
||||||
|
$_['text_cron_title'] = 'Налаштування Cron';
|
||||||
|
$_['text_cron_desc'] = 'Додайте команду в Cron хостингу для автоматичного фонового стиснення.';
|
||||||
|
$_['entry_cron_new_only'] = 'Обробляти тільки нові (необроблені) файли';
|
||||||
|
$_['entry_cron_folders'] = 'Папки для сканування (залиште порожнім для всього каталогу)';
|
||||||
|
$_['text_promo_title'] = 'Інші модулі серії [NAT]';
|
||||||
|
$_['text_promo_desc'] = 'Модулі серії [NAT] – це інструменти для глибокої оптимізації OpenCart. Ми фокусуємося на автоматизації рутини, прискоренні бази даних та очищенні серверів від сміття. Усі модулі мають відкритий вихідний код та єдину логіку управління.';
|
||||||
|
$_['text_support'] = 'Технічна підтримка та побажання:';
|
||||||
|
$_['button_more'] = 'Дивитися всі модулі на OpenCart.com';
|
||||||
|
$_['button_more_forum'] = 'Opencartforum';
|
||||||
|
$_['text_mod_cat_opt'] = 'Catalog Optimizer [NAT]';
|
||||||
|
$_['text_mod_cat_opt_desc'] = 'Приховування порожніх категорій і брендів + SEO сортування товарів (у наявності зверху) + Очищення сміття БД.';
|
||||||
|
$_['text_mod_new_arrivals'] = 'New Arrivals [NAT]: Новинки за датами';
|
||||||
|
$_['text_mod_new_arrivals_desc'] = 'Автоматична SEO-сторінка новинок. Відображає новинки суворо за реальною датою додавання. Слайдери, сітка та розумний сайдбар архіву дат.';
|
||||||
|
$_['text_mod_img_opt'] = 'Image Optimizer [NAT]';
|
||||||
|
$_['text_mod_img_opt_desc'] = '<strong>Поточний модуль.</strong> Стиснення та ресайз ОРИГІНАЛІВ фото (image/catalog) у WebP + Очищення хостингу від невикористаних зображень.';
|
||||||
|
$_['text_mod_dom_scan'] = 'Domain Scanner [NAT]';
|
||||||
|
$_['text_mod_dom_scan_desc'] = 'Пошук і чищення зовнішніх посилань і HTTP-картинок у БД та файлах теми. Ідеально для HTTPS або очищення після парсингу.';
|
||||||
|
$_['text_mod_poll'] = 'Poll Widget [NAT]';
|
||||||
|
$_['text_mod_poll_desc'] = 'Створення опитувань та голосувань із візуальним конструктором дизайну, глибокою статистикою та захистом від накруток.';
|
||||||
|
$_['text_mod_db_opt'] = 'Database Optimizer [NAT]';
|
||||||
|
$_['text_mod_db_opt_desc'] = 'Інтелектуальне очищення сміття в базі даних, управління системними логами та додавання критично важливих індексів для прискорення.';
|
||||||
|
$_['text_mod_im_ex'] = 'Import/Export [NAT]';
|
||||||
|
$_['text_mod_im_ex_desc'] = 'Швидкий імпорт/експорт цін і залишків з файлів xls/xlsx/csv/xml/json або за посиланням. Маппінг полів, робота по Cron, текстові функції.';
|
||||||
|
$_['text_mod_admin_tools'] = 'Admin Tools [NAT]';
|
||||||
|
$_['text_mod_admin_tools_desc'] = 'Зручні інструменти адміністратора: вхід під клієнтом, кастомізація адмінки, управління правами користувачів та приховування непотрібних пунктів меню.';
|
||||||
|
$_['text_mod_utm_tracker'] = 'Order UTM Tracker [NAT]';
|
||||||
|
$_['text_mod_utm_tracker_desc'] = 'Автоматичне відстеження UTM-міток при оформленні замовлення. Зберігає джерело переходу, кампанію, ключові слова та виводить ці дані в замовленні для аналітики реклами.';
|
||||||
|
$_['text_info_title_promo_top_bar'] = 'Promo Top Bar [NAT]: Верхній рекламний інфо-баннер, інформаційна смуга над шапкою, рухомий рядок та топ-баннер';
|
||||||
|
$_['text_info_desc_promo_top_bar'] = 'Створення інтерактивних промо-панелей та слайд-шоу в шапці сайту з конструктором блоків, таймерами, формою підписки та гнучким націлюванням.';
|
||||||
|
$_['text_tool_no_image'] = 'Товари без головного фото (порожньо в БД)';
|
||||||
|
$_['text_problem_main_broken'] = 'Бите головне фото (файл видалено)';
|
||||||
|
$_['text_problem_add_broken'] = 'Бите дод. фото (файл видалено)';
|
||||||
|
$_['text_problem_no_image'] = 'Відсутнє головне фото';
|
||||||
|
$_['text_err_dir'] = 'Помилка: Директорію не знайдено або невірний шлях.';
|
||||||
|
$_['text_err_no_queue'] = 'Помилка: Чергу не знайдено. Спочатку запустіть сканування.';
|
||||||
|
$_['text_log_del_empty_folder'] = 'Видалено порожню папку: ';
|
||||||
|
$_['text_log_no_empty_folders'] = 'Порожніх папок в image/catalog/ не знайдено.';
|
||||||
|
$_['text_log_total_empty_folders'] = 'Всього видалено порожніх папок: ';
|
||||||
|
$_['text_log_cache_cleared'] = 'Кеш зображень успішно очищено.';
|
||||||
|
$_['text_log_wm_smart_mode'] = 'Вотермарки працюють в SMART-режимі: оригінали не зачіпаються, логотип накладається лише при генерації кешу.';
|
||||||
|
$_['text_log_scan_dupes'] = 'Сканування image/catalog/ на дублікати (за хешем MD5)... Це може зайняти час.';
|
||||||
|
$_['text_log_found_dupe'] = 'Знайдено дублікат: ';
|
||||||
|
$_['text_log_no_dupes'] = 'Дублікатів не знайдено.';
|
||||||
|
$_['text_log_total_dupes'] = 'Знайдено дублікатів: %s. Потенційна економія: %s';
|
||||||
|
$_['text_log_fix_dupes_prompt'] = 'Натисніть "Виправити знайдене" для перелінкування БД на оригинал та видалення дублів.';
|
||||||
|
$_['text_log_fixed_dupe'] = 'Виправлено та видалено дублікат: ';
|
||||||
|
$_['text_log_success_dupes'] = 'Успішно виправлено дублікатів: %s. Посилання в БД оновлено.';
|
||||||
|
$_['text_log_scan_png'] = 'Пошук важких PNG файлів без прозорості...';
|
||||||
|
$_['text_log_no_png'] = 'Відповідних PNG файлів не знайдено.';
|
||||||
|
$_['text_log_total_png'] = 'Знайдено PNG без прозорості: %s. Натисніть "Виправити" для конвертації в JPG.';
|
||||||
|
$_['text_log_converted_jpg'] = 'Сконвертовано в JPG: ';
|
||||||
|
$_['text_log_success_png'] = 'Успішно сконвертовано %s файлів. Звільнено: %s';
|
||||||
|
$_['text_log_ph_prod'] = 'Оновлено товарів заглушкою: ';
|
||||||
|
$_['text_log_ph_cat'] = 'Оновлено категорій заглушкою: ';
|
||||||
|
$_['text_log_ph_brand'] = 'Оновлено брендів заглушкою: ';
|
||||||
|
$_['text_log_ph_empty'] = 'Заглушки не вибрані в налаштуваннях.';
|
||||||
|
$_['text_log_scan_exif'] = 'Сканування EXIF-даних (мета-теги камер)...';
|
||||||
|
$_['text_log_stripped_exif'] = 'Очищено EXIF: ';
|
||||||
|
$_['text_log_no_exif'] = 'Файлів з EXIF для очищення не знайдено.';
|
||||||
|
$_['text_log_success_exif'] = 'Очищено EXIF у %s файлів. Звільнено: %s';
|
||||||
|
$_['text_log_scan_small'] = 'Пошук фото розміром менше %sx%s px...';
|
||||||
|
$_['text_log_too_small'] = 'Занадто мале (%sx%s): ';
|
||||||
|
$_['text_log_no_small'] = 'Дрібних фото не знайдено.';
|
||||||
|
$_['text_log_total_small'] = 'Знайдено дрібних фото: %s. Будь ласка, замініть їх на якісні.';
|
||||||
|
$_['text_log_html_broken'] = 'Битией IMG в HTML таблиці %s (ID: %s): ';
|
||||||
|
$_['text_log_no_html_broken'] = 'Битих картинок в HTML-описах не знайдено.';
|
||||||
|
$_['text_log_total_html_broken'] = 'Знайдено битих посилань в HTML: %s. Виправте їх вручну.';
|
||||||
|
$_['text_log_scan_smart_cache'] = 'Пошук втрачених файлів у image/cache/...';
|
||||||
|
$_['text_log_del_orph_cache'] = 'Видалено втрачений кеш: ';
|
||||||
|
$_['text_log_no_orph_cache'] = 'Втраченого кешу не знайдено.';
|
||||||
|
$_['text_log_success_smart_cache'] = 'Видалено файлів втраченого кешу: %s. Звільнено: %s';
|
||||||
|
$_['text_log_scan_translit'] = 'Пошук файлів з кирилицею або пробілами...';
|
||||||
|
$_['text_log_no_bad_names'] = 'Файлів з некоректними іменами не знайдено.';
|
||||||
|
$_['text_log_total_bad_names'] = 'Знайдено файлів з кирилицею/пробілами: %s. Натисніть "Виправити" для транслітерації та оновлення БД.';
|
||||||
|
$_['text_log_renamed'] = 'Перейменовано: ';
|
||||||
|
$_['text_log_success_translit'] = 'Успішно транслітеровано файлів: %s. БД оновлено.';
|
||||||
|
$_['text_log_scan_restore'] = 'Сканирование image/cache/ для відновлення втрачених оригіналів...';
|
||||||
|
$_['text_log_restored_cache'] = 'Відновлено з кешу: ';
|
||||||
|
$_['text_log_no_lost_orig'] = 'Відсутніх оригіналів у кеші не знайдено.';
|
||||||
|
$_['text_log_success_restore'] = 'Успішно відновлено оригіналів з кешу: %s.';
|
||||||
|
$_['error_invalid_folder'] = 'Помилка: Неприпустиме ім\'я папки!';
|
||||||
|
$_['text_formats_title'] = 'Сучасні формати (WebP & SVG)';
|
||||||
|
$_['text_formats_desc'] = 'Налаштування інтеграції сучасних форматів у файлову систему та шаблони OpenCart.';
|
||||||
|
$_['entry_support_svg'] = 'Підтримка завантаження SVG';
|
||||||
|
$_['help_support_svg'] = 'Дозволяє завантаження векторних SVG-зображень через стандартний Filemanager та їх безпечне виведення на вітрині без спотворення розмірів.';
|
||||||
|
$_['entry_support_svg_autofix'] = 'Автофікс CSS-стилів SVG';
|
||||||
|
$_['help_support_svg_autofix'] = 'Застосовує ізольовані CSS-стилі розмірів для каталожних SVG-товарів без впливу на прапорці мов та системні іконки.';
|
||||||
|
$_['entry_support_webp'] = 'Підтримка завантаження WebP (+ TrueFileManager)';
|
||||||
|
$_['help_support_webp'] = 'Дозволяє вибирати, завантажувати та шукати WebP-файли через стандартний FileManager та TrueFileManager (elFinder).';
|
||||||
|
$_['entry_truefilemanager_webp'] = 'WebP у TrueFileManager';
|
||||||
|
$_['help_truefilemanager_webp'] = 'Додає підтримку завантаження, попереднього перегляду та ескізів WebP у TrueFileManager від sitecreator (якщо його встановлено).';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Блискавична заміна: автоматично змінює розширення .jpg/.png на .webp прямо в HTML-виводі вітрини та додає атрибут loading="lazy". Не зачіпає базу даних!';
|
||||||
|
$_['entry_auto_fake_jpg_guard'] = 'Захист від фейкових JPG (On-the-Fly Guard)';
|
||||||
|
$_['help_auto_fake_jpg_guard'] = 'Автоматично виявляє при завантаженні та імпорті (1С, парсери, CSV, FileManager) файли PNG у масці .jpg, що викликають чорний фон на вітрині, та виправляє їх на льоту при першому зверненні.';
|
||||||
|
$_['entry_fake_jpg_mode'] = 'Режим виправлення фейкових JPG:';
|
||||||
|
$_['text_fake_jpg_mode_jpg'] = 'Конвертувати у чистий JPG з білим фоном (#FFFFFF) [Рекомендовано]';
|
||||||
|
$_['text_fake_jpg_mode_png'] = 'Зберегти як справжній PNG (прозорість + оновлення БД)';
|
||||||
|
$_['help_tool_broken_db'] = 'Шукає в базі даних зображення, фізичні файли яких були видалені з сервера. Дозволяє очистити биті посилання.';
|
||||||
|
$_['help_tool_empty_folders'] = 'Рекурсивно сканує директорію image/catalog/ та безпечно видаляє всі папки, в яких немає жодного файлу.';
|
||||||
|
$_['help_tool_folder_tree'] = 'Будує дерево каталогів та показує реальну вагу кожної папки для пошуку "пожирачів" місця.';
|
||||||
|
$_['help_tool_html_broken'] = 'Сканує HTML-описи товарів та категорій на наявність тегів <img> з неіснуючими зображеннями.';
|
||||||
|
$_['help_tool_small_photos'] = 'Знаходить зображення з роздільною здатністю нижче заданої. Додано посилання на пошук якісних аналогів у Google Images та Яндекс Зображеннях.';
|
||||||
|
$_['help_tool_duplicates'] = 'Шукає повні дублікати файлів за MD5-хешем (різні назви, але однакова картинка). Дозволяє склеїти їх в один файл та оновити БД.';
|
||||||
|
$_['help_tool_watermark'] = 'Накладення водяних знаків у SMART-режимі (тільки на кеш вітрини, оригінали не змінюються).';
|
||||||
|
$_['help_tool_placeholders'] = 'Масово встановлює вибране зображення-заглушку для товарів та категорій, у яких взагалі немає фото.';
|
||||||
|
$_['help_tool_png_jpg'] = 'Інструмент сканує папку зображень і знаходить важкі PNG-файли, які не мають прозорого фону (альфа-каналу). Оскільки прозорість їм не потрібна, їх можна безпечно конвертувати у формат JPG. Це значно полегшує файли (в середньому на 70-80%) та прискорює завантаження сайту, а всі посилання в базі даних автоматично оновлюються.';
|
||||||
|
$_['help_tool_exif'] = 'Сканує EXIF-дані та видаляє з них приховані теги, зменшуючи вагу на 10-15%.';
|
||||||
|
$_['help_tool_smart_cache'] = 'Шукає в папці image/cache/ кешовані файли, оригінали яких уже видалені, та очищає неактуальний кеш.';
|
||||||
|
$_['help_tool_translit'] = 'Знаходить файли з кирилицею або пробілами, перейменовує їх транслітом та оновлює шляхи в БД.';
|
||||||
|
$_['help_tool_cache_restore'] = 'Якщо ви випадково видалили оригінал з catalog, інструмент спробує знайти його копію в cache та відновити назад.';
|
||||||
|
$_['entry_quarantine'] = 'Перемістити оригінали в Карантин (замість видалення)';
|
||||||
|
$_['entry_backup_db'] = 'Створити бекап змінюваних таблиць у SQL перед запуском';
|
||||||
|
$_['button_fix_selected'] = 'ВИПРАВИТИ ВИБРАНІ';
|
||||||
|
$_['button_export_log'] = 'Експортувати в CSV';
|
||||||
|
$_['text_th_before'] = 'Стан ДО';
|
||||||
|
$_['text_th_after'] = 'Очікуваний результат ПІСЛЯ';
|
||||||
|
$_['text_th_select'] = 'Дія';
|
||||||
|
$_['text_th_preview'] = 'Передперегляд';
|
||||||
|
$_['text_th_name'] = 'Об`єкт / Файл';
|
||||||
|
$_['text_global_action'] = 'Групова дія для вибраних:';
|
||||||
|
$_['text_action_clear'] = 'Очистити посилання в БД';
|
||||||
|
$_['text_action_disable'] = 'Вимкнути (Статус = 0)';
|
||||||
|
$_['text_action_stock'] = 'Установити "Немає в наявності"';
|
||||||
|
$_['text_action_placeholder'] = 'Встановити заглушку';
|
||||||
|
$_['text_action_ignore'] = 'Нічого не робити';
|
||||||
|
$_['text_action_merge'] = 'Склеїти (видалити дублікат, залишити оригінал)';
|
||||||
|
$_['text_action_convert'] = 'Конвертувати в JPG';
|
||||||
|
$_['text_action_rename'] = 'Перейменувати транслітом';
|
||||||
|
$_['text_action_delete'] = 'Видалити';
|
||||||
|
$_['text_action_restore'] = 'Відновити';
|
||||||
|
$_['text_db_backup_created'] = 'Створено бекап БД: %s';
|
||||||
|
$_['text_quarantine_created'] = 'Перенесено в карантин: %s';
|
||||||
|
$_['text_fix_status_success'] = 'Успішно виконано';
|
||||||
|
$_['text_fix_status_error'] = 'Помилка: %s';
|
||||||
|
$_['text_log_exported'] = 'Лог успішно експортовано!';
|
||||||
|
$_['text_select_action'] = '-- Виберіть дію --';
|
||||||
|
$_['error_empty_selection'] = 'Помилка: Не вибрано жодного рядка для виправлення!';
|
||||||
|
$_['text_link_admin'] = 'Адмінка';
|
||||||
|
$_['text_link_catalog'] = 'Вітрина';
|
||||||
|
$_['entry_threads'] = 'Потоків обробки';
|
||||||
|
$_['text_threads_optimal'] = 'оптимально';
|
||||||
|
$_['button_download_zip'] = 'Завантажити ZIP-архів та видалити папку';
|
||||||
|
$_['confirm_download_and_delete'] = 'Архів успішно завантажився? Можна видалити тимчасову папку копій на сервері?';
|
||||||
|
$_['button_clear_backups'] = 'Видалити бекапи БД';
|
||||||
|
$_['button_clear_backups_short'] = 'Очистити бекапи';
|
||||||
|
$_['confirm_clear_backups'] = 'Ви впевнені, що хочете повністю видалити всі SQL-бекапи таблиць?';
|
||||||
|
$_['text_compare_title'] = 'Порівняння зображень ДО / ПІСЛЯ';
|
||||||
|
$_['text_compare_before'] = 'ДО';
|
||||||
|
$_['text_compare_after'] = 'ПІСЛЯ';
|
||||||
|
$_['text_backups_cleared'] = 'Усі SQL-бекапи таблиць успішно видалені!';
|
||||||
|
$_['error_no_backups'] = 'Бекапи не знайдені або папка порожня.';
|
||||||
|
$_['button_restore'] = 'Повернути';
|
||||||
|
$_['button_empty'] = 'Очистити';
|
||||||
|
$_['entry_wm_targets'] = 'Застосовувати водяний знак до:';
|
||||||
|
$_['text_wm_target_product'] = 'Фото товарів';
|
||||||
|
$_['text_wm_target_category'] = 'Фото категорій';
|
||||||
|
$_['text_wm_target_brand'] = 'Логотипи брендів';
|
||||||
|
$_['text_wm_target_banner'] = 'Банери та слайди';
|
||||||
|
$_['text_wm_target_blog'] = 'Статті / Блог';
|
||||||
|
$_['error_no_scan_data'] = 'Помилка: Дані сканування не знайдені. Спочатку запустіть сканування!';
|
||||||
|
$_['error_row_not_found'] = 'Помилка: Об`єкт не знайдено в результатах сканування!';
|
||||||
|
$_['error_file_not_found'] = 'Помилка: Файл не знайдено на сервері!';
|
||||||
|
$_['text_folder_rules_title'] = 'Індивідуальні правила стиснення для папок';
|
||||||
|
$_['text_folder_rules_desc'] = 'Ви можете перевизначити якість та максимальні розміри для конкретних папок. Якщо залишити поле порожнім, використовуватиметься глобальне налаштування. Шлях вказується відносно папки image (наприклад, catalog/banners/).';
|
||||||
|
$_['entry_folder_path'] = 'Шлях до папки';
|
||||||
|
$_['entry_jpg_quality'] = 'Якість JPG';
|
||||||
|
$_['entry_webp_quality'] = 'Якість WebP';
|
||||||
|
$_['button_add_rule'] = 'Додати правило';
|
||||||
|
$_['button_remove'] = 'Вилучити';
|
||||||
|
$_['entry_wm_angle'] = 'Кут нахилу водяного знака (градуси)';
|
||||||
|
$_['entry_wm_corner_radius'] = 'Закруглення кутів водяного знака (px)';
|
||||||
|
$_['entry_wm_size_type'] = 'Масштабування водяного знака';
|
||||||
|
$_['entry_wm_size_percent'] = 'Розмір водяного знака (% від ширини зображення)';
|
||||||
|
$_['entry_wm_text_color'] = 'Колір тексту водяного знака';
|
||||||
|
$_['entry_wm_text_font'] = 'Шрифт водяного знака (TTF)';
|
||||||
|
$_['entry_wm_filter_mode'] = 'Режим фільтрації Категорій/Брендів';
|
||||||
|
$_['text_wm_filter_include'] = 'Тільки для вибраних';
|
||||||
|
$_['text_wm_filter_exclude'] = 'Для всіх, крім вибраних';
|
||||||
|
$_['text_wm_size_original'] = 'Оригінальний розмір';
|
||||||
|
$_['text_wm_size_percent'] = 'Пропорційно ширині зображення (%)';
|
||||||
|
$_['button_preview_watermark'] = 'Попередній перегляд';
|
||||||
|
$_['text_wm_preview_title'] = 'Попередній перегляд водяного знака';
|
||||||
|
$_['text_cron_exclude_folders'] = 'Виключити папки зі сканування';
|
||||||
|
$_['text_cron_entities'] = 'Які типи фото обробляти?';
|
||||||
|
$_['text_cron_quality_override'] = 'Перевизначити параметри стиснення для Крона';
|
||||||
|
$_['text_cron_recommendations'] = 'Рекомендації щодо розкладу Cron';
|
||||||
|
$_['text_cron_recommendations_desc'] = '<ul><li><b>Для невеликих сайтів (до 5000 товарів)</b> рекомендується запускати Крон кожну годину (<code>0 * * * *</code>).</li><li><b>Для середніх сайтів (5000-20000 товарів)</b> рекомендується запускати раз на 3-6 годин (<code>0 */6 * * *</code>).</li><li><b>Для великих сайтів (понад 20000 товарів)</b> — один раз на добу вночі (наприклад, о 2:00: <code>0 2 * * *</code>).</li></ul>';
|
||||||
|
$_['text_tool_broken_files'] = 'Сканер битих/порожніх файлів на сервері';
|
||||||
|
$_['help_tool_broken_files'] = 'Сканує фізичні файли в папці image/catalog/ на наявність пошкоджених зображень або порожніх файлів розміром 0 байт.';
|
||||||
|
$_['text_grid_broken_file'] = 'Битий або порожній файл на сервері';
|
||||||
|
$_['text_grid_broken_file_after'] = 'Вилучення або заміна заглушкою';
|
||||||
|
$_['text_description_broken_files'] = 'Результати сканування фізичних файлів у папці image/catalog/. Тут відображаються биті (пошкоджені) зображення або файли розміром 0 байт.';
|
||||||
|
$_['text_action_strip'] = 'Очистити EXIF';
|
||||||
|
$_['text_action_set_placeholder'] = 'Встановити заглушку';
|
||||||
|
$_['text_th_entity'] = 'Об`єкт / Пов`язані посилання';
|
||||||
|
$_['text_cron_entity_product'] = 'Товари';
|
||||||
|
$_['text_cron_entity_category'] = 'Категорії';
|
||||||
|
$_['text_cron_entity_manufacturer'] = 'Виробники / Бренди';
|
||||||
|
$_['text_cron_entity_banner'] = 'Банери';
|
||||||
|
$_['text_cron_entity_blog'] = 'Блог / Статті';
|
||||||
|
$_['entry_cron_jpg_quality'] = 'Якість JPG (Крон)';
|
||||||
|
$_['entry_cron_webp_quality'] = 'Якість WebP (Крон)';
|
||||||
|
$_['entry_cron_max_width'] = 'Макс. ширина px (Крон)';
|
||||||
|
$_['entry_cron_max_height'] = 'Макс. висота px (Крон)';
|
||||||
|
$_['text_cron_folder_scan'] = 'Папки для сканування';
|
||||||
|
$_['text_no_fonts'] = 'TTF-шрифти не знайдено в system/library/font/';
|
||||||
|
$_['button_apply'] = 'Застосувати';
|
||||||
|
$_['text_backup_will_be_created'] = 'Резервна копія бази даних буде автоматично створена перед виконанням цієї дії.';
|
||||||
|
$_['text_bulk_action'] = 'Групова дія для вибраних';
|
||||||
|
$_['text_grid_results'] = 'Результати та деталі сканування';
|
||||||
|
$_['text_quarantine_will_be_created'] = 'Оригінальні файли будуть переміщені в карантин (image/catalog_trash/) перед зміною.';
|
||||||
|
$_['text_success_apply'] = 'Зміни успішно застосовані!';
|
||||||
|
$_['text_description_broken'] = 'Результати сканування бази даних на наявність битих посилань (записи в таблицях з неіснуючими файлами).';
|
||||||
|
$_['text_description_cache_restore'] = 'Результати пошуку файлів у кеші, оригінали яких відсутні в каталозі.';
|
||||||
|
$_['text_description_duplicates'] = 'Результати пошуку повних дублікатів зображень за MD5-хешем.';
|
||||||
|
$_['text_description_empty_folders'] = 'Список порожніх папок в директорії image/catalog/ для видалення.';
|
||||||
|
$_['text_description_exif'] = 'Результати пошуку зображень з метаданими EXIF, які можна очистити.';
|
||||||
|
$_['text_description_folder_tree'] = 'Статистика розміру папок у каталозі image/catalog/.';
|
||||||
|
$_['text_description_html_broken'] = 'Результати пошуку неіснуючих файлів картинок, на які посилаються описи в HTML.';
|
||||||
|
$_['text_description_placeholders'] = 'Результати пошуку сутностей без зображень для заповнення заглушками.';
|
||||||
|
$_['text_description_png_jpg'] = 'Результати пошуку важких зображень PNG без прозорості, які можна перетиснути в JPG.';
|
||||||
|
$_['text_description_small_photos'] = 'Список зображень, розміри яких менше мінімально заданих (%sx%s px).';
|
||||||
|
$_['text_description_smart_cache'] = 'Результати пошуку файлів кешу, оригінали яких уже було видалено.';
|
||||||
|
$_['text_description_translit'] = 'Результати пошуку файлів з кирилицею або пробілами в назвах.';
|
||||||
|
$_['text_grid_broken_db_after'] = 'Очистити посилання або встановити заглушку';
|
||||||
|
$_['text_grid_dupe_after'] = 'Оригінал (залишається)';
|
||||||
|
$_['text_grid_dupe_before'] = 'Дублікат (буде видалено)';
|
||||||
|
$_['text_grid_empty_folder'] = 'Порожня папка';
|
||||||
|
$_['text_grid_empty_folder_after'] = 'Вилучити порожню папку';
|
||||||
|
$_['text_grid_exif_after'] = 'Очистити метадані';
|
||||||
|
$_['text_grid_exif_before'] = 'Містить EXIF';
|
||||||
|
$_['text_grid_html_after'] = 'Виправити посилання вручну';
|
||||||
|
$_['text_grid_missing_file'] = 'Файл відсутній';
|
||||||
|
$_['text_grid_missing_html'] = 'Картинка не знайдена в описі';
|
||||||
|
$_['text_grid_missing_orig'] = 'Оригінал відсутній';
|
||||||
|
$_['text_grid_missing_orig_after'] = 'Відновити оригінал з кешу';
|
||||||
|
$_['text_grid_no_image'] = 'Немає зображення (порожньо)';
|
||||||
|
$_['text_grid_orph_cache'] = 'Осиротілий кеш';
|
||||||
|
$_['text_grid_orph_cache_after'] = 'Видалити непотрібний кеш';
|
||||||
|
$_['text_grid_ph_brand_after'] = 'Встановити заглушку бренду';
|
||||||
|
$_['text_grid_ph_category_after'] = 'Встановити заглушку категорії';
|
||||||
|
$_['text_grid_ph_product_after'] = 'Встановити заглушку товару';
|
||||||
|
$_['text_grid_small_photo_after'] = 'Рекомендується замінити на більше';
|
||||||
|
$_['text_grid_too_small'] = 'Занадто мале';
|
||||||
|
$_['text_no_relations'] = 'Немає зв’язків у БД';
|
||||||
|
$_['text_action_archive'] = 'Архівувати (в ZIP)';
|
||||||
|
$_['text_action_archive_delete'] = 'Архівувати + Видалити';
|
||||||
|
$_['text_tool_sanitizer'] = 'Санитайзер імен файлів';
|
||||||
|
$_['help_tool_sanitizer'] = 'Масове очищення імен файлів і папок від кирилиці, пробілів та спецсимволів, приведення розширень до єдиного вигляду.';
|
||||||
|
$_['text_description_sanitizer'] = 'Результати аналізу імен файлів для санітаризації за вибраними правилами.';
|
||||||
|
$_['entry_sz_translit'] = 'Транслітерація (кирилиця в латиницю)';
|
||||||
|
$_['entry_sz_spaces'] = 'Замінювати пробіли на символ "_"';
|
||||||
|
$_['entry_sz_special'] = 'Видаляти спеціальні символи';
|
||||||
|
$_['entry_sz_lowercase_name'] = 'Ім`я файлу в нижній регістр';
|
||||||
|
$_['entry_sz_lowercase_ext'] = 'Розширення в нижній регістр';
|
||||||
|
$_['entry_sz_normalize_ext'] = 'Нормалізувати розширення (jpeg -> jpg)';
|
||||||
|
$_['entry_cron_folder_mode'] = 'Режим фільтрації папок';
|
||||||
|
$_['text_cron_folder_mode_exclude'] = 'Сканувати все, крім вибраних (Винятки)';
|
||||||
|
$_['text_cron_folder_mode_include'] = 'Сканирувати тільки вибрані папки';
|
||||||
|
$_['button_select_all'] = 'Вибрати всі';
|
||||||
|
$_['button_deselect_all'] = 'Зняти всі';
|
||||||
|
$_['entry_wm_upload_font'] = 'Завантажити свій шрифт TTF';
|
||||||
|
$_['button_upload_font'] = 'Завантажити шрифт';
|
||||||
|
$_['text_success_font_upload'] = 'Шрифт успішно завантажено!';
|
||||||
|
$_['error_font_upload'] = 'Помилка завантаження шрифту! Дозволені тільки файли .ttf вагою до 5 МБ.';
|
||||||
|
$_['entry_lazy_load'] = 'Прогресивне лениве завантаження';
|
||||||
|
$_['help_lazy_load'] = 'Вмикає преміальне прогресивне відкладене завантаження на вітрині. Зображення замінюються на мікро-прев\'ю та плавно розмиваються (blur-up), підвантажуючись у міру прокручування.';
|
||||||
|
$_['confirm_replace_mode'] = 'УВАГА! Ви обрали режим «Замінювати оригінали». Усі зображення будуть перезаписані безпосередньо на сервері. Наполегливо рекомендуємо зробити резервну копію. Ви впевнені, що хочете продовжити?';
|
||||||
|
$_['text_compare'] = 'Порівняти';
|
||||||
|
$_['text_home'] = 'Головна';
|
||||||
|
$_['text_tech_gd'] = 'Бібліотека GD';
|
||||||
|
$_['text_tech_imagick'] = 'Imagick';
|
||||||
|
$_['text_tech_webp'] = 'Підтримка WebP';
|
||||||
|
$_['text_position_1'] = '1 - Зліва вгорі';
|
||||||
|
$_['text_position_2'] = '2 - По центру вгорі';
|
||||||
|
$_['text_position_3'] = '3 - Справа вгорі';
|
||||||
|
$_['text_position_4'] = '4 - Зліва посередині';
|
||||||
|
$_['text_position_5'] = '5 - По центру';
|
||||||
|
$_['text_position_6'] = '6 - Справа посередині';
|
||||||
|
$_['text_position_7'] = '7 - Зліва внизу';
|
||||||
|
$_['text_position_8'] = '8 - По центру внизу';
|
||||||
|
$_['text_position_9'] = '9 - Справа внизу';
|
||||||
|
|
||||||
|
$_['entry_log_level'] = 'Рівень логу';
|
||||||
|
$_['text_log_changed_only'] = 'Тільки змінені';
|
||||||
|
$_['text_log_all'] = 'Всі файли (детально)';
|
||||||
|
$_['text_skipped_no_gain'] = 'Пропущено (без покращення)';
|
||||||
|
$_['text_reset_cache_hint'] = 'Скинути кеш оптимізації (повне пересканування)';
|
||||||
|
$_['confirm_reset_cache'] = 'Скинути кеш оптимізації? Наступне сканування перевірить ВСІ файли знову.';
|
||||||
|
$_['text_cache_cleared'] = 'Кеш оптимізації очищено. Наступне сканування перевірить всі файли.';
|
||||||
|
$_['error_wm_preview'] = 'Помилка генерації прев\'ю водяного знаку.';
|
||||||
|
$_['error_wm_too_large'] = 'Зображення водяного знаку занадто велике (%dx%d px)! Максимально допустимий розмір: %dx%d px.';
|
||||||
|
$_['text_apply_errors_warning'] = 'УВАГА: Деякі файли не вдалося замінити (заблоковані або немає прав):';
|
||||||
|
$_['text_action_compress'] = 'Стиснути зображення';
|
||||||
|
$_['text_estimated'] = 'Прогноз';
|
||||||
|
$_['entry_min_savings_bytes'] = 'Мін. стиснення (байт)';
|
||||||
|
$_['entry_min_savings_percent'] = 'Мін. стиснення (%)';
|
||||||
|
$_['text_optimized'] = 'Оптимізовано';
|
||||||
|
$_['entry_broken_fallback'] = 'Заглушка для битих фото';
|
||||||
|
$_['help_broken_fallback'] = 'Автоматично замінює відсутні або пошкоджені зображення каталогу на вітрині на зображення-заглушку.';
|
||||||
|
$_['entry_fallback_image'] = 'Зображення-заглушка';
|
||||||
|
$_['help_fallback_image'] = 'Виберіть зображення, яке буде показано, якщо оригінальний файл картинки товару чи категорії відсутній. За замовчуванням використовується no_image.png.';
|
||||||
|
$_['text_tool_cmyk'] = 'Конвертер CMYK в RGB';
|
||||||
|
$_['help_tool_cmyk'] = 'Конвертація JPEG зображень з колірного профілю CMYK в sRGB для коректного відображення в браузерах Safari та на пристроях iOS.';
|
||||||
|
$_['text_tool_heavy_files'] = 'Пошук важких файлів';
|
||||||
|
$_['help_tool_heavy_files'] = 'Пошук найважчих оригінальних зображень у каталозі з можливістю їх швидкого стиснення безпосередньо тут.';
|
||||||
|
$_['entry_heavy_files_limit'] = 'Макс. кількість знайдених файлів (всього)';
|
||||||
|
$_['text_action_convert_rgb'] = 'Конвертувати в RGB';
|
||||||
|
$_['text_description_cmyk'] = 'Знайдено файли в колірному просторі CMYK. Конвертація в sRGB гарантує колірне відображення на всіх платформах, включаючи iOS/macOS.';
|
||||||
|
$_['text_description_heavy'] = 'Список із %d найважчих файлів у каталозі зображень. Ви можете оптимізувати їх безпосередньо тут.';
|
||||||
|
$_['text_cron_folder_hint_exclude_all'] = 'Статус: Скануватимуться всі папки (винятки не обрані).';
|
||||||
|
$_['text_cron_folder_hint_exclude_some'] = 'Статус: Скануватимуться всі папки, ОКРІМ %d позначених.';
|
||||||
|
$_['text_cron_folder_hint_include_some'] = 'Статус: Скануватимуться тільки %d позначених папок.';
|
||||||
|
$_['text_cron_folder_hint_include_none'] = 'УВАГА: Жодної папки не обрано! Крон нічого не буде сканувати.';
|
||||||
|
$_['text_action_apply_changes'] = 'Застосувати вказані зміни';
|
||||||
|
$_['entry_wm_status'] = 'Статус водяного знака';
|
||||||
|
$_['text_disabled'] = 'Відключено';
|
||||||
|
$_['entry_rule_name'] = 'Назва правила';
|
||||||
|
$_['entry_rule_status'] = 'Статус правила';
|
||||||
|
$_['entry_action'] = 'Дія';
|
||||||
|
$_['entry_ph_status'] = 'Статус заглушок';
|
||||||
|
$_['entry_sanitizer_limit'] = 'Макс. файлів для пошуку (ліміт)';
|
||||||
|
$_['entry_heavy_files_min_size'] = 'Мінимальний розмір';
|
||||||
|
$_['entry_png_jpg_limit'] = 'Макс. файлів для пошуку (ліміт)';
|
||||||
|
$_['entry_png_jpg_min_size'] = 'Мінімальний розмір';
|
||||||
|
$_['text_wm_rule_title'] = 'Правило водяного знака';
|
||||||
|
$_['button_close'] = 'Закрити';
|
||||||
|
$_['text_ph_rule_title'] = 'Правило заглушки';
|
||||||
|
$_['entry_ph_image'] = 'Зображення заглушки';
|
||||||
|
$_['button_clear_cache_wm'] = 'Очистити кеш (застосувати водяний знак)';
|
||||||
|
$_['text_active'] = 'Активна';
|
||||||
|
$_['text_error'] = 'Не активна';
|
||||||
|
$_['text_th_dupe_delete'] = 'Файл для видалення (Дублікат)';
|
||||||
|
$_['text_th_dupe_keep'] = 'Файл для збереження (Оригінал)';
|
||||||
|
$_['text_dupe_original_label'] = 'Оригінал';
|
||||||
|
$_['text_dupe_duplicate_label'] = 'Дублікат';
|
||||||
|
|
||||||
|
$_['text_disk_usage'] = 'Використання диска';
|
||||||
|
$_['text_cumulative_stats'] = 'Статистика оптимізації';
|
||||||
|
$_['text_disk_catalog'] = 'Каталог зображень';
|
||||||
|
$_['text_disk_cache'] = 'Кеш OC';
|
||||||
|
$_['text_disk_trash'] = 'Кошик модуля';
|
||||||
|
$_['text_disk_other'] = 'Інше';
|
||||||
|
$_['text_disk_free'] = 'Вільно';
|
||||||
|
$_['text_total_files_opt'] = 'Файлів оброблено';
|
||||||
|
$_['text_total_saved'] = 'Всього зекономлено';
|
||||||
|
$_['text_avg_saving_pct'] = 'Середня економія';
|
||||||
|
$_['text_stats_hint'] = 'Статистика зберігається в БД сайту (враховує Оптимізацію, Очищення, Інструменти та Крон)';
|
||||||
|
$_['text_reset_stats'] = 'Скинути статистику';
|
||||||
|
$_['text_reset_stats_confirm']= 'Ви впевнені, що хочете скинути всю статистику з БД?';
|
||||||
|
$_['text_export_import'] = 'Експорт / Імпорт налаштувань';
|
||||||
|
$_['button_export_settings'] = 'Експорт налаштувань (JSON)';
|
||||||
|
$_['button_import_settings'] = 'Імпортувати налаштування';
|
||||||
|
$_['help_export_settings'] = 'Завантажити всі налаштування модуля в JSON-файл';
|
||||||
|
$_['help_import_settings'] = 'Завантажити раніше експортований JSON для відновлення налаштувань';
|
||||||
|
$_['text_import_success'] = 'Налаштування успішно імпортовані. Перезавантажте сторінку для застосування.';
|
||||||
|
$_['error_import_file'] = 'Файл не завантажено або помилка завантаження';
|
||||||
|
$_['error_import_invalid'] = 'Некоректний файл налаштувань (невірний модуль або формат)';
|
||||||
|
$_['text_click_to_load'] = 'Натисніть ↑ для завантаження даних диска';
|
||||||
|
|
||||||
|
|
||||||
|
$_['tab_formats'] = 'Формати зображень';
|
||||||
|
|
||||||
|
$_['text_disk_quota_legend'] = 'Ліміти диска хостингу (вручну)';
|
||||||
|
$_['text_disk_quota_desc'] = 'Якщо графік дискового простору показує некоректні дані (фізичний диск сервера замість ліміту вашого хостингу), ви можете вказати ліміти вашого тарифу вручну. Вкажіть 0, щоб використовувати автовизначення.';
|
||||||
|
$_['entry_disk_quota_total'] = 'Виділено диска на хостингу (ГБ)';
|
||||||
|
$_['entry_disk_quota_used'] = 'Зайнято диска на хостингу всього (ГБ)';
|
||||||
|
$_['entry_auto_disk'] = 'Автооновлення при вході';
|
||||||
|
|
||||||
|
$_['entry_cron_task_name'] = 'Назва задачі';
|
||||||
|
$_['entry_cron_task_summary'] = 'Параметри стиснення';
|
||||||
|
$_['button_add_cron_task'] = 'Додати задачу';
|
||||||
|
$_['button_copy_cron_url'] = 'Копіювати URL';
|
||||||
|
$_['text_cron_recommended_url'] = 'URL для запуску задачі крону:';
|
||||||
|
$_['entry_cron_batch_limit'] = 'Ліміт пакета за один запуск Крона (файлів)';
|
||||||
|
$_['help_cron_batch_limit'] = 'Максимальна кількість файлів, що обробляються за один запуск Крона. За замовчуванням 100. Рекомендується від 50 до 300 для запобігання таймауту виконання на хостингу.';
|
||||||
|
|
||||||
|
$_['text_license_required'] = 'Необхідний ліцензійний ключ';
|
||||||
|
$_['text_license_required_desc'] = 'Будь ласка, введіть ліцензійний ключ для активації модуля. Усі функції налаштувань та оптимізації заблоковані до введення валідного ключа.';
|
||||||
|
$_['entry_token_desc'] = 'Введіть токен активації, виданий для вашого основного домену. Ви можете отримати його в особистому кабінеті на форумі або звернувшись у підтримку.';
|
||||||
|
$_['button_activate'] = 'Активувати модуль';
|
||||||
|
$_['text_support'] = 'Технічна підтримка';
|
||||||
|
$_['text_support_desc'] = 'Якщо у вас ще немає ключа або виникли проблеми, будь ласка, повідомте номер вашого замовлення та домен.';
|
||||||
|
|
||||||
|
$_['entry_wm_max_width'] = 'Макс. ширина водяного знака (px)';
|
||||||
|
$_['entry_wm_max_height'] = 'Макс. висота водяного знака (px)';
|
||||||
|
$_['help_wm_max_width'] = 'Якщо вихідне зображення водяного знака перевищує цю ширину, воно буде автоматично масштабоване. Вкажіть 0 або залиште порожнім для значення за замовчуванням (800px).';
|
||||||
|
$_['help_wm_max_height'] = 'Якщо вихідне зображення водяного знака перевищує цю висоту, воно буде автоматично масштабоване. Вкажіть 0 або залиште порожнім для значення за замовчуванням (800px).';
|
||||||
|
$_['entry_disk_status'] = 'Увімкнути сканування диска та графік';
|
||||||
|
$_['help_disk_status'] = 'Якщо увімкнено, модуль періодично скануватиме обсяг папки картинок та відображатиме круговую діаграму. Рекомендується вимкнути на великих сайтах для прискорення завантаження панелі.';
|
||||||
|
$_['text_disk_settings_title'] = 'Налаштування лімітів та сканування диска';
|
||||||
|
|
||||||
|
$_['text_tool_svg_security'] = 'SVG Security Sanitizer (Захист XSS/XXE)';
|
||||||
|
$_['help_tool_svg_security'] = 'Сканує SVG-векторні зображення в image/catalog/ на наявність небезпечного коду (скрипти, обробники подій, XXE entity, foreignObject, javascript: URI) та очищає їх.';
|
||||||
|
$_['text_description_svg_security'] = 'SVG Security Sanitizer перевіряє всі SVG-файли в каталозі на вразливості безпеки. Очищення видаляє шкідливі скрипти та ін\'єкції, зберігаючи графічне зображення.';
|
||||||
|
$_['text_svg_threats_found'] = 'Знайдено загрози безпеки: %d';
|
||||||
|
$_['text_svg_threat_xxe_entity'] = 'XXE Entity атака';
|
||||||
|
$_['text_svg_threat_script_tag'] = 'Тег скрипту (<script>)';
|
||||||
|
$_['text_svg_threat_event_handler'] = 'Обробник подій (on*)';
|
||||||
|
$_['text_svg_threat_javascript_uri']= 'JavaScript URI (javascript:)';
|
||||||
|
$_['text_svg_threat_foreign_object']= 'Чужорідний об\'єкт (<foreignObject>)';
|
||||||
|
$_['text_svg_threat_embed_object'] = 'Вкладений об\'єкт (<object>/<iframe>)';
|
||||||
|
$_['text_svg_threat_css_injection'] = 'CSS-ін\'єкція';
|
||||||
|
$_['text_svg_clean_success'] = 'Очищено та безпечно';
|
||||||
|
|
||||||
|
$_['text_tool_black_bg'] = 'Пошук чорного фону та Фейкових JPG';
|
||||||
|
$_['help_tool_black_bg'] = 'Знаходить PNG-зображення з розширенням .jpg (з автоімпортів) та фото з чорним фоном/рамками. Замінює чорний фон на білий (#FFFFFF).';
|
||||||
|
$_['text_description_black_bg'] = 'Інструмент шукає картинки товарів із чорним фоном чи некоректним розширенням після імпорту. Застосування перетворює фейкові JPG і замінює чорні рамки навколо товару білим фоном.';
|
||||||
|
$_['entry_bb_darkness'] = 'Поріг темряви пикселя (0-100)';
|
||||||
|
$_['entry_bb_threshold'] = '% чорних пікселів по краю';
|
||||||
|
$_['entry_bb_limit'] = 'Ліміт сканування (файлів)';
|
||||||
|
$_['entry_bb_scan_fake'] = 'Шукати Fake JPG (PNG у .jpg)';
|
||||||
|
$_['entry_bb_scan_black'] = 'Шукати чорний фон';
|
||||||
|
$_['text_bb_fake_jpg'] = 'Фейковий JPG (PNG всередині .jpg)';
|
||||||
|
$_['text_bb_black_bg'] = 'Виявлено чорний фон';
|
||||||
|
$_['text_bb_fix_flatten_white'] = 'Конвертувати у JPG (білий фон)';
|
||||||
|
$_['text_bb_fix_convert_png'] = 'Зберегти як PNG (прозорість)';
|
||||||
|
$_['text_bb_fix_white'] = 'Замінити чорний фон (GD: тільки краї)';
|
||||||
|
$_['text_bb_fix_white_all'] = 'Замінити ВСІ чорні пікселі (GD: агресивно)';
|
||||||
|
$_['text_bb_fix_white_smooth'] = 'Замінити ВСІ чорні пікселі (GD: Defringe + сгладжування)';
|
||||||
|
$_['text_bb_fix_white_imagick'] = 'Замінити чорний фон (Imagick: тільки краї)';
|
||||||
|
$_['text_bb_fix_white_all_imagick'] = 'Замінити ВСІ чорні пікселі (Imagick: Fuzzy Lab)';
|
||||||
|
$_['text_bb_fix_white_smooth_imagick'] = 'Замінити ВСІ чорні пікселі (Imagick: Defringe + сгладжування)';
|
||||||
|
$_['text_bb_type_fake'] = 'Помилка імпорту PNG';
|
||||||
|
$_['text_bb_type_black'] = 'Чорний фон';
|
||||||
|
|
||||||
|
$_['button_online_instruction'] = 'Інструкція до модуля (Онлайн)';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,569 @@
|
||||||
|
<?php
|
||||||
|
$_['heading_title_raw'] = 'Image Optimizer [NAT]: Стиснення оригіналів та видалення сміття';
|
||||||
|
$_['heading_title'] = '<b>Image Optimizer [NAT]:</b> Стиснення оригіналів та видалення сміття';
|
||||||
|
$_['text_extension'] = 'Розширення';
|
||||||
|
$_['text_edit'] = 'Налаштування модуля';
|
||||||
|
$_['text_success'] = 'Налаштування успішно збережено!';
|
||||||
|
$_['entry_warning'] = 'УВАГА: Обов`язково зробіть бекап файлів сайту і особливо папки /image/catalog перед початком роботи!';
|
||||||
|
$_['text_tech'] = 'Перевірка технологій сервера:';
|
||||||
|
$_['text_author'] = 'Технічна підтримка та побажання: <a href="mailto:info@nat.od.ua">info@nat.od.ua</a>';
|
||||||
|
$_['tab_optimize'] = 'Оптимізація та Ресайз';
|
||||||
|
$_['tab_cleaner'] = 'Очищення невикористовуваних зображень';
|
||||||
|
$_['tab_info'] = 'Інфо / Екосистема [NAT]';
|
||||||
|
$_['tab_settings'] = 'Налаштування';
|
||||||
|
$_['tab_tools'] = 'Інструменти (pro)';
|
||||||
|
$_['tab_cron'] = 'Крон-завдання';
|
||||||
|
$_['entry_mode'] = 'Режим роботи';
|
||||||
|
$_['text_copy'] = 'Створити копію (безпечно)';
|
||||||
|
$_['text_replace'] = 'Замінювати оригінали (потребує бекап!)';
|
||||||
|
$_['entry_folder'] = 'Ім`я папки для копії';
|
||||||
|
$_['entry_batch'] = 'Файлів за прохід';
|
||||||
|
$_['entry_log_limit'] = 'Рядків логу на екрані';
|
||||||
|
$_['entry_max_width'] = 'Макс. ширина (px) [0 - без ліміту]';
|
||||||
|
$_['entry_max_height'] = 'Макс. висота (px) [0 - без ліміту]';
|
||||||
|
$_['entry_jpg'] = 'Якість JPG (0-100)';
|
||||||
|
$_['entry_png'] = 'Стиснення PNG (0-9)';
|
||||||
|
$_['entry_webp'] = 'Якість WebP (0-100)';
|
||||||
|
$_['entry_targets'] = 'Що оптимізувати?';
|
||||||
|
$_['text_all_catalog'] = '[ Весь каталог image/catalog ]';
|
||||||
|
$_['text_root_files'] = 'Файли тільки в корені image/catalog';
|
||||||
|
$_['entry_threshold'] = 'Поріг заміни (%)';
|
||||||
|
$_['help_threshold'] = '0: замінювати тільки якщо вага стала меншою. 10: дозволити збільшення ваги до 10%.';
|
||||||
|
$_['entry_token'] = 'Токен активації (на корінь домену)';
|
||||||
|
$_['entry_status'] = 'Статус модуля';
|
||||||
|
$_['entry_menu_position'] = 'Позиція меню [NAT]';
|
||||||
|
$_['text_menu_module_only'] = 'Тільки в модулях';
|
||||||
|
$_['text_menu_header'] = 'У шапці (Header)';
|
||||||
|
$_['text_menu_sidebar'] = 'У бічному меню (Sidebar)';
|
||||||
|
$_['text_menu_both'] = 'Скрізь (Шапка + Сайдбар)';
|
||||||
|
$_['text_status_on'] = 'Увімкнено';
|
||||||
|
$_['text_status_off'] = 'Вимкнено';
|
||||||
|
$_['entry_engine'] = 'Рушій обробки зображень';
|
||||||
|
$_['text_engine_gd'] = 'GD (Стандарт)';
|
||||||
|
$_['text_engine_imagick'] = 'Imagick (Висока якість, збереження профілів sRGB)';
|
||||||
|
$_['entry_license'] = 'Ліцензія';
|
||||||
|
$_['text_cleaner_info'] = 'Цей інструмент шукає файли, які фізично існують на диску, але ніде не використовуються в базі даних або файлах шаблону.';
|
||||||
|
$_['entry_clean_targets'] = 'В яких папках шукати сміття?';
|
||||||
|
$_['entry_extended_log'] = 'Розширений лог (показати використовувані photo і де вони знайдені)';
|
||||||
|
$_['entry_process_broken'] = 'Враховувати файли з битим кодуванням (імена з символом "?")';
|
||||||
|
$_['button_scan_trash'] = 'ЗНАЙТИ СМІТТЯ';
|
||||||
|
$_['button_quarantine'] = 'В Карантин (Безпечно)';
|
||||||
|
$_['button_delete_trash'] = 'Видалити назавжди';
|
||||||
|
$_['button_empty_quarantine'] = 'Очистити папку Карантину';
|
||||||
|
$_['button_restore_quarantine'] = 'Повернути з Карантину';
|
||||||
|
$_['text_scan_result'] = 'Результати сканування';
|
||||||
|
$_['text_trash_files'] = 'Сміттєвих файлів: ';
|
||||||
|
$_['text_trash_size'] = 'Потенційно звільниться: ';
|
||||||
|
$_['button_start'] = 'СТАРТ ОПТИМІЗАЦІЇ';
|
||||||
|
$_['button_pause'] = 'ПАУЗА';
|
||||||
|
$_['button_stop'] = 'ЗУПИНИТИ';
|
||||||
|
$_['button_continue'] = 'ПРОДОВЖИТИ';
|
||||||
|
$_['button_start_new'] = 'СТАРТ (Новий запуск)';
|
||||||
|
$_['button_download_log'] = 'Завантажити лог в TXT';
|
||||||
|
$_['button_download'] = 'Завантажити';
|
||||||
|
$_['button_save'] = 'Зберегти';
|
||||||
|
$_['button_cancel'] = 'Скасувати';
|
||||||
|
$_['text_progress'] = 'Прогрес:';
|
||||||
|
$_['text_old_size'] = 'Було:';
|
||||||
|
$_['text_new_size'] = 'Стало:';
|
||||||
|
$_['text_savings'] = 'Економія:';
|
||||||
|
$_['text_detailed_log'] = 'Детальний лог';
|
||||||
|
$_['text_page'] = 'Стор.';
|
||||||
|
$_['text_waiting'] = 'Очікування запуску...';
|
||||||
|
$_['text_enabled'] = 'Увімкнено';
|
||||||
|
$_['text_disabled_error'] = 'Вимкнено (ПОМИЛКА)';
|
||||||
|
$_['text_supported'] = 'Підтримується';
|
||||||
|
$_['text_no'] = 'Ні';
|
||||||
|
$_['error_permission'] = 'У вас немає прав для керування модулем!';
|
||||||
|
$_['error_license'] = 'Помилка доступу: Невірний токен активації для цього домену!';
|
||||||
|
$_['error_domain'] = ' (Домен: ';
|
||||||
|
$_['text_found'] = 'Знайдено файлів: ';
|
||||||
|
$_['text_compressed'] = 'Стиснуто';
|
||||||
|
$_['text_original'] = 'Оригінал';
|
||||||
|
$_['text_error_process'] = 'Помилка обробки: ';
|
||||||
|
$_['error_log_empty'] = 'Лог порожній! Спочатку запустіть процес.';
|
||||||
|
$_['text_report_header'] = '=== ЗВІТ ===';
|
||||||
|
$_['text_total_files'] = 'Всього файлів: ';
|
||||||
|
$_['text_searching'] = 'Пошук файлів...';
|
||||||
|
$_['error_ajax'] = 'Помилка: ';
|
||||||
|
$_['text_resumed'] = '▶ ПРОЦЕС ВІДНОВЛЕНО...';
|
||||||
|
$_['text_paused'] = '⏸ ПАУЗА. Процес призупинено.';
|
||||||
|
$_['confirm_stop'] = 'Ви впевнені, що хочете повністю перервати процес?';
|
||||||
|
$_['confirm_delete'] = 'УВАГА! Файли будуть видалені з сервера назавжди без можливості відновлення! Продовжити?';
|
||||||
|
$_['confirm_empty_q'] = 'Ви впевнені, що хочете повністю очистити папку карантину?';
|
||||||
|
$_['confirm_restore'] = 'Всі файли з папки карантину будуть повернуті на свої місця. Продовжити?';
|
||||||
|
$_['button_stopping'] = 'Зупинка...';
|
||||||
|
$_['text_stopped_user'] = '🛑 ПРОЦЕС ПЕРЕРВАНО КОРИСТУВАЧЕМ!';
|
||||||
|
$_['text_increase'] = 'Збільшення';
|
||||||
|
$_['text_done'] = '✅ ГОТОВО! Процес завершено.';
|
||||||
|
$_['error_timeout'] = 'Таймаут сервера. Автоповтор через 3 секунди...';
|
||||||
|
$_['text_building_index'] = 'Крок 1/2: Індексація БД та шаблонів (пошук фото, що використовуються)...';
|
||||||
|
$_['text_comparing'] = 'Крок 2/2: Порівняння фізичних файлів з індексом...';
|
||||||
|
$_['text_quarantine_done'] = '✅ Процес перенесення в image/catalog_trash/ завершено!';
|
||||||
|
$_['text_deleted_done'] = '✅ Процес видалення сміття завершено!';
|
||||||
|
$_['text_quarantine_empty'] = '✅ Папку карантину успішно видалено з сервера!';
|
||||||
|
$_['text_restore_done'] = '✅ Файли успішно повернуто з карантину в робочу папку!';
|
||||||
|
$_['text_quarantine_move'] = 'В карантині: ';
|
||||||
|
$_['text_deleted_file'] = 'Видалено: ';
|
||||||
|
$_['text_no_trash'] = 'У вибраних папках сміття не знайдено! Всі файли використовуються.';
|
||||||
|
$_['text_scanning_dirs'] = 'Скануємо директорії: ';
|
||||||
|
$_['text_log_used'] = '[ВИКОРИСТОВУЄТЬСЯ]';
|
||||||
|
$_['text_log_trash'] = '[СМІТТЯ]';
|
||||||
|
$_['text_log_deleted'] = '[ВИДАЛЕНО]';
|
||||||
|
$_['text_log_del_err'] = '[ПОМИЛКА ВИДАЛЕННЯ]';
|
||||||
|
$_['text_log_quarantine'] = '[В КАРАНТИН]';
|
||||||
|
$_['text_log_q_err'] = '[ПОМИЛКА ПЕРЕНЕСЕННЯ]';
|
||||||
|
$_['text_log_restored'] = '[ВІДНОВЛЕНО]';
|
||||||
|
$_['text_log_rest_err'] = '[ПОМИЛКА ВІДНОВЛЕННЯ]';
|
||||||
|
$_['text_used_in'] = 'у: ';
|
||||||
|
$_['text_analyzing'] = 'Аналіз бази даних...';
|
||||||
|
$_['text_clean_empty'] = 'Чисто! Сміття немає.';
|
||||||
|
$_['text_processing'] = 'Обробка...';
|
||||||
|
$_['text_restoring'] = 'Відновлення файлів...';
|
||||||
|
$_['text_all_folders'] = 'image/catalog/ (Та всі вкладені)';
|
||||||
|
$_['text_root_folder'] = 'image/catalog/ (Тільки корінь)';
|
||||||
|
$_['text_q_empty_err'] = 'Папка карантину порожня або не існує.';
|
||||||
|
$_['error_token'] = 'Невірний токен. Перезавантажте сторінку.';
|
||||||
|
$_['text_apply_title'] = 'Оптимізацію завершено в папку: ';
|
||||||
|
$_['text_apply_info'] = 'Перевірте результат. Якщо все влаштовує — застосуйте зміни до основного каталогу.';
|
||||||
|
$_['entry_apply_backup'] = 'Перенести зі створенням бекапу (в Карантин)';
|
||||||
|
$_['entry_apply_replace'] = 'Замінити оригінали безповоротно';
|
||||||
|
$_['button_apply_main'] = 'ЗАСТОСУВАТИ ДО ОСНОВНОГО КАТАЛОГУ';
|
||||||
|
$_['button_delete_copies'] = 'Видалити тимчасові копії (скасування)';
|
||||||
|
$_['button_full_cleanup'] = 'Повне очищення всіх тимчасових папок та бекапів';
|
||||||
|
$_['text_apply_success'] = '✅ Файли успішно перенесено. ';
|
||||||
|
$_['text_apply_backup_ok'] = 'Оригінали збережено в папку: ';
|
||||||
|
$_['text_apply_no_backup'] = 'Оригінали видалено.';
|
||||||
|
$_['text_error_source'] = 'Помилка: Папку з оптимізованими файлами не знайдено.';
|
||||||
|
$_['confirm_full_cleanup'] = 'УВАГА! Ця дія безповоротно видалить УСІ папки бекапів (backup_*) та тимчасові папки з копіями. Продовжити?';
|
||||||
|
$_['text_tools_desc'] = 'Глобальні сканери та інструменти для роботи з файловою системою і БД зображень.';
|
||||||
|
$_['text_tool_select'] = 'Виберіть інструмент:';
|
||||||
|
$_['text_group_scanners'] = 'Сканери та Аналіз';
|
||||||
|
$_['text_group_generators'] = 'Генератори та Обробка';
|
||||||
|
$_['text_group_experimental'] = 'Експериментальні функції (BETA)';
|
||||||
|
$_['text_experimental_warn'] = 'Увага: Експериментальні функції зачіпають системні файли або базу даних. Настійно рекомендується зробити бекап!';
|
||||||
|
$_['text_tool_broken_db'] = 'Сканер битих/порожніх фото БД';
|
||||||
|
$_['text_tool_watermark'] = 'Динамічний Вотермарк (Тільки на кеш)';
|
||||||
|
$_['text_tool_duplicates'] = 'Поиск дубликатов файлов (за MD5)';
|
||||||
|
$_['text_tool_png_jpg'] = 'Конвертер важких PNG у JPG (сканер файлів без прозорості)';
|
||||||
|
$_['text_tool_placeholders'] = 'Генератор заглушок (Замість No Image)';
|
||||||
|
$_['text_tool_exif'] = 'Очищення EXIF-даних (Геотеги/Мета)';
|
||||||
|
$_['text_tool_small_photos'] = 'Сканер занадто дрібних фото';
|
||||||
|
$_['text_tool_html_broken'] = 'Пошук битих картинок в HTML (Описах)';
|
||||||
|
$_['text_tool_empty_folders'] = 'Очищення порожніх папок (image/catalog)';
|
||||||
|
$_['text_tool_smart_cache'] = 'Розумне очищення кешу зображень';
|
||||||
|
$_['text_tool_folder_tree'] = 'Дерево папок (Статистика ваги)';
|
||||||
|
$_['text_tool_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load (Без БД)';
|
||||||
|
$_['text_tool_translit'] = 'Транслітерація назв файлів';
|
||||||
|
$_['text_tool_cache_restore'] = 'Відновлення оригіналів із Кешу';
|
||||||
|
$_['entry_wm_type'] = 'Тип водяного знака';
|
||||||
|
$_['text_wm_image'] = 'Зображення (PNG)';
|
||||||
|
$_['text_wm_text'] = 'Текст';
|
||||||
|
$_['entry_wm_image_path'] = 'Шлях до зображення';
|
||||||
|
$_['entry_wm_text_val'] = 'Текст водяного знака';
|
||||||
|
$_['entry_wm_position'] = 'Позиція (1-9)';
|
||||||
|
$_['entry_wm_opacity'] = 'Прозорість (0-100)';
|
||||||
|
$_['entry_wm_category'] = 'Тільки для Категорій';
|
||||||
|
$_['entry_wm_brand'] = 'Тільки для Брендів';
|
||||||
|
$_['entry_min_width'] = 'Мінімальна ширина (px)';
|
||||||
|
$_['entry_min_height'] = 'Мінімальна висота (px)';
|
||||||
|
$_['entry_ph_product'] = 'Заглушка для Товарів';
|
||||||
|
$_['entry_ph_category'] = 'Заглушка для Категорій';
|
||||||
|
$_['entry_ph_brand'] = 'Заглушка для Брендів';
|
||||||
|
$_['button_run_tool'] = 'Запустити інструмент';
|
||||||
|
$_['button_scan_tool'] = 'Сканувати';
|
||||||
|
$_['button_fix_tool'] = 'Виправити знайдене';
|
||||||
|
$_['text_th_path'] = 'Файл / Шлях';
|
||||||
|
$_['text_th_size'] = 'Розмір';
|
||||||
|
$_['text_th_action'] = 'Дія';
|
||||||
|
$_['text_th_status'] = 'Статус';
|
||||||
|
$_['text_th_problem'] = 'Проблема / Значення';
|
||||||
|
$_['text_cron_title'] = 'Налаштування Cron';
|
||||||
|
$_['text_cron_desc'] = 'Додайте команду в Cron хостингу для автоматичного фонового стиснення.';
|
||||||
|
$_['entry_cron_new_only'] = 'Обробляти тільки нові (необроблені) файли';
|
||||||
|
$_['entry_cron_folders'] = 'Папки для сканування (залиште порожнім для всього каталогу)';
|
||||||
|
$_['text_promo_title'] = 'Інші модулі серії [NAT]';
|
||||||
|
$_['text_promo_desc'] = 'Модулі серії [NAT] – це інструменти для глибокої оптимізації OpenCart. Ми фокусуємося на автоматизації рутини, прискоренні бази даних та очищенні серверів від сміття. Усі модулі мають відкритий вихідний код та єдину логіку управління.';
|
||||||
|
$_['text_support'] = 'Технічна підтримка та побажання:';
|
||||||
|
$_['button_more'] = 'Дивитися всі модулі на OpenCart.com';
|
||||||
|
$_['button_more_forum'] = 'Opencartforum';
|
||||||
|
$_['text_mod_cat_opt'] = 'Catalog Optimizer [NAT]';
|
||||||
|
$_['text_mod_cat_opt_desc'] = 'Приховування порожніх категорій і брендів + SEO сортування товарів (у наявності зверху) + Очищення сміття БД.';
|
||||||
|
$_['text_mod_new_arrivals'] = 'New Arrivals [NAT]: Новинки за датами';
|
||||||
|
$_['text_mod_new_arrivals_desc'] = 'Автоматична SEO-сторінка новинок. Відображає новинки суворо за реальною датою додавання. Слайдери, сітка та розумний сайдбар архіву дат.';
|
||||||
|
$_['text_mod_img_opt'] = 'Image Optimizer [NAT]';
|
||||||
|
$_['text_mod_img_opt_desc'] = '<strong>Поточний модуль.</strong> Стиснення та ресайз ОРИГІНАЛІВ фото (image/catalog) у WebP + Очищення хостингу від невикористаних зображень.';
|
||||||
|
$_['text_mod_dom_scan'] = 'Domain Scanner [NAT]';
|
||||||
|
$_['text_mod_dom_scan_desc'] = 'Пошук і чищення зовнішніх посилань і HTTP-картинок у БД та файлах теми. Ідеально для HTTPS або очищення після парсингу.';
|
||||||
|
$_['text_mod_poll'] = 'Poll Widget [NAT]';
|
||||||
|
$_['text_mod_poll_desc'] = 'Створення опитувань та голосувань із візуальним конструктором дизайну, глибокою статистикою та захистом від накруток.';
|
||||||
|
$_['text_mod_db_opt'] = 'Database Optimizer [NAT]';
|
||||||
|
$_['text_mod_db_opt_desc'] = 'Інтелектуальне очищення сміття в базі даних, управління системними логами та додавання критично важливих індексів для прискорення.';
|
||||||
|
$_['text_mod_im_ex'] = 'Import/Export [NAT]';
|
||||||
|
$_['text_mod_im_ex_desc'] = 'Швидкий імпорт/експорт цін і залишків з файлів xls/xlsx/csv/xml/json або за посиланням. Маппінг полів, робота по Cron, текстові функції.';
|
||||||
|
$_['text_mod_admin_tools'] = 'Admin Tools [NAT]';
|
||||||
|
$_['text_mod_admin_tools_desc'] = 'Зручні інструменти адміністратора: вхід під клієнтом, кастомізація адмінки, управління правами користувачів та приховування непотрібних пунктів меню.';
|
||||||
|
$_['text_mod_utm_tracker'] = 'Order UTM Tracker [NAT]';
|
||||||
|
$_['text_mod_utm_tracker_desc'] = 'Автоматичне відстеження UTM-міток при оформленні замовлення. Зберігає джерело переходу, кампанію, ключові слова та виводить ці дані в замовленні для аналітики реклами.';
|
||||||
|
$_['text_info_title_promo_top_bar'] = 'Promo Top Bar [NAT]: Верхній рекламний інфо-баннер, інформаційна смуга над шапкою, рухомий рядок та топ-баннер';
|
||||||
|
$_['text_info_desc_promo_top_bar'] = 'Створення інтерактивних промо-панелей та слайд-шоу в шапці сайту з конструктором блоків, таймерами, формою підписки та гнучким націлюванням.';
|
||||||
|
$_['text_tool_no_image'] = 'Товари без головного фото (порожньо в БД)';
|
||||||
|
$_['text_problem_main_broken'] = 'Бите головне фото (файл видалено)';
|
||||||
|
$_['text_problem_add_broken'] = 'Бите дод. фото (файл видалено)';
|
||||||
|
$_['text_problem_no_image'] = 'Відсутнє головне фото';
|
||||||
|
$_['text_err_dir'] = 'Помилка: Директорію не знайдено або невірний шлях.';
|
||||||
|
$_['text_err_no_queue'] = 'Помилка: Чергу не знайдено. Спочатку запустіть сканування.';
|
||||||
|
$_['text_log_del_empty_folder'] = 'Видалено порожню папку: ';
|
||||||
|
$_['text_log_no_empty_folders'] = 'Порожніх папок в image/catalog/ не знайдено.';
|
||||||
|
$_['text_log_total_empty_folders'] = 'Всього видалено порожніх папок: ';
|
||||||
|
$_['text_log_cache_cleared'] = 'Кеш зображень успішно очищено.';
|
||||||
|
$_['text_log_wm_smart_mode'] = 'Вотермарки працюють в SMART-режимі: оригінали не зачіпаються, логотип накладається лише при генерації кешу.';
|
||||||
|
$_['text_log_scan_dupes'] = 'Сканування image/catalog/ на дублікати (за хешем MD5)... Це може зайняти час.';
|
||||||
|
$_['text_log_found_dupe'] = 'Знайдено дублікат: ';
|
||||||
|
$_['text_log_no_dupes'] = 'Дублікатів не знайдено.';
|
||||||
|
$_['text_log_total_dupes'] = 'Знайдено дублікатів: %s. Потенційна економія: %s';
|
||||||
|
$_['text_log_fix_dupes_prompt'] = 'Натисніть "Виправити знайдене" для перелінкування БД на оригинал та видалення дублів.';
|
||||||
|
$_['text_log_fixed_dupe'] = 'Виправлено та видалено дублікат: ';
|
||||||
|
$_['text_log_success_dupes'] = 'Успішно виправлено дублікатів: %s. Посилання в БД оновлено.';
|
||||||
|
$_['text_log_scan_png'] = 'Пошук важких PNG файлів без прозорості...';
|
||||||
|
$_['text_log_no_png'] = 'Відповідних PNG файлів не знайдено.';
|
||||||
|
$_['text_log_total_png'] = 'Знайдено PNG без прозорості: %s. Натисніть "Виправити" для конвертації в JPG.';
|
||||||
|
$_['text_log_converted_jpg'] = 'Сконвертовано в JPG: ';
|
||||||
|
$_['text_log_success_png'] = 'Успішно сконвертовано %s файлів. Звільнено: %s';
|
||||||
|
$_['text_log_ph_prod'] = 'Оновлено товарів заглушкою: ';
|
||||||
|
$_['text_log_ph_cat'] = 'Оновлено категорій заглушкою: ';
|
||||||
|
$_['text_log_ph_brand'] = 'Оновлено брендів заглушкою: ';
|
||||||
|
$_['text_log_ph_empty'] = 'Заглушки не вибрані в налаштуваннях.';
|
||||||
|
$_['text_log_scan_exif'] = 'Сканування EXIF-даних (мета-теги камер)...';
|
||||||
|
$_['text_log_stripped_exif'] = 'Очищено EXIF: ';
|
||||||
|
$_['text_log_no_exif'] = 'Файлів з EXIF для очищення не знайдено.';
|
||||||
|
$_['text_log_success_exif'] = 'Очищено EXIF у %s файлів. Звільнено: %s';
|
||||||
|
$_['text_log_scan_small'] = 'Пошук фото розміром менше %sx%s px...';
|
||||||
|
$_['text_log_too_small'] = 'Занадто мале (%sx%s): ';
|
||||||
|
$_['text_log_no_small'] = 'Дрібних фото не знайдено.';
|
||||||
|
$_['text_log_total_small'] = 'Знайдено дрібних фото: %s. Будь ласка, замініть їх на якісні.';
|
||||||
|
$_['text_log_html_broken'] = 'Битией IMG в HTML таблиці %s (ID: %s): ';
|
||||||
|
$_['text_log_no_html_broken'] = 'Битих картинок в HTML-описах не знайдено.';
|
||||||
|
$_['text_log_total_html_broken'] = 'Знайдено битих посилань в HTML: %s. Виправте їх вручну.';
|
||||||
|
$_['text_log_scan_smart_cache'] = 'Пошук втрачених файлів у image/cache/...';
|
||||||
|
$_['text_log_del_orph_cache'] = 'Видалено втрачений кеш: ';
|
||||||
|
$_['text_log_no_orph_cache'] = 'Втраченого кешу не знайдено.';
|
||||||
|
$_['text_log_success_smart_cache'] = 'Видалено файлів втраченого кешу: %s. Звільнено: %s';
|
||||||
|
$_['text_log_scan_translit'] = 'Пошук файлів з кирилицею або пробілами...';
|
||||||
|
$_['text_log_no_bad_names'] = 'Файлів з некоректними іменами не знайдено.';
|
||||||
|
$_['text_log_total_bad_names'] = 'Знайдено файлів з кирилицею/пробілами: %s. Натисніть "Виправити" для транслітерації та оновлення БД.';
|
||||||
|
$_['text_log_renamed'] = 'Перейменовано: ';
|
||||||
|
$_['text_log_success_translit'] = 'Успішно транслітеровано файлів: %s. БД оновлено.';
|
||||||
|
$_['text_log_scan_restore'] = 'Сканирование image/cache/ для відновлення втрачених оригіналів...';
|
||||||
|
$_['text_log_restored_cache'] = 'Відновлено з кешу: ';
|
||||||
|
$_['text_log_no_lost_orig'] = 'Відсутніх оригіналів у кеші не знайдено.';
|
||||||
|
$_['text_log_success_restore'] = 'Успішно відновлено оригіналів з кешу: %s.';
|
||||||
|
$_['error_invalid_folder'] = 'Помилка: Неприпустиме ім\'я папки!';
|
||||||
|
$_['text_formats_title'] = 'Сучасні формати (WebP & SVG)';
|
||||||
|
$_['text_formats_desc'] = 'Налаштування інтеграції сучасних форматів у файлову систему та шаблони OpenCart.';
|
||||||
|
$_['entry_support_svg'] = 'Підтримка завантаження SVG';
|
||||||
|
$_['help_support_svg'] = 'Дозволяє завантаження векторних SVG-зображень через стандартний Filemanager та їх безпечне виведення на вітрині без спотворення розмірів.';
|
||||||
|
$_['entry_support_webp'] = 'Підтримка завантаження WebP';
|
||||||
|
$_['help_support_webp'] = 'Дозволяє вручну завантажувати, підв\'язувати та виводити на сайті готові файли .webp через Filemanager.';
|
||||||
|
$_['entry_truefilemanager_webp'] = 'WebP у TrueFileManager';
|
||||||
|
$_['help_truefilemanager_webp'] = 'Додає підтримку завантаження, попереднього перегляду та ескізів WebP у TrueFileManager від sitecreator (якщо його встановлено).';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Надшвидка підміна: автоматично змінює розширення .jpg/.png на .webp прямо в HTML-виводі вітрини та додає атрибут loading="lazy". Не чіпає базу даних!';
|
||||||
|
$_['help_tool_broken_db'] = 'Шукає в базі даних зображення, фізичні файли яких були видалені з сервера. Дозволяє очистити биті посилання.';
|
||||||
|
$_['help_tool_empty_folders'] = 'Рекурсивно сканує директорію image/catalog/ та безпечно видаляє всі папки, в яких немає жодного файлу.';
|
||||||
|
$_['help_tool_folder_tree'] = 'Будує дерево каталогів та показує реальну вагу кожної папки для пошуку "пожирачів" місця.';
|
||||||
|
$_['help_tool_html_broken'] = 'Сканує HTML-описи товарів та категорій на наявність тегів <img> з неіснуючими зображеннями.';
|
||||||
|
$_['help_tool_small_photos'] = 'Знаходить зображення з роздільною здатністю нижче заданої. Додано посилання на пошук якісних аналогів у Google Images та Яндекс Зображеннях.';
|
||||||
|
$_['help_tool_duplicates'] = 'Шукає повні дублікати файлів за MD5-хешем (різні назви, але однакова картинка). Дозволяє склеїти їх в один файл та оновити БД.';
|
||||||
|
$_['help_tool_watermark'] = 'Накладення водяних знаків у SMART-режимі (тільки на кеш вітрини, оригінали не змінюються).';
|
||||||
|
$_['help_tool_placeholders'] = 'Масово встановлює вибране зображення-заглушку для товарів та категорій, у яких взагалі немає фото.';
|
||||||
|
$_['help_tool_png_jpg'] = 'Інструмент сканує папку зображень і знаходить важкі PNG-файли, які не мають прозорого фону (альфа-каналу). Оскільки прозорість їм не потрібна, їх можна безпечно конвертувати у формат JPG. Це значно полегшує файли (в середньому на 70-80%) та прискорює завантаження сайту, а всі посилання в базі даних автоматично оновлюються.';
|
||||||
|
$_['help_tool_exif'] = 'Сканує EXIF-дані та видаляє з них приховані теги, зменшуючи вагу на 10-15%.';
|
||||||
|
$_['help_tool_smart_cache'] = 'Шукає в папці image/cache/ кешовані файли, оригінали яких уже видалені, та очищає неактуальний кеш.';
|
||||||
|
$_['help_tool_translit'] = 'Знаходить файли з кирилицею або пробілами, перейменовує їх транслітом та оновлює шляхи в БД.';
|
||||||
|
$_['help_tool_cache_restore'] = 'Якщо ви випадково видалили оригінал з catalog, інструмент спробує знайти його копію в cache та відновити назад.';
|
||||||
|
$_['entry_quarantine'] = 'Перемістити оригінали в Карантин (замість видалення)';
|
||||||
|
$_['entry_backup_db'] = 'Створити бекап змінюваних таблиць у SQL перед запуском';
|
||||||
|
$_['button_fix_selected'] = 'ВИПРАВИТИ ВИБРАНІ';
|
||||||
|
$_['button_export_log'] = 'Експортувати в CSV';
|
||||||
|
$_['text_th_before'] = 'Стан ДО';
|
||||||
|
$_['text_th_after'] = 'Очікуваний результат ПІСЛЯ';
|
||||||
|
$_['text_th_select'] = 'Дія';
|
||||||
|
$_['text_th_preview'] = 'Передперегляд';
|
||||||
|
$_['text_th_name'] = 'Об`єкт / Файл';
|
||||||
|
$_['text_global_action'] = 'Групова дія для вибраних:';
|
||||||
|
$_['text_action_clear'] = 'Очистити посилання в БД';
|
||||||
|
$_['text_action_disable'] = 'Вимкнути (Статус = 0)';
|
||||||
|
$_['text_action_stock'] = 'Установити "Немає в наявності"';
|
||||||
|
$_['text_action_placeholder'] = 'Встановити заглушку';
|
||||||
|
$_['text_action_ignore'] = 'Нічого не робити';
|
||||||
|
$_['text_action_merge'] = 'Склеїти (видалити дублікат, залишити оригінал)';
|
||||||
|
$_['text_action_convert'] = 'Конвертувати в JPG';
|
||||||
|
$_['text_action_rename'] = 'Перейменувати транслітом';
|
||||||
|
$_['text_action_delete'] = 'Видалити';
|
||||||
|
$_['text_action_restore'] = 'Відновити';
|
||||||
|
$_['text_db_backup_created'] = 'Створено бекап БД: %s';
|
||||||
|
$_['text_quarantine_created'] = 'Перенесено в карантин: %s';
|
||||||
|
$_['text_fix_status_success'] = 'Успішно виконано';
|
||||||
|
$_['text_fix_status_error'] = 'Помилка: %s';
|
||||||
|
$_['text_log_exported'] = 'Лог успішно експортовано!';
|
||||||
|
$_['text_select_action'] = '-- Виберіть дію --';
|
||||||
|
$_['error_empty_selection'] = 'Помилка: Не вибрано жодного рядка для виправлення!';
|
||||||
|
$_['text_link_admin'] = 'Адмінка';
|
||||||
|
$_['text_link_catalog'] = 'Вітрина';
|
||||||
|
$_['entry_threads'] = 'Потоків обробки';
|
||||||
|
$_['text_threads_optimal'] = 'оптимально';
|
||||||
|
$_['button_download_zip'] = 'Завантажити ZIP-архів та видалити папку';
|
||||||
|
$_['confirm_download_and_delete'] = 'Архів успішно завантажився? Можна видалити тимчасову папку копій на сервері?';
|
||||||
|
$_['button_clear_backups'] = 'Видалити бекапи БД';
|
||||||
|
$_['button_clear_backups_short'] = 'Очистити бекапи';
|
||||||
|
$_['confirm_clear_backups'] = 'Ви впевнені, що хочете повністю видалити всі SQL-бекапи таблиць?';
|
||||||
|
$_['text_compare_title'] = 'Порівняння зображень ДО / ПІСЛЯ';
|
||||||
|
$_['text_compare_before'] = 'ДО';
|
||||||
|
$_['text_compare_after'] = 'ПІСЛЯ';
|
||||||
|
$_['text_backups_cleared'] = 'Усі SQL-бекапи таблиць успішно видалені!';
|
||||||
|
$_['error_no_backups'] = 'Бекапи не знайдені або папка порожня.';
|
||||||
|
$_['button_restore'] = 'Повернути';
|
||||||
|
$_['button_empty'] = 'Очистити';
|
||||||
|
$_['entry_wm_targets'] = 'Застосовувати водяний знак до:';
|
||||||
|
$_['text_wm_target_product'] = 'Фото товарів';
|
||||||
|
$_['text_wm_target_category'] = 'Фото категорій';
|
||||||
|
$_['text_wm_target_brand'] = 'Логотипи брендів';
|
||||||
|
$_['text_wm_target_banner'] = 'Банери та слайди';
|
||||||
|
$_['text_wm_target_blog'] = 'Статті / Блог';
|
||||||
|
$_['error_no_scan_data'] = 'Помилка: Дані сканування не знайдені. Спочатку запустіть сканування!';
|
||||||
|
$_['error_row_not_found'] = 'Помилка: Об`єкт не знайдено в результатах сканування!';
|
||||||
|
$_['error_file_not_found'] = 'Помилка: Файл не знайдено на сервері!';
|
||||||
|
$_['text_folder_rules_title'] = 'Індивідуальні правила стиснення для папок';
|
||||||
|
$_['text_folder_rules_desc'] = 'Ви можете перевизначити якість та максимальні розміри для конкретних папок. Якщо залишити поле порожнім, використовуватиметься глобальне налаштування. Шлях вказується відносно папки image (наприклад, catalog/banners/).';
|
||||||
|
$_['entry_folder_path'] = 'Шлях до папки';
|
||||||
|
$_['entry_jpg_quality'] = 'Якість JPG';
|
||||||
|
$_['entry_webp_quality'] = 'Якість WebP';
|
||||||
|
$_['button_add_rule'] = 'Додати правило';
|
||||||
|
$_['button_remove'] = 'Вилучити';
|
||||||
|
$_['entry_wm_angle'] = 'Кут нахилу водяного знака (градуси)';
|
||||||
|
$_['entry_wm_corner_radius'] = 'Закруглення кутів водяного знака (px)';
|
||||||
|
$_['entry_wm_size_type'] = 'Масштабування водяного знака';
|
||||||
|
$_['entry_wm_size_percent'] = 'Розмір водяного знака (% від ширини зображення)';
|
||||||
|
$_['entry_wm_text_color'] = 'Колір тексту водяного знака';
|
||||||
|
$_['entry_wm_text_font'] = 'Шрифт водяного знака (TTF)';
|
||||||
|
$_['entry_wm_filter_mode'] = 'Режим фільтрації Категорій/Брендів';
|
||||||
|
$_['text_wm_filter_include'] = 'Тільки для вибраних';
|
||||||
|
$_['text_wm_filter_exclude'] = 'Для всіх, крім вибраних';
|
||||||
|
$_['text_wm_size_original'] = 'Оригінальний розмір';
|
||||||
|
$_['text_wm_size_percent'] = 'Пропорційно ширині зображення (%)';
|
||||||
|
$_['button_preview_watermark'] = 'Попередній перегляд';
|
||||||
|
$_['text_wm_preview_title'] = 'Попередній перегляд водяного знака';
|
||||||
|
$_['text_cron_exclude_folders'] = 'Виключити папки зі сканування';
|
||||||
|
$_['text_cron_entities'] = 'Які типи фото обробляти?';
|
||||||
|
$_['text_cron_quality_override'] = 'Перевизначити параметри стиснення для Крона';
|
||||||
|
$_['text_cron_recommendations'] = 'Рекомендації щодо розкладу Cron';
|
||||||
|
$_['text_cron_recommendations_desc'] = '<ul><li><b>Для невеликих сайтів (до 5000 товарів)</b> рекомендується запускати Крон кожну годину (<code>0 * * * *</code>).</li><li><b>Для середніх сайтів (5000-20000 товарів)</b> рекомендується запускати раз на 3-6 годин (<code>0 */6 * * *</code>).</li><li><b>Для великих сайтів (понад 20000 товарів)</b> — один раз на добу вночі (наприклад, о 2:00: <code>0 2 * * *</code>).</li></ul>';
|
||||||
|
$_['text_tool_broken_files'] = 'Сканер битих/порожніх файлів на сервері';
|
||||||
|
$_['help_tool_broken_files'] = 'Сканує фізичні файли в папці image/catalog/ на наявність пошкоджених зображень або порожніх файлів розміром 0 байт.';
|
||||||
|
$_['text_grid_broken_file'] = 'Битий або порожній файл на сервері';
|
||||||
|
$_['text_grid_broken_file_after'] = 'Вилучення або заміна заглушкою';
|
||||||
|
$_['text_description_broken_files'] = 'Результати сканування фізичних файлів у папці image/catalog/. Тут відображаються биті (пошкоджені) зображення або файли розміром 0 байт.';
|
||||||
|
$_['text_action_strip'] = 'Очистити EXIF';
|
||||||
|
$_['text_action_set_placeholder'] = 'Встановити заглушку';
|
||||||
|
$_['text_th_entity'] = 'Об`єкт / Пов`язані посилання';
|
||||||
|
$_['text_cron_entity_product'] = 'Товари';
|
||||||
|
$_['text_cron_entity_category'] = 'Категорії';
|
||||||
|
$_['text_cron_entity_manufacturer'] = 'Виробники / Бренди';
|
||||||
|
$_['text_cron_entity_banner'] = 'Банери';
|
||||||
|
$_['text_cron_entity_blog'] = 'Блог / Статті';
|
||||||
|
$_['entry_cron_jpg_quality'] = 'Якість JPG (Крон)';
|
||||||
|
$_['entry_cron_webp_quality'] = 'Якість WebP (Крон)';
|
||||||
|
$_['entry_cron_max_width'] = 'Макс. ширина px (Крон)';
|
||||||
|
$_['entry_cron_max_height'] = 'Макс. висота px (Крон)';
|
||||||
|
$_['text_cron_folder_scan'] = 'Папки для сканування';
|
||||||
|
$_['text_no_fonts'] = 'TTF-шрифти не знайдено в system/library/font/';
|
||||||
|
$_['button_apply'] = 'Застосувати';
|
||||||
|
$_['text_backup_will_be_created'] = 'Резервна копія бази даних буде автоматично створена перед виконанням цієї дії.';
|
||||||
|
$_['text_bulk_action'] = 'Групова дія для вибраних';
|
||||||
|
$_['text_grid_results'] = 'Результати та деталі сканування';
|
||||||
|
$_['text_quarantine_will_be_created'] = 'Оригінальні файли будуть переміщені в карантин (image/catalog_trash/) перед зміною.';
|
||||||
|
$_['text_success_apply'] = 'Зміни успішно застосовані!';
|
||||||
|
$_['text_description_broken'] = 'Результати сканування бази даних на наявність битих посилань (записи в таблицях з неіснуючими файлами).';
|
||||||
|
$_['text_description_cache_restore'] = 'Результати пошуку файлів у кеші, оригінали яких відсутні в каталозі.';
|
||||||
|
$_['text_description_duplicates'] = 'Результати пошуку повних дублікатів зображень за MD5-хешем.';
|
||||||
|
$_['text_description_empty_folders'] = 'Список порожніх папок в директорії image/catalog/ для видалення.';
|
||||||
|
$_['text_description_exif'] = 'Результати пошуку зображень з метаданими EXIF, які можна очистити.';
|
||||||
|
$_['text_description_folder_tree'] = 'Статистика розміру папок у каталозі image/catalog/.';
|
||||||
|
$_['text_description_html_broken'] = 'Результати пошуку неіснуючих файлів картинок, на які посилаються описи в HTML.';
|
||||||
|
$_['text_description_placeholders'] = 'Результати пошуку сутностей без зображень для заповнення заглушками.';
|
||||||
|
$_['text_description_png_jpg'] = 'Результати пошуку важких зображень PNG без прозорості, які можна перетиснути в JPG.';
|
||||||
|
$_['text_description_small_photos'] = 'Список зображень, розміри яких менше мінімально заданих (%sx%s px).';
|
||||||
|
$_['text_description_smart_cache'] = 'Результати пошуку файлів кешу, оригінали яких уже було видалено.';
|
||||||
|
$_['text_description_translit'] = 'Результати пошуку файлів з кирилицею або пробілами в назвах.';
|
||||||
|
$_['text_grid_broken_db_after'] = 'Очистити посилання або встановити заглушку';
|
||||||
|
$_['text_grid_dupe_after'] = 'Оригінал (залишається)';
|
||||||
|
$_['text_grid_dupe_before'] = 'Дублікат (буде видалено)';
|
||||||
|
$_['text_grid_empty_folder'] = 'Порожня папка';
|
||||||
|
$_['text_grid_empty_folder_after'] = 'Вилучити порожню папку';
|
||||||
|
$_['text_grid_exif_after'] = 'Очистити метадані';
|
||||||
|
$_['text_grid_exif_before'] = 'Містить EXIF';
|
||||||
|
$_['text_grid_html_after'] = 'Виправити посилання вручну';
|
||||||
|
$_['text_grid_missing_file'] = 'Файл відсутній';
|
||||||
|
$_['text_grid_missing_html'] = 'Картинка не знайдена в описі';
|
||||||
|
$_['text_grid_missing_orig'] = 'Оригінал відсутній';
|
||||||
|
$_['text_grid_missing_orig_after'] = 'Відновити оригінал з кешу';
|
||||||
|
$_['text_grid_no_image'] = 'Немає зображення (порожньо)';
|
||||||
|
$_['text_grid_orph_cache'] = 'Осиротілий кеш';
|
||||||
|
$_['text_grid_orph_cache_after'] = 'Видалити непотрібний кеш';
|
||||||
|
$_['text_grid_ph_brand_after'] = 'Встановити заглушку бренду';
|
||||||
|
$_['text_grid_ph_category_after'] = 'Встановити заглушку категорії';
|
||||||
|
$_['text_grid_ph_product_after'] = 'Встановити заглушку товару';
|
||||||
|
$_['text_grid_small_photo_after'] = 'Рекомендується замінити на більше';
|
||||||
|
$_['text_grid_too_small'] = 'Занадто мале';
|
||||||
|
$_['text_no_relations'] = 'Немає зв’язків у БД';
|
||||||
|
$_['text_action_archive'] = 'Архівувати (в ZIP)';
|
||||||
|
$_['text_action_archive_delete'] = 'Архівувати + Видалити';
|
||||||
|
$_['text_tool_sanitizer'] = 'Санитайзер імен файлів';
|
||||||
|
$_['help_tool_sanitizer'] = 'Масове очищення імен файлів і папок від кирилиці, пробілів та спецсимволів, приведення розширень до єдиного вигляду.';
|
||||||
|
$_['text_description_sanitizer'] = 'Результати аналізу імен файлів для санітаризації за вибраними правилами.';
|
||||||
|
$_['entry_sz_translit'] = 'Транслітерація (кирилиця в латиницю)';
|
||||||
|
$_['entry_sz_spaces'] = 'Замінювати пробіли на символ "_"';
|
||||||
|
$_['entry_sz_special'] = 'Видаляти спеціальні символи';
|
||||||
|
$_['entry_sz_lowercase_name'] = 'Ім`я файлу в нижній регістр';
|
||||||
|
$_['entry_sz_lowercase_ext'] = 'Розширення в нижній регістр';
|
||||||
|
$_['entry_sz_normalize_ext'] = 'Нормалізувати розширення (jpeg -> jpg)';
|
||||||
|
$_['entry_cron_folder_mode'] = 'Режим фільтрації папок';
|
||||||
|
$_['text_cron_folder_mode_exclude'] = 'Сканувати все, крім вибраних (Винятки)';
|
||||||
|
$_['text_cron_folder_mode_include'] = 'Сканирувати тільки вибрані папки';
|
||||||
|
$_['button_select_all'] = 'Вибрати всі';
|
||||||
|
$_['button_deselect_all'] = 'Зняти всі';
|
||||||
|
$_['entry_wm_upload_font'] = 'Завантажити свій шрифт TTF';
|
||||||
|
$_['button_upload_font'] = 'Завантажити шрифт';
|
||||||
|
$_['text_success_font_upload'] = 'Шрифт успішно завантажено!';
|
||||||
|
$_['error_font_upload'] = 'Помилка завантаження шрифту! Дозволені тільки файли .ttf вагою до 5 МБ.';
|
||||||
|
$_['entry_lazy_load'] = 'Прогресивне лениве завантаження';
|
||||||
|
$_['help_lazy_load'] = 'Вмикає преміальне прогресивне відкладене завантаження на вітрині. Зображення замінюються на мікро-прев\'ю та плавно розмиваються (blur-up), підвантажуючись у міру прокручування.';
|
||||||
|
$_['confirm_replace_mode'] = 'УВАГА! Ви обрали режим «Замінювати оригінали». Усі зображення будуть перезаписані безпосередньо на сервері. Наполегливо рекомендуємо зробити резервну копію. Ви впевнені, що хочете продовжити?';
|
||||||
|
$_['text_compare'] = 'Порівняти';
|
||||||
|
$_['text_home'] = 'Головна';
|
||||||
|
$_['text_tech_gd'] = 'Бібліотека GD';
|
||||||
|
$_['text_tech_imagick'] = 'Imagick';
|
||||||
|
$_['text_tech_webp'] = 'Підтримка WebP';
|
||||||
|
$_['text_position_1'] = '1 - Зліва вгорі';
|
||||||
|
$_['text_position_2'] = '2 - По центру вгорі';
|
||||||
|
$_['text_position_3'] = '3 - Справа вгорі';
|
||||||
|
$_['text_position_4'] = '4 - Зліва посередині';
|
||||||
|
$_['text_position_5'] = '5 - По центру';
|
||||||
|
$_['text_position_6'] = '6 - Справа посередині';
|
||||||
|
$_['text_position_7'] = '7 - Зліва внизу';
|
||||||
|
$_['text_position_8'] = '8 - По центру внизу';
|
||||||
|
$_['text_position_9'] = '9 - Справа внизу';
|
||||||
|
|
||||||
|
$_['entry_log_level'] = 'Рівень логу';
|
||||||
|
$_['text_log_changed_only'] = 'Тільки змінені';
|
||||||
|
$_['text_log_all'] = 'Всі файли (детально)';
|
||||||
|
$_['text_skipped_no_gain'] = 'Пропущено (без покращення)';
|
||||||
|
$_['text_reset_cache_hint'] = 'Скинути кеш оптимізації (повне пересканування)';
|
||||||
|
$_['confirm_reset_cache'] = 'Скинути кеш оптимізації? Наступне сканування перевірить ВСІ файли знову.';
|
||||||
|
$_['text_cache_cleared'] = 'Кеш оптимізації очищено. Наступне сканування перевірить всі файли.';
|
||||||
|
$_['error_wm_preview'] = 'Помилка генерації прев\'ю водяного знаку.';
|
||||||
|
$_['error_wm_too_large'] = 'Зображення водяного знаку занадто велике (%dx%d px)! Максимально допустимий розмір: %dx%d px.';
|
||||||
|
$_['text_apply_errors_warning'] = 'УВАГА: Деякі файли не вдалося замінити (заблоковані або немає прав):';
|
||||||
|
$_['text_action_compress'] = 'Стиснути зображення';
|
||||||
|
$_['text_estimated'] = 'Прогноз';
|
||||||
|
$_['entry_min_savings_bytes'] = 'Мін. стиснення (байт)';
|
||||||
|
$_['entry_min_savings_percent'] = 'Мін. стиснення (%)';
|
||||||
|
$_['text_optimized'] = 'Оптимізовано';
|
||||||
|
$_['entry_broken_fallback'] = 'Заглушка для битих фото';
|
||||||
|
$_['help_broken_fallback'] = 'Автоматично замінює відсутні або пошкоджені зображення каталогу на вітрині на зображення-заглушку.';
|
||||||
|
$_['entry_fallback_image'] = 'Зображення-заглушка';
|
||||||
|
$_['help_fallback_image'] = 'Виберіть зображення, яке буде показано, якщо оригінальний файл картинки товару чи категорії відсутній. За замовчуванням використовується no_image.png.';
|
||||||
|
$_['text_tool_cmyk'] = 'Конвертер CMYK в RGB';
|
||||||
|
$_['help_tool_cmyk'] = 'Конвертація JPEG зображень з колірного профілю CMYK в sRGB для коректного відображення в браузерах Safari та на пристроях iOS.';
|
||||||
|
$_['text_tool_heavy_files'] = 'Пошук важких файлів';
|
||||||
|
$_['help_tool_heavy_files'] = 'Пошук найважчих оригінальних зображень у каталозі з можливістю їх швидкого стиснення безпосередньо тут.';
|
||||||
|
$_['entry_heavy_files_limit'] = 'Макс. кількість знайдених файлів (всього)';
|
||||||
|
$_['text_action_convert_rgb'] = 'Конвертувати в RGB';
|
||||||
|
$_['text_description_cmyk'] = 'Знайдено файли в колірному просторі CMYK. Конвертація в sRGB гарантує колірне відображення на всіх платформах, включаючи iOS/macOS.';
|
||||||
|
$_['text_description_heavy'] = 'Список із %d найважчих файлів у каталозі зображень. Ви можете оптимізувати їх безпосередньо тут.';
|
||||||
|
$_['text_cron_folder_hint_exclude_all'] = 'Статус: Скануватимуться всі папки (винятки не обрані).';
|
||||||
|
$_['text_cron_folder_hint_exclude_some'] = 'Статус: Скануватимуться всі папки, ОКРІМ %d позначених.';
|
||||||
|
$_['text_cron_folder_hint_include_some'] = 'Статус: Скануватимуться тільки %d позначених папок.';
|
||||||
|
$_['text_cron_folder_hint_include_none'] = 'УВАГА: Жодної папки не обрано! Крон нічого не буде сканувати.';
|
||||||
|
$_['text_action_apply_changes'] = 'Застосувати вказані зміни';
|
||||||
|
$_['entry_wm_status'] = 'Статус водяного знака';
|
||||||
|
$_['text_disabled'] = 'Відключено';
|
||||||
|
$_['entry_rule_name'] = 'Назва правила';
|
||||||
|
$_['entry_rule_status'] = 'Статус правила';
|
||||||
|
$_['entry_action'] = 'Дія';
|
||||||
|
$_['entry_ph_status'] = 'Статус заглушок';
|
||||||
|
$_['entry_sanitizer_limit'] = 'Макс. файлів для пошуку (ліміт)';
|
||||||
|
$_['entry_heavy_files_min_size'] = 'Мінимальний розмір';
|
||||||
|
$_['entry_png_jpg_limit'] = 'Макс. файлів для пошуку (ліміт)';
|
||||||
|
$_['entry_png_jpg_min_size'] = 'Мінімальний розмір';
|
||||||
|
$_['text_wm_rule_title'] = 'Правило водяного знака';
|
||||||
|
$_['button_close'] = 'Закрити';
|
||||||
|
$_['text_ph_rule_title'] = 'Правило заглушки';
|
||||||
|
$_['entry_ph_image'] = 'Зображення заглушки';
|
||||||
|
$_['button_clear_cache_wm'] = 'Очистити кеш (застосувати водяний знак)';
|
||||||
|
$_['text_active'] = 'Активна';
|
||||||
|
$_['text_error'] = 'Не активна';
|
||||||
|
$_['text_th_dupe_delete'] = 'Файл для видалення (Дублікат)';
|
||||||
|
$_['text_th_dupe_keep'] = 'Файл для збереження (Оригінал)';
|
||||||
|
$_['text_dupe_original_label'] = 'Оригінал';
|
||||||
|
$_['text_dupe_duplicate_label'] = 'Дублікат';
|
||||||
|
|
||||||
|
$_['text_disk_usage'] = 'Використання диска';
|
||||||
|
$_['text_cumulative_stats'] = 'Статистика оптимізації';
|
||||||
|
$_['text_disk_catalog'] = 'Каталог зображень';
|
||||||
|
$_['text_disk_cache'] = 'Кеш OC';
|
||||||
|
$_['text_disk_trash'] = 'Кошик модуля';
|
||||||
|
$_['text_disk_other'] = 'Інше';
|
||||||
|
$_['text_disk_free'] = 'Вільно';
|
||||||
|
$_['text_total_files_opt'] = 'Файлів оброблено';
|
||||||
|
$_['text_total_saved'] = 'Всього зекономлено';
|
||||||
|
$_['text_avg_saving_pct'] = 'Середня економія';
|
||||||
|
$_['text_stats_hint'] = 'Статистика зберігається в БД сайту (враховує Оптимізацію, Очищення, Інструменти та Крон)';
|
||||||
|
$_['text_reset_stats'] = 'Скинути статистику';
|
||||||
|
$_['text_reset_stats_confirm']= 'Ви впевнені, що хочете скинути всю статистику з БД?';
|
||||||
|
$_['text_export_import'] = 'Експорт / Імпорт налаштувань';
|
||||||
|
$_['button_export_settings'] = 'Експорт налаштувань (JSON)';
|
||||||
|
$_['button_import_settings'] = 'Імпортувати налаштування';
|
||||||
|
$_['help_export_settings'] = 'Завантажити всі налаштування модуля в JSON-файл';
|
||||||
|
$_['help_import_settings'] = 'Завантажити раніше експортований JSON для відновлення налаштувань';
|
||||||
|
$_['text_import_success'] = 'Налаштування успішно імпортовані. Перезавантажте сторінку для застосування.';
|
||||||
|
$_['error_import_file'] = 'Файл не завантажено або помилка завантаження';
|
||||||
|
$_['error_import_invalid'] = 'Некоректний файл налаштувань (невірний модуль або формат)';
|
||||||
|
$_['text_click_to_load'] = 'Натисніть ↑ для завантаження даних диска';
|
||||||
|
|
||||||
|
|
||||||
|
$_['tab_formats'] = 'Формати зображень';
|
||||||
|
|
||||||
|
$_['text_disk_quota_legend'] = 'Ліміти диска хостингу (вручну)';
|
||||||
|
$_['text_disk_quota_desc'] = 'Якщо графік дискового простору показує некоректні дані (фізичний диск сервера замість ліміту вашого хостингу), ви можете вказати ліміти вашого тарифу вручну. Вкажіть 0, щоб використовувати автовизначення.';
|
||||||
|
$_['entry_disk_quota_total'] = 'Виділено диска на хостингу (ГБ)';
|
||||||
|
$_['entry_disk_quota_used'] = 'Зайнято диска на хостингу всього (ГБ)';
|
||||||
|
$_['entry_auto_disk'] = 'Автооновлення при вході';
|
||||||
|
|
||||||
|
$_['entry_cron_task_name'] = 'Назва задачі';
|
||||||
|
$_['entry_cron_task_summary'] = 'Параметри стиснення';
|
||||||
|
$_['button_add_cron_task'] = 'Додати задачу';
|
||||||
|
$_['button_copy_cron_url'] = 'Копіювати URL';
|
||||||
|
$_['text_cron_recommended_url'] = 'URL для запуску задачі крону:';
|
||||||
|
$_['entry_cron_batch_limit'] = 'Ліміт пакета за один запуск Крона (файлів)';
|
||||||
|
$_['help_cron_batch_limit'] = 'Максимальна кількість файлів, що обробляються за один запуск Крона. За замовчуванням 100. Рекомендується від 50 до 300 для запобігання таймауту виконання на хостингу.';
|
||||||
|
|
||||||
|
$_['text_license_required'] = 'Необхідний ліцензійний ключ';
|
||||||
|
$_['text_license_required_desc'] = 'Будь ласка, введіть ліцензійний ключ для активації модуля. Усі функції налаштувань та оптимізації заблоковані до введення валідного ключа.';
|
||||||
|
$_['entry_token_desc'] = 'Введіть токен активації, виданий для вашого основного домену. Ви можете отримати його в особистому кабінеті на форумі або звернувшись у підтримку.';
|
||||||
|
$_['button_activate'] = 'Активувати модуль';
|
||||||
|
$_['text_support'] = 'Технічна підтримка';
|
||||||
|
$_['text_support_desc'] = 'Якщо у вас ще немає ключа або виникли проблеми, будь ласка, повідомте номер вашого замовлення та домен.';
|
||||||
|
|
||||||
|
$_['entry_wm_max_width'] = 'Макс. ширина водяного знака (px)';
|
||||||
|
$_['entry_wm_max_height'] = 'Макс. висота водяного знака (px)';
|
||||||
|
$_['help_wm_max_width'] = 'Якщо вихідне зображення водяного знака перевищує цю ширину, воно буде автоматично масштабоване. Вкажіть 0 або залиште порожнім для значення за замовчуванням (800px).';
|
||||||
|
$_['help_wm_max_height'] = 'Якщо вихідне зображення водяного знака перевищує цю висоту, воно буде автоматично масштабоване. Вкажіть 0 або залиште порожнім для значення за замовчуванням (800px).';
|
||||||
|
$_['entry_disk_status'] = 'Увімкнути сканування диска та графік';
|
||||||
|
$_['help_disk_status'] = 'Якщо увімкнено, модуль періодично скануватиме обсяг папки картинок та відображатиме круговую діаграму. Рекомендується вимкнути на великих сайтах для прискорення завантаження панелі.';
|
||||||
|
$_['text_disk_settings_title'] = 'Налаштування лімітів та сканування диска';
|
||||||
|
|
||||||
|
$_['button_online_instruction'] = 'Інструкція до модуля (Онлайн)';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,569 @@
|
||||||
|
<?php
|
||||||
|
$_['heading_title_raw'] = 'Image Optimizer [NAT]: Стиснення оригіналів та видалення сміття';
|
||||||
|
$_['heading_title'] = '<b>Image Optimizer [NAT]:</b> Стиснення оригіналів та видалення сміття';
|
||||||
|
$_['text_extension'] = 'Розширення';
|
||||||
|
$_['text_edit'] = 'Налаштування модуля';
|
||||||
|
$_['text_success'] = 'Налаштування успішно збережено!';
|
||||||
|
$_['entry_warning'] = 'УВАГА: Обов`язково зробіть бекап файлів сайту і особливо папки /image/catalog перед початком роботи!';
|
||||||
|
$_['text_tech'] = 'Перевірка технологій сервера:';
|
||||||
|
$_['text_author'] = 'Технічна підтримка та побажання: <a href="mailto:info@nat.od.ua">info@nat.od.ua</a>';
|
||||||
|
$_['tab_optimize'] = 'Оптимізація та Ресайз';
|
||||||
|
$_['tab_cleaner'] = 'Очищення невикористовуваних зображень';
|
||||||
|
$_['tab_info'] = 'Інфо / Екосистема [NAT]';
|
||||||
|
$_['tab_settings'] = 'Налаштування';
|
||||||
|
$_['tab_tools'] = 'Інструменти (pro)';
|
||||||
|
$_['tab_cron'] = 'Крон-завдання';
|
||||||
|
$_['entry_mode'] = 'Режим роботи';
|
||||||
|
$_['text_copy'] = 'Створити копію (безпечно)';
|
||||||
|
$_['text_replace'] = 'Замінювати оригінали (потребує бекап!)';
|
||||||
|
$_['entry_folder'] = 'Ім`я папки для копії';
|
||||||
|
$_['entry_batch'] = 'Файлів за прохід';
|
||||||
|
$_['entry_log_limit'] = 'Рядків логу на екрані';
|
||||||
|
$_['entry_max_width'] = 'Макс. ширина (px) [0 - без ліміту]';
|
||||||
|
$_['entry_max_height'] = 'Макс. висота (px) [0 - без ліміту]';
|
||||||
|
$_['entry_jpg'] = 'Якість JPG (0-100)';
|
||||||
|
$_['entry_png'] = 'Стиснення PNG (0-9)';
|
||||||
|
$_['entry_webp'] = 'Якість WebP (0-100)';
|
||||||
|
$_['entry_targets'] = 'Що оптимізувати?';
|
||||||
|
$_['text_all_catalog'] = '[ Весь каталог image/catalog ]';
|
||||||
|
$_['text_root_files'] = 'Файли тільки в корені image/catalog';
|
||||||
|
$_['entry_threshold'] = 'Поріг заміни (%)';
|
||||||
|
$_['help_threshold'] = '0: замінювати тільки якщо вага стала меншою. 10: дозволити збільшення ваги до 10%.';
|
||||||
|
$_['entry_token'] = 'Токен активації (на корінь домену)';
|
||||||
|
$_['entry_status'] = 'Статус модуля';
|
||||||
|
$_['entry_menu_position'] = 'Позиція меню [NAT]';
|
||||||
|
$_['text_menu_module_only'] = 'Тільки в модулях';
|
||||||
|
$_['text_menu_header'] = 'У шапці (Header)';
|
||||||
|
$_['text_menu_sidebar'] = 'У бічному меню (Sidebar)';
|
||||||
|
$_['text_menu_both'] = 'Скрізь (Шапка + Сайдбар)';
|
||||||
|
$_['text_status_on'] = 'Увімкнено';
|
||||||
|
$_['text_status_off'] = 'Вимкнено';
|
||||||
|
$_['entry_engine'] = 'Рушій обробки зображень';
|
||||||
|
$_['text_engine_gd'] = 'GD (Стандарт)';
|
||||||
|
$_['text_engine_imagick'] = 'Imagick (Висока якість, збереження профілів sRGB)';
|
||||||
|
$_['entry_license'] = 'Ліцензія';
|
||||||
|
$_['text_cleaner_info'] = 'Цей інструмент шукає файли, які фізично існують на диску, але ніде не використовуються в базі даних або файлах шаблону.';
|
||||||
|
$_['entry_clean_targets'] = 'В яких папках шукати сміття?';
|
||||||
|
$_['entry_extended_log'] = 'Розширений лог (показати використовувані photo і де вони знайдені)';
|
||||||
|
$_['entry_process_broken'] = 'Враховувати файли з битим кодуванням (імена з символом "?")';
|
||||||
|
$_['button_scan_trash'] = 'ЗНАЙТИ СМІТТЯ';
|
||||||
|
$_['button_quarantine'] = 'В Карантин (Безпечно)';
|
||||||
|
$_['button_delete_trash'] = 'Видалити назавжди';
|
||||||
|
$_['button_empty_quarantine'] = 'Очистити папку Карантину';
|
||||||
|
$_['button_restore_quarantine'] = 'Повернути з Карантину';
|
||||||
|
$_['text_scan_result'] = 'Результати сканування';
|
||||||
|
$_['text_trash_files'] = 'Сміттєвих файлів: ';
|
||||||
|
$_['text_trash_size'] = 'Потенційно звільниться: ';
|
||||||
|
$_['button_start'] = 'СТАРТ ОПТИМІЗАЦІЇ';
|
||||||
|
$_['button_pause'] = 'ПАУЗА';
|
||||||
|
$_['button_stop'] = 'ЗУПИНИТИ';
|
||||||
|
$_['button_continue'] = 'ПРОДОВЖИТИ';
|
||||||
|
$_['button_start_new'] = 'СТАРТ (Новий запуск)';
|
||||||
|
$_['button_download_log'] = 'Завантажити лог в TXT';
|
||||||
|
$_['button_download'] = 'Завантажити';
|
||||||
|
$_['button_save'] = 'Зберегти';
|
||||||
|
$_['button_cancel'] = 'Скасувати';
|
||||||
|
$_['text_progress'] = 'Прогрес:';
|
||||||
|
$_['text_old_size'] = 'Було:';
|
||||||
|
$_['text_new_size'] = 'Стало:';
|
||||||
|
$_['text_savings'] = 'Економія:';
|
||||||
|
$_['text_detailed_log'] = 'Детальний лог';
|
||||||
|
$_['text_page'] = 'Стор.';
|
||||||
|
$_['text_waiting'] = 'Очікування запуску...';
|
||||||
|
$_['text_enabled'] = 'Увімкнено';
|
||||||
|
$_['text_disabled_error'] = 'Вимкнено (ПОМИЛКА)';
|
||||||
|
$_['text_supported'] = 'Підтримується';
|
||||||
|
$_['text_no'] = 'Ні';
|
||||||
|
$_['error_permission'] = 'У вас немає прав для керування модулем!';
|
||||||
|
$_['error_license'] = 'Помилка доступу: Невірний токен активації для цього домену!';
|
||||||
|
$_['error_domain'] = ' (Домен: ';
|
||||||
|
$_['text_found'] = 'Знайдено файлів: ';
|
||||||
|
$_['text_compressed'] = 'Стиснуто';
|
||||||
|
$_['text_original'] = 'Оригінал';
|
||||||
|
$_['text_error_process'] = 'Помилка обробки: ';
|
||||||
|
$_['error_log_empty'] = 'Лог порожній! Спочатку запустіть процес.';
|
||||||
|
$_['text_report_header'] = '=== ЗВІТ ===';
|
||||||
|
$_['text_total_files'] = 'Всього файлів: ';
|
||||||
|
$_['text_searching'] = 'Пошук файлів...';
|
||||||
|
$_['error_ajax'] = 'Помилка: ';
|
||||||
|
$_['text_resumed'] = '▶ ПРОЦЕС ВІДНОВЛЕНО...';
|
||||||
|
$_['text_paused'] = '⏸ ПАУЗА. Процес призупинено.';
|
||||||
|
$_['confirm_stop'] = 'Ви впевнені, що хочете повністю перервати процес?';
|
||||||
|
$_['confirm_delete'] = 'УВАГА! Файли будуть видалені з сервера назавжди без можливості відновлення! Продовжити?';
|
||||||
|
$_['confirm_empty_q'] = 'Ви впевнені, що хочете повністю очистити папку карантину?';
|
||||||
|
$_['confirm_restore'] = 'Всі файли з папки карантину будуть повернуті на свої місця. Продовжити?';
|
||||||
|
$_['button_stopping'] = 'Зупинка...';
|
||||||
|
$_['text_stopped_user'] = '🛑 ПРОЦЕС ПЕРЕРВАНО КОРИСТУВАЧЕМ!';
|
||||||
|
$_['text_increase'] = 'Збільшення';
|
||||||
|
$_['text_done'] = '✅ ГОТОВО! Процес завершено.';
|
||||||
|
$_['error_timeout'] = 'Таймаут сервера. Автоповтор через 3 секунди...';
|
||||||
|
$_['text_building_index'] = 'Крок 1/2: Індексація БД та шаблонів (пошук фото, що використовуються)...';
|
||||||
|
$_['text_comparing'] = 'Крок 2/2: Порівняння фізичних файлів з індексом...';
|
||||||
|
$_['text_quarantine_done'] = '✅ Процес перенесення в image/catalog_trash/ завершено!';
|
||||||
|
$_['text_deleted_done'] = '✅ Процес видалення сміття завершено!';
|
||||||
|
$_['text_quarantine_empty'] = '✅ Папку карантину успішно видалено з сервера!';
|
||||||
|
$_['text_restore_done'] = '✅ Файли успішно повернуто з карантину в робочу папку!';
|
||||||
|
$_['text_quarantine_move'] = 'В карантині: ';
|
||||||
|
$_['text_deleted_file'] = 'Видалено: ';
|
||||||
|
$_['text_no_trash'] = 'У вибраних папках сміття не знайдено! Всі файли використовуються.';
|
||||||
|
$_['text_scanning_dirs'] = 'Скануємо директорії: ';
|
||||||
|
$_['text_log_used'] = '[ВИКОРИСТОВУЄТЬСЯ]';
|
||||||
|
$_['text_log_trash'] = '[СМІТТЯ]';
|
||||||
|
$_['text_log_deleted'] = '[ВИДАЛЕНО]';
|
||||||
|
$_['text_log_del_err'] = '[ПОМИЛКА ВИДАЛЕННЯ]';
|
||||||
|
$_['text_log_quarantine'] = '[В КАРАНТИН]';
|
||||||
|
$_['text_log_q_err'] = '[ПОМИЛКА ПЕРЕНЕСЕННЯ]';
|
||||||
|
$_['text_log_restored'] = '[ВІДНОВЛЕНО]';
|
||||||
|
$_['text_log_rest_err'] = '[ПОМИЛКА ВІДНОВЛЕННЯ]';
|
||||||
|
$_['text_used_in'] = 'у: ';
|
||||||
|
$_['text_analyzing'] = 'Аналіз бази даних...';
|
||||||
|
$_['text_clean_empty'] = 'Чисто! Сміття немає.';
|
||||||
|
$_['text_processing'] = 'Обробка...';
|
||||||
|
$_['text_restoring'] = 'Відновлення файлів...';
|
||||||
|
$_['text_all_folders'] = 'image/catalog/ (Та всі вкладені)';
|
||||||
|
$_['text_root_folder'] = 'image/catalog/ (Тільки корінь)';
|
||||||
|
$_['text_q_empty_err'] = 'Папка карантину порожня або не існує.';
|
||||||
|
$_['error_token'] = 'Невірний токен. Перезавантажте сторінку.';
|
||||||
|
$_['text_apply_title'] = 'Оптимізацію завершено в папку: ';
|
||||||
|
$_['text_apply_info'] = 'Перевірте результат. Якщо все влаштовує — застосуйте зміни до основного каталогу.';
|
||||||
|
$_['entry_apply_backup'] = 'Перенести зі створенням бекапу (в Карантин)';
|
||||||
|
$_['entry_apply_replace'] = 'Замінити оригінали безповоротно';
|
||||||
|
$_['button_apply_main'] = 'ЗАСТОСУВАТИ ДО ОСНОВНОГО КАТАЛОГУ';
|
||||||
|
$_['button_delete_copies'] = 'Видалити тимчасові копії (скасування)';
|
||||||
|
$_['button_full_cleanup'] = 'Повне очищення всіх тимчасових папок та бекапів';
|
||||||
|
$_['text_apply_success'] = '✅ Файли успішно перенесено. ';
|
||||||
|
$_['text_apply_backup_ok'] = 'Оригінали збережено в папку: ';
|
||||||
|
$_['text_apply_no_backup'] = 'Оригінали видалено.';
|
||||||
|
$_['text_error_source'] = 'Помилка: Папку з оптимізованими файлами не знайдено.';
|
||||||
|
$_['confirm_full_cleanup'] = 'УВАГА! Ця дія безповоротно видалить УСІ папки бекапів (backup_*) та тимчасові папки з копіями. Продовжити?';
|
||||||
|
$_['text_tools_desc'] = 'Глобальні сканери та інструменти для роботи з файловою системою і БД зображень.';
|
||||||
|
$_['text_tool_select'] = 'Виберіть інструмент:';
|
||||||
|
$_['text_group_scanners'] = 'Сканери та Аналіз';
|
||||||
|
$_['text_group_generators'] = 'Генератори та Обробка';
|
||||||
|
$_['text_group_experimental'] = 'Експериментальні функції (BETA)';
|
||||||
|
$_['text_experimental_warn'] = 'Увага: Експериментальні функції зачіпають системні файли або базу даних. Настійно рекомендується зробити бекап!';
|
||||||
|
$_['text_tool_broken_db'] = 'Сканер битих/порожніх фото БД';
|
||||||
|
$_['text_tool_watermark'] = 'Динамічний Вотермарк (Тільки на кеш)';
|
||||||
|
$_['text_tool_duplicates'] = 'Поиск дубликатов файлов (за MD5)';
|
||||||
|
$_['text_tool_png_jpg'] = 'Конвертер важких PNG у JPG (сканер файлів без прозорості)';
|
||||||
|
$_['text_tool_placeholders'] = 'Генератор заглушок (Замість No Image)';
|
||||||
|
$_['text_tool_exif'] = 'Очищення EXIF-даних (Геотеги/Мета)';
|
||||||
|
$_['text_tool_small_photos'] = 'Сканер занадто дрібних фото';
|
||||||
|
$_['text_tool_html_broken'] = 'Пошук битих картинок в HTML (Описах)';
|
||||||
|
$_['text_tool_empty_folders'] = 'Очищення порожніх папок (image/catalog)';
|
||||||
|
$_['text_tool_smart_cache'] = 'Розумне очищення кешу зображень';
|
||||||
|
$_['text_tool_folder_tree'] = 'Дерево папок (Статистика ваги)';
|
||||||
|
$_['text_tool_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load (Без БД)';
|
||||||
|
$_['text_tool_translit'] = 'Транслітерація назв файлів';
|
||||||
|
$_['text_tool_cache_restore'] = 'Відновлення оригіналів із Кешу';
|
||||||
|
$_['entry_wm_type'] = 'Тип водяного знака';
|
||||||
|
$_['text_wm_image'] = 'Зображення (PNG)';
|
||||||
|
$_['text_wm_text'] = 'Текст';
|
||||||
|
$_['entry_wm_image_path'] = 'Шлях до зображення';
|
||||||
|
$_['entry_wm_text_val'] = 'Текст водяного знака';
|
||||||
|
$_['entry_wm_position'] = 'Позиція (1-9)';
|
||||||
|
$_['entry_wm_opacity'] = 'Прозорість (0-100)';
|
||||||
|
$_['entry_wm_category'] = 'Тільки для Категорій';
|
||||||
|
$_['entry_wm_brand'] = 'Тільки для Брендів';
|
||||||
|
$_['entry_min_width'] = 'Мінімальна ширина (px)';
|
||||||
|
$_['entry_min_height'] = 'Мінімальна висота (px)';
|
||||||
|
$_['entry_ph_product'] = 'Заглушка для Товарів';
|
||||||
|
$_['entry_ph_category'] = 'Заглушка для Категорій';
|
||||||
|
$_['entry_ph_brand'] = 'Заглушка для Брендів';
|
||||||
|
$_['button_run_tool'] = 'Запустити інструмент';
|
||||||
|
$_['button_scan_tool'] = 'Сканувати';
|
||||||
|
$_['button_fix_tool'] = 'Виправити знайдене';
|
||||||
|
$_['text_th_path'] = 'Файл / Шлях';
|
||||||
|
$_['text_th_size'] = 'Розмір';
|
||||||
|
$_['text_th_action'] = 'Дія';
|
||||||
|
$_['text_th_status'] = 'Статус';
|
||||||
|
$_['text_th_problem'] = 'Проблема / Значення';
|
||||||
|
$_['text_cron_title'] = 'Налаштування Cron';
|
||||||
|
$_['text_cron_desc'] = 'Додайте команду в Cron хостингу для автоматичного фонового стиснення.';
|
||||||
|
$_['entry_cron_new_only'] = 'Обробляти тільки нові (необроблені) файли';
|
||||||
|
$_['entry_cron_folders'] = 'Папки для сканування (залиште порожнім для всього каталогу)';
|
||||||
|
$_['text_promo_title'] = 'Інші модулі серії [NAT]';
|
||||||
|
$_['text_promo_desc'] = 'Модулі серії [NAT] – це інструменти для глибокої оптимізації OpenCart. Ми фокусуємося на автоматизації рутини, прискоренні бази даних та очищенні серверів від сміття. Усі модулі мають відкритий вихідний код та єдину логіку управління.';
|
||||||
|
$_['text_support'] = 'Технічна підтримка та побажання:';
|
||||||
|
$_['button_more'] = 'Дивитися всі модулі на OpenCart.com';
|
||||||
|
$_['button_more_forum'] = 'Opencartforum';
|
||||||
|
$_['text_mod_cat_opt'] = 'Catalog Optimizer [NAT]';
|
||||||
|
$_['text_mod_cat_opt_desc'] = 'Приховування порожніх категорій і брендів + SEO сортування товарів (у наявності зверху) + Очищення сміття БД.';
|
||||||
|
$_['text_mod_new_arrivals'] = 'New Arrivals [NAT]: Новинки за датами';
|
||||||
|
$_['text_mod_new_arrivals_desc'] = 'Автоматична SEO-сторінка новинок. Відображає новинки суворо за реальною датою додавання. Слайдери, сітка та розумний сайдбар архіву дат.';
|
||||||
|
$_['text_mod_img_opt'] = 'Image Optimizer [NAT]';
|
||||||
|
$_['text_mod_img_opt_desc'] = '<strong>Поточний модуль.</strong> Стиснення та ресайз ОРИГІНАЛІВ фото (image/catalog) у WebP + Очищення хостингу від невикористаних зображень.';
|
||||||
|
$_['text_mod_dom_scan'] = 'Domain Scanner [NAT]';
|
||||||
|
$_['text_mod_dom_scan_desc'] = 'Пошук і чищення зовнішніх посилань і HTTP-картинок у БД та файлах теми. Ідеально для HTTPS або очищення після парсингу.';
|
||||||
|
$_['text_mod_poll'] = 'Poll Widget [NAT]';
|
||||||
|
$_['text_mod_poll_desc'] = 'Створення опитувань та голосувань із візуальним конструктором дизайну, глибокою статистикою та захистом від накруток.';
|
||||||
|
$_['text_mod_db_opt'] = 'Database Optimizer [NAT]';
|
||||||
|
$_['text_mod_db_opt_desc'] = 'Інтелектуальне очищення сміття в базі даних, управління системними логами та додавання критично важливих індексів для прискорення.';
|
||||||
|
$_['text_mod_im_ex'] = 'Import/Export [NAT]';
|
||||||
|
$_['text_mod_im_ex_desc'] = 'Швидкий імпорт/експорт цін і залишків з файлів xls/xlsx/csv/xml/json або за посиланням. Маппінг полів, робота по Cron, текстові функції.';
|
||||||
|
$_['text_mod_admin_tools'] = 'Admin Tools [NAT]';
|
||||||
|
$_['text_mod_admin_tools_desc'] = 'Зручні інструменти адміністратора: вхід під клієнтом, кастомізація адмінки, управління правами користувачів та приховування непотрібних пунктів меню.';
|
||||||
|
$_['text_mod_utm_tracker'] = 'Order UTM Tracker [NAT]';
|
||||||
|
$_['text_mod_utm_tracker_desc'] = 'Автоматичне відстеження UTM-міток при оформленні замовлення. Зберігає джерело переходу, кампанію, ключові слова та виводить ці дані в замовленні для аналітики реклами.';
|
||||||
|
$_['text_info_title_promo_top_bar'] = 'Promo Top Bar [NAT]: Верхній рекламний інфо-баннер, інформаційна смуга над шапкою, рухомий рядок та топ-баннер';
|
||||||
|
$_['text_info_desc_promo_top_bar'] = 'Створення інтерактивних промо-панелей та слайд-шоу в шапці сайту з конструктором блоків, таймерами, формою підписки та гнучким націлюванням.';
|
||||||
|
$_['text_tool_no_image'] = 'Товари без головного фото (порожньо в БД)';
|
||||||
|
$_['text_problem_main_broken'] = 'Бите головне фото (файл видалено)';
|
||||||
|
$_['text_problem_add_broken'] = 'Бите дод. фото (файл видалено)';
|
||||||
|
$_['text_problem_no_image'] = 'Відсутнє головне фото';
|
||||||
|
$_['text_err_dir'] = 'Помилка: Директорію не знайдено або невірний шлях.';
|
||||||
|
$_['text_err_no_queue'] = 'Помилка: Чергу не знайдено. Спочатку запустіть сканування.';
|
||||||
|
$_['text_log_del_empty_folder'] = 'Видалено порожню папку: ';
|
||||||
|
$_['text_log_no_empty_folders'] = 'Порожніх папок в image/catalog/ не знайдено.';
|
||||||
|
$_['text_log_total_empty_folders'] = 'Всього видалено порожніх папок: ';
|
||||||
|
$_['text_log_cache_cleared'] = 'Кеш зображень успішно очищено.';
|
||||||
|
$_['text_log_wm_smart_mode'] = 'Вотермарки працюють в SMART-режимі: оригінали не зачіпаються, логотип накладається лише при генерації кешу.';
|
||||||
|
$_['text_log_scan_dupes'] = 'Сканування image/catalog/ на дублікати (за хешем MD5)... Це може зайняти час.';
|
||||||
|
$_['text_log_found_dupe'] = 'Знайдено дублікат: ';
|
||||||
|
$_['text_log_no_dupes'] = 'Дублікатів не знайдено.';
|
||||||
|
$_['text_log_total_dupes'] = 'Знайдено дублікатів: %s. Потенційна економія: %s';
|
||||||
|
$_['text_log_fix_dupes_prompt'] = 'Натисніть "Виправити знайдене" для перелінкування БД на оригинал та видалення дублів.';
|
||||||
|
$_['text_log_fixed_dupe'] = 'Виправлено та видалено дублікат: ';
|
||||||
|
$_['text_log_success_dupes'] = 'Успішно виправлено дублікатів: %s. Посилання в БД оновлено.';
|
||||||
|
$_['text_log_scan_png'] = 'Пошук важких PNG файлів без прозорості...';
|
||||||
|
$_['text_log_no_png'] = 'Відповідних PNG файлів не знайдено.';
|
||||||
|
$_['text_log_total_png'] = 'Знайдено PNG без прозорості: %s. Натисніть "Виправити" для конвертації в JPG.';
|
||||||
|
$_['text_log_converted_jpg'] = 'Сконвертовано в JPG: ';
|
||||||
|
$_['text_log_success_png'] = 'Успішно сконвертовано %s файлів. Звільнено: %s';
|
||||||
|
$_['text_log_ph_prod'] = 'Оновлено товарів заглушкою: ';
|
||||||
|
$_['text_log_ph_cat'] = 'Оновлено категорій заглушкою: ';
|
||||||
|
$_['text_log_ph_brand'] = 'Оновлено брендів заглушкою: ';
|
||||||
|
$_['text_log_ph_empty'] = 'Заглушки не вибрані в налаштуваннях.';
|
||||||
|
$_['text_log_scan_exif'] = 'Сканування EXIF-даних (мета-теги камер)...';
|
||||||
|
$_['text_log_stripped_exif'] = 'Очищено EXIF: ';
|
||||||
|
$_['text_log_no_exif'] = 'Файлів з EXIF для очищення не знайдено.';
|
||||||
|
$_['text_log_success_exif'] = 'Очищено EXIF у %s файлів. Звільнено: %s';
|
||||||
|
$_['text_log_scan_small'] = 'Пошук фото розміром менше %sx%s px...';
|
||||||
|
$_['text_log_too_small'] = 'Занадто мале (%sx%s): ';
|
||||||
|
$_['text_log_no_small'] = 'Дрібних фото не знайдено.';
|
||||||
|
$_['text_log_total_small'] = 'Знайдено дрібних фото: %s. Будь ласка, замініть їх на якісні.';
|
||||||
|
$_['text_log_html_broken'] = 'Битией IMG в HTML таблиці %s (ID: %s): ';
|
||||||
|
$_['text_log_no_html_broken'] = 'Битих картинок в HTML-описах не знайдено.';
|
||||||
|
$_['text_log_total_html_broken'] = 'Знайдено битих посилань в HTML: %s. Виправте їх вручну.';
|
||||||
|
$_['text_log_scan_smart_cache'] = 'Пошук втрачених файлів у image/cache/...';
|
||||||
|
$_['text_log_del_orph_cache'] = 'Видалено втрачений кеш: ';
|
||||||
|
$_['text_log_no_orph_cache'] = 'Втраченого кешу не знайдено.';
|
||||||
|
$_['text_log_success_smart_cache'] = 'Видалено файлів втраченого кешу: %s. Звільнено: %s';
|
||||||
|
$_['text_log_scan_translit'] = 'Пошук файлів з кирилицею або пробілами...';
|
||||||
|
$_['text_log_no_bad_names'] = 'Файлів з некоректними іменами не знайдено.';
|
||||||
|
$_['text_log_total_bad_names'] = 'Знайдено файлів з кирилицею/пробілами: %s. Натисніть "Виправити" для транслітерації та оновлення БД.';
|
||||||
|
$_['text_log_renamed'] = 'Перейменовано: ';
|
||||||
|
$_['text_log_success_translit'] = 'Успішно транслітеровано файлів: %s. БД оновлено.';
|
||||||
|
$_['text_log_scan_restore'] = 'Сканирование image/cache/ для відновлення втрачених оригіналів...';
|
||||||
|
$_['text_log_restored_cache'] = 'Відновлено з кешу: ';
|
||||||
|
$_['text_log_no_lost_orig'] = 'Відсутніх оригіналів у кеші не знайдено.';
|
||||||
|
$_['text_log_success_restore'] = 'Успішно відновлено оригіналів з кешу: %s.';
|
||||||
|
$_['error_invalid_folder'] = 'Помилка: Неприпустиме ім\'я папки!';
|
||||||
|
$_['text_formats_title'] = 'Сучасні формати (WebP & SVG)';
|
||||||
|
$_['text_formats_desc'] = 'Налаштування інтеграції сучасних форматів у файлову систему та шаблони OpenCart.';
|
||||||
|
$_['entry_support_svg'] = 'Підтримка завантаження SVG';
|
||||||
|
$_['help_support_svg'] = 'Дозволяє завантаження векторних SVG-зображень через стандартний Filemanager та їх безпечне виведення на вітрині без спотворення розмірів.';
|
||||||
|
$_['entry_support_webp'] = 'Підтримка завантаження WebP';
|
||||||
|
$_['help_support_webp'] = 'Дозволяє вручну завантажувати, підв\'язувати та виводити на сайті готові файли .webp через Filemanager.';
|
||||||
|
$_['entry_truefilemanager_webp'] = 'WebP у TrueFileManager';
|
||||||
|
$_['help_truefilemanager_webp'] = 'Додає підтримку завантаження, попереднього перегляду та ескізів WebP у TrueFileManager від sitecreator (якщо його встановлено).';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Надшвидка підміна: автоматично змінює розширення .jpg/.png на .webp прямо в HTML-виводі вітрини та додає атрибут loading="lazy". Не чіпає базу даних!';
|
||||||
|
$_['help_tool_broken_db'] = 'Шукає в базі даних зображення, фізичні файли яких були видалені з сервера. Дозволяє очистити биті посилання.';
|
||||||
|
$_['help_tool_empty_folders'] = 'Рекурсивно сканує директорію image/catalog/ та безпечно видаляє всі папки, в яких немає жодного файлу.';
|
||||||
|
$_['help_tool_folder_tree'] = 'Будує дерево каталогів та показує реальну вагу кожної папки для пошуку "пожирачів" місця.';
|
||||||
|
$_['help_tool_html_broken'] = 'Сканує HTML-описи товарів та категорій на наявність тегів <img> з неіснуючими зображеннями.';
|
||||||
|
$_['help_tool_small_photos'] = 'Знаходить зображення з роздільною здатністю нижче заданої. Додано посилання на пошук якісних аналогів у Google Images та Яндекс Зображеннях.';
|
||||||
|
$_['help_tool_duplicates'] = 'Шукає повні дублікати файлів за MD5-хешем (різні назви, але однакова картинка). Дозволяє склеїти їх в один файл та оновити БД.';
|
||||||
|
$_['help_tool_watermark'] = 'Накладення водяних знаків у SMART-режимі (тільки на кеш вітрини, оригінали не змінюються).';
|
||||||
|
$_['help_tool_placeholders'] = 'Масово встановлює вибране зображення-заглушку для товарів та категорій, у яких взагалі немає фото.';
|
||||||
|
$_['help_tool_png_jpg'] = 'Інструмент сканує папку зображень і знаходить важкі PNG-файли, які не мають прозорого фону (альфа-каналу). Оскільки прозорість їм не потрібна, їх можна безпечно конвертувати у формат JPG. Це значно полегшує файли (в середньому на 70-80%) та прискорює завантаження сайту, а всі посилання в базі даних автоматично оновлюються.';
|
||||||
|
$_['help_tool_exif'] = 'Сканує EXIF-дані та видаляє з них приховані теги, зменшуючи вагу на 10-15%.';
|
||||||
|
$_['help_tool_smart_cache'] = 'Шукає в папці image/cache/ кешовані файли, оригінали яких уже видалені, та очищає неактуальний кеш.';
|
||||||
|
$_['help_tool_translit'] = 'Знаходить файли з кирилицею або пробілами, перейменовує їх транслітом та оновлює шляхи в БД.';
|
||||||
|
$_['help_tool_cache_restore'] = 'Якщо ви випадково видалили оригінал з catalog, інструмент спробує знайти його копію в cache та відновити назад.';
|
||||||
|
$_['entry_quarantine'] = 'Перемістити оригінали в Карантин (замість видалення)';
|
||||||
|
$_['entry_backup_db'] = 'Створити бекап змінюваних таблиць у SQL перед запуском';
|
||||||
|
$_['button_fix_selected'] = 'ВИПРАВИТИ ВИБРАНІ';
|
||||||
|
$_['button_export_log'] = 'Експортувати в CSV';
|
||||||
|
$_['text_th_before'] = 'Стан ДО';
|
||||||
|
$_['text_th_after'] = 'Очікуваний результат ПІСЛЯ';
|
||||||
|
$_['text_th_select'] = 'Дія';
|
||||||
|
$_['text_th_preview'] = 'Передперегляд';
|
||||||
|
$_['text_th_name'] = 'Об`єкт / Файл';
|
||||||
|
$_['text_global_action'] = 'Групова дія для вибраних:';
|
||||||
|
$_['text_action_clear'] = 'Очистити посилання в БД';
|
||||||
|
$_['text_action_disable'] = 'Вимкнути (Статус = 0)';
|
||||||
|
$_['text_action_stock'] = 'Установити "Немає в наявності"';
|
||||||
|
$_['text_action_placeholder'] = 'Встановити заглушку';
|
||||||
|
$_['text_action_ignore'] = 'Нічого не робити';
|
||||||
|
$_['text_action_merge'] = 'Склеїти (видалити дублікат, залишити оригінал)';
|
||||||
|
$_['text_action_convert'] = 'Конвертувати в JPG';
|
||||||
|
$_['text_action_rename'] = 'Перейменувати транслітом';
|
||||||
|
$_['text_action_delete'] = 'Видалити';
|
||||||
|
$_['text_action_restore'] = 'Відновити';
|
||||||
|
$_['text_db_backup_created'] = 'Створено бекап БД: %s';
|
||||||
|
$_['text_quarantine_created'] = 'Перенесено в карантин: %s';
|
||||||
|
$_['text_fix_status_success'] = 'Успішно виконано';
|
||||||
|
$_['text_fix_status_error'] = 'Помилка: %s';
|
||||||
|
$_['text_log_exported'] = 'Лог успішно експортовано!';
|
||||||
|
$_['text_select_action'] = '-- Виберіть дію --';
|
||||||
|
$_['error_empty_selection'] = 'Помилка: Не вибрано жодного рядка для виправлення!';
|
||||||
|
$_['text_link_admin'] = 'Адмінка';
|
||||||
|
$_['text_link_catalog'] = 'Вітрина';
|
||||||
|
$_['entry_threads'] = 'Потоків обробки';
|
||||||
|
$_['text_threads_optimal'] = 'оптимально';
|
||||||
|
$_['button_download_zip'] = 'Завантажити ZIP-архів та видалити папку';
|
||||||
|
$_['confirm_download_and_delete'] = 'Архів успішно завантажився? Можна видалити тимчасову папку копій на сервері?';
|
||||||
|
$_['button_clear_backups'] = 'Видалити бекапи БД';
|
||||||
|
$_['button_clear_backups_short'] = 'Очистити бекапи';
|
||||||
|
$_['confirm_clear_backups'] = 'Ви впевнені, що хочете повністю видалити всі SQL-бекапи таблиць?';
|
||||||
|
$_['text_compare_title'] = 'Порівняння зображень ДО / ПІСЛЯ';
|
||||||
|
$_['text_compare_before'] = 'ДО';
|
||||||
|
$_['text_compare_after'] = 'ПІСЛЯ';
|
||||||
|
$_['text_backups_cleared'] = 'Усі SQL-бекапи таблиць успішно видалені!';
|
||||||
|
$_['error_no_backups'] = 'Бекапи не знайдені або папка порожня.';
|
||||||
|
$_['button_restore'] = 'Повернути';
|
||||||
|
$_['button_empty'] = 'Очистити';
|
||||||
|
$_['entry_wm_targets'] = 'Застосовувати водяний знак до:';
|
||||||
|
$_['text_wm_target_product'] = 'Фото товарів';
|
||||||
|
$_['text_wm_target_category'] = 'Фото категорій';
|
||||||
|
$_['text_wm_target_brand'] = 'Логотипи брендів';
|
||||||
|
$_['text_wm_target_banner'] = 'Банери та слайди';
|
||||||
|
$_['text_wm_target_blog'] = 'Статті / Блог';
|
||||||
|
$_['error_no_scan_data'] = 'Помилка: Дані сканування не знайдені. Спочатку запустіть сканування!';
|
||||||
|
$_['error_row_not_found'] = 'Помилка: Об`єкт не знайдено в результатах сканування!';
|
||||||
|
$_['error_file_not_found'] = 'Помилка: Файл не знайдено на сервері!';
|
||||||
|
$_['text_folder_rules_title'] = 'Індивідуальні правила стиснення для папок';
|
||||||
|
$_['text_folder_rules_desc'] = 'Ви можете перевизначити якість та максимальні розміри для конкретних папок. Якщо залишити поле порожнім, використовуватиметься глобальне налаштування. Шлях вказується відносно папки image (наприклад, catalog/banners/).';
|
||||||
|
$_['entry_folder_path'] = 'Шлях до папки';
|
||||||
|
$_['entry_jpg_quality'] = 'Якість JPG';
|
||||||
|
$_['entry_webp_quality'] = 'Якість WebP';
|
||||||
|
$_['button_add_rule'] = 'Додати правило';
|
||||||
|
$_['button_remove'] = 'Вилучити';
|
||||||
|
$_['entry_wm_angle'] = 'Кут нахилу водяного знака (градуси)';
|
||||||
|
$_['entry_wm_corner_radius'] = 'Закруглення кутів водяного знака (px)';
|
||||||
|
$_['entry_wm_size_type'] = 'Масштабування водяного знака';
|
||||||
|
$_['entry_wm_size_percent'] = 'Розмір водяного знака (% від ширини зображення)';
|
||||||
|
$_['entry_wm_text_color'] = 'Колір тексту водяного знака';
|
||||||
|
$_['entry_wm_text_font'] = 'Шрифт водяного знака (TTF)';
|
||||||
|
$_['entry_wm_filter_mode'] = 'Режим фільтрації Категорій/Брендів';
|
||||||
|
$_['text_wm_filter_include'] = 'Тільки для вибраних';
|
||||||
|
$_['text_wm_filter_exclude'] = 'Для всіх, крім вибраних';
|
||||||
|
$_['text_wm_size_original'] = 'Оригінальний розмір';
|
||||||
|
$_['text_wm_size_percent'] = 'Пропорційно ширині зображення (%)';
|
||||||
|
$_['button_preview_watermark'] = 'Попередній перегляд';
|
||||||
|
$_['text_wm_preview_title'] = 'Попередній перегляд водяного знака';
|
||||||
|
$_['text_cron_exclude_folders'] = 'Виключити папки зі сканування';
|
||||||
|
$_['text_cron_entities'] = 'Які типи фото обробляти?';
|
||||||
|
$_['text_cron_quality_override'] = 'Перевизначити параметри стиснення для Крона';
|
||||||
|
$_['text_cron_recommendations'] = 'Рекомендації щодо розкладу Cron';
|
||||||
|
$_['text_cron_recommendations_desc'] = '<ul><li><b>Для невеликих сайтів (до 5000 товарів)</b> рекомендується запускати Крон кожну годину (<code>0 * * * *</code>).</li><li><b>Для середніх сайтів (5000-20000 товарів)</b> рекомендується запускати раз на 3-6 годин (<code>0 */6 * * *</code>).</li><li><b>Для великих сайтів (понад 20000 товарів)</b> — один раз на добу вночі (наприклад, о 2:00: <code>0 2 * * *</code>).</li></ul>';
|
||||||
|
$_['text_tool_broken_files'] = 'Сканер битих/порожніх файлів на сервері';
|
||||||
|
$_['help_tool_broken_files'] = 'Сканує фізичні файли в папці image/catalog/ на наявність пошкоджених зображень або порожніх файлів розміром 0 байт.';
|
||||||
|
$_['text_grid_broken_file'] = 'Битий або порожній файл на сервері';
|
||||||
|
$_['text_grid_broken_file_after'] = 'Вилучення або заміна заглушкою';
|
||||||
|
$_['text_description_broken_files'] = 'Результати сканування фізичних файлів у папці image/catalog/. Тут відображаються биті (пошкоджені) зображення або файли розміром 0 байт.';
|
||||||
|
$_['text_action_strip'] = 'Очистити EXIF';
|
||||||
|
$_['text_action_set_placeholder'] = 'Встановити заглушку';
|
||||||
|
$_['text_th_entity'] = 'Об`єкт / Пов`язані посилання';
|
||||||
|
$_['text_cron_entity_product'] = 'Товари';
|
||||||
|
$_['text_cron_entity_category'] = 'Категорії';
|
||||||
|
$_['text_cron_entity_manufacturer'] = 'Виробники / Бренди';
|
||||||
|
$_['text_cron_entity_banner'] = 'Банери';
|
||||||
|
$_['text_cron_entity_blog'] = 'Блог / Статті';
|
||||||
|
$_['entry_cron_jpg_quality'] = 'Якість JPG (Крон)';
|
||||||
|
$_['entry_cron_webp_quality'] = 'Якість WebP (Крон)';
|
||||||
|
$_['entry_cron_max_width'] = 'Макс. ширина px (Крон)';
|
||||||
|
$_['entry_cron_max_height'] = 'Макс. висота px (Крон)';
|
||||||
|
$_['text_cron_folder_scan'] = 'Папки для сканування';
|
||||||
|
$_['text_no_fonts'] = 'TTF-шрифти не знайдено в system/library/font/';
|
||||||
|
$_['button_apply'] = 'Застосувати';
|
||||||
|
$_['text_backup_will_be_created'] = 'Резервна копія бази даних буде автоматично створена перед виконанням цієї дії.';
|
||||||
|
$_['text_bulk_action'] = 'Групова дія для вибраних';
|
||||||
|
$_['text_grid_results'] = 'Результати та деталі сканування';
|
||||||
|
$_['text_quarantine_will_be_created'] = 'Оригінальні файли будуть переміщені в карантин (image/catalog_trash/) перед зміною.';
|
||||||
|
$_['text_success_apply'] = 'Зміни успішно застосовані!';
|
||||||
|
$_['text_description_broken'] = 'Результати сканування бази даних на наявність битих посилань (записи в таблицях з неіснуючими файлами).';
|
||||||
|
$_['text_description_cache_restore'] = 'Результати пошуку файлів у кеші, оригінали яких відсутні в каталозі.';
|
||||||
|
$_['text_description_duplicates'] = 'Результати пошуку повних дублікатів зображень за MD5-хешем.';
|
||||||
|
$_['text_description_empty_folders'] = 'Список порожніх папок в директорії image/catalog/ для видалення.';
|
||||||
|
$_['text_description_exif'] = 'Результати пошуку зображень з метаданими EXIF, які можна очистити.';
|
||||||
|
$_['text_description_folder_tree'] = 'Статистика розміру папок у каталозі image/catalog/.';
|
||||||
|
$_['text_description_html_broken'] = 'Результати пошуку неіснуючих файлів картинок, на які посилаються описи в HTML.';
|
||||||
|
$_['text_description_placeholders'] = 'Результати пошуку сутностей без зображень для заповнення заглушками.';
|
||||||
|
$_['text_description_png_jpg'] = 'Результати пошуку важких зображень PNG без прозорості, які можна перетиснути в JPG.';
|
||||||
|
$_['text_description_small_photos'] = 'Список зображень, розміри яких менше мінімально заданих (%sx%s px).';
|
||||||
|
$_['text_description_smart_cache'] = 'Результати пошуку файлів кешу, оригінали яких уже було видалено.';
|
||||||
|
$_['text_description_translit'] = 'Результати пошуку файлів з кирилицею або пробілами в назвах.';
|
||||||
|
$_['text_grid_broken_db_after'] = 'Очистити посилання або встановити заглушку';
|
||||||
|
$_['text_grid_dupe_after'] = 'Оригінал (залишається)';
|
||||||
|
$_['text_grid_dupe_before'] = 'Дублікат (буде видалено)';
|
||||||
|
$_['text_grid_empty_folder'] = 'Порожня папка';
|
||||||
|
$_['text_grid_empty_folder_after'] = 'Вилучити порожню папку';
|
||||||
|
$_['text_grid_exif_after'] = 'Очистити метадані';
|
||||||
|
$_['text_grid_exif_before'] = 'Містить EXIF';
|
||||||
|
$_['text_grid_html_after'] = 'Виправити посилання вручну';
|
||||||
|
$_['text_grid_missing_file'] = 'Файл відсутній';
|
||||||
|
$_['text_grid_missing_html'] = 'Картинка не знайдена в описі';
|
||||||
|
$_['text_grid_missing_orig'] = 'Оригінал відсутній';
|
||||||
|
$_['text_grid_missing_orig_after'] = 'Відновити оригінал з кешу';
|
||||||
|
$_['text_grid_no_image'] = 'Немає зображення (порожньо)';
|
||||||
|
$_['text_grid_orph_cache'] = 'Осиротілий кеш';
|
||||||
|
$_['text_grid_orph_cache_after'] = 'Видалити непотрібний кеш';
|
||||||
|
$_['text_grid_ph_brand_after'] = 'Встановити заглушку бренду';
|
||||||
|
$_['text_grid_ph_category_after'] = 'Встановити заглушку категорії';
|
||||||
|
$_['text_grid_ph_product_after'] = 'Встановити заглушку товару';
|
||||||
|
$_['text_grid_small_photo_after'] = 'Рекомендується замінити на більше';
|
||||||
|
$_['text_grid_too_small'] = 'Занадто мале';
|
||||||
|
$_['text_no_relations'] = 'Немає зв’язків у БД';
|
||||||
|
$_['text_action_archive'] = 'Архівувати (в ZIP)';
|
||||||
|
$_['text_action_archive_delete'] = 'Архівувати + Видалити';
|
||||||
|
$_['text_tool_sanitizer'] = 'Санитайзер імен файлів';
|
||||||
|
$_['help_tool_sanitizer'] = 'Масове очищення імен файлів і папок від кирилиці, пробілів та спецсимволів, приведення розширень до єдиного вигляду.';
|
||||||
|
$_['text_description_sanitizer'] = 'Результати аналізу імен файлів для санітаризації за вибраними правилами.';
|
||||||
|
$_['entry_sz_translit'] = 'Транслітерація (кирилиця в латиницю)';
|
||||||
|
$_['entry_sz_spaces'] = 'Замінювати пробіли на символ "_"';
|
||||||
|
$_['entry_sz_special'] = 'Видаляти спеціальні символи';
|
||||||
|
$_['entry_sz_lowercase_name'] = 'Ім`я файлу в нижній регістр';
|
||||||
|
$_['entry_sz_lowercase_ext'] = 'Розширення в нижній регістр';
|
||||||
|
$_['entry_sz_normalize_ext'] = 'Нормалізувати розширення (jpeg -> jpg)';
|
||||||
|
$_['entry_cron_folder_mode'] = 'Режим фільтрації папок';
|
||||||
|
$_['text_cron_folder_mode_exclude'] = 'Сканувати все, крім вибраних (Винятки)';
|
||||||
|
$_['text_cron_folder_mode_include'] = 'Сканирувати тільки вибрані папки';
|
||||||
|
$_['button_select_all'] = 'Вибрати всі';
|
||||||
|
$_['button_deselect_all'] = 'Зняти всі';
|
||||||
|
$_['entry_wm_upload_font'] = 'Завантажити свій шрифт TTF';
|
||||||
|
$_['button_upload_font'] = 'Завантажити шрифт';
|
||||||
|
$_['text_success_font_upload'] = 'Шрифт успішно завантажено!';
|
||||||
|
$_['error_font_upload'] = 'Помилка завантаження шрифту! Дозволені тільки файли .ttf вагою до 5 МБ.';
|
||||||
|
$_['entry_lazy_load'] = 'Прогресивне лениве завантаження';
|
||||||
|
$_['help_lazy_load'] = 'Вмикає преміальне прогресивне відкладене завантаження на вітрині. Зображення замінюються на мікро-прев\'ю та плавно розмиваються (blur-up), підвантажуючись у міру прокручування.';
|
||||||
|
$_['confirm_replace_mode'] = 'УВАГА! Ви обрали режим «Замінювати оригінали». Усі зображення будуть перезаписані безпосередньо на сервері. Наполегливо рекомендуємо зробити резервну копію. Ви впевнені, що хочете продовжити?';
|
||||||
|
$_['text_compare'] = 'Порівняти';
|
||||||
|
$_['text_home'] = 'Головна';
|
||||||
|
$_['text_tech_gd'] = 'Бібліотека GD';
|
||||||
|
$_['text_tech_imagick'] = 'Imagick';
|
||||||
|
$_['text_tech_webp'] = 'Підтримка WebP';
|
||||||
|
$_['text_position_1'] = '1 - Зліва вгорі';
|
||||||
|
$_['text_position_2'] = '2 - По центру вгорі';
|
||||||
|
$_['text_position_3'] = '3 - Справа вгорі';
|
||||||
|
$_['text_position_4'] = '4 - Зліва посередині';
|
||||||
|
$_['text_position_5'] = '5 - По центру';
|
||||||
|
$_['text_position_6'] = '6 - Справа посередині';
|
||||||
|
$_['text_position_7'] = '7 - Зліва внизу';
|
||||||
|
$_['text_position_8'] = '8 - По центру внизу';
|
||||||
|
$_['text_position_9'] = '9 - Справа внизу';
|
||||||
|
|
||||||
|
$_['entry_log_level'] = 'Рівень логу';
|
||||||
|
$_['text_log_changed_only'] = 'Тільки змінені';
|
||||||
|
$_['text_log_all'] = 'Всі файли (детально)';
|
||||||
|
$_['text_skipped_no_gain'] = 'Пропущено (без покращення)';
|
||||||
|
$_['text_reset_cache_hint'] = 'Скинути кеш оптимізації (повне пересканування)';
|
||||||
|
$_['confirm_reset_cache'] = 'Скинути кеш оптимізації? Наступне сканування перевірить ВСІ файли знову.';
|
||||||
|
$_['text_cache_cleared'] = 'Кеш оптимізації очищено. Наступне сканування перевірить всі файли.';
|
||||||
|
$_['error_wm_preview'] = 'Помилка генерації прев\'ю водяного знаку.';
|
||||||
|
$_['error_wm_too_large'] = 'Зображення водяного знаку занадто велике (%dx%d px)! Максимально допустимий розмір: %dx%d px.';
|
||||||
|
$_['text_apply_errors_warning'] = 'УВАГА: Деякі файли не вдалося замінити (заблоковані або немає прав):';
|
||||||
|
$_['text_action_compress'] = 'Стиснути зображення';
|
||||||
|
$_['text_estimated'] = 'Прогноз';
|
||||||
|
$_['entry_min_savings_bytes'] = 'Мін. стиснення (байт)';
|
||||||
|
$_['entry_min_savings_percent'] = 'Мін. стиснення (%)';
|
||||||
|
$_['text_optimized'] = 'Оптимізовано';
|
||||||
|
$_['entry_broken_fallback'] = 'Заглушка для битих фото';
|
||||||
|
$_['help_broken_fallback'] = 'Автоматично замінює відсутні або пошкоджені зображення каталогу на вітрині на зображення-заглушку.';
|
||||||
|
$_['entry_fallback_image'] = 'Зображення-заглушка';
|
||||||
|
$_['help_fallback_image'] = 'Виберіть зображення, яке буде показано, якщо оригінальний файл картинки товару чи категорії відсутній. За замовчуванням використовується no_image.png.';
|
||||||
|
$_['text_tool_cmyk'] = 'Конвертер CMYK в RGB';
|
||||||
|
$_['help_tool_cmyk'] = 'Конвертація JPEG зображень з колірного профілю CMYK в sRGB для коректного відображення в браузерах Safari та на пристроях iOS.';
|
||||||
|
$_['text_tool_heavy_files'] = 'Пошук важких файлів';
|
||||||
|
$_['help_tool_heavy_files'] = 'Пошук найважчих оригінальних зображень у каталозі з можливістю їх швидкого стиснення безпосередньо тут.';
|
||||||
|
$_['entry_heavy_files_limit'] = 'Макс. кількість знайдених файлів (всього)';
|
||||||
|
$_['text_action_convert_rgb'] = 'Конвертувати в RGB';
|
||||||
|
$_['text_description_cmyk'] = 'Знайдено файли в колірному просторі CMYK. Конвертація в sRGB гарантує колірне відображення на всіх платформах, включаючи iOS/macOS.';
|
||||||
|
$_['text_description_heavy'] = 'Список із %d найважчих файлів у каталозі зображень. Ви можете оптимізувати їх безпосередньо тут.';
|
||||||
|
$_['text_cron_folder_hint_exclude_all'] = 'Статус: Скануватимуться всі папки (винятки не обрані).';
|
||||||
|
$_['text_cron_folder_hint_exclude_some'] = 'Статус: Скануватимуться всі папки, ОКРІМ %d позначених.';
|
||||||
|
$_['text_cron_folder_hint_include_some'] = 'Статус: Скануватимуться тільки %d позначених папок.';
|
||||||
|
$_['text_cron_folder_hint_include_none'] = 'УВАГА: Жодної папки не обрано! Крон нічого не буде сканувати.';
|
||||||
|
$_['text_action_apply_changes'] = 'Застосувати вказані зміни';
|
||||||
|
$_['entry_wm_status'] = 'Статус водяного знака';
|
||||||
|
$_['text_disabled'] = 'Відключено';
|
||||||
|
$_['entry_rule_name'] = 'Назва правила';
|
||||||
|
$_['entry_rule_status'] = 'Статус правила';
|
||||||
|
$_['entry_action'] = 'Дія';
|
||||||
|
$_['entry_ph_status'] = 'Статус заглушок';
|
||||||
|
$_['entry_sanitizer_limit'] = 'Макс. файлів для пошуку (ліміт)';
|
||||||
|
$_['entry_heavy_files_min_size'] = 'Мінимальний розмір';
|
||||||
|
$_['entry_png_jpg_limit'] = 'Макс. файлів для пошуку (ліміт)';
|
||||||
|
$_['entry_png_jpg_min_size'] = 'Мінімальний розмір';
|
||||||
|
$_['text_wm_rule_title'] = 'Правило водяного знака';
|
||||||
|
$_['button_close'] = 'Закрити';
|
||||||
|
$_['text_ph_rule_title'] = 'Правило заглушки';
|
||||||
|
$_['entry_ph_image'] = 'Зображення заглушки';
|
||||||
|
$_['button_clear_cache_wm'] = 'Очистити кеш (застосувати водяний знак)';
|
||||||
|
$_['text_active'] = 'Активна';
|
||||||
|
$_['text_error'] = 'Не активна';
|
||||||
|
$_['text_th_dupe_delete'] = 'Файл для видалення (Дублікат)';
|
||||||
|
$_['text_th_dupe_keep'] = 'Файл для збереження (Оригінал)';
|
||||||
|
$_['text_dupe_original_label'] = 'Оригінал';
|
||||||
|
$_['text_dupe_duplicate_label'] = 'Дублікат';
|
||||||
|
|
||||||
|
$_['text_disk_usage'] = 'Використання диска';
|
||||||
|
$_['text_cumulative_stats'] = 'Статистика оптимізації';
|
||||||
|
$_['text_disk_catalog'] = 'Каталог зображень';
|
||||||
|
$_['text_disk_cache'] = 'Кеш OC';
|
||||||
|
$_['text_disk_trash'] = 'Кошик модуля';
|
||||||
|
$_['text_disk_other'] = 'Інше';
|
||||||
|
$_['text_disk_free'] = 'Вільно';
|
||||||
|
$_['text_total_files_opt'] = 'Файлів оброблено';
|
||||||
|
$_['text_total_saved'] = 'Всього зекономлено';
|
||||||
|
$_['text_avg_saving_pct'] = 'Середня економія';
|
||||||
|
$_['text_stats_hint'] = 'Статистика зберігається в БД сайту (враховує Оптимізацію, Очищення, Інструменти та Крон)';
|
||||||
|
$_['text_reset_stats'] = 'Скинути статистику';
|
||||||
|
$_['text_reset_stats_confirm']= 'Ви впевнені, що хочете скинути всю статистику з БД?';
|
||||||
|
$_['text_export_import'] = 'Експорт / Імпорт налаштувань';
|
||||||
|
$_['button_export_settings'] = 'Експорт налаштувань (JSON)';
|
||||||
|
$_['button_import_settings'] = 'Імпортувати налаштування';
|
||||||
|
$_['help_export_settings'] = 'Завантажити всі налаштування модуля в JSON-файл';
|
||||||
|
$_['help_import_settings'] = 'Завантажити раніше експортований JSON для відновлення налаштувань';
|
||||||
|
$_['text_import_success'] = 'Налаштування успішно імпортовані. Перезавантажте сторінку для застосування.';
|
||||||
|
$_['error_import_file'] = 'Файл не завантажено або помилка завантаження';
|
||||||
|
$_['error_import_invalid'] = 'Некоректний файл налаштувань (невірний модуль або формат)';
|
||||||
|
$_['text_click_to_load'] = 'Натисніть ↑ для завантаження даних диска';
|
||||||
|
|
||||||
|
|
||||||
|
$_['tab_formats'] = 'Формати зображень';
|
||||||
|
|
||||||
|
$_['text_disk_quota_legend'] = 'Ліміти диска хостингу (вручну)';
|
||||||
|
$_['text_disk_quota_desc'] = 'Якщо графік дискового простору показує некоректні дані (фізичний диск сервера замість ліміту вашого хостингу), ви можете вказати ліміти вашого тарифу вручну. Вкажіть 0, щоб використовувати автовизначення.';
|
||||||
|
$_['entry_disk_quota_total'] = 'Виділено диска на хостингу (ГБ)';
|
||||||
|
$_['entry_disk_quota_used'] = 'Зайнято диска на хостингу всього (ГБ)';
|
||||||
|
$_['entry_auto_disk'] = 'Автооновлення при вході';
|
||||||
|
|
||||||
|
$_['entry_cron_task_name'] = 'Назва задачі';
|
||||||
|
$_['entry_cron_task_summary'] = 'Параметри стиснення';
|
||||||
|
$_['button_add_cron_task'] = 'Додати задачу';
|
||||||
|
$_['button_copy_cron_url'] = 'Копіювати URL';
|
||||||
|
$_['text_cron_recommended_url'] = 'URL для запуску задачі крону:';
|
||||||
|
$_['entry_cron_batch_limit'] = 'Ліміт пакета за один запуск Крона (файлів)';
|
||||||
|
$_['help_cron_batch_limit'] = 'Максимальна кількість файлів, що обробляються за один запуск Крона. За замовчуванням 100. Рекомендується від 50 до 300 для запобігання таймауту виконання на хостингу.';
|
||||||
|
|
||||||
|
$_['text_license_required'] = 'Необхідний ліцензійний ключ';
|
||||||
|
$_['text_license_required_desc'] = 'Будь ласка, введіть ліцензійний ключ для активації модуля. Усі функції налаштувань та оптимізації заблоковані до введення валідного ключа.';
|
||||||
|
$_['entry_token_desc'] = 'Введіть токен активації, виданий для вашого основного домену. Ви можете отримати його в особистому кабінеті на форумі або звернувшись у підтримку.';
|
||||||
|
$_['button_activate'] = 'Активувати модуль';
|
||||||
|
$_['text_support'] = 'Технічна підтримка';
|
||||||
|
$_['text_support_desc'] = 'Якщо у вас ще немає ключа або виникли проблеми, будь ласка, повідомте номер вашого замовлення та домен.';
|
||||||
|
|
||||||
|
$_['entry_wm_max_width'] = 'Макс. ширина водяного знака (px)';
|
||||||
|
$_['entry_wm_max_height'] = 'Макс. висота водяного знака (px)';
|
||||||
|
$_['help_wm_max_width'] = 'Якщо вихідне зображення водяного знака перевищує цю ширину, воно буде автоматично масштабоване. Вкажіть 0 або залиште порожнім для значення за замовчуванням (800px).';
|
||||||
|
$_['help_wm_max_height'] = 'Якщо вихідне зображення водяного знака перевищує цю висоту, воно буде автоматично масштабоване. Вкажіть 0 або залиште порожнім для значення за замовчуванням (800px).';
|
||||||
|
$_['entry_disk_status'] = 'Увімкнути сканування диска та графік';
|
||||||
|
$_['help_disk_status'] = 'Якщо увімкнено, модуль періодично скануватиме обсяг папки картинок та відображатиме круговую діаграму. Рекомендується вимкнути на великих сайтах для прискорення завантаження панелі.';
|
||||||
|
$_['text_disk_settings_title'] = 'Налаштування лімітів та сканування диска';
|
||||||
|
|
||||||
|
$_['button_online_instruction'] = 'Інструкція до модуля (Онлайн)';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,610 @@
|
||||||
|
<?php
|
||||||
|
$_['heading_title_raw'] = 'Image Optimizer [NAT]: Стиснення оригіналів та видалення сміття';
|
||||||
|
$_['heading_title'] = '<b>Image Optimizer [NAT]:</b> Стиснення оригіналів та видалення сміття';
|
||||||
|
$_['text_extension'] = 'Розширення';
|
||||||
|
$_['text_edit'] = 'Налаштування модуля';
|
||||||
|
$_['text_success'] = 'Налаштування успішно збережено!';
|
||||||
|
$_['entry_warning'] = 'УВАГА: Обов`язково зробіть бекап файлів сайту і особливо папки /image/catalog перед початком роботи!';
|
||||||
|
$_['text_tech'] = 'Перевірка технологій сервера:';
|
||||||
|
$_['text_author'] = 'Технічна підтримка та побажання: <a href="mailto:info@nat.od.ua">info@nat.od.ua</a>';
|
||||||
|
$_['tab_optimize'] = 'Оптимізація та Ресайз';
|
||||||
|
$_['tab_cleaner'] = 'Очищення невикористовуваних зображень';
|
||||||
|
$_['tab_info'] = 'Інфо / Екосистема [NAT]';
|
||||||
|
$_['tab_settings'] = 'Налаштування';
|
||||||
|
$_['tab_tools'] = 'Інструменти (pro)';
|
||||||
|
$_['tab_cron'] = 'Крон-завдання';
|
||||||
|
$_['entry_mode'] = 'Режим роботи';
|
||||||
|
$_['text_copy'] = 'Створити копію (безпечно)';
|
||||||
|
$_['text_replace'] = 'Замінювати оригінали (потребує бекап!)';
|
||||||
|
$_['entry_folder'] = 'Ім`я папки для копії';
|
||||||
|
$_['entry_batch'] = 'Файлів за прохід';
|
||||||
|
$_['entry_log_limit'] = 'Рядків логу на екрані';
|
||||||
|
$_['entry_max_width'] = 'Макс. ширина (px) [0 - без ліміту]';
|
||||||
|
$_['entry_max_height'] = 'Макс. висота (px) [0 - без ліміту]';
|
||||||
|
$_['entry_jpg'] = 'Якість JPG (0-100)';
|
||||||
|
$_['entry_png'] = 'Стиснення PNG (0-9)';
|
||||||
|
$_['entry_webp'] = 'Якість WebP (0-100)';
|
||||||
|
$_['entry_targets'] = 'Що оптимізувати?';
|
||||||
|
$_['text_all_catalog'] = '[ Весь каталог image/catalog ]';
|
||||||
|
$_['text_root_files'] = 'Файли тільки в корені image/catalog';
|
||||||
|
$_['entry_threshold'] = 'Поріг заміни (%)';
|
||||||
|
$_['help_threshold'] = '0: замінювати тільки якщо вага стала меншою. 10: дозволити збільшення ваги до 10%.';
|
||||||
|
$_['entry_token'] = 'Токен активації (на корінь домену)';
|
||||||
|
$_['entry_status'] = 'Статус модуля';
|
||||||
|
$_['entry_menu_position'] = 'Позиція меню [NAT]';
|
||||||
|
$_['text_menu_module_only'] = 'Тільки в модулях';
|
||||||
|
$_['text_menu_header'] = 'У шапці (Header)';
|
||||||
|
$_['text_menu_sidebar'] = 'У бічному меню (Sidebar)';
|
||||||
|
$_['text_menu_both'] = 'Скрізь (Шапка + Сайдбар)';
|
||||||
|
$_['text_status_on'] = 'Увімкнено';
|
||||||
|
$_['text_status_off'] = 'Вимкнено';
|
||||||
|
$_['entry_engine'] = 'Рушій обробки зображень';
|
||||||
|
$_['text_engine_gd'] = 'GD (Стандарт)';
|
||||||
|
$_['text_engine_imagick'] = 'Imagick (Висока якість, збереження профілів sRGB)';
|
||||||
|
$_['entry_license'] = 'Ліцензія';
|
||||||
|
$_['text_cleaner_info'] = 'Цей інструмент шукає файли, які фізично існують на диску, але ніде не використовуються в базі даних або файлах шаблону.';
|
||||||
|
$_['entry_clean_targets'] = 'В яких папках шукати сміття?';
|
||||||
|
$_['entry_extended_log'] = 'Розширений лог (показати використовувані photo і де вони знайдені)';
|
||||||
|
$_['entry_process_broken'] = 'Враховувати файли з битим кодуванням (імена з символом "?")';
|
||||||
|
$_['button_scan_trash'] = 'ЗНАЙТИ СМІТТЯ';
|
||||||
|
$_['button_quarantine'] = 'В Карантин (Безпечно)';
|
||||||
|
$_['button_delete_trash'] = 'Видалити назавжди';
|
||||||
|
$_['button_empty_quarantine'] = 'Очистити папку Карантину';
|
||||||
|
$_['button_restore_quarantine'] = 'Повернути з Карантину';
|
||||||
|
$_['text_scan_result'] = 'Результати сканування';
|
||||||
|
$_['text_trash_files'] = 'Сміттєвих файлів: ';
|
||||||
|
$_['text_trash_size'] = 'Потенційно звільниться: ';
|
||||||
|
$_['button_start'] = 'СТАРТ ОПТИМІЗАЦІЇ';
|
||||||
|
$_['button_pause'] = 'ПАУЗА';
|
||||||
|
$_['button_stop'] = 'ЗУПИНИТИ';
|
||||||
|
$_['button_continue'] = 'ПРОДОВЖИТИ';
|
||||||
|
$_['button_start_new'] = 'СТАРТ (Новий запуск)';
|
||||||
|
$_['button_download_log'] = 'Завантажити лог в TXT';
|
||||||
|
$_['button_download'] = 'Завантажити';
|
||||||
|
$_['button_save'] = 'Зберегти';
|
||||||
|
$_['button_cancel'] = 'Скасувати';
|
||||||
|
$_['text_progress'] = 'Прогрес:';
|
||||||
|
$_['text_old_size'] = 'Було:';
|
||||||
|
$_['text_new_size'] = 'Стало:';
|
||||||
|
$_['text_savings'] = 'Економія:';
|
||||||
|
$_['text_detailed_log'] = 'Детальний лог';
|
||||||
|
$_['text_page'] = 'Стор.';
|
||||||
|
$_['text_waiting'] = 'Очікування запуску...';
|
||||||
|
$_['text_enabled'] = 'Увімкнено';
|
||||||
|
$_['text_disabled_error'] = 'Вимкнено (ПОМИЛКА)';
|
||||||
|
$_['text_supported'] = 'Підтримується';
|
||||||
|
$_['text_no'] = 'Ні';
|
||||||
|
$_['error_permission'] = 'У вас немає прав для керування модулем!';
|
||||||
|
$_['error_license'] = 'Помилка доступу: Невірний токен активації для цього домену!';
|
||||||
|
$_['error_domain'] = ' (Домен: ';
|
||||||
|
$_['text_found'] = 'Знайдено файлів: ';
|
||||||
|
$_['text_compressed'] = 'Стиснуто';
|
||||||
|
$_['text_original'] = 'Оригінал';
|
||||||
|
$_['text_error_process'] = 'Помилка обробки: ';
|
||||||
|
$_['error_log_empty'] = 'Лог порожній! Спочатку запустіть процес.';
|
||||||
|
$_['text_report_header'] = '=== ЗВІТ ===';
|
||||||
|
$_['text_total_files'] = 'Всього файлів: ';
|
||||||
|
$_['text_searching'] = 'Пошук файлів...';
|
||||||
|
$_['error_ajax'] = 'Помилка: ';
|
||||||
|
$_['text_resumed'] = '▶ ПРОЦЕС ВІДНОВЛЕНО...';
|
||||||
|
$_['text_paused'] = '⏸ ПАУЗА. Процес призупинено.';
|
||||||
|
$_['confirm_stop'] = 'Ви впевнені, що хочете повністю перервати процес?';
|
||||||
|
$_['confirm_delete'] = 'УВАГА! Файли будуть видалені з сервера назавжди без можливості відновлення! Продовжити?';
|
||||||
|
$_['confirm_empty_q'] = 'Ви впевнені, що хочете повністю очистити папку карантину?';
|
||||||
|
$_['confirm_restore'] = 'Всі файли з папки карантину будуть повернуті на свої місця. Продовжити?';
|
||||||
|
$_['button_stopping'] = 'Зупинка...';
|
||||||
|
$_['text_stopped_user'] = '🛑 ПРОЦЕС ПЕРЕРВАНО КОРИСТУВАЧЕМ!';
|
||||||
|
$_['text_increase'] = 'Збільшення';
|
||||||
|
$_['text_done'] = '✅ ГОТОВО! Процес завершено.';
|
||||||
|
$_['error_timeout'] = 'Таймаут сервера. Автоповтор через 3 секунди...';
|
||||||
|
$_['text_building_index'] = 'Крок 1/2: Індексація БД та шаблонів (пошук фото, що використовуються)...';
|
||||||
|
$_['text_comparing'] = 'Крок 2/2: Порівняння фізичних файлів з індексом...';
|
||||||
|
$_['text_quarantine_done'] = '✅ Процес перенесення в image/catalog_trash/ завершено!';
|
||||||
|
$_['text_deleted_done'] = '✅ Процес видалення сміття завершено!';
|
||||||
|
$_['text_quarantine_empty'] = '✅ Папку карантину успішно видалено з сервера!';
|
||||||
|
$_['text_restore_done'] = '✅ Файли успішно повернуто з карантину в робочу папку!';
|
||||||
|
$_['text_quarantine_move'] = 'В карантині: ';
|
||||||
|
$_['text_deleted_file'] = 'Видалено: ';
|
||||||
|
$_['text_no_trash'] = 'У вибраних папках сміття не знайдено! Всі файли використовуються.';
|
||||||
|
$_['text_scanning_dirs'] = 'Скануємо директорії: ';
|
||||||
|
$_['text_log_used'] = '[ВИКОРИСТОВУЄТЬСЯ]';
|
||||||
|
$_['text_log_trash'] = '[СМІТТЯ]';
|
||||||
|
$_['text_log_deleted'] = '[ВИДАЛЕНО]';
|
||||||
|
$_['text_log_del_err'] = '[ПОМИЛКА ВИДАЛЕННЯ]';
|
||||||
|
$_['text_log_quarantine'] = '[В КАРАНТИН]';
|
||||||
|
$_['text_log_q_err'] = '[ПОМИЛКА ПЕРЕНЕСЕННЯ]';
|
||||||
|
$_['text_log_restored'] = '[ВІДНОВЛЕНО]';
|
||||||
|
$_['text_log_rest_err'] = '[ПОМИЛКА ВІДНОВЛЕННЯ]';
|
||||||
|
$_['text_used_in'] = 'у: ';
|
||||||
|
$_['text_analyzing'] = 'Аналіз бази даних...';
|
||||||
|
$_['text_clean_empty'] = 'Чисто! Сміття немає.';
|
||||||
|
$_['text_processing'] = 'Обробка...';
|
||||||
|
$_['text_restoring'] = 'Відновлення файлів...';
|
||||||
|
$_['text_all_folders'] = 'image/catalog/ (Та всі вкладені)';
|
||||||
|
$_['text_root_folder'] = 'image/catalog/ (Тільки корінь)';
|
||||||
|
$_['text_q_empty_err'] = 'Папка карантину порожня або не існує.';
|
||||||
|
$_['error_token'] = 'Невірний токен. Перезавантажте сторінку.';
|
||||||
|
$_['text_apply_title'] = 'Оптимізацію завершено в папку: ';
|
||||||
|
$_['text_apply_info'] = 'Перевірте результат. Якщо все влаштовує — застосуйте зміни до основного каталогу.';
|
||||||
|
$_['entry_apply_backup'] = 'Перенести зі створенням бекапу (в Карантин)';
|
||||||
|
$_['entry_apply_replace'] = 'Замінити оригінали безповоротно';
|
||||||
|
$_['button_apply_main'] = 'ЗАСТОСУВАТИ ДО ОСНОВНОГО КАТАЛОГУ';
|
||||||
|
$_['button_delete_copies'] = 'Видалити тимчасові копії (скасування)';
|
||||||
|
$_['button_full_cleanup'] = 'Повне очищення всіх тимчасових папок та бекапів';
|
||||||
|
$_['text_apply_success'] = '✅ Файли успішно перенесено. ';
|
||||||
|
$_['text_apply_backup_ok'] = 'Оригінали збережено в папку: ';
|
||||||
|
$_['text_apply_no_backup'] = 'Оригінали видалено.';
|
||||||
|
$_['text_error_source'] = 'Помилка: Папку з оптимізованими файлами не знайдено.';
|
||||||
|
$_['confirm_full_cleanup'] = 'УВАГА! Ця дія безповоротно видалить УСІ папки бекапів (backup_*) та тимчасові папки з копіями. Продовжити?';
|
||||||
|
$_['text_tools_desc'] = 'Глобальні сканери та інструменти для роботи з файловою системою і БД зображень.';
|
||||||
|
$_['text_tool_select'] = 'Виберіть інструмент:';
|
||||||
|
$_['text_group_scanners'] = 'Сканери та Аналіз';
|
||||||
|
$_['text_group_generators'] = 'Генератори та Обробка';
|
||||||
|
$_['text_group_experimental'] = 'Експериментальні функції (BETA)';
|
||||||
|
$_['text_experimental_warn'] = 'Увага: Експериментальні функції зачіпають системні файли або базу даних. Настійно рекомендується зробити бекап!';
|
||||||
|
$_['text_tool_broken_db'] = 'Сканер битих/порожніх фото БД';
|
||||||
|
$_['text_tool_watermark'] = 'Динамічний Вотермарк (Тільки на кеш)';
|
||||||
|
$_['text_tool_duplicates'] = 'Поиск дубликатов файлов (за MD5)';
|
||||||
|
$_['text_tool_png_jpg'] = 'Конвертер важких PNG у JPG (сканер файлів без прозорості)';
|
||||||
|
$_['text_tool_placeholders'] = 'Генератор заглушок (Замість No Image)';
|
||||||
|
$_['text_tool_exif'] = 'Очищення EXIF-даних (Геотеги/Мета)';
|
||||||
|
$_['text_tool_small_photos'] = 'Сканер занадто дрібних фото';
|
||||||
|
$_['text_tool_html_broken'] = 'Пошук битих картинок в HTML (Описах)';
|
||||||
|
$_['text_tool_empty_folders'] = 'Очищення порожніх папок (image/catalog)';
|
||||||
|
$_['text_tool_smart_cache'] = 'Розумне очищення кешу зображень';
|
||||||
|
$_['text_tool_folder_tree'] = 'Дерево папок (Статистика ваги)';
|
||||||
|
$_['text_tool_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load (Без БД)';
|
||||||
|
$_['text_tool_translit'] = 'Транслітерація назв файлів';
|
||||||
|
$_['text_tool_cache_restore'] = 'Відновлення оригіналів із Кешу';
|
||||||
|
$_['entry_wm_type'] = 'Тип водяного знака';
|
||||||
|
$_['text_wm_image'] = 'Зображення (PNG)';
|
||||||
|
$_['text_wm_text'] = 'Текст';
|
||||||
|
$_['entry_wm_image_path'] = 'Шлях до зображення';
|
||||||
|
$_['entry_wm_text_val'] = 'Текст водяного знака';
|
||||||
|
$_['entry_wm_position'] = 'Позиція (1-9)';
|
||||||
|
$_['entry_wm_opacity'] = 'Прозорість (0-100)';
|
||||||
|
$_['entry_wm_category'] = 'Тільки для Категорій';
|
||||||
|
$_['entry_wm_brand'] = 'Тільки для Брендів';
|
||||||
|
$_['entry_min_width'] = 'Мінімальна ширина (px)';
|
||||||
|
$_['entry_min_height'] = 'Мінімальна висота (px)';
|
||||||
|
$_['entry_ph_product'] = 'Заглушка для Товарів';
|
||||||
|
$_['entry_ph_category'] = 'Заглушка для Категорій';
|
||||||
|
$_['entry_ph_brand'] = 'Заглушка для Брендів';
|
||||||
|
$_['button_run_tool'] = 'Запустити інструмент';
|
||||||
|
$_['button_scan_tool'] = 'Сканувати';
|
||||||
|
$_['button_fix_tool'] = 'Виправити знайдене';
|
||||||
|
$_['text_th_path'] = 'Файл / Шлях';
|
||||||
|
$_['text_th_size'] = 'Розмір';
|
||||||
|
$_['text_th_action'] = 'Дія';
|
||||||
|
$_['text_th_status'] = 'Статус';
|
||||||
|
$_['text_th_problem'] = 'Проблема / Значення';
|
||||||
|
$_['text_cron_title'] = 'Налаштування Cron';
|
||||||
|
$_['text_cron_desc'] = 'Додайте команду в Cron хостингу для автоматичного фонового стиснення.';
|
||||||
|
$_['entry_cron_new_only'] = 'Обробляти тільки нові (необроблені) файли';
|
||||||
|
$_['entry_cron_folders'] = 'Папки для сканування (залиште порожнім для всього каталогу)';
|
||||||
|
$_['text_promo_title'] = 'Інші модулі серії [NAT]';
|
||||||
|
$_['text_promo_desc'] = 'Модулі серії [NAT] – це інструменти для глибокої оптимізації OpenCart. Ми фокусуємося на автоматизації рутини, прискоренні бази даних та очищенні серверів від сміття. Усі модулі мають відкритий вихідний код та єдину логіку управління.';
|
||||||
|
$_['text_support'] = 'Технічна підтримка та побажання:';
|
||||||
|
$_['button_more'] = 'Дивитися всі модулі на OpenCart.com';
|
||||||
|
$_['button_more_forum'] = 'Opencartforum';
|
||||||
|
$_['text_mod_cat_opt'] = 'Catalog Optimizer [NAT]';
|
||||||
|
$_['text_mod_cat_opt_desc'] = 'Приховування порожніх категорій і брендів + SEO сортування товарів (у наявності зверху) + Очищення сміття БД.';
|
||||||
|
$_['text_mod_new_arrivals'] = 'New Arrivals [NAT]: Новинки за датами';
|
||||||
|
$_['text_mod_new_arrivals_desc'] = 'Автоматична SEO-сторінка новинок. Відображає новинки суворо за реальною датою додавання. Слайдери, сітка та розумний сайдбар архіву дат.';
|
||||||
|
$_['text_mod_img_opt'] = 'Image Optimizer [NAT]';
|
||||||
|
$_['text_mod_img_opt_desc'] = '<strong>Поточний модуль.</strong> Стиснення та ресайз ОРИГІНАЛІВ фото (image/catalog) у WebP + Очищення хостингу від невикористаних зображень.';
|
||||||
|
$_['text_mod_dom_scan'] = 'Domain Scanner [NAT]';
|
||||||
|
$_['text_mod_dom_scan_desc'] = 'Пошук і чищення зовнішніх посилань і HTTP-картинок у БД та файлах теми. Ідеально для HTTPS або очищення після парсингу.';
|
||||||
|
$_['text_mod_poll'] = 'Poll Widget [NAT]';
|
||||||
|
$_['text_mod_poll_desc'] = 'Створення опитувань та голосувань із візуальним конструктором дизайну, глибокою статистикою та захистом від накруток.';
|
||||||
|
$_['text_mod_db_opt'] = 'Database Optimizer [NAT]';
|
||||||
|
$_['text_mod_db_opt_desc'] = 'Інтелектуальне очищення сміття в базі даних, управління системними логами та додавання критично важливих індексів для прискорення.';
|
||||||
|
$_['text_mod_im_ex'] = 'Import/Export [NAT]';
|
||||||
|
$_['text_mod_im_ex_desc'] = 'Швидкий імпорт/експорт цін і залишків з файлів xls/xlsx/csv/xml/json або за посиланням. Маппінг полів, робота по Cron, текстові функції.';
|
||||||
|
$_['text_mod_admin_tools'] = 'Admin Tools [NAT]';
|
||||||
|
$_['text_mod_admin_tools_desc'] = 'Зручні інструменти адміністратора: вхід під клієнтом, кастомізація адмінки, управління правами користувачів та приховування непотрібних пунктів меню.';
|
||||||
|
$_['text_mod_utm_tracker'] = 'Order UTM Tracker [NAT]';
|
||||||
|
$_['text_mod_utm_tracker_desc'] = 'Автоматичне відстеження UTM-міток при оформленні замовлення. Зберігає джерело переходу, кампанію, ключові слова та виводить ці дані в замовленні для аналітики реклами.';
|
||||||
|
$_['text_info_title_promo_top_bar'] = 'Promo Top Bar [NAT]: Верхній рекламний інфо-баннер, інформаційна смуга над шапкою, рухомий рядок та топ-баннер';
|
||||||
|
$_['text_info_desc_promo_top_bar'] = 'Створення інтерактивних промо-панелей та слайд-шоу в шапці сайту з конструктором блоків, таймерами, формою підписки та гнучким націлюванням.';
|
||||||
|
$_['text_tool_no_image'] = 'Товари без головного фото (порожньо в БД)';
|
||||||
|
$_['text_problem_main_broken'] = 'Бите головне фото (файл видалено)';
|
||||||
|
$_['text_problem_add_broken'] = 'Бите дод. фото (файл видалено)';
|
||||||
|
$_['text_problem_no_image'] = 'Відсутнє головне фото';
|
||||||
|
$_['text_err_dir'] = 'Помилка: Директорію не знайдено або невірний шлях.';
|
||||||
|
$_['text_err_no_queue'] = 'Помилка: Чергу не знайдено. Спочатку запустіть сканування.';
|
||||||
|
$_['text_log_del_empty_folder'] = 'Видалено порожню папку: ';
|
||||||
|
$_['text_log_no_empty_folders'] = 'Порожніх папок в image/catalog/ не знайдено.';
|
||||||
|
$_['text_log_total_empty_folders'] = 'Всього видалено порожніх папок: ';
|
||||||
|
$_['text_log_cache_cleared'] = 'Кеш зображень успішно очищено.';
|
||||||
|
$_['text_log_wm_smart_mode'] = 'Вотермарки працюють в SMART-режимі: оригінали не зачіпаються, логотип накладається лише при генерації кешу.';
|
||||||
|
$_['text_log_scan_dupes'] = 'Сканування image/catalog/ на дублікати (за хешем MD5)... Це може зайняти час.';
|
||||||
|
$_['text_log_found_dupe'] = 'Знайдено дублікат: ';
|
||||||
|
$_['text_log_no_dupes'] = 'Дублікатів не знайдено.';
|
||||||
|
$_['text_log_total_dupes'] = 'Знайдено дублікатів: %s. Потенційна економія: %s';
|
||||||
|
$_['text_log_fix_dupes_prompt'] = 'Натисніть "Виправити знайдене" для перелінкування БД на оригинал та видалення дублів.';
|
||||||
|
$_['text_log_fixed_dupe'] = 'Виправлено та видалено дублікат: ';
|
||||||
|
$_['text_log_success_dupes'] = 'Успішно виправлено дублікатів: %s. Посилання в БД оновлено.';
|
||||||
|
$_['text_log_scan_png'] = 'Пошук важких PNG файлів без прозорості...';
|
||||||
|
$_['text_log_no_png'] = 'Відповідних PNG файлів не знайдено.';
|
||||||
|
$_['text_log_total_png'] = 'Знайдено PNG без прозорості: %s. Натисніть "Виправити" для конвертації в JPG.';
|
||||||
|
$_['text_log_converted_jpg'] = 'Сконвертовано в JPG: ';
|
||||||
|
$_['text_log_success_png'] = 'Успішно сконвертовано %s файлів. Звільнено: %s';
|
||||||
|
$_['text_log_ph_prod'] = 'Оновлено товарів заглушкою: ';
|
||||||
|
$_['text_log_ph_cat'] = 'Оновлено категорій заглушкою: ';
|
||||||
|
$_['text_log_ph_brand'] = 'Оновлено брендів заглушкою: ';
|
||||||
|
$_['text_log_ph_empty'] = 'Заглушки не вибрані в налаштуваннях.';
|
||||||
|
$_['text_log_scan_exif'] = 'Сканування EXIF-даних (мета-теги камер)...';
|
||||||
|
$_['text_log_stripped_exif'] = 'Очищено EXIF: ';
|
||||||
|
$_['text_log_no_exif'] = 'Файлів з EXIF для очищення не знайдено.';
|
||||||
|
$_['text_log_success_exif'] = 'Очищено EXIF у %s файлів. Звільнено: %s';
|
||||||
|
$_['text_log_scan_small'] = 'Пошук фото розміром менше %sx%s px...';
|
||||||
|
$_['text_log_too_small'] = 'Занадто мале (%sx%s): ';
|
||||||
|
$_['text_log_no_small'] = 'Дрібних фото не знайдено.';
|
||||||
|
$_['text_log_total_small'] = 'Знайдено дрібних фото: %s. Будь ласка, замініть їх на якісні.';
|
||||||
|
$_['text_log_html_broken'] = 'Битией IMG в HTML таблиці %s (ID: %s): ';
|
||||||
|
$_['text_log_no_html_broken'] = 'Битих картинок в HTML-описах не знайдено.';
|
||||||
|
$_['text_log_total_html_broken'] = 'Знайдено битих посилань в HTML: %s. Виправте їх вручну.';
|
||||||
|
$_['text_log_scan_smart_cache'] = 'Пошук втрачених файлів у image/cache/...';
|
||||||
|
$_['text_log_del_orph_cache'] = 'Видалено втрачений кеш: ';
|
||||||
|
$_['text_log_no_orph_cache'] = 'Втраченого кешу не знайдено.';
|
||||||
|
$_['text_log_success_smart_cache'] = 'Видалено файлів втраченого кешу: %s. Звільнено: %s';
|
||||||
|
$_['text_log_scan_translit'] = 'Пошук файлів з кирилицею або пробілами...';
|
||||||
|
$_['text_log_no_bad_names'] = 'Файлів з некоректними іменами не знайдено.';
|
||||||
|
$_['text_log_total_bad_names'] = 'Знайдено файлів з кирилицею/пробілами: %s. Натисніть "Виправити" для транслітерації та оновлення БД.';
|
||||||
|
$_['text_log_renamed'] = 'Перейменовано: ';
|
||||||
|
$_['text_log_success_translit'] = 'Успішно транслітеровано файлів: %s. БД оновлено.';
|
||||||
|
$_['text_log_scan_restore'] = 'Сканирование image/cache/ для відновлення втрачених оригіналів...';
|
||||||
|
$_['text_log_restored_cache'] = 'Відновлено з кешу: ';
|
||||||
|
$_['text_log_no_lost_orig'] = 'Відсутніх оригіналів у кеші не знайдено.';
|
||||||
|
$_['text_log_success_restore'] = 'Успішно відновлено оригіналів з кешу: %s.';
|
||||||
|
$_['error_invalid_folder'] = 'Помилка: Неприпустиме ім\'я папки!';
|
||||||
|
$_['text_formats_title'] = 'Сучасні формати (WebP & SVG)';
|
||||||
|
$_['text_formats_desc'] = 'Налаштування інтеграції сучасних форматів у файлову систему та шаблони OpenCart.';
|
||||||
|
$_['entry_support_svg'] = 'Підтримка завантаження SVG';
|
||||||
|
$_['help_support_svg'] = 'Дозволяє завантаження векторних SVG-зображень через стандартний Filemanager та їх безпечне виведення на вітрині без спотворення розмірів.';
|
||||||
|
$_['entry_support_svg_autofix'] = 'Автофікс CSS-стилів SVG';
|
||||||
|
$_['help_support_svg_autofix'] = 'Застосовує ізольовані CSS-стилі розмірів для каталожних SVG-товарів без впливу на прапорці мов та системні іконки.';
|
||||||
|
$_['entry_support_webp'] = 'Підтримка завантаження WebP (+ TrueFileManager)';
|
||||||
|
$_['help_support_webp'] = 'Дозволяє вибирати, завантажувати та шукати WebP-файли через стандартний FileManager та TrueFileManager (elFinder).';
|
||||||
|
$_['entry_truefilemanager_webp'] = 'WebP у TrueFileManager';
|
||||||
|
$_['help_truefilemanager_webp'] = 'Додає підтримку завантаження, попереднього перегляду та ескізів WebP у TrueFileManager від sitecreator (якщо його встановлено).';
|
||||||
|
$_['entry_webp_on_fly'] = 'On-the-Fly WebP + Lazy Load';
|
||||||
|
$_['help_webp_on_fly'] = 'Блискавична заміна: автоматично змінює розширення .jpg/.png на .webp прямо в HTML-виводі вітрини та додає атрибут loading="lazy". Не зачіпає базу даних!';
|
||||||
|
$_['entry_auto_fake_jpg_guard'] = 'Захист від фейкових JPG (On-the-Fly Guard)';
|
||||||
|
$_['help_auto_fake_jpg_guard'] = 'Автоматично виявляє при завантаженні та імпорті (1С, парсери, CSV, FileManager) файли PNG у масці .jpg, що викликають чорний фон на вітрині, та виправляє їх на льоту при першому зверненні.';
|
||||||
|
$_['entry_fake_jpg_mode'] = 'Режим виправлення фейкових JPG:';
|
||||||
|
$_['text_fake_jpg_mode_jpg'] = 'Конвертувати у чистий JPG з білим фоном (#FFFFFF) [Рекомендовано]';
|
||||||
|
$_['text_fake_jpg_mode_png'] = 'Зберегти як справжній PNG (прозорість + оновлення БД)';
|
||||||
|
$_['help_tool_broken_db'] = 'Шукає в базі даних зображення, фізичні файли яких були видалені з сервера. Дозволяє очистити биті посилання.';
|
||||||
|
$_['help_tool_empty_folders'] = 'Рекурсивно сканує директорію image/catalog/ та безпечно видаляє всі папки, в яких немає жодного файлу.';
|
||||||
|
$_['help_tool_folder_tree'] = 'Будує дерево каталогів та показує реальну вагу кожної папки для пошуку "пожирачів" місця.';
|
||||||
|
$_['help_tool_html_broken'] = 'Сканує HTML-описи товарів та категорій на наявність тегів <img> з неіснуючими зображеннями.';
|
||||||
|
$_['help_tool_small_photos'] = 'Знаходить зображення з роздільною здатністю нижче заданої. Додано посилання на пошук якісних аналогів у Google Images та Яндекс Зображеннях.';
|
||||||
|
$_['help_tool_duplicates'] = 'Шукає повні дублікати файлів за MD5-хешем (різні назви, але однакова картинка). Дозволяє склеїти їх в один файл та оновити БД.';
|
||||||
|
$_['help_tool_watermark'] = 'Накладення водяних знаків у SMART-режимі (тільки на кеш вітрини, оригінали не змінюються).';
|
||||||
|
$_['help_tool_placeholders'] = 'Масово встановлює вибране зображення-заглушку для товарів та категорій, у яких взагалі немає фото.';
|
||||||
|
$_['help_tool_png_jpg'] = 'Інструмент сканує папку зображень і знаходить важкі PNG-файли, які не мають прозорого фону (альфа-каналу). Оскільки прозорість їм не потрібна, їх можна безпечно конвертувати у формат JPG. Це значно полегшує файли (в середньому на 70-80%) та прискорює завантаження сайту, а всі посилання в базі даних автоматично оновлюються.';
|
||||||
|
$_['help_tool_exif'] = 'Сканує EXIF-дані та видаляє з них приховані теги, зменшуючи вагу на 10-15%.';
|
||||||
|
$_['help_tool_smart_cache'] = 'Шукає в папці image/cache/ кешовані файли, оригінали яких уже видалені, та очищає неактуальний кеш.';
|
||||||
|
$_['help_tool_translit'] = 'Знаходить файли з кирилицею або пробілами, перейменовує їх транслітом та оновлює шляхи в БД.';
|
||||||
|
$_['help_tool_cache_restore'] = 'Якщо ви випадково видалили оригінал з catalog, інструмент спробує знайти його копію в cache та відновити назад.';
|
||||||
|
$_['entry_quarantine'] = 'Перемістити оригінали в Карантин (замість видалення)';
|
||||||
|
$_['entry_backup_db'] = 'Створити бекап змінюваних таблиць у SQL перед запуском';
|
||||||
|
$_['button_fix_selected'] = 'ВИПРАВИТИ ВИБРАНІ';
|
||||||
|
$_['button_export_log'] = 'Експортувати в CSV';
|
||||||
|
$_['text_th_before'] = 'Стан ДО';
|
||||||
|
$_['text_th_after'] = 'Очікуваний результат ПІСЛЯ';
|
||||||
|
$_['text_th_select'] = 'Дія';
|
||||||
|
$_['text_th_preview'] = 'Передперегляд';
|
||||||
|
$_['text_th_name'] = 'Об`єкт / Файл';
|
||||||
|
$_['text_global_action'] = 'Групова дія для вибраних:';
|
||||||
|
$_['text_action_clear'] = 'Очистити посилання в БД';
|
||||||
|
$_['text_action_disable'] = 'Вимкнути (Статус = 0)';
|
||||||
|
$_['text_action_stock'] = 'Установити "Немає в наявності"';
|
||||||
|
$_['text_action_placeholder'] = 'Встановити заглушку';
|
||||||
|
$_['text_action_ignore'] = 'Нічого не робити';
|
||||||
|
$_['text_action_merge'] = 'Склеїти (видалити дублікат, залишити оригінал)';
|
||||||
|
$_['text_action_convert'] = 'Конвертувати в JPG';
|
||||||
|
$_['text_action_rename'] = 'Перейменувати транслітом';
|
||||||
|
$_['text_action_delete'] = 'Видалити';
|
||||||
|
$_['text_action_restore'] = 'Відновити';
|
||||||
|
$_['text_db_backup_created'] = 'Створено бекап БД: %s';
|
||||||
|
$_['text_quarantine_created'] = 'Перенесено в карантин: %s';
|
||||||
|
$_['text_fix_status_success'] = 'Успішно виконано';
|
||||||
|
$_['text_fix_status_error'] = 'Помилка: %s';
|
||||||
|
$_['text_log_exported'] = 'Лог успішно експортовано!';
|
||||||
|
$_['text_select_action'] = '-- Виберіть дію --';
|
||||||
|
$_['error_empty_selection'] = 'Помилка: Не вибрано жодного рядка для виправлення!';
|
||||||
|
$_['text_link_admin'] = 'Адмінка';
|
||||||
|
$_['text_link_catalog'] = 'Вітрина';
|
||||||
|
$_['entry_threads'] = 'Потоків обробки';
|
||||||
|
$_['text_threads_optimal'] = 'оптимально';
|
||||||
|
$_['button_download_zip'] = 'Завантажити ZIP-архів та видалити папку';
|
||||||
|
$_['confirm_download_and_delete'] = 'Архів успішно завантажився? Можна видалити тимчасову папку копій на сервері?';
|
||||||
|
$_['button_clear_backups'] = 'Видалити бекапи БД';
|
||||||
|
$_['button_clear_backups_short'] = 'Очистити бекапи';
|
||||||
|
$_['confirm_clear_backups'] = 'Ви впевнені, що хочете повністю видалити всі SQL-бекапи таблиць?';
|
||||||
|
$_['text_compare_title'] = 'Порівняння зображень ДО / ПІСЛЯ';
|
||||||
|
$_['text_compare_before'] = 'ДО';
|
||||||
|
$_['text_compare_after'] = 'ПІСЛЯ';
|
||||||
|
$_['text_backups_cleared'] = 'Усі SQL-бекапи таблиць успішно видалені!';
|
||||||
|
$_['error_no_backups'] = 'Бекапи не знайдені або папка порожня.';
|
||||||
|
$_['button_restore'] = 'Повернути';
|
||||||
|
$_['button_empty'] = 'Очистити';
|
||||||
|
$_['entry_wm_targets'] = 'Застосовувати водяний знак до:';
|
||||||
|
$_['text_wm_target_product'] = 'Фото товарів';
|
||||||
|
$_['text_wm_target_category'] = 'Фото категорій';
|
||||||
|
$_['text_wm_target_brand'] = 'Логотипи брендів';
|
||||||
|
$_['text_wm_target_banner'] = 'Банери та слайди';
|
||||||
|
$_['text_wm_target_blog'] = 'Статті / Блог';
|
||||||
|
$_['error_no_scan_data'] = 'Помилка: Дані сканування не знайдені. Спочатку запустіть сканування!';
|
||||||
|
$_['error_row_not_found'] = 'Помилка: Об`єкт не знайдено в результатах сканування!';
|
||||||
|
$_['error_file_not_found'] = 'Помилка: Файл не знайдено на сервері!';
|
||||||
|
$_['text_folder_rules_title'] = 'Індивідуальні правила стиснення для папок';
|
||||||
|
$_['text_folder_rules_desc'] = 'Ви можете перевизначити якість та максимальні розміри для конкретних папок. Якщо залишити поле порожнім, використовуватиметься глобальне налаштування. Шлях вказується відносно папки image (наприклад, catalog/banners/).';
|
||||||
|
$_['entry_folder_path'] = 'Шлях до папки';
|
||||||
|
$_['entry_jpg_quality'] = 'Якість JPG';
|
||||||
|
$_['entry_webp_quality'] = 'Якість WebP';
|
||||||
|
$_['button_add_rule'] = 'Додати правило';
|
||||||
|
$_['button_remove'] = 'Вилучити';
|
||||||
|
$_['entry_wm_angle'] = 'Кут нахилу водяного знака (градуси)';
|
||||||
|
$_['entry_wm_corner_radius'] = 'Закруглення кутів водяного знака (px)';
|
||||||
|
$_['entry_wm_size_type'] = 'Масштабування водяного знака';
|
||||||
|
$_['entry_wm_size_percent'] = 'Розмір водяного знака (% від ширини зображення)';
|
||||||
|
$_['entry_wm_text_color'] = 'Колір тексту водяного знака';
|
||||||
|
$_['entry_wm_text_font'] = 'Шрифт водяного знака (TTF)';
|
||||||
|
$_['entry_wm_filter_mode'] = 'Режим фільтрації Категорій/Брендів';
|
||||||
|
$_['text_wm_filter_include'] = 'Тільки для вибраних';
|
||||||
|
$_['text_wm_filter_exclude'] = 'Для всіх, крім вибраних';
|
||||||
|
$_['text_wm_size_original'] = 'Оригінальний розмір';
|
||||||
|
$_['text_wm_size_percent'] = 'Пропорційно ширині зображення (%)';
|
||||||
|
$_['button_preview_watermark'] = 'Попередній перегляд';
|
||||||
|
$_['text_wm_preview_title'] = 'Попередній перегляд водяного знака';
|
||||||
|
$_['text_cron_exclude_folders'] = 'Виключити папки зі сканування';
|
||||||
|
$_['text_cron_entities'] = 'Які типи фото обробляти?';
|
||||||
|
$_['text_cron_quality_override'] = 'Перевизначити параметри стиснення для Крона';
|
||||||
|
$_['text_cron_recommendations'] = 'Рекомендації щодо розкладу Cron';
|
||||||
|
$_['text_cron_recommendations_desc'] = '<ul><li><b>Для невеликих сайтів (до 5000 товарів)</b> рекомендується запускати Крон кожну годину (<code>0 * * * *</code>).</li><li><b>Для середніх сайтів (5000-20000 товарів)</b> рекомендується запускати раз на 3-6 годин (<code>0 */6 * * *</code>).</li><li><b>Для великих сайтів (понад 20000 товарів)</b> — один раз на добу вночі (наприклад, о 2:00: <code>0 2 * * *</code>).</li></ul>';
|
||||||
|
$_['text_tool_broken_files'] = 'Сканер битих/порожніх файлів на сервері';
|
||||||
|
$_['help_tool_broken_files'] = 'Сканує фізичні файли в папці image/catalog/ на наявність пошкоджених зображень або порожніх файлів розміром 0 байт.';
|
||||||
|
$_['text_grid_broken_file'] = 'Битий або порожній файл на сервері';
|
||||||
|
$_['text_grid_broken_file_after'] = 'Вилучення або заміна заглушкою';
|
||||||
|
$_['text_description_broken_files'] = 'Результати сканування фізичних файлів у папці image/catalog/. Тут відображаються биті (пошкоджені) зображення або файли розміром 0 байт.';
|
||||||
|
$_['text_action_strip'] = 'Очистити EXIF';
|
||||||
|
$_['text_action_set_placeholder'] = 'Встановити заглушку';
|
||||||
|
$_['text_th_entity'] = 'Об`єкт / Пов`язані посилання';
|
||||||
|
$_['text_cron_entity_product'] = 'Товари';
|
||||||
|
$_['text_cron_entity_category'] = 'Категорії';
|
||||||
|
$_['text_cron_entity_manufacturer'] = 'Виробники / Бренди';
|
||||||
|
$_['text_cron_entity_banner'] = 'Банери';
|
||||||
|
$_['text_cron_entity_blog'] = 'Блог / Статті';
|
||||||
|
$_['entry_cron_jpg_quality'] = 'Якість JPG (Крон)';
|
||||||
|
$_['entry_cron_webp_quality'] = 'Якість WebP (Крон)';
|
||||||
|
$_['entry_cron_max_width'] = 'Макс. ширина px (Крон)';
|
||||||
|
$_['entry_cron_max_height'] = 'Макс. висота px (Крон)';
|
||||||
|
$_['text_cron_folder_scan'] = 'Папки для сканування';
|
||||||
|
$_['text_no_fonts'] = 'TTF-шрифти не знайдено в system/library/font/';
|
||||||
|
$_['button_apply'] = 'Застосувати';
|
||||||
|
$_['text_backup_will_be_created'] = 'Резервна копія бази даних буде автоматично створена перед виконанням цієї дії.';
|
||||||
|
$_['text_bulk_action'] = 'Групова дія для вибраних';
|
||||||
|
$_['text_grid_results'] = 'Результати та деталі сканування';
|
||||||
|
$_['text_quarantine_will_be_created'] = 'Оригінальні файли будуть переміщені в карантин (image/catalog_trash/) перед зміною.';
|
||||||
|
$_['text_success_apply'] = 'Зміни успішно застосовані!';
|
||||||
|
$_['text_description_broken'] = 'Результати сканування бази даних на наявність битих посилань (записи в таблицях з неіснуючими файлами).';
|
||||||
|
$_['text_description_cache_restore'] = 'Результати пошуку файлів у кеші, оригінали яких відсутні в каталозі.';
|
||||||
|
$_['text_description_duplicates'] = 'Результати пошуку повних дублікатів зображень за MD5-хешем.';
|
||||||
|
$_['text_description_empty_folders'] = 'Список порожніх папок в директорії image/catalog/ для видалення.';
|
||||||
|
$_['text_description_exif'] = 'Результати пошуку зображень з метаданими EXIF, які можна очистити.';
|
||||||
|
$_['text_description_folder_tree'] = 'Статистика розміру папок у каталозі image/catalog/.';
|
||||||
|
$_['text_description_html_broken'] = 'Результати пошуку неіснуючих файлів картинок, на які посилаються описи в HTML.';
|
||||||
|
$_['text_description_placeholders'] = 'Результати пошуку сутностей без зображень для заповнення заглушками.';
|
||||||
|
$_['text_description_png_jpg'] = 'Результати пошуку важких зображень PNG без прозорості, які можна перетиснути в JPG.';
|
||||||
|
$_['text_description_small_photos'] = 'Список зображень, розміри яких менше мінімально заданих (%sx%s px).';
|
||||||
|
$_['text_description_smart_cache'] = 'Результати пошуку файлів кешу, оригінали яких уже було видалено.';
|
||||||
|
$_['text_description_translit'] = 'Результати пошуку файлів з кирилицею або пробілами в назвах.';
|
||||||
|
$_['text_grid_broken_db_after'] = 'Очистити посилання або встановити заглушку';
|
||||||
|
$_['text_grid_dupe_after'] = 'Оригінал (залишається)';
|
||||||
|
$_['text_grid_dupe_before'] = 'Дублікат (буде видалено)';
|
||||||
|
$_['text_grid_empty_folder'] = 'Порожня папка';
|
||||||
|
$_['text_grid_empty_folder_after'] = 'Вилучити порожню папку';
|
||||||
|
$_['text_grid_exif_after'] = 'Очистити метадані';
|
||||||
|
$_['text_grid_exif_before'] = 'Містить EXIF';
|
||||||
|
$_['text_grid_html_after'] = 'Виправити посилання вручну';
|
||||||
|
$_['text_grid_missing_file'] = 'Файл відсутній';
|
||||||
|
$_['text_grid_missing_html'] = 'Картинка не знайдена в описі';
|
||||||
|
$_['text_grid_missing_orig'] = 'Оригінал відсутній';
|
||||||
|
$_['text_grid_missing_orig_after'] = 'Відновити оригінал з кешу';
|
||||||
|
$_['text_grid_no_image'] = 'Немає зображення (порожньо)';
|
||||||
|
$_['text_grid_orph_cache'] = 'Осиротілий кеш';
|
||||||
|
$_['text_grid_orph_cache_after'] = 'Видалити непотрібний кеш';
|
||||||
|
$_['text_grid_ph_brand_after'] = 'Встановити заглушку бренду';
|
||||||
|
$_['text_grid_ph_category_after'] = 'Встановити заглушку категорії';
|
||||||
|
$_['text_grid_ph_product_after'] = 'Встановити заглушку товару';
|
||||||
|
$_['text_grid_small_photo_after'] = 'Рекомендується замінити на більше';
|
||||||
|
$_['text_grid_too_small'] = 'Занадто мале';
|
||||||
|
$_['text_no_relations'] = 'Немає зв’язків у БД';
|
||||||
|
$_['text_action_archive'] = 'Архівувати (в ZIP)';
|
||||||
|
$_['text_action_archive_delete'] = 'Архівувати + Видалити';
|
||||||
|
$_['text_tool_sanitizer'] = 'Санитайзер імен файлів';
|
||||||
|
$_['help_tool_sanitizer'] = 'Масове очищення імен файлів і папок від кирилиці, пробілів та спецсимволів, приведення розширень до єдиного вигляду.';
|
||||||
|
$_['text_description_sanitizer'] = 'Результати аналізу імен файлів для санітаризації за вибраними правилами.';
|
||||||
|
$_['entry_sz_translit'] = 'Транслітерація (кирилиця в латиницю)';
|
||||||
|
$_['entry_sz_spaces'] = 'Замінювати пробіли на символ "_"';
|
||||||
|
$_['entry_sz_special'] = 'Видаляти спеціальні символи';
|
||||||
|
$_['entry_sz_lowercase_name'] = 'Ім`я файлу в нижній регістр';
|
||||||
|
$_['entry_sz_lowercase_ext'] = 'Розширення в нижній регістр';
|
||||||
|
$_['entry_sz_normalize_ext'] = 'Нормалізувати розширення (jpeg -> jpg)';
|
||||||
|
$_['entry_cron_folder_mode'] = 'Режим фільтрації папок';
|
||||||
|
$_['text_cron_folder_mode_exclude'] = 'Сканувати все, крім вибраних (Винятки)';
|
||||||
|
$_['text_cron_folder_mode_include'] = 'Сканирувати тільки вибрані папки';
|
||||||
|
$_['button_select_all'] = 'Вибрати всі';
|
||||||
|
$_['button_deselect_all'] = 'Зняти всі';
|
||||||
|
$_['entry_wm_upload_font'] = 'Завантажити свій шрифт TTF';
|
||||||
|
$_['button_upload_font'] = 'Завантажити шрифт';
|
||||||
|
$_['text_success_font_upload'] = 'Шрифт успішно завантажено!';
|
||||||
|
$_['error_font_upload'] = 'Помилка завантаження шрифту! Дозволені тільки файли .ttf вагою до 5 МБ.';
|
||||||
|
$_['entry_lazy_load'] = 'Прогресивне лениве завантаження';
|
||||||
|
$_['help_lazy_load'] = 'Вмикає преміальне прогресивне відкладене завантаження на вітрині. Зображення замінюються на мікро-прев\'ю та плавно розмиваються (blur-up), підвантажуючись у міру прокручування.';
|
||||||
|
$_['confirm_replace_mode'] = 'УВАГА! Ви обрали режим «Замінювати оригінали». Усі зображення будуть перезаписані безпосередньо на сервері. Наполегливо рекомендуємо зробити резервну копію. Ви впевнені, що хочете продовжити?';
|
||||||
|
$_['text_compare'] = 'Порівняти';
|
||||||
|
$_['text_home'] = 'Головна';
|
||||||
|
$_['text_tech_gd'] = 'Бібліотека GD';
|
||||||
|
$_['text_tech_imagick'] = 'Imagick';
|
||||||
|
$_['text_tech_webp'] = 'Підтримка WebP';
|
||||||
|
$_['text_position_1'] = '1 - Зліва вгорі';
|
||||||
|
$_['text_position_2'] = '2 - По центру вгорі';
|
||||||
|
$_['text_position_3'] = '3 - Справа вгорі';
|
||||||
|
$_['text_position_4'] = '4 - Зліва посередині';
|
||||||
|
$_['text_position_5'] = '5 - По центру';
|
||||||
|
$_['text_position_6'] = '6 - Справа посередині';
|
||||||
|
$_['text_position_7'] = '7 - Зліва внизу';
|
||||||
|
$_['text_position_8'] = '8 - По центру внизу';
|
||||||
|
$_['text_position_9'] = '9 - Справа внизу';
|
||||||
|
|
||||||
|
$_['entry_log_level'] = 'Рівень логу';
|
||||||
|
$_['text_log_changed_only'] = 'Тільки змінені';
|
||||||
|
$_['text_log_all'] = 'Всі файли (детально)';
|
||||||
|
$_['text_skipped_no_gain'] = 'Пропущено (без покращення)';
|
||||||
|
$_['text_reset_cache_hint'] = 'Скинути кеш оптимізації (повне пересканування)';
|
||||||
|
$_['confirm_reset_cache'] = 'Скинути кеш оптимізації? Наступне сканування перевірить ВСІ файли знову.';
|
||||||
|
$_['text_cache_cleared'] = 'Кеш оптимізації очищено. Наступне сканування перевірить всі файли.';
|
||||||
|
$_['error_wm_preview'] = 'Помилка генерації прев\'ю водяного знаку.';
|
||||||
|
$_['error_wm_too_large'] = 'Зображення водяного знаку занадто велике (%dx%d px)! Максимально допустимий розмір: %dx%d px.';
|
||||||
|
$_['text_apply_errors_warning'] = 'УВАГА: Деякі файли не вдалося замінити (заблоковані або немає прав):';
|
||||||
|
$_['text_action_compress'] = 'Стиснути зображення';
|
||||||
|
$_['text_estimated'] = 'Прогноз';
|
||||||
|
$_['entry_min_savings_bytes'] = 'Мін. стиснення (байт)';
|
||||||
|
$_['entry_min_savings_percent'] = 'Мін. стиснення (%)';
|
||||||
|
$_['text_optimized'] = 'Оптимізовано';
|
||||||
|
$_['entry_broken_fallback'] = 'Заглушка для битих фото';
|
||||||
|
$_['help_broken_fallback'] = 'Автоматично замінює відсутні або пошкоджені зображення каталогу на вітрині на зображення-заглушку.';
|
||||||
|
$_['entry_fallback_image'] = 'Зображення-заглушка';
|
||||||
|
$_['help_fallback_image'] = 'Виберіть зображення, яке буде показано, якщо оригінальний файл картинки товару чи категорії відсутній. За замовчуванням використовується no_image.png.';
|
||||||
|
$_['text_tool_cmyk'] = 'Конвертер CMYK в RGB';
|
||||||
|
$_['help_tool_cmyk'] = 'Конвертація JPEG зображень з колірного профілю CMYK в sRGB для коректного відображення в браузерах Safari та на пристроях iOS.';
|
||||||
|
$_['text_tool_heavy_files'] = 'Пошук важких файлів';
|
||||||
|
$_['help_tool_heavy_files'] = 'Пошук найважчих оригінальних зображень у каталозі з можливістю їх швидкого стиснення безпосередньо тут.';
|
||||||
|
$_['entry_heavy_files_limit'] = 'Макс. кількість знайдених файлів (всього)';
|
||||||
|
$_['text_action_convert_rgb'] = 'Конвертувати в RGB';
|
||||||
|
$_['text_description_cmyk'] = 'Знайдено файли в колірному просторі CMYK. Конвертація в sRGB гарантує колірне відображення на всіх платформах, включаючи iOS/macOS.';
|
||||||
|
$_['text_description_heavy'] = 'Список із %d найважчих файлів у каталозі зображень. Ви можете оптимізувати їх безпосередньо тут.';
|
||||||
|
$_['text_cron_folder_hint_exclude_all'] = 'Статус: Скануватимуться всі папки (винятки не обрані).';
|
||||||
|
$_['text_cron_folder_hint_exclude_some'] = 'Статус: Скануватимуться всі папки, ОКРІМ %d позначених.';
|
||||||
|
$_['text_cron_folder_hint_include_some'] = 'Статус: Скануватимуться тільки %d позначених папок.';
|
||||||
|
$_['text_cron_folder_hint_include_none'] = 'УВАГА: Жодної папки не обрано! Крон нічого не буде сканувати.';
|
||||||
|
$_['text_action_apply_changes'] = 'Застосувати вказані зміни';
|
||||||
|
$_['entry_wm_status'] = 'Статус водяного знака';
|
||||||
|
$_['text_disabled'] = 'Відключено';
|
||||||
|
$_['entry_rule_name'] = 'Назва правила';
|
||||||
|
$_['entry_rule_status'] = 'Статус правила';
|
||||||
|
$_['entry_action'] = 'Дія';
|
||||||
|
$_['entry_ph_status'] = 'Статус заглушок';
|
||||||
|
$_['entry_sanitizer_limit'] = 'Макс. файлів для пошуку (ліміт)';
|
||||||
|
$_['entry_heavy_files_min_size'] = 'Мінимальний розмір';
|
||||||
|
$_['entry_png_jpg_limit'] = 'Макс. файлів для пошуку (ліміт)';
|
||||||
|
$_['entry_png_jpg_min_size'] = 'Мінімальний розмір';
|
||||||
|
$_['text_wm_rule_title'] = 'Правило водяного знака';
|
||||||
|
$_['button_close'] = 'Закрити';
|
||||||
|
$_['text_ph_rule_title'] = 'Правило заглушки';
|
||||||
|
$_['entry_ph_image'] = 'Зображення заглушки';
|
||||||
|
$_['button_clear_cache_wm'] = 'Очистити кеш (застосувати водяний знак)';
|
||||||
|
$_['text_active'] = 'Активна';
|
||||||
|
$_['text_error'] = 'Не активна';
|
||||||
|
$_['text_th_dupe_delete'] = 'Файл для видалення (Дублікат)';
|
||||||
|
$_['text_th_dupe_keep'] = 'Файл для збереження (Оригінал)';
|
||||||
|
$_['text_dupe_original_label'] = 'Оригінал';
|
||||||
|
$_['text_dupe_duplicate_label'] = 'Дублікат';
|
||||||
|
|
||||||
|
$_['text_disk_usage'] = 'Використання диска';
|
||||||
|
$_['text_cumulative_stats'] = 'Статистика оптимізації';
|
||||||
|
$_['text_disk_catalog'] = 'Каталог зображень';
|
||||||
|
$_['text_disk_cache'] = 'Кеш OC';
|
||||||
|
$_['text_disk_trash'] = 'Кошик модуля';
|
||||||
|
$_['text_disk_other'] = 'Інше';
|
||||||
|
$_['text_disk_free'] = 'Вільно';
|
||||||
|
$_['text_total_files_opt'] = 'Файлів оброблено';
|
||||||
|
$_['text_total_saved'] = 'Всього зекономлено';
|
||||||
|
$_['text_avg_saving_pct'] = 'Середня економія';
|
||||||
|
$_['text_stats_hint'] = 'Статистика зберігається в БД сайту (враховує Оптимізацію, Очищення, Інструменти та Крон)';
|
||||||
|
$_['text_reset_stats'] = 'Скинути статистику';
|
||||||
|
$_['text_reset_stats_confirm']= 'Ви впевнені, що хочете скинути всю статистику з БД?';
|
||||||
|
$_['text_export_import'] = 'Експорт / Імпорт налаштувань';
|
||||||
|
$_['button_export_settings'] = 'Експорт налаштувань (JSON)';
|
||||||
|
$_['button_import_settings'] = 'Імпортувати налаштування';
|
||||||
|
$_['help_export_settings'] = 'Завантажити всі налаштування модуля в JSON-файл';
|
||||||
|
$_['help_import_settings'] = 'Завантажити раніше експортований JSON для відновлення налаштувань';
|
||||||
|
$_['text_import_success'] = 'Налаштування успішно імпортовані. Перезавантажте сторінку для застосування.';
|
||||||
|
$_['error_import_file'] = 'Файл не завантажено або помилка завантаження';
|
||||||
|
$_['error_import_invalid'] = 'Некоректний файл налаштувань (невірний модуль або формат)';
|
||||||
|
$_['text_click_to_load'] = 'Натисніть ↑ для завантаження даних диска';
|
||||||
|
|
||||||
|
|
||||||
|
$_['tab_formats'] = 'Формати зображень';
|
||||||
|
|
||||||
|
$_['text_disk_quota_legend'] = 'Ліміти диска хостингу (вручну)';
|
||||||
|
$_['text_disk_quota_desc'] = 'Якщо графік дискового простору показує некоректні дані (фізичний диск сервера замість ліміту вашого хостингу), ви можете вказати ліміти вашого тарифу вручну. Вкажіть 0, щоб використовувати автовизначення.';
|
||||||
|
$_['entry_disk_quota_total'] = 'Виділено диска на хостингу (ГБ)';
|
||||||
|
$_['entry_disk_quota_used'] = 'Зайнято диска на хостингу всього (ГБ)';
|
||||||
|
$_['entry_auto_disk'] = 'Автооновлення при вході';
|
||||||
|
|
||||||
|
$_['entry_cron_task_name'] = 'Назва задачі';
|
||||||
|
$_['entry_cron_task_summary'] = 'Параметри стиснення';
|
||||||
|
$_['button_add_cron_task'] = 'Додати задачу';
|
||||||
|
$_['button_copy_cron_url'] = 'Копіювати URL';
|
||||||
|
$_['text_cron_recommended_url'] = 'URL для запуску задачі крону:';
|
||||||
|
$_['entry_cron_batch_limit'] = 'Ліміт пакета за один запуск Крона (файлів)';
|
||||||
|
$_['help_cron_batch_limit'] = 'Максимальна кількість файлів, що обробляються за один запуск Крона. За замовчуванням 100. Рекомендується від 50 до 300 для запобігання таймауту виконання на хостингу.';
|
||||||
|
|
||||||
|
$_['text_license_required'] = 'Необхідний ліцензійний ключ';
|
||||||
|
$_['text_license_required_desc'] = 'Будь ласка, введіть ліцензійний ключ для активації модуля. Усі функції налаштувань та оптимізації заблоковані до введення валідного ключа.';
|
||||||
|
$_['entry_token_desc'] = 'Введіть токен активації, виданий для вашого основного домену. Ви можете отримати його в особистому кабінеті на форумі або звернувшись у підтримку.';
|
||||||
|
$_['button_activate'] = 'Активувати модуль';
|
||||||
|
$_['text_support'] = 'Технічна підтримка';
|
||||||
|
$_['text_support_desc'] = 'Якщо у вас ще немає ключа або виникли проблеми, будь ласка, повідомте номер вашого замовлення та домен.';
|
||||||
|
|
||||||
|
$_['entry_wm_max_width'] = 'Макс. ширина водяного знака (px)';
|
||||||
|
$_['entry_wm_max_height'] = 'Макс. висота водяного знака (px)';
|
||||||
|
$_['help_wm_max_width'] = 'Якщо вихідне зображення водяного знака перевищує цю ширину, воно буде автоматично масштабоване. Вкажіть 0 або залиште порожнім для значення за замовчуванням (800px).';
|
||||||
|
$_['help_wm_max_height'] = 'Якщо вихідне зображення водяного знака перевищує цю висоту, воно буде автоматично масштабоване. Вкажіть 0 або залиште порожнім для значення за замовчуванням (800px).';
|
||||||
|
$_['entry_disk_status'] = 'Увімкнути сканування диска та графік';
|
||||||
|
$_['help_disk_status'] = 'Якщо увімкнено, модуль періодично скануватиме обсяг папки картинок та відображатиме круговую діаграму. Рекомендується вимкнути на великих сайтах для прискорення завантаження панелі.';
|
||||||
|
$_['text_disk_settings_title'] = 'Налаштування лімітів та сканування диска';
|
||||||
|
|
||||||
|
$_['text_tool_svg_security'] = 'SVG Security Sanitizer (Захист XSS/XXE)';
|
||||||
|
$_['help_tool_svg_security'] = 'Сканує SVG-векторні зображення в image/catalog/ на наявність небезпечного коду (скрипти, обробники подій, XXE entity, foreignObject, javascript: URI) та очищає їх.';
|
||||||
|
$_['text_description_svg_security'] = 'SVG Security Sanitizer перевіряє всі SVG-файли в каталозі на вразливості безпеки. Очищення видаляє шкідливі скрипти та ін\'єкції, зберігаючи графічне зображення.';
|
||||||
|
$_['text_svg_threats_found'] = 'Знайдено загрози безпеки: %d';
|
||||||
|
$_['text_svg_threat_xxe_entity'] = 'XXE Entity атака';
|
||||||
|
$_['text_svg_threat_script_tag'] = 'Тег скрипту (<script>)';
|
||||||
|
$_['text_svg_threat_event_handler'] = 'Обробник подій (on*)';
|
||||||
|
$_['text_svg_threat_javascript_uri']= 'JavaScript URI (javascript:)';
|
||||||
|
$_['text_svg_threat_foreign_object']= 'Чужорідний об\'єкт (<foreignObject>)';
|
||||||
|
$_['text_svg_threat_embed_object'] = 'Вкладений об\'єкт (<object>/<iframe>)';
|
||||||
|
$_['text_svg_threat_css_injection'] = 'CSS-ін\'єкція';
|
||||||
|
$_['text_svg_clean_success'] = 'Очищено та безпечно';
|
||||||
|
|
||||||
|
$_['text_tool_black_bg'] = 'Пошук чорного фону та Фейкових JPG';
|
||||||
|
$_['help_tool_black_bg'] = 'Знаходить PNG-зображення з розширенням .jpg (з автоімпортів) та фото з чорним фоном/рамками. Замінює чорний фон на білий (#FFFFFF).';
|
||||||
|
$_['text_description_black_bg'] = 'Інструмент шукає картинки товарів із чорним фоном чи некоректним розширенням після імпорту. Застосування перетворює фейкові JPG і замінює чорні рамки навколо товару білим фоном.';
|
||||||
|
$_['entry_bb_darkness'] = 'Поріг темряви пикселя (0-100)';
|
||||||
|
$_['entry_bb_threshold'] = '% чорних пікселів по краю';
|
||||||
|
$_['entry_bb_limit'] = 'Ліміт сканування (файлів)';
|
||||||
|
$_['entry_bb_scan_fake'] = 'Шукати Fake JPG (PNG у .jpg)';
|
||||||
|
$_['entry_bb_scan_black'] = 'Шукати чорний фон';
|
||||||
|
$_['text_bb_fake_jpg'] = 'Фейковий JPG (PNG всередині .jpg)';
|
||||||
|
$_['text_bb_black_bg'] = 'Виявлено чорний фон';
|
||||||
|
$_['text_bb_fix_flatten_white'] = 'Конвертувати у JPG (білий фон)';
|
||||||
|
$_['text_bb_fix_convert_png'] = 'Зберегти як PNG (прозорість)';
|
||||||
|
$_['text_bb_fix_white'] = 'Замінити чорний фон (GD: тільки краї)';
|
||||||
|
$_['text_bb_fix_white_all'] = 'Замінити ВСІ чорні пікселі (GD: агресивно)';
|
||||||
|
$_['text_bb_fix_white_smooth'] = 'Замінити ВСІ чорні пікселі (GD: Defringe + сгладжування)';
|
||||||
|
$_['text_bb_fix_white_imagick'] = 'Замінити чорний фон (Imagick: тільки краї)';
|
||||||
|
$_['text_bb_fix_white_all_imagick'] = 'Замінити ВСІ чорні пікселі (Imagick: Fuzzy Lab)';
|
||||||
|
$_['text_bb_fix_white_smooth_imagick'] = 'Замінити ВСІ чорні пікселі (Imagick: Defringe + сгладжування)';
|
||||||
|
$_['text_bb_type_fake'] = 'Помилка імпорту PNG';
|
||||||
|
$_['text_bb_type_black'] = 'Чорний фон';
|
||||||
|
|
||||||
|
$_['button_online_instruction'] = 'Інструкція до модуля (Онлайн)';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -233,7 +233,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body" style="display:flex; align-items:flex-start; gap:20px; flex-wrap:wrap;">
|
<div class="panel-body" style="display:flex; align-items:flex-start; gap:20px; flex-wrap:wrap;">
|
||||||
<div>
|
<div>
|
||||||
<a href="index.php?route=module/img_opti/export_settings&token=<?php echo $token; ?>" class="btn btn-primary">
|
<a href="index.php?route=extension/module/img_opti/export_settings&token=<?php echo $token; ?>" class="btn btn-primary">
|
||||||
<i class="fa fa-download"></i> <?php echo $button_export_settings; ?>
|
<i class="fa fa-download"></i> <?php echo $button_export_settings; ?>
|
||||||
</a>
|
</a>
|
||||||
<div style="font-size:11px; color:#888; margin-top:5px;"><?php echo $help_export_settings; ?></div>
|
<div style="font-size:11px; color:#888; margin-top:5px;"><?php echo $help_export_settings; ?></div>
|
||||||
|
|
@ -558,10 +558,17 @@
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<div class="checkbox" style="background: #fdfdfd; padding: 14px; border: 1px solid #eee; border-radius: 6px; min-height: 140px;">
|
<div class="checkbox" style="background: #fdfdfd; padding: 14px; border: 1px solid #eee; border-radius: 6px; min-height: 140px;">
|
||||||
<label style="font-weight: bold; font-size: 14px;">
|
<label style="font-weight: bold; font-size: 14px;">
|
||||||
<input type="checkbox" name="module_img_opti_support_svg" value="1" <?php if (isset($module_img_opti_support_svg) && $module_img_opti_support_svg) { ?>checked="checked"<?php } ?>>
|
<input type="checkbox" name="module_img_opti_support_svg" id="chk-support-svg" value="1" <?php if (isset($module_img_opti_support_svg) && $module_img_opti_support_svg) { ?>checked="checked"<?php } ?>>
|
||||||
<?php echo $entry_support_svg; ?>
|
<?php echo $entry_support_svg; ?>
|
||||||
</label>
|
</label>
|
||||||
<div style="font-size: 12px; color: #666; margin-top: 8px; line-height: 1.4;"><?php echo $help_support_svg; ?></div>
|
<div style="font-size: 12px; color: #666; margin-top: 8px; line-height: 1.4;"><?php echo $help_support_svg; ?></div>
|
||||||
|
<div id="svg-autofix-box" style="<?php if (empty($module_img_opti_support_svg)) { ?>display: none;<?php } ?> margin-top: 10px; padding-top: 8px; border-top: 1px dashed #ddd;">
|
||||||
|
<label style="font-size: 12px; font-weight: normal; color: #444;">
|
||||||
|
<input type="checkbox" name="module_img_opti_support_svg_autofix" value="1" <?php if (isset($module_img_opti_support_svg_autofix) && $module_img_opti_support_svg_autofix) { ?>checked="checked"<?php } ?>>
|
||||||
|
<b><?php echo $entry_support_svg_autofix; ?></b>
|
||||||
|
</label>
|
||||||
|
<div style="font-size: 11px; color: #777; margin-top: 2px;"><?php echo $help_support_svg_autofix; ?></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
|
|
@ -902,7 +909,7 @@
|
||||||
<div class="tab-pane" id="tab-cron">
|
<div class="tab-pane" id="tab-cron">
|
||||||
<div class="alert alert-info" style="background: #2c3e50; color: white; border: none;">
|
<div class="alert alert-info" style="background: #2c3e50; color: white; border: none;">
|
||||||
<i class="fa fa-clock-o"></i> <b><?php echo $text_cron_title; ?></b> <?php echo $text_cron_desc; ?><br>
|
<i class="fa fa-clock-o"></i> <b><?php echo $text_cron_title; ?></b> <?php echo $text_cron_desc; ?><br>
|
||||||
<code style="display:inline-block; margin-top:5px; background:#fff; padding:5px 10px; color:#333;">wget -q -O - "<?php echo str_replace(\'image/catalog\', \'\', $catalog_url); ?>index.php?route=module/img_opti_cron&key=<?php echo $module_img_opti_token; ?>" >/dev/null 2>&1</code>
|
<code style="display:inline-block; margin-top:5px; background:#fff; padding:5px 10px; color:#333;">wget -q -O - "<?php echo str_replace(\'image/catalog\', \'\', $catalog_url); ?>index.php?route=extension/module/img_opti_cron&key=<?php echo $module_img_opti_token; ?>" >/dev/null 2>&1</code>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
@ -1296,7 +1303,7 @@ $(document).on('change', '#grid-per-page', function() {
|
||||||
saveScanCache();
|
saveScanCache();
|
||||||
} else {
|
} else {
|
||||||
var limit = $(this).val();
|
var limit = $(this).val();
|
||||||
window.location = 'index.php?route=module/img_opti&' + tokenParam + '&limit=' + limit;
|
window.location = 'index.php?route=extension/module/img_opti&' + tokenParam + '&limit=' + limit;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -1322,6 +1329,22 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#chk-auto-fake-jpg', function() {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('#fake-jpg-mode-box').slideDown();
|
||||||
|
} else {
|
||||||
|
$('#fake-jpg-mode-box').slideUp();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#chk-support-svg', function() {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$('#svg-autofix-box').slideDown();
|
||||||
|
} else {
|
||||||
|
$('#svg-autofix-box').slideUp();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$('#wm_type').on('change', function() {
|
$('#wm_type').on('change', function() {
|
||||||
if ($(this).val() == 'text') {
|
if ($(this).val() == 'text') {
|
||||||
$('#wm_image_wrap').hide();
|
$('#wm_image_wrap').hide();
|
||||||
|
|
@ -1350,7 +1373,7 @@ $(document).ready(function() {
|
||||||
$('#btn-preview-wm').on('click', function() {
|
$('#btn-preview-wm').on('click', function() {
|
||||||
var $btn = $(this).prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i>');
|
var $btn = $(this).prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i>');
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/preview_watermark&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/preview_watermark&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: $('#form-module').serialize(),
|
data: $('#form-module').serialize(),
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -1755,7 +1778,7 @@ $(document).ready(function() {
|
||||||
module_img_opti_wm_corner_radius: $('#wm-rule-corner-radius').val()
|
module_img_opti_wm_corner_radius: $('#wm-rule-corner-radius').val()
|
||||||
};
|
};
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/preview_watermark&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/preview_watermark&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: ruleData,
|
data: ruleData,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -1777,7 +1800,7 @@ $(document).ready(function() {
|
||||||
$('#input-modal-wm-category').autocomplete({
|
$('#input-modal-wm-category').autocomplete({
|
||||||
'source': function(request, response) {
|
'source': function(request, response) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/autocomplete_category&' + tokenParam + '&filter_name=' + encodeURIComponent(request),
|
url: 'index.php?route=extension/module/img_opti/autocomplete_category&' + tokenParam + '&filter_name=' + encodeURIComponent(request),
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function(json) {
|
success: function(json) {
|
||||||
response($.map(json, function(item) {
|
response($.map(json, function(item) {
|
||||||
|
|
@ -1799,7 +1822,7 @@ $(document).ready(function() {
|
||||||
$('#input-modal-wm-brand').autocomplete({
|
$('#input-modal-wm-brand').autocomplete({
|
||||||
'source': function(request, response) {
|
'source': function(request, response) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/autocomplete_manufacturer&' + tokenParam + '&filter_name=' + encodeURIComponent(request),
|
url: 'index.php?route=extension/module/img_opti/autocomplete_manufacturer&' + tokenParam + '&filter_name=' + encodeURIComponent(request),
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function(json) {
|
success: function(json) {
|
||||||
response($.map(json, function(item) {
|
response($.map(json, function(item) {
|
||||||
|
|
@ -1821,7 +1844,7 @@ $(document).ready(function() {
|
||||||
$('#input-modal-ph-category').autocomplete({
|
$('#input-modal-ph-category').autocomplete({
|
||||||
'source': function(request, response) {
|
'source': function(request, response) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/autocomplete_category&' + tokenParam + '&filter_name=' + encodeURIComponent(request),
|
url: 'index.php?route=extension/module/img_opti/autocomplete_category&' + tokenParam + '&filter_name=' + encodeURIComponent(request),
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function(json) {
|
success: function(json) {
|
||||||
response($.map(json, function(item) {
|
response($.map(json, function(item) {
|
||||||
|
|
@ -1843,7 +1866,7 @@ $(document).ready(function() {
|
||||||
$('#input-modal-ph-brand').autocomplete({
|
$('#input-modal-ph-brand').autocomplete({
|
||||||
'source': function(request, response) {
|
'source': function(request, response) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/autocomplete_manufacturer&' + tokenParam + '&filter_name=' + encodeURIComponent(request),
|
url: 'index.php?route=extension/module/img_opti/autocomplete_manufacturer&' + tokenParam + '&filter_name=' + encodeURIComponent(request),
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function(json) {
|
success: function(json) {
|
||||||
response($.map(json, function(item) {
|
response($.map(json, function(item) {
|
||||||
|
|
@ -1895,7 +1918,7 @@ $(document).ready(function() {
|
||||||
var statusText = task.status ? '<span class="label label-success"><?php echo $text_enabled; ?></span>' : '<span class="label label-danger"><?php echo $text_disabled; ?></span>';
|
var statusText = task.status ? '<span class="label label-success"><?php echo $text_enabled; ?></span>' : '<span class="label label-danger"><?php echo $text_disabled; ?></span>';
|
||||||
|
|
||||||
var escapedTaskName = encodeURIComponent(task.name);
|
var escapedTaskName = encodeURIComponent(task.name);
|
||||||
var taskUrl = '<?php echo str_replace(\'image/catalog\', \'\', $catalog_url); ?>index.php?route=module/img_opti_cron&key=<?php echo $module_img_opti_token; ?>&task=' + escapedTaskName;
|
var taskUrl = '<?php echo str_replace(\'image/catalog\', \'\', $catalog_url); ?>index.php?route=extension/module/img_opti_cron&key=<?php echo $module_img_opti_token; ?>&task=' + escapedTaskName;
|
||||||
|
|
||||||
html += '<tr>';
|
html += '<tr>';
|
||||||
html += ' <td><b>' + task.name + '</b><br><small class="text-muted">' + entitiesList + '</small></td>';
|
html += ' <td><b>' + task.name + '</b><br><small class="text-muted">' + entitiesList + '</small></td>';
|
||||||
|
|
@ -2144,7 +2167,7 @@ $(document).ready(function() {
|
||||||
$('.alert-dismissible').remove();
|
$('.alert-dismissible').remove();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/run_tool&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/run_tool&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: {
|
data: {
|
||||||
tool: 'watermark',
|
tool: 'watermark',
|
||||||
|
|
@ -2191,7 +2214,7 @@ $(document).ready(function() {
|
||||||
formData += '&tool=' + tool + '&action=scan';
|
formData += '&tool=' + tool + '&action=scan';
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/run_tool&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/run_tool&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: formData,
|
data: formData,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -2257,7 +2280,7 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/run_tool&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/run_tool&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: {
|
data: {
|
||||||
tool: currentTool,
|
tool: currentTool,
|
||||||
|
|
@ -2471,7 +2494,7 @@ $(document).on('click', '#btn-start', function(e) {
|
||||||
$('#form-opti input, #form-opti select, #input-threads').not('#btn-pause, #btn-stop').prop('disabled', true);
|
$('#form-opti input, #form-opti select, #input-threads').not('#btn-pause, #btn-stop').prop('disabled', true);
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/scan&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/scan&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: optiParams,
|
data: optiParams,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -2535,7 +2558,7 @@ $(document).on('click', '#btn-stop', function(e) {
|
||||||
$('#btn-pause').prop('disabled', true);
|
$('#btn-pause').prop('disabled', true);
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/stop&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/stop&' + tokenParam,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function() {
|
success: function() {
|
||||||
fullLogArray.push('<div class="text-danger" style="margin-top:10px; font-weight:bold; font-size:15px;"><?php echo $text_stopped_user; ?></div>');
|
fullLogArray.push('<div class="text-danger" style="margin-top:10px; font-weight:bold; font-size:15px;"><?php echo $text_stopped_user; ?></div>');
|
||||||
|
|
@ -2558,7 +2581,7 @@ $(document).on('click', '#btn-reset-cache', function() {
|
||||||
var $btn = $(this);
|
var $btn = $(this);
|
||||||
$btn.prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i>');
|
$btn.prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i>');
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/resetCache&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/resetCache&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function(json) {
|
success: function(json) {
|
||||||
|
|
@ -2579,7 +2602,7 @@ function processBatch() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/process&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/process&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: optiParams,
|
data: optiParams,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -2655,7 +2678,7 @@ $(document).on('click', '#btn-apply-changes', function() {
|
||||||
var backup = $('input[name="apply_backup"]:checked').val();
|
var backup = $('input[name="apply_backup"]:checked').val();
|
||||||
var folder = $('#copy_folder').val();
|
var folder = $('#copy_folder').val();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/applyChanges&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/applyChanges&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: { backup: backup, copy_folder: folder },
|
data: { backup: backup, copy_folder: folder },
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -2683,7 +2706,7 @@ $(document).on('click', '#btn-full-cleanup', function() {
|
||||||
|
|
||||||
function clearSpecificTrash() {
|
function clearSpecificTrash() {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/clearTrash&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/clearTrash&' + tokenParam,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function(json) {
|
success: function(json) {
|
||||||
if (json['success']) {
|
if (json['success']) {
|
||||||
|
|
@ -2767,7 +2790,7 @@ $(document).on('click', '#btn-scan-trash', function(e) {
|
||||||
cleanerCurrentPage = 1;
|
cleanerCurrentPage = 1;
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/build_index&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/build_index&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: { module_token: $('#module_token').val() },
|
data: { module_token: $('#module_token').val() },
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -2778,7 +2801,7 @@ $(document).on('click', '#btn-scan-trash', function(e) {
|
||||||
}
|
}
|
||||||
$('#cleaner-status-text').html('<i class="fa fa-spinner fa-spin"></i> <?php echo $text_comparing; ?>');
|
$('#cleaner-status-text').html('<i class="fa fa-spinner fa-spin"></i> <?php echo $text_comparing; ?>');
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/scan_trash&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/scan_trash&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: $('#form-cleaner :input').serialize() + '&module_token=' + $('#module_token').val(),
|
data: $('#form-cleaner :input').serialize() + '&module_token=' + $('#module_token').val(),
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -2823,7 +2846,7 @@ $(document).on('click', '#btn-do-quarantine, #btn-do-delete', function(e) {
|
||||||
|
|
||||||
function processTrashBatch() {
|
function processTrashBatch() {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/process_trash&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/process_trash&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: { action: action, module_token: $('#module_token').val() },
|
data: { action: action, module_token: $('#module_token').val() },
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -2852,7 +2875,7 @@ $(document).on('click', '#btn-empty-quarantine', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (!confirm('<?php echo $confirm_empty_q; ?>')) return;
|
if (!confirm('<?php echo $confirm_empty_q; ?>')) return;
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/empty_quarantine&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/empty_quarantine&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: { module_token: $('#module_token').val() },
|
data: { module_token: $('#module_token').val() },
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -2879,7 +2902,7 @@ $(document).on('click', '#btn-restore-quarantine', function(e) {
|
||||||
$('#cleaner-log-pagination').show();
|
$('#cleaner-log-pagination').show();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/restore_quarantine&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/restore_quarantine&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: { module_token: $('#module_token').val() },
|
data: { module_token: $('#module_token').val() },
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -3001,7 +3024,7 @@ $(document).on('click', '.btn-compare-preview, .btn-compare-opti', function(e) {
|
||||||
if ($('input[name="webp_quality"]').length) postData.webp_quality = $('input[name="webp_quality"]').val();
|
if ($('input[name="webp_quality"]').length) postData.webp_quality = $('input[name="webp_quality"]').val();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/compare_preview&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/compare_preview&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: postData,
|
data: postData,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -3035,12 +3058,12 @@ $(document).on('click', '#btn-download-copies', function(e) {
|
||||||
var folder = $('#copy_folder').val();
|
var folder = $('#copy_folder').val();
|
||||||
if (!folder) return;
|
if (!folder) return;
|
||||||
|
|
||||||
window.location = 'index.php?route=module/img_opti/download_folder&' + tokenParam + '&folder=' + encodeURIComponent(folder);
|
window.location = 'index.php?route=extension/module/img_opti/download_folder&' + tokenParam + '&folder=' + encodeURIComponent(folder);
|
||||||
|
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
if (confirm('<?php echo $confirm_download_and_delete; ?>')) {
|
if (confirm('<?php echo $confirm_download_and_delete; ?>')) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/clearTrash&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/clearTrash&' + tokenParam,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: { folder: folder },
|
data: { folder: folder },
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
@ -3061,7 +3084,7 @@ $(document).on('click', '#btn-clear-backups', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (!confirm('<?php echo $confirm_clear_backups; ?>')) return;
|
if (!confirm('<?php echo $confirm_clear_backups; ?>')) return;
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/clear_backups&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/clear_backups&' + tokenParam,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function(json) {
|
success: function(json) {
|
||||||
if (json['success']) {
|
if (json['success']) {
|
||||||
|
|
@ -3128,7 +3151,7 @@ $('#btn-load-disk').on('click', function(e, triggerType) {
|
||||||
var isManual = (triggerType !== 'auto');
|
var isManual = (triggerType !== 'auto');
|
||||||
var btn = $(this).prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i>');
|
var btn = $(this).prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i>');
|
||||||
$('#disk-loading').show().text('<?php echo $text_loading; ?>...');
|
$('#disk-loading').show().text('<?php echo $text_loading; ?>...');
|
||||||
var url = 'index.php?route=module/img_opti/get_disk_stats&' + tokenParam;
|
var url = 'index.php?route=extension/module/img_opti/get_disk_stats&' + tokenParam;
|
||||||
if (isManual) {
|
if (isManual) {
|
||||||
url += '&refresh=1';
|
url += '&refresh=1';
|
||||||
}
|
}
|
||||||
|
|
@ -3193,7 +3216,7 @@ $('#import-settings-file').on('change', function() {
|
||||||
var fd = new FormData();
|
var fd = new FormData();
|
||||||
fd.append('import_json', file);
|
fd.append('import_json', file);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'index.php?route=module/img_opti/import_settings&' + tokenParam,
|
url: 'index.php?route=extension/module/img_opti/import_settings&' + tokenParam,
|
||||||
type: 'POST', data: fd, processData: false, contentType: false, dataType: 'json',
|
type: 'POST', data: fd, processData: false, contentType: false, dataType: 'json',
|
||||||
success: function(json) {
|
success: function(json) {
|
||||||
if (json.error) status.html('<span class="text-danger"><i class="fa fa-times"></i> ' + json.error + '</span>');
|
if (json.error) status.html('<span class="text-danger"><i class="fa fa-times"></i> ' + json.error + '</span>');
|
||||||
|
|
@ -3678,4 +3701,3 @@ $(document).ready(function() {
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<?php echo $footer; ?>
|
<?php echo $footer; ?>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue