From fca3749d9a7da3a071747571ff7ce65d9a210b5c Mon Sep 17 00:00:00 2001 From: Aleksei Tikhomirov Date: Sat, 25 Jul 2026 11:01:25 +0300 Subject: [PATCH 1/8] remove wp-queue --- src/Admin/AdminPage.php | 31 ++++++++--- src/CLI/QueueCommand.php | 11 ---- src/Jobs/PendingDispatch.php | 40 ++++++++++++++ src/PendingBatch.php | 3 ++ src/PendingChain.php | 3 ++ src/QueueManager.php | 100 +++++++++++++++++++++++++++++++++++ src/Storage/LogStorage.php | 56 +++++++++++++++----- src/WPQueue.php | 45 +++++++++------- wp-queue.php | 16 +++--- 9 files changed, 246 insertions(+), 59 deletions(-) diff --git a/src/Admin/AdminPage.php b/src/Admin/AdminPage.php index b2fa7a4..d52f588 100644 --- a/src/Admin/AdminPage.php +++ b/src/Admin/AdminPage.php @@ -24,7 +24,6 @@ class AdminPage public function __construct() { - $this->initTabs(); add_action('init', [$this, 'initTabs'], 5); add_action('admin_menu', [$this, 'addMenuPage']); add_action('admin_enqueue_scripts', [$this, 'enqueueAssets']); @@ -1029,7 +1028,7 @@ protected function renderQueuesDrivers(): void

@@ -1041,7 +1040,7 @@ protected function renderQueuesDrivers(): void

- +

@@ -1050,7 +1049,7 @@ protected function renderQueuesDrivers(): void - + @@ -1097,7 +1096,7 @@ protected function renderQueuesDrivers(): void
-

+

define('WP_QUEUE_DRIVER', 'database'); // or 'redis', 'memcached', 'sync', 'auto'
@@ -1858,11 +1857,31 @@ protected function renderSystemStatus(): void - + + + + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
diff --git a/src/CLI/QueueCommand.php b/src/CLI/QueueCommand.php index eac4d1c..244f650 100644 --- a/src/CLI/QueueCommand.php +++ b/src/CLI/QueueCommand.php @@ -106,15 +106,11 @@ public function status(array $args, array $assocArgs): void * default: 256 * --- * - * [--daemon] - * : Run the worker continuously as a daemon. - * * ## EXAMPLES * * wp queue work * wp queue work emails --limit=50 * wp queue work imports --memory=512 - * wp queue work --daemon --memory=256 * * @when after_wp_load */ @@ -132,13 +128,6 @@ public function work(array $args, array $assocArgs): void $worker = WPQueue::worker(); $worker->setMemoryLimit($memory); - if (isset($assocArgs['daemon'])) { - WP_CLI::log("Starting daemon worker for queue: {$queue}"); - $worker->daemon($queue); - - return; - } - $processed = 0; while ($processed < $limit) { diff --git a/src/Jobs/PendingDispatch.php b/src/Jobs/PendingDispatch.php index a4ee631..d12cb7b 100644 --- a/src/Jobs/PendingDispatch.php +++ b/src/Jobs/PendingDispatch.php @@ -5,12 +5,17 @@ namespace WPQueue\Jobs; use WPQueue\Contracts\JobInterface; +use WPQueue\Loopback\LoopbackDispatcher; use WPQueue\QueueManager; class PendingDispatch { protected bool $shouldDispatch = true; + protected static bool $spawnRegistered = false; + + protected static bool $spawnQueued = false; + public function __construct( protected JobInterface $job, protected QueueManager $manager, @@ -66,5 +71,40 @@ protected function send(): void { $queue = $this->manager->connection(); $queue->push($this->job); + + $queueName = $this->job->getQueue() ?: 'default'; + LoopbackDispatcher::spawn($queueName); + self::scheduleImmediateProcessing($queueName); + } + + protected static function scheduleImmediateProcessing(string $queue): void + { + if (! function_exists('wp_schedule_single_event') || ! function_exists('spawn_cron')) { + return; + } + + if (! self::$spawnRegistered) { + self::$spawnRegistered = true; + + register_shutdown_function(static function (): void { + if (! self::$spawnQueued) { + return; + } + + self::$spawnQueued = false; + + try { + spawn_cron(); + } catch (\Throwable $e) { + error_log('WP Queue: spawn_cron failed: '.$e->getMessage()); + } + }); + } + + if (wp_next_scheduled('wp_queue_process', [$queue]) === false) { + wp_schedule_single_event(time(), 'wp_queue_process', [$queue]); + } + + self::$spawnQueued = true; } } diff --git a/src/PendingBatch.php b/src/PendingBatch.php index a4d637b..6b6414c 100644 --- a/src/PendingBatch.php +++ b/src/PendingBatch.php @@ -5,6 +5,7 @@ namespace WPQueue; use WPQueue\Contracts\JobInterface; +use WPQueue\Loopback\LoopbackDispatcher; class PendingBatch { @@ -35,6 +36,8 @@ public function dispatch(): string $connection->push($job); } + LoopbackDispatcher::spawn($this->queue); + return $batchId; } } diff --git a/src/PendingChain.php b/src/PendingChain.php index 5664947..33a2280 100644 --- a/src/PendingChain.php +++ b/src/PendingChain.php @@ -6,6 +6,7 @@ use WPQueue\Contracts\JobInterface; use WPQueue\Jobs\ChainedJob; +use WPQueue\Loopback\LoopbackDispatcher; class PendingChain { @@ -40,5 +41,7 @@ public function dispatch(): void $chainedJob->onQueue($this->queue); $this->manager->connection()->push($chainedJob); + + LoopbackDispatcher::spawn($this->queue); } } diff --git a/src/QueueManager.php b/src/QueueManager.php index 0029b89..fac6690 100644 --- a/src/QueueManager.php +++ b/src/QueueManager.php @@ -557,6 +557,106 @@ public function extend(string $driver, callable $callback): void $this->customCreators[$driver] = $callback; } + /** + * Discover all queue names from the current driver. + * + * @return string[] + */ + public function discoverQueues(): array + { + $driver = $this->getDefaultDriver(); + $queues = ['default']; + + try { + switch ($driver) { + case 'redis': + $queues = $this->discoverRedisQueues(); + break; + + case 'memcached': + // Memcached doesn't support key scanning, use known queues + $queues = $this->discoverKnownQueues(); + break; + + case 'database': + default: + $queues = $this->discoverDatabaseQueues(); + break; + } + } catch (\Throwable $e) { + if (function_exists('error_log')) { + error_log('[WP Queue] Failed to discover queues: '.$e->getMessage()); + } + } + + // Always include default queue + if (! in_array('default', $queues, true)) { + array_unshift($queues, 'default'); + } + + return array_unique($queues); + } + + /** + * Discover queues from Redis. + * + * @return string[] + */ + protected function discoverRedisQueues(): array + { + $queue = $this->connection('redis'); + + if (! $queue instanceof RedisQueue) { + return ['default']; + } + + // Use reflection to access getAllQueues method + $reflection = new \ReflectionMethod($queue, 'getAllQueues'); + $reflection->setAccessible(true); + + return $reflection->invoke($queue); + } + + /** + * Discover queues from database (wp_options). + * + * @return string[] + */ + protected function discoverDatabaseQueues(): array + { + global $wpdb; + + $results = $wpdb->get_col( + $wpdb->prepare( + "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s", + 'wp_queue_jobs_%', + ), + ); + + $queues = ['default']; + foreach ($results as $optionName) { + $name = str_replace('wp_queue_jobs_', '', $optionName); + if ($name && ! in_array($name, $queues, true)) { + $queues[] = $name; + } + } + + return $queues; + } + + /** + * Get known queues from scheduled jobs. + * + * Used as fallback when driver doesn't support queue discovery. + * + * @return string[] + */ + protected function discoverKnownQueues(): array + { + // Known queues used by iiko plugin + return ['default', 'imports', 'sync', 'cleanup']; + } + protected function resolve(string $name): QueueInterface { if (isset($this->customCreators[$name])) { diff --git a/src/Storage/LogStorage.php b/src/Storage/LogStorage.php index dbbb716..47bf44d 100644 --- a/src/Storage/LogStorage.php +++ b/src/Storage/LogStorage.php @@ -56,7 +56,13 @@ public function all(): array $table = $this->getTableName(); - $rows = $wpdb->get_results("SELECT * FROM {$table} ORDER BY created_at ASC", ARRAY_A) ?: []; + $sql = "SELECT * FROM {$table} ORDER BY created_at ASC"; + $rows = $wpdb->get_results($sql, ARRAY_A) ?: []; + + if ($this->isMissingTableError($wpdb->last_error)) { + WPQueue::install(); + $rows = $wpdb->get_results($sql, ARRAY_A) ?: []; + } return array_map(static function (array $row): array { return [ @@ -106,10 +112,13 @@ public function failed(): array $table = $this->getTableName(); - $rows = $wpdb->get_results( - $wpdb->prepare("SELECT * FROM {$table} WHERE status = %s ORDER BY created_at DESC", 'failed'), - ARRAY_A, - ) ?: []; + $sql = $wpdb->prepare("SELECT * FROM {$table} WHERE status = %s ORDER BY created_at DESC", 'failed'); + $rows = $wpdb->get_results($sql, ARRAY_A) ?: []; + + if ($this->isMissingTableError($wpdb->last_error)) { + WPQueue::install(); + $rows = $wpdb->get_results($sql, ARRAY_A) ?: []; + } return array_map(static function (array $row): array { return [ @@ -136,10 +145,13 @@ public function completed(): array $table = $this->getTableName(); - $rows = $wpdb->get_results( - $wpdb->prepare("SELECT * FROM {$table} WHERE status = %s ORDER BY created_at DESC", 'completed'), - ARRAY_A, - ) ?: []; + $sql = $wpdb->prepare("SELECT * FROM {$table} WHERE status = %s ORDER BY created_at DESC", 'completed'); + $rows = $wpdb->get_results($sql, ARRAY_A) ?: []; + + if ($this->isMissingTableError($wpdb->last_error)) { + WPQueue::install(); + $rows = $wpdb->get_results($sql, ARRAY_A) ?: []; + } return array_map(static function (array $row): array { return [ @@ -165,9 +177,13 @@ public function clearOld(int $daysOld = 7): int $table = $this->getTableName(); $cutoff = gmdate('Y-m-d H:i:s', time() - ($daysOld * DAY_IN_SECONDS)); - $deleted = $wpdb->query( - $wpdb->prepare("DELETE FROM {$table} WHERE created_at < %s", $cutoff), - ); + $sql = $wpdb->prepare("DELETE FROM {$table} WHERE created_at < %s", $cutoff); + $deleted = $wpdb->query($sql); + + if ($this->isMissingTableError($wpdb->last_error)) { + WPQueue::install(); + $deleted = $wpdb->query($sql); + } return (int) $deleted; } @@ -180,7 +196,13 @@ public function clear(): void global $wpdb; $table = $this->getTableName(); - $wpdb->query("TRUNCATE TABLE {$table}"); + $sql = "TRUNCATE TABLE {$table}"; + $wpdb->query($sql); + + if ($this->isMissingTableError($wpdb->last_error)) { + WPQueue::install(); + $wpdb->query($sql); + } } /** @@ -194,7 +216,13 @@ public function metrics(): array $table = $this->getTableName(); - $rows = $wpdb->get_results("SELECT queue, job_class, status FROM {$table}", ARRAY_A) ?: []; + $sql = "SELECT queue, job_class, status FROM {$table}"; + $rows = $wpdb->get_results($sql, ARRAY_A) ?: []; + + if ($this->isMissingTableError($wpdb->last_error)) { + WPQueue::install(); + $rows = $wpdb->get_results($sql, ARRAY_A) ?: []; + } $metrics = [ 'total' => count($rows), diff --git a/src/WPQueue.php b/src/WPQueue.php index c7e0faa..353feed 100644 --- a/src/WPQueue.php +++ b/src/WPQueue.php @@ -8,6 +8,7 @@ use WPQueue\Admin\RestApi; use WPQueue\Contracts\JobInterface; use WPQueue\Jobs\PendingDispatch; +use WPQueue\Loopback\LoopbackHandler; use WPQueue\Storage\LogStorage; /** @@ -73,30 +74,27 @@ public static function boot(): void add_action('wp_queue_process', static function (string $queue = 'default'): void { error_log('WP Queue: Processing started for queue: '.$queue); + if (self::isProcessing($queue)) { + error_log('WP Queue: Processing already running for queue: '.$queue); + + return; + } + + $lockKey = 'wp_queue_lock_'.$queue; + $lockTtl = 120; + + set_site_transient($lockKey, 1, $lockTtl); + $instance = self::getInstance(); $instance->worker->setMaxJobs(50); $instance->worker->setMaxTime(50); - // Start with the queue passed from the cron event (default: "default") - $queues = [$queue]; - - // Auto-discover all queues stored in options (wp_queue_jobs_*) - if (function_exists('get_option')) { - global $wpdb; + // Discover all queues from the current driver + $queues = $instance->manager->discoverQueues(); - $results = $wpdb->get_col( - $wpdb->prepare( - "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s", - 'wp_queue_jobs_%', - ), - ); - - foreach ($results as $optionName) { - $name = str_replace('wp_queue_jobs_', '', $optionName); - if (! in_array($name, $queues, true)) { - $queues[] = $name; - } - } + // Ensure default queue is always processed + if (! in_array($queue, $queues, true)) { + array_unshift($queues, $queue); } // Process each discovered queue until worker reaches its limits @@ -108,7 +106,11 @@ public static function boot(): void } } - error_log('WP Queue: Processing completed. Jobs processed: '.$instance->worker->getJobsProcessed()); + try { + error_log('WP Queue: Processing completed. Jobs processed: '.$instance->worker->getJobsProcessed()); + } finally { + delete_site_transient($lockKey); + } }); // Schedule queue processing @@ -123,6 +125,9 @@ public static function boot(): void new AdminPage(); } + // Loopback async handler (must be outside is_admin()) + new LoopbackHandler(); + // REST API (must be outside is_admin() for REST requests to work) new RestApi(); diff --git a/wp-queue.php b/wp-queue.php index 9007eb4..8fae94d 100644 --- a/wp-queue.php +++ b/wp-queue.php @@ -53,19 +53,19 @@ }); } -// Bootstrap -add_action('plugins_loaded', static function (): void { - \WPQueue\WPQueue::boot(); -}); - -// Load text domain -add_action('init', static function (): void { +// Load text domain at after_setup_theme (WordPress 6.7+ requires this or later) +add_action('after_setup_theme', static function (): void { load_plugin_textdomain( 'wp-queue', false, dirname(plugin_basename(__FILE__)).'/languages/', ); -}); +}, 1); + +// Bootstrap after text domain is loaded +add_action('after_setup_theme', static function (): void { + \WPQueue\WPQueue::boot(); +}, 2); // Activation register_activation_hook(__FILE__, static function (): void { From ed2d1aba990080823f797a1ed6832bfaa305c90d Mon Sep 17 00:00:00 2001 From: Aleksei Tikhomirov Date: Sat, 25 Jul 2026 11:36:24 +0300 Subject: [PATCH 2/8] feat(runtime): support daemon and cron_loopback runtime modes with loopback dispatch - Add RuntimeMode with cron_loopback, daemon, auto modes - Add LoopbackDispatcher and LoopbackHandler for async queue trigger - Gate cron scheduling and loopback handler by runtime mode - Add --daemon flag to wp queue work CLI command --- src/CLI/QueueCommand.php | 34 +++++++ src/Loopback/LoopbackDispatcher.php | 146 ++++++++++++++++++++++++++++ src/Loopback/LoopbackHandler.php | 61 ++++++++++++ src/Runtime/RuntimeMode.php | 75 ++++++++++++++ src/WPQueue.php | 15 ++- 5 files changed, 328 insertions(+), 3 deletions(-) create mode 100644 src/Loopback/LoopbackDispatcher.php create mode 100644 src/Loopback/LoopbackHandler.php create mode 100644 src/Runtime/RuntimeMode.php diff --git a/src/CLI/QueueCommand.php b/src/CLI/QueueCommand.php index 244f650..86d21ab 100644 --- a/src/CLI/QueueCommand.php +++ b/src/CLI/QueueCommand.php @@ -106,17 +106,31 @@ public function status(array $args, array $assocArgs): void * default: 256 * --- * + * [--daemon] + * : Run as a daemon worker that continuously polls the queue. + * In daemon mode loopback requests and WP-Cron scheduling are skipped + * on the current process so the worker does not fight with itself. + * * ## EXAMPLES * * wp queue work * wp queue work emails --limit=50 * wp queue work imports --memory=512 + * wp queue work --daemon + * wp queue work imports --daemon --memory=512 * * @when after_wp_load */ public function work(array $args, array $assocArgs): void { $queue = $args[0] ?? 'default'; + + if (! empty($assocArgs['daemon'])) { + $this->runDaemon($queue, $assocArgs); + + return; + } + $limit = (int) ($assocArgs['limit'] ?? 100); // Get default memory limit from WordPress @@ -141,6 +155,26 @@ public function work(array $args, array $assocArgs): void WP_CLI::success("Processed {$processed} jobs from queue: {$queue}"); } + /** + * Run a daemon worker that continuously polls the queue. + */ + protected function runDaemon(string $queue, array $assocArgs): void + { + // Mark this process as the daemon so loopback/cron do not trigger + // additional workers inside the same process. + if (! defined('WP_QUEUE_DAEMON')) { + define('WP_QUEUE_DAEMON', true); + } + + $memory = (int) ($assocArgs['memory'] ?? 256); + + WP_CLI::log("Starting daemon worker for queue: {$queue} (memory limit: {$memory}MB)"); + + $worker = WPQueue::worker(); + $worker->setMemoryLimit($memory); + $worker->daemon($queue); + } + /** * Clear all jobs from a queue. * diff --git a/src/Loopback/LoopbackDispatcher.php b/src/Loopback/LoopbackDispatcher.php new file mode 100644 index 0000000..2331a66 --- /dev/null +++ b/src/Loopback/LoopbackDispatcher.php @@ -0,0 +1,146 @@ +get_error_message())); + } elseif (is_array($response) && ($response['response']['code'] ?? 0) >= 400) { + error_log(sprintf( + 'WP Queue: loopback spawn returned HTTP %s for queue %s', + $response['response']['code'] ?? 'unknown', + $queue, + )); + } + } + + /** + * Build the loopback URL with nonce. + */ + public static function buildUrl(string $queue): string + { + $args = [ + 'action' => 'wp_queue_loopback', + 'queue' => self::sanitizeQueue($queue), + 'nonce' => wp_create_nonce(self::nonceAction($queue)), + ]; + + $url = add_query_arg($args, admin_url('admin-ajax.php')); + + /** + * Filters the loopback URL used to trigger immediate queue processing. + * + * @param string $url The loopback URL. + * @param string $queue Queue name. + */ + return apply_filters('wp_queue_loopback_url', $url, $queue); + } + + /** + * Build the loopback POST arguments. + */ + public static function buildPostArgs(): array + { + $args = [ + 'timeout' => 0.01, + 'blocking' => false, + 'sslverify' => apply_filters('https_local_ssl_verify', false), + 'cookies' => $_COOKIE, + 'headers' => [ + 'Referer' => home_url(), + ], + ]; + + /** + * Filters the POST arguments used for the loopback request. + * + * @param array $args + */ + return apply_filters('wp_queue_loopback_post_args', $args); + } + + /** + * Nonce verification action name. + */ + public static function nonceAction(string $queue): string + { + return 'wp_queue_loopback_'.$queue; + } + + /** + * Sanitize queue name. + */ + public static function sanitizeQueue(string $queue): string + { + return preg_replace('/[^a-z0-9_-]/', '', $queue) ?: 'default'; + } + + /** + * Whether loopback dispatch is enabled. + * + * Disable by defining WP_QUEUE_LOOPBACK as false in wp-config.php. + * Also disabled automatically when the runtime mode is set to daemon, + * because a daemon process is already polling the queue. + */ + public static function isEnabled(): bool + { + if (defined('WP_QUEUE_LOOPBACK')) { + return (bool) WP_QUEUE_LOOPBACK; + } + + if (! RuntimeMode::useLoopback()) { + return false; + } + + /** + * Filters whether loopback dispatch is enabled. + * + * @param bool $enabled Default true. + */ + return apply_filters('wp_queue_loopback_enabled', true); + } +} diff --git a/src/Loopback/LoopbackHandler.php b/src/Loopback/LoopbackHandler.php new file mode 100644 index 0000000..d7f5b59 --- /dev/null +++ b/src/Loopback/LoopbackHandler.php @@ -0,0 +1,61 @@ +verifyNonce($queue)) { + wp_die('Unauthorized', 'Unauthorized', ['response' => 403]); + } + + if (WPQueue::isProcessing($queue)) { + wp_die('Already processing', 'Already processing', ['response' => 200]); + } + + // Trigger the same handler the cron job uses. + do_action('wp_queue_process', $queue); + + wp_die('OK', 'OK', ['response' => 200]); + } + + /** + * Verify the loopback nonce. + */ + protected function verifyNonce(string $queue): bool + { + $nonce = $_REQUEST['nonce'] ?? ''; + + if (empty($nonce)) { + return false; + } + + return wp_verify_nonce(sanitize_text_field(wp_unslash($nonce)), LoopbackDispatcher::nonceAction($queue)) !== false; + } +} diff --git a/src/Runtime/RuntimeMode.php b/src/Runtime/RuntimeMode.php new file mode 100644 index 0000000..4785687 --- /dev/null +++ b/src/Runtime/RuntimeMode.php @@ -0,0 +1,75 @@ + Date: Sat, 25 Jul 2026 11:47:36 +0300 Subject: [PATCH 3/8] fix(loopback): skip loopback spawn when WordPress HTTP functions are unavailable Unit tests run without loading WordPress HTTP stack. The dispatcher now returns early when wp_remote_post() does not exist, preventing fatal errors in test environments. --- src/Loopback/LoopbackDispatcher.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Loopback/LoopbackDispatcher.php b/src/Loopback/LoopbackDispatcher.php index 2331a66..006f379 100644 --- a/src/Loopback/LoopbackDispatcher.php +++ b/src/Loopback/LoopbackDispatcher.php @@ -30,6 +30,11 @@ public static function spawn(string $queue = 'default'): void return; } + if (! function_exists('wp_remote_post')) { + // WordPress is not fully loaded (e.g. unit tests). Skip loopback. + return; + } + $queue = self::sanitizeQueue($queue); if (isset(self::$spawned[$queue])) { From 65ccc059fc97325aa0ea2a6df25dd2422ac792f4 Mon Sep 17 00:00:00 2001 From: Aleksei Tikhomirov Date: Sat, 25 Jul 2026 11:49:15 +0300 Subject: [PATCH 4/8] chore(release): bump version to 1.2.0 and update changelog --- readme.txt | 11 ++++++++++- wp-queue.php | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/readme.txt b/readme.txt index 052e0e7..7b485b2 100644 --- a/readme.txt +++ b/readme.txt @@ -5,7 +5,7 @@ Tags: queue, cron, background-processing, jobs, scheduler Requires at least: 6.0 Tested up to: 6.9 Requires PHP: 8.3 -Stable tag: 1.1.0 +Stable tag: 1.2.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -147,6 +147,12 @@ Yes, WP Queue works with WordPress multisite installations. == Changelog == += 1.2.0 = +* Added runtime modes: cron_loopback, daemon, auto +* Added loopback dispatch for immediate queue processing after dispatch() +* Added --daemon flag to `wp queue work` CLI command +* WP-Cron scheduling and loopback handler are now gated by runtime mode + = 1.1.0 = * Added Redis queue driver (compatible with redis-cache plugin) * Added Memcached queue driver @@ -167,6 +173,9 @@ Yes, WP Queue works with WordPress multisite installations. == Upgrade Notice == += 1.2.0 = +New runtime modes. Use `define('WP_QUEUE_RUNTIME_MODE', 'daemon')` with a separate worker process, or keep the default `cron_loopback` mode for shared hosting. + = 1.1.0 = New Redis and Memcached drivers for better performance. Set WP_QUEUE_DRIVER to 'auto' for automatic selection. diff --git a/wp-queue.php b/wp-queue.php index 8fae94d..9a67827 100644 --- a/wp-queue.php +++ b/wp-queue.php @@ -6,7 +6,7 @@ * Plugin Name: WP Queue * Plugin URI: https://github.com/rwsite/wp-queue * Description: Background job processing and WP-Cron management for WordPress. Schedule tasks, manage queues, and monitor cron events. - * Version: 1.1.0 + * Version: 1.2.0 * Author: Aleksei Tikhomirov * Author URI: https://rwsite.ru * License: GPL-2.0-or-later @@ -26,7 +26,7 @@ return; } -define('WP_QUEUE_VERSION', '1.1.0'); +define('WP_QUEUE_VERSION', '1.2.0'); define('WP_QUEUE_FILE', __FILE__); define('WP_QUEUE_PATH', plugin_dir_path(__FILE__)); define('WP_QUEUE_URL', plugin_dir_url(__FILE__)); From 4fe833b6840376ba437ba0301ab64654e6d15c59 Mon Sep 17 00:00:00 2001 From: Aleksei Tikhomirov Date: Sat, 25 Jul 2026 12:09:56 +0300 Subject: [PATCH 5/8] fix(tests): call initTabs() before inspecting AdminPage structure in E2E tests AdminPage registers tab initialization on the init hook. The E2E tests read private tabs/sections properties without triggering init, so tabs stayed empty. Explicitly calling initTabs() fixes the failing assertions. --- tests/Feature/AdminPageTest.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/Feature/AdminPageTest.php b/tests/Feature/AdminPageTest.php index 3356017..523cc72 100644 --- a/tests/Feature/AdminPageTest.php +++ b/tests/Feature/AdminPageTest.php @@ -37,6 +37,7 @@ function add_menu_page(string $page_title, string $menu_title, string $capabilit test('AdminPage имеет 3 основные вкладки', function (): void { $adminPage = new AdminPage(); + $adminPage->initTabs(); $reflection = new ReflectionClass($adminPage); // Получаем приватное свойство tabs @@ -53,6 +54,7 @@ function add_menu_page(string $page_title, string $menu_title, string $capabilit test('AdminPage имеет секции для каждой вкладки', function (): void { $adminPage = new AdminPage(); + $adminPage->initTabs(); $reflection = new ReflectionClass($adminPage); $sectionsProperty = $reflection->getProperty('sections'); @@ -67,6 +69,7 @@ function add_menu_page(string $page_title, string $menu_title, string $capabilit test('Вкладка Очереди имеет 5 секций', function (): void { $adminPage = new AdminPage(); + $adminPage->initTabs(); $reflection = new ReflectionClass($adminPage); $sectionsProperty = $reflection->getProperty('sections'); @@ -83,6 +86,7 @@ function add_menu_page(string $page_title, string $menu_title, string $capabilit test('Вкладка Планировщик заданий имеет 4 секции', function (): void { $adminPage = new AdminPage(); + $adminPage->initTabs(); $reflection = new ReflectionClass($adminPage); $sectionsProperty = $reflection->getProperty('sections'); @@ -98,6 +102,7 @@ function add_menu_page(string $page_title, string $menu_title, string $capabilit test('Вкладка Система имеет 3 секции', function (): void { $adminPage = new AdminPage(); + $adminPage->initTabs(); $reflection = new ReflectionClass($adminPage); $sectionsProperty = $reflection->getProperty('sections'); From b604eac1ebf4f18c8b1d903eb1394b0ca9556373 Mon Sep 17 00:00:00 2001 From: Aleksei Tikhomirov Date: Sun, 26 Jul 2026 00:04:03 +0300 Subject: [PATCH 6/8] feat(admin): add daemon worker docs and actualize queue handler status - Replace hardcoded processing triggers with a real handler badge (daemon / WP-Cron + Loopback / WP-Cron only). - Explicitly warn when loopback is inactive and jobs will be delayed. - Fix WP-Cron disabled detection in the status block. - Add System > Daemon worker page with WP-CLI and non-WP-CLI instructions, plus systemd, Supervisor, Docker Compose and plain PHP examples. - Update Russian translations and tests. --- languages/wp-queue-ru_RU.l10n.php | 343 ++++++++++++- languages/wp-queue-ru_RU.mo | Bin 38037 -> 43931 bytes languages/wp-queue-ru_RU.po | 790 ++++++++++++++++++------------ src/Admin/AdminPage.php | 167 ++++++- tests/Feature/AdminPageTest.php | 11 +- 5 files changed, 979 insertions(+), 332 deletions(-) diff --git a/languages/wp-queue-ru_RU.l10n.php b/languages/wp-queue-ru_RU.l10n.php index 3e656be..60e217a 100644 --- a/languages/wp-queue-ru_RU.l10n.php +++ b/languages/wp-queue-ru_RU.l10n.php @@ -1,5 +1,340 @@ 'WP Queue 1.0.0', 'report-msgid-bugs-to' => 'https://github.com/rwsite/wp-queue/issues', 'pot-creation-date' => '2025-12-06 01:35+0000', 'po-revision-date' => '2025-12-06 00:11+0000', 'last-translator' => '', 'language-team' => 'Русский', 'language' => 'ru_RU', 'mime-version' => '1.0', 'content-type' => 'text/plain; charset=UTF-8', 'content-transfer-encoding' => '8bit', 'plural-forms' => 'nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);', 'x-generator' => 'Loco https://localise.biz/', 'x-loco-version' => '2.8.0; wp-6.9; php-8.3.28', 'messages' => ['%d entries' => '%d записей', '%d tasks' => '%d задач', '(configured)' => '(настроено)', 'A background process (Worker) constantly checks the queue for new jobs.' => 'Фоновый процесс (Worker) постоянно проверяет очередь на наличие новых задач.', 'A list of all active queues with their size, status (idle/pending/running/paused), and control buttons (pause/resume, clear all tasks).' => 'Список всех активных очередей с их размером, статусом (бездействие/ожидание/выполнение/пауза) и кнопками управления (пауза/возобновление, очистить все задачи).', 'A plugin creates a "Job" (a task) and pushes it to the queue.' => 'Плагин создает "Задачу" (Job) и помещает ее в очередь.', 'A real cron job configured on your server (Linux) that calls WordPress every minute. This is reliable and precise. Ideally, you should disable default WP-Cron and use System Cron.' => 'Настоящая задача cron, настроенная на вашем сервере (Linux), которая вызывает WordPress каждую минуту. Это надежно и точно. В идеале, вы должны отключить стандартный WP-Cron и использовать системный Cron.', 'A separate table for events that are temporarily disabled.' => 'Отдельная таблица для временно отключенных событий.', 'A table of all available intervals (hourly, daily, etc.) with their duration.' => 'Таблица всех доступных интервалов (ежечасно, ежедневно и т.д.) с их продолжительностью.', 'About WP Queue' => 'О WP Queue', 'Action completed successfully' => 'Действие выполнено успешно', 'Action Scheduler' => 'Планировщик действий', 'Actions' => 'Действия', 'Active' => 'Активный', 'Add to wp-config.php:' => 'Добавить в wp-config.php:', 'ago (overdue)' => 'назад (просрочено)', 'Aleksei Tikhomirov' => 'Алексей Тихомиров', 'All' => 'Все', 'All queues' => 'Все очереди', 'All systems are healthy.' => 'Все системы работают исправно.', 'Alternate Cron' => 'Альтернативный Cron', 'An error occurred' => 'Произошла ошибка', 'Are you sure you want to clear this queue?' => 'Вы уверены, что хотите очистить эту очередь?', 'Attempts' => 'Попытки', 'Author Website' => 'Сайт автора', 'Available From' => 'Доступно с', 'Background job processing and WP-Cron management for WordPress. Schedule tasks, manage queues, and monitor cron events.' => 'Обработка фоновых задач и управление WP-Cron для WordPress. Планируйте задачи, управляйте очередями и отслеживайте cron-события.', 'Basic Usage' => 'Базовое использование', 'Button to delete old log entries to avoid cluttering the database.' => 'Кнопка для удаления старых записей журнала, чтобы избежать загромождения базы данных.', 'Buttons to show all entries, only completed, or only failed jobs.' => 'Кнопки для показа всех записей, только завершенных или только неудачных задач.', 'By default, WordPress executes all actions during the page load request. If a plugin needs to send 100 emails or sync 500 products with an external API, the user has to wait until it finishes. This leads to slow page loads or timeouts.' => 'По умолчанию WordPress выполняет все действия во время загрузки страницы. Если плагину нужно отправить 100 писем или синхронизировать 500 товаров с внешним API, пользователь должен дождаться завершения. Это приводит к медленной загрузке страниц или тайм-аутам.', 'By default, WP Queue stores jobs in the WordPress database (wp_options or custom tables). For high-performance sites, you can use Redis. Redis is an in-memory data store that is much faster than a SQL database for queue operations. It reduces load on your database and speeds up job processing.' => 'По умолчанию WP Queue хранит задачи в базе данных WordPress (wp_options или пользовательские таблицы). Для сайтов с высокой производительностью вы можете использовать Redis. Redis - это хранилище данных в памяти, которое намного быстрее, чем база данных SQL для операций с очередью. Это снижает нагрузку на вашу базу данных и ускоряет обработку задач.', 'Cancel' => 'Отмена', 'Cannot connect to Memcached at %s:%d - %s' => 'Не удалось подключиться к Memcached на %s:%d - %s', 'Cannot connect to Redis at %s:%d - %s' => 'Не удалось подключиться к Redis на %s:%d - %s', 'Check basic system requirements that affect queue stability.' => 'Проверьте базовые системные требования, влияющие на стабильность очереди.', 'Check driver settings.' => 'Проверьте настройки драйвера.', 'Check logs when encountering errors in background processes.' => 'Проверьте журналы при возникновении ошибок в фоновых процессах.', 'Check this tab when setting up your server or debugging queue issues.' => 'Проверьте эту вкладку при настройке сервера или отладке проблем с очередью.', 'Checking for disablement (DISABLE_WP_CRON), alternative cron, loopback requests.' => 'Проверка отключения (DISABLE_WP_CRON), альтернативного cron, обратных запросов.', 'Checking system requirements and environment for stable queue operation.' => 'Проверка системных требований и окружения для стабильной работы очереди.', 'Clear' => 'Очистить', 'Clear All' => 'Очистить все', 'Clear All Logs' => 'Очистить все журналы', 'Clear All Queues' => 'Очистить все очереди', 'Clear Logs' => 'Очистить журналы', 'Clear logs' => 'Очистить журналы', 'Clear old' => 'Очистить старые', 'Close' => 'Закрыть', 'Comparison of server time, WordPress, and GMT offset for diagnosing scheduling issues.' => 'Сравнение серверного времени, WordPress и смещения GMT для диагностики проблем с планированием.', 'Completed' => 'Завершено', 'Component Status' => 'Статус компонента', 'Configure' => 'Настроить', 'Configure automatic retries on errors:' => 'Настроить автоматические повторные попытки при ошибках:', 'Configure Memcached' => 'Настроить Memcached', 'Configure Redis' => 'Настроить Redis', 'Configure system cron' => 'Настроить системный cron', 'Connected to Memcached at %s:%d' => 'Подключено к Memcached на %s:%d', 'Connected to Redis at %s:%d' => 'Подключено к Redis на %s:%d', 'Create a job class and dispatch it to the queue:' => 'Создайте класс задачи и отправьте его в очередь:', 'Critical for understanding why tasks are not running on time.' => 'Критически важно для понимания причин, по которым задачи не выполняются вовремя.', 'Cron event paused' => 'Cron-событие приостановлено', 'Cron event resumed' => 'Cron-событие возобновлено', 'Cron event updated' => 'Cron-событие обновлено', 'Cron Events' => 'Cron-события', 'Current driver:' => 'Текущий драйвер:', 'Current Memory Usage' => 'Текущее использование памяти', 'Custom driver' => 'Пользовательский драйвер', 'Dashboard' => 'Панель управления', 'Dashboard – quick overview of queues, number of jobs and recent activity.' => 'Панель управления – быстрый обзор очередей, количества задач и недавней активности.', 'Delayed Jobs' => 'Отложенные задачи', 'Delete' => 'Удалить', 'Delete all' => 'Удалить все', 'Deletes all job execution logs' => 'Удаляет все журналы выполнения задач', 'Deletes all jobs from all queues' => 'Удаляет все задачи из всех очередей', 'Deletes logs older than 7 days' => 'Удаляет журналы старше 7 дней', 'Description' => 'Описание', 'Detailed description of the panel tabs' => 'Подробное описание вкладок панели', 'Details' => 'Детали', 'Developers can dispatch their own jobs to the queue, choose drivers (Database, Sync, Redis), configure retries and schedules. See the documentation and examples on GitHub for integration details.' => 'Разработчики могут отправлять свои задачи в очередь, выбирать драйверы (Database, Sync, Redis), настраивать повторные попытки и расписания. См. документацию и примеры на GitHub для деталей интеграции.', 'DISABLE_WP_CRON is set to true. Background tasks will not run automatically.' => 'DISABLE_WP_CRON установлен в true. Фоновые задачи не будут выполняться автоматически.', 'Disabled' => 'Отключено', 'Dispatch' => 'Отправить', 'Display' => 'Отобразить', 'Displays a table of scheduled recurring tasks (PHP classes) registered in WP Queue: job class, execution interval, queue assignment, and next run time. Allows you to run any task manually.' => 'Отображает таблицу запланированных повторяющихся задач (классы PHP), зарегистрированных в WP Queue: класс задачи, интервал выполнения, назначение очереди и время следующего запуска. Позволяет запустить любую задачу вручную.', 'Displays all registered PHP job classes with their configuration.' => 'Отображает все зарегистрированные классы задач PHP с их конфигурацией.', 'Displays environment information (PHP and WordPress versions, memory limits, execution time, timezone), WP-Cron status (disabled, alternative cron, loopback checks). If Action Scheduler is installed - its statistics. Server and WordPress time.' => 'Отображает информацию об окружении (версии PHP и WordPress, лимиты памяти, время выполнения, часовой пояс), статус WP-Cron (отключен, альтернативный cron, проверки обратной связи). Если установлен Action Scheduler - его статистика. Серверное и время WordPress.', 'Displays the last 200 entries by default or all completed/failed.' => 'Отображает последние 200 записей по умолчанию или все завершенные/неудачные.', 'Displays the total number of tasks in different statuses (pending, running, completed, failed).' => 'Отображает общее количество задач в разных статусах (ожидание, выполнение, завершено, неудача).', 'Displays when the job should run next or marks overdue jobs.' => 'Отображает, когда задача должна выполняться следующей, или отмечает просроченные задачи.', 'Distribute jobs across different queues:' => 'Распределите задачи по разным очередям:', 'Documentation on GitHub' => 'Документация на GitHub', 'Driver' => 'Драйвер', 'Driver "%s" is configured in wp-config.php, but not available. Falling back to "%s".' => 'Драйвер "%s" настроен в wp-config.php, но недоступен. Переход на "%s".', 'Driver:' => 'Драйвер:', 'Drivers' => 'Драйверы', 'Edit' => 'Редактировать', 'Edit Cron Event' => 'Редактировать Cron-событие', 'Edit Schedule' => 'Редактировать расписание', 'Enabled' => 'Включено', 'Environment' => 'Окружение', 'Error' => 'Ошибка', 'Error message' => 'Сообщение об ошибке', 'Errors' => 'Ошибки', 'Event actions' => 'Действия событий', 'Event hook, next run time, schedule (single/hourly/daily), source, arguments.' => 'Хук события, время следующего запуска, расписание (однократно/ежечасно/ежедневно), источник, аргументы.', 'Event statistics' => 'Статистика событий', 'Event table' => 'Таблица событий', 'events' => 'события', 'Events by Source' => 'События по источникам', 'Every %d Minutes' => 'Каждые %d минут', 'Execution time, status (completed/failed/retrying), job class, queue, error message.' => 'Время выполнения, статус (завершено/неудача/повторная попытка), класс задачи, очередь, сообщение об ошибке.', 'Failed' => 'Сбои и неудачи', 'Failed Actions' => 'Неудачные действия', 'Failed to pause event' => 'Не удалось приостановить событие', 'Failed to resume event' => 'Не удалось возобновить событие', 'Failed to update event' => 'Не удалось обновить событие', 'For developers' => 'Для разработчиков', 'For more information:' => 'Для получения дополнительной информации:', 'For Redis/Memcached to work, you need the PHP extension installed and a server available. If not, the system will automatically use the "database" driver.' => 'Для работы Redis/Memcached необходимо установить PHP-расширение и иметь доступный сервер. В противном случае система автоматически использует драйвер "база данных".', 'For site administrators' => 'Для администраторов сайтов', 'Forces processing of all queues' => 'Принудительно обрабатывает все очереди', 'from now' => 'сейчас', 'Full documentation and code examples are available on GitHub: %s.' => 'Полная документация и примеры кода доступны на GitHub: %s.', 'GitHub Repository' => 'Репозиторий GitHub', 'GMT Offset' => 'Смещение GMT', 'Help' => 'Помощь', 'History' => 'История', 'History of all job executions for diagnostics and debugging.' => 'История всех выполнений задач для диагностики и отладки.', 'Hook' => 'Хук', 'How Queues Work' => 'Как работают очереди', 'How to change the driver?' => 'Как изменить драйвер?', 'https://github.com/rwsite/wp-queue' => 'https://github.com/rwsite/wp-queue', 'https://rwsite.ru' => 'https://rwsite.ru', 'ID' => 'ID', 'Idle' => 'Бездействие', 'If installed, displays version and statistics (pending/running/failed actions).' => 'Если установлен, отображает версию и статистику (ожидание/выполнение/неудачные действия).', 'If you installed WP Queue because another plugin requires it, you usually do not need to configure anything here. Use these tabs mainly for monitoring and troubleshooting.' => 'Если вы установили WP Queue, потому что другой плагин требует его, обычно вам не нужно ничего настраивать здесь. Используйте эти вкладки в основном для мониторинга и устранения неполадок.', 'Important:' => 'Важно:', 'In Queue' => 'В очереди', 'Inspect and manage WP-Cron events for WP Queue and other plugins.' => 'Проверяйте и управляйте WP-Cron событиями для WP Queue и других плагинов.', 'Install: pecl install memcached' => 'Установка: pecl install memcached', 'Install: pecl install redis' => 'Установка: pecl install redis', 'Interval' => 'Интервал', 'Job' => 'Задача', 'Job Class' => 'Класс задачи', 'Job class, execution interval (e.g., "hourly", "daily"), queue assignment, next run time.' => 'Класс задачи, интервал выполнения (например, "ежечасно", "ежедневно"), назначение очереди, время следующего запуска.', 'Job Details' => 'Детали задачи', 'Job information' => 'Информация о задаче', 'Job list' => 'Список задач', 'jobs' => 'задачи', 'Jobs in Queue' => 'Задачи в очереди', 'Log table' => 'Таблица журнала', 'Logs' => 'Журналы', 'Logs – history of completed and failed jobs that helps to diagnose problems.' => 'Журналы – история завершенных и неудачных задач, которые помогают диагностировать проблемы.', 'Loopback' => 'Обратная связь', 'Loopback issue: %s' => 'Проблема обратной связи: %s', 'Loopback Request' => 'Запрос обратной связи', 'Loopback request successful' => 'Запрос обратной связи выполнен успешно', 'Manage queues from command line:' => 'Управление очередями из командной строки:', 'Management of scheduled recurring tasks.' => 'Управление запланированными повторяющимися задачами.', 'Management of WordPress system timers that trigger background processes.' => 'Управление системными таймерами WordPress, которые запускают фоновые процессы.', 'Manual run' => 'Ручной запуск', 'Max Execution Time' => 'Максимальное время выполнения', 'Memory Limit' => 'Лимит памяти', 'Memory usage is above 80%.' => 'Использование памяти выше 80%.', 'Message' => 'Сообщение', 'Monitor which background jobs are queued and running right now.' => 'Отслеживайте, какие фоновые задачи находятся в очереди и выполняются прямо сейчас.', 'More documentation' => 'Дополнительная документация', 'Name' => 'Имя', 'Named Queues' => 'Именованные очереди', 'Next Run' => 'Следующий запуск', 'Next run status' => 'Статус следующего запуска', 'No activity' => 'Нет активности', 'No cron events found.' => 'Cron-события не найдены.', 'No errors' => 'Нет ошибок', 'No extension' => 'Нет расширения', 'No logs found' => 'Журналы не найдены', 'No paused events' => 'Нет приостановленных событий', 'No scheduled events' => 'Нет запланированных событий', 'No scheduled jobs found.' => 'Запланированные задачи не найдены.', 'No server' => 'Нет сервера', 'Notifications of critical issues (low memory, disabled WP-Cron).' => 'Уведомления о критических проблемах (низкая память, отключенный WP-Cron).', 'Now' => 'Сейчас', 'Number of entries' => 'Количество записей', 'OK' => 'ОК', 'One-time' => 'Однократно', 'Overdue' => 'Просрочено', 'Overview' => 'Обзор', 'Pause' => 'Приостановить', 'Pause this queue?' => 'Приостановить эту очередь?', 'Paused' => 'Приостановлено', 'Paused At' => 'Приостановлено в', 'Paused Events' => 'Приостановленные события', 'Paused events' => 'Приостановленные события', 'Paused Since' => 'Приостановлено с', 'Pending' => 'Ожидание', 'Pending Actions' => 'Ожидающие действия', 'PHP' => 'PHP', 'PHP and WordPress versions, memory limits (current usage), maximum execution time, timezone.' => 'Версии PHP и WordPress, лимиты памяти (текущее использование), максимальное время выполнения, часовой пояс.', 'PHP extension "memcached" is not installed' => 'PHP-расширение "memcached" не установлено', 'PHP extension "redis" (phpredis) is not installed' => 'PHP-расширение "redis" (phpredis) не установлено', 'PHP max_execution_time is less than 30 seconds.' => 'PHP max_execution_time меньше 30 секунд.', 'PHP Version' => 'Версия PHP', 'Plugins' => 'Плагины', 'Process' => 'Обработать', 'Process Now' => 'Обработать сейчас', 'Process Queues' => 'Обработать очереди', 'Processing' => 'Обработка', 'Queue' => 'Очередь', 'Queue Driver' => 'Драйвер очереди', 'Queue is empty' => 'Очередь пуста', 'Queue statistics' => 'Статистика очереди', 'Queue table' => 'Таблица очереди', 'Queue: %s' => 'Очередь: %s', 'Queues' => 'Очереди', 'Quick Start' => 'Быстрый старт', 'Quickly see if any jobs are failing and view recent log entries.' => 'Быстро проверьте, не завершаются ли задачи неудачей, и просмотрите недавние записи журнала.', 'Ready' => 'Готово', 'Recent Activity' => 'Недавняя активность', 'Recent activity' => 'Недавняя активность', 'Redis Support' => 'Поддержка Redis', 'Registered Schedules' => 'Зарегистрированные расписания', 'Registered schedules' => 'Зарегистрированные расписания', 'Report an Issue' => 'Сообщить о проблеме', 'Report Issues' => 'Сообщить о проблемах', 'Resume' => 'Возобновить', 'Retry Attempts' => 'Попытки повтора', 'Run' => 'Запустить', 'Run Now' => 'Запустить сейчас', 'Run now, edit schedule, pause, delete. Modal window for changing interval.' => 'Запустить сейчас, редактировать расписание, приостановить, удалить. Модальное окно для изменения интервала.', 'Run tasks on schedule:' => 'Выполнять задачи по расписанию:', 'Running' => 'Выполняется', 'Running Actions' => 'Выполняющиеся действия', 'Save Changes' => 'Сохранить изменения', 'Schedule' => 'Расписание', 'Schedule a job to run after a specific time:' => 'Запланировать выполнение задачи после определенного времени:', 'Scheduled' => 'Запланировано', 'Scheduled Jobs' => 'Запланированные задачи', 'Scheduled Jobs – list of recurring background jobs added by your theme or plugins.' => 'Запланированные задачи – список повторяющихся фоновых задач, добавленных вашей темой или плагинами.', 'Scheduler' => 'Планировщик', 'Server Time' => 'Серверное время', 'Server time' => 'Серверное время', 'Single' => 'Одиночный', 'Single (run once)' => 'Одиночный (выполнить один раз)', 'Source' => 'Источник', 'Status' => 'Статус', 'Status filters' => 'Фильтры статуса', 'Storage' => 'Хранилище', 'Synchronous execution (no queue)' => 'Синхронное выполнение (без очереди)', 'System' => 'Система', 'System Cron (Recommended)' => 'Системный Cron (Рекомендуется)', 'System health' => 'Системное здоровье', 'System Issues Detected:' => 'Обнаружены системные проблемы:', 'System Status' => 'Системный статус', 'System – checks PHP version, WP-Cron status and other important settings.' => 'Система – проверяет версию PHP, статус WP-Cron и другие важные настройки.', 'The "Run Now" button allows you to run any job immediately, without waiting for the schedule.' => 'Кнопка "Запустить сейчас" позволяет запустить любую задачу немедленно, без ожидания расписания.', 'The job is saved in the database (or Redis) waiting to be picked up.' => 'Задача сохраняется в базе данных (или Redis) в ожидании обработки.', 'The last 10 log entries for quick tracking of queue activity.' => 'Последние 10 записей журнала для быстрого отслеживания активности очереди.', 'The main tab for monitoring queue status in real-time.' => 'Основная вкладка для мониторинга статуса очереди в реальном времени.', 'The plugin itself does not add new features to the frontend. It provides a reliable queue that other plugins or your custom code can use for background work.' => 'Сам плагин не добавляет новые функции на фронтенд. Он предоставляет надежную очередь, которую другие плагины или ваш кастомный код могут использовать для фоновой работы.', 'The worker picks up the job and executes it. If it succeeds, it is marked as "Completed". If it fails, it can be retried.' => 'Рабочий процесс забирает задачу и выполняет ее. В случае успеха она отмечается как "Завершено". В случае неудачи ее можно повторить.', 'This section is under development.' => 'Этот раздел находится в разработке.', 'Time' => 'Время', 'Timeout' => 'Тайм-аут', 'Timezone' => 'Часовой пояс', 'To add your own background jobs, use the WP Queue PHP API from your plugin or theme. You can dispatch jobs to different queues, set delays and retries. Full code examples are available in the README on GitHub.' => 'Чтобы добавить свои фоновые задачи, используйте PHP API WP Queue из вашего плагина или темы. Вы можете отправлять задачи в разные очереди, устанавливать задержки и повторные попытки. Полные примеры кода доступны в README на GitHub.', 'to get a list of available commands.' => 'чтобы получить список доступных команд.', 'To process the queue, WordPress needs a trigger. There are two ways to do this:' => 'Для обработки очереди WordPress нужен триггер. Есть два способа это сделать:', 'Tools' => 'Инструменты', 'Total' => 'Всего', 'Total errors' => 'Всего ошибок', 'Total Events' => 'Всего событий', 'Total Jobs' => 'Всего задач', 'Total number of events, overdue, grouped by source (WordPress, WooCommerce, WP Queue, plugins).' => 'Общее количество событий, просроченных, сгруппированных по источнику (WordPress, WooCommerce, WP Queue, плагины).', 'Unavailable' => 'Недоступно', 'Unexpected response code: %d' => 'Неожиданный код ответа: %d', 'Unknown' => 'Неизвестно', 'Unknown driver' => 'Неизвестный драйвер', 'Upcoming Events' => 'Предстоящие события', 'Usage' => 'Использование', 'Use system cron' => 'Использовать системный cron', 'Use this tab for quick checks of queue performance and identifying stuck processes.' => 'Используйте эту вкладку для быстрой проверки производительности очереди и выявления зависших процессов.', 'Used' => 'Использовано', 'Useful for testing jobs and forcing synchronizations.' => 'Полезно для тестирования задач и принудительных синхронизаций.', 'Useful Links' => 'Полезные ссылки', 'Uses wp_options table' => 'Использует таблицу wp_options', 'Version' => 'Версия', 'Versions' => 'Версии', 'Warning' => 'Предупреждение', 'What you can use it for' => 'Для чего это можно использовать', 'Why is it needed?' => 'Зачем это нужно?', 'WooCommerce' => 'WooCommerce', 'WordPress' => 'WordPress', 'WordPress checks for scheduled tasks on every page load. This works out of the box but has downsides: on low-traffic sites, tasks might not run on time; on high-traffic sites, it can cause performance issues. It is "fake" cron.' => 'WordPress проверяет запланированные задачи при каждой загрузке страницы. Это работает из коробки, но имеет недостатки: на сайтах с низким трафиком задачи могут не выполняться вовремя; на сайтах с высоким трафиком это может вызывать проблемы с производительностью. Это "поддельный" cron.', 'WordPress Time' => 'Время WordPress', 'WordPress Version' => 'Версия WordPress', 'Worker' => 'Рабочий процесс', 'WP Queue' => 'WP Queue', 'WP Queue allows executing tasks asynchronously in the background without blocking the main WordPress execution flow.' => 'WP Queue позволяет выполнять задачи асинхронно в фоне без блокировки основного потока выполнения WordPress.', 'WP Queue helps your site run heavy or regular tasks in the background (emails, synchronizations, cleanups) so that pages load faster for visitors.' => 'WP Queue помогает вашему сайту выполнять тяжелые или регулярные задачи в фоновом режиме (отправка писем, синхронизации, очистка), чтобы страницы загружались быстрее для посетителей.', 'WP Queue is a robust background processing library for WordPress. It allows you to offload time-consuming tasks (like sending emails, syncing data, or generating reports) to be processed asynchronously, ensuring your site remains fast and responsive for visitors.' => 'WP Queue - это надежная библиотека фоновой обработки для WordPress. Она позволяет вам выгружать трудоемкие задачи (например, отправку писем, синхронизацию данных или генерацию отчетов) для асинхронной обработки, обеспечивая быструю и отзывчивую работу сайта для посетителей.', 'WP Queue solves this by pushing these tasks to a "Queue" and processing them later in the background. The user gets an instant response, and the heavy work happens behind the scenes.' => 'WP Queue решает эту проблему, помещая эти задачи в "Очередь" и обрабатывая их позже в фоновом режиме. Пользователь получает мгновенный ответ, а тяжелая работа происходит за кулисами.', 'WP Queue — Queue System for WordPress' => 'WP Queue — Система очередей для WordPress', 'WP-CLI' => 'WP-CLI', 'WP-CLI Commands' => 'Команды WP-CLI', 'WP-CLI команды' => 'Команды WP-CLI', 'WP-Cron' => 'WP-Cron', 'WP-Cron (Default)' => 'WP-Cron (По умолчанию)', 'WP-Cron Disabled' => 'WP-Cron отключен', 'WP-Cron is disabled. Background tasks may not run automatically.' => 'WP-Cron отключен. Фоновые задачи могут не выполняться автоматически.', 'WP-Cron Status' => 'Статус WP-Cron', 'WP-Cron status' => 'Статус WP-Cron', 'WP-Cron vs System Cron' => 'WP-Cron против системного Cron', 'WP-Cron – list of cron events with the ability to run, pause or delete them.' => 'WP-Cron – список cron-событий с возможностью запуска, приостановки или удаления.', 'WP-Cron:' => 'WP-Cron:', '⚠️ Warning:' => '⚠️ Предупреждение:']]; +return array ( + 'project-id-version' => 'WP Queue 1.0.0', + 'report-msgid-bugs-to' => 'https://github.com/rwsite/wp-queue/issues', + 'pot-creation-date' => '2025-12-06 01:35+0000', + 'po-revision-date' => '2026-07-25 20:21+0000', + 'last-translator' => '', + 'language-team' => 'Русский', + 'language' => 'ru_RU', + 'mime-version' => '1.0', + 'content-type' => 'text/plain; charset=UTF-8', + 'content-transfer-encoding' => '8bit', + 'plural-forms' => 'nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);', + 'x-generator' => 'Loco https://localise.biz/', + 'x-loco-version' => '2.8.0; wp-6.9; php-8.3.28', + 'messages' => + array ( + '%d entries' => '%d записей', + '%d tasks' => '%d задач', + '(configured)' => '(настроено)', + 'A background process (Worker) constantly checks the queue for new jobs.' => 'Фоновый процесс (Worker) постоянно проверяет очередь на наличие новых заданий.', + 'A list of all active queues with their size, status (idle/pending/running/paused), and control buttons (pause/resume, clear all tasks).' => 'Список всех активных очередей с указанием их размера, статуса (простой/ожидание/выполнение/приостановка) и кнопок управления (пауза/возобновление, очистить все задачи).', + 'A plugin creates a "Job" (a task) and pushes it to the queue.' => 'Плагин создает «Задание» (задачу) и помещает его в очередь.', + 'A real cron job configured on your server (Linux) that calls WordPress every minute. This is reliable and precise. Ideally, you should disable default WP-Cron and use System Cron.' => 'На вашем сервере (Linux) должна быть настроена настоящая задача cron, которая будет запускать WordPress каждую минуту. Это надежно и точно. В идеале следует отключить стандартный WP-Cron и использовать системный Cron.', + 'A separate table for events that are temporarily disabled.' => 'Отдельная таблица для событий, которые временно отключены.', + 'A table of all available intervals (hourly, daily, etc.) with their duration.' => 'Таблица со всеми доступными интервалами (почасовыми, суточным и т. д.) и их продолжительностью.', + 'About WP Queue' => 'О WP Queue', + 'Action completed successfully' => 'Действие успешно завершено.', + 'Action Scheduler' => 'Планировщик действий', + 'Actions' => 'Действия', + 'Active' => 'Активный', + 'Add to wp-config.php:' => 'Добавьте в файл wp-config.php:', + 'After dispatch, schedules a single cron run and calls spawn_cron()' => 'После отправки задачи планирует выполнение одного запуска cron и вызывает функцию spawn_cron().', + 'ago (overdue)' => 'давно (просрочено)', + 'Aleksei Tikhomirov' => 'Алексей Тихомиров', + 'All' => 'Все', + 'All queues' => 'Все очереди', + 'All systems are healthy.' => 'Все системы работают исправно.', + 'Alternate Cron' => 'Альтернативный Cron', + 'An error occurred' => 'Произошла ошибка.', + 'Are you sure you want to clear this queue?' => 'Вы уверены, что хотите очистить эту очередь?', + 'Attempts' => 'Попытки', + 'Author Website' => 'Веб-сайт автора', + 'Available From' => 'Доступно с', + 'Background job processing and WP-Cron management for WordPress. Schedule tasks, manage queues, and monitor cron events.' => 'Обработка фоновых задач и управление WP-Cron для WordPress. Планируйте задачи, управляйте очередями и отслеживайте cron-события.', + 'Basic Usage' => 'Основные правила использования', + 'Button to delete old log entries to avoid cluttering the database.' => 'Кнопка для удаления старых записей журнала во избежание засорения базы данных.', + 'Buttons to show all entries, only completed, or only failed jobs.' => 'Кнопки для отображения всех записей, только завершенных или только неудачно завершенных заданий.', + 'By default, WordPress executes all actions during the page load request. If a plugin needs to send 100 emails or sync 500 products with an external API, the user has to wait until it finishes. This leads to slow page loads or timeouts.' => 'По умолчанию WordPress выполняет все действия во время запроса на загрузку страницы. Если плагину необходимо отправить 100 электронных писем или синхронизировать 500 товаров с внешним API, пользователю приходится ждать завершения процесса. Это приводит к медленной загрузке страниц или таймаутам.', + 'By default, WP Queue stores jobs in the WordPress database (wp_options or custom tables). For high-performance sites, you can use Redis. Redis is an in-memory data store that is much faster than a SQL database for queue operations. It reduces load on your database and speeds up job processing.' => 'По умолчанию WP Queue хранит задания в базе данных WordPress (в папке wp_options или в пользовательских таблицах). Для высокопроизводительных сайтов можно использовать Redis. Redis — это хранилище данных в оперативной памяти, которое намного быстрее, чем база данных SQL, при работе с очередями. Оно снижает нагрузку на базу данных и ускоряет обработку заданий.', + 'Cancel' => 'Отмена', + 'Cannot connect to Memcached at %s:%d - %s' => 'Не удалось подключиться к Memcached на %s:%d - %s', + 'Cannot connect to Redis at %s:%d - %s' => 'Не удалось подключиться к Redis на %s:%d - %s', + 'Check basic system requirements that affect queue stability.' => 'Проверьте основные системные требования, влияющие на стабильность очереди.', + 'Check driver settings.' => 'Проверьте настройки драйвера.', + 'Check logs when encountering errors in background processes.' => 'При обнаружении ошибок в фоновых процессах проверяйте журналы.', + 'Check this tab when setting up your server or debugging queue issues.' => 'Проверьте эту вкладку при настройке сервера или отладке проблем с очередями.', + 'Checking for disablement (DISABLE_WP_CRON), alternative cron, loopback requests.' => 'Проверка на отключение (DISABLE_WP_CRON), альтернативный cron, запросы обратной связи.', + 'Checking system requirements and environment for stable queue operation.' => 'Проверка системных требований и среды для обеспечения стабильной работы очереди.', + 'Clear' => 'Очистить', + 'Clear All' => 'Очистить все', + 'Clear All Logs' => 'Очистить все журналы', + 'Clear All Queues' => 'Очистить все очереди', + 'Clear Logs' => 'Очистить журналы', + 'Clear logs' => 'Очистить журналы', + 'Clear old' => 'Удалить старые', + 'Close' => 'Закрыть', + 'Comparison of server time, WordPress, and GMT offset for diagnosing scheduling issues.' => 'Сравнение серверного времени, времени WordPress и смещения GMT для диагностики проблем с планированием.', + 'Completed' => 'Завершенные', + 'Component Status' => 'Состояние компонента', + 'Configure' => 'Настройка', + 'Configure automatic retries on errors:' => 'Настройте автоматическое повторение попыток при возникновении ошибок:', + 'Configure Memcached' => 'Настройка Memcached', + 'Configure Redis' => 'Настройка Redis', + 'Configure system cron' => 'Настройте системный cron.', + 'Connected to Memcached at %s:%d' => 'Подключено к Memcached на %s:%d', + 'Connected to Redis at %s:%d (phpredis)' => 'Подключено к Redis по адресу %s:%d (phpredis)', + 'Connected to Redis at %s:%d (Predis)' => 'Подключено к Redis по адресу %s:%d (Predis)', + 'Connected to Redis at %s:%d (via redis-cache plugin)' => 'Подключено к Redis по адресу %s:%d (через плагин redis-cache)', + 'Create a job class and dispatch it to the queue:' => 'Создайте класс задания и отправьте его в очередь:', + 'Critical for understanding why tasks are not running on time.' => 'Это крайне важно для понимания причин, по которым задачи не выполняются в срок.', + 'Cron event paused' => 'Cron-событие приостановлено', + 'Cron event resumed' => 'Cron-событие возобновлено', + 'Cron event updated' => 'Cron-событие обновлено', + 'Cron Events' => 'События Cron', + 'Current Memory Usage' => 'Текущее использование памяти', + 'Current storage backend:' => 'Текущая система хранения данных:', + 'Custom driver' => 'Пользовательский драйвер', + 'Dashboard' => 'Панель управления', + 'Dashboard – quick overview of queues, number of jobs and recent activity.' => 'Панель управления – краткий обзор очередей, количества заданий и недавней активности.', + 'Delayed Jobs' => 'Задержка с выполнением заданий', + 'Delete' => 'Удалить', + 'Delete all' => 'Удалить все', + 'Deletes all job execution logs' => 'Удаляет все журналы выполнения заданий.', + 'Deletes all jobs from all queues' => 'Удаляет все задания из всех очередей.', + 'Description' => 'Описание', + 'Details' => 'Подробности', + 'Developers can dispatch their own jobs to the queue, choose drivers (Database, Sync, Redis), configure retries and schedules. See the documentation and examples on GitHub for integration details.' => 'Разработчики могут отправлять свои собственные задания в очередь, выбирать драйверы (база данных, синхронизация, Redis), настраивать повторные попытки и расписание. Подробную информацию об интеграции см. в документации и примерах на GitHub.', + 'Displays a table of scheduled recurring tasks (PHP classes) registered in WP Queue: job class, execution interval, queue assignment, and next run time. Allows you to run any task manually.' => 'Отображает таблицу запланированных повторяющихся задач (PHP-классов), зарегистрированных в WP Queue: класс задачи, интервал выполнения, назначение в очередь и время следующего запуска. Позволяет запускать любую задачу вручную.', + 'Displays all registered PHP job classes with their configuration.' => 'Отображает все зарегистрированные классы заданий PHP с их конфигурацией.', + 'Displays environment information (PHP and WordPress versions, memory limits, execution time, timezone), WP-Cron status (disabled, alternative cron, loopback checks). If Action Scheduler is installed - its statistics. Server and WordPress time.' => 'Отображает информацию об окружении (версии PHP и WordPress, ограничения памяти, время выполнения, часовой пояс), статус WP-Cron (отключен, альтернативный cron, проверки обратной связи). Если установлен Action Scheduler — его статистика. Время сервера и WordPress.', + 'Displays the last 200 entries by default or all completed/failed.' => 'По умолчанию отображаются последние 200 записей или все завершенные/незавершенные.', + 'Displays the total number of tasks in different statuses (pending, running, completed, failed).' => 'Отображает общее количество задач в различных статусах (ожидание, выполнение, завершено, сбой).', + 'Displays when the job should run next or marks overdue jobs.' => 'Отображает время следующего запуска задания или помечает просроченные задания.', + 'Distribute jobs across different queues:' => 'Распределите задания по разным очередям:', + 'Driver:' => 'Драйвер:', + 'Drivers' => 'Драйверы', + 'Edit' => 'Редактировать', + 'Edit Cron Event' => 'Редактировать событие Cron', + 'Edit Schedule' => 'Редактировать расписание', + 'Enabled' => 'Включено', + 'Environment' => 'Environment', + 'Error' => 'Ошибка', + 'Every %d Minutes' => 'Каждые %d минут', + 'Execution time, status (completed/failed/retrying), job class, queue, error message.' => 'Время выполнения, статус (завершено/сбой/повторная попытка), класс задания, очередь, сообщение об ошибке.', + 'Failed' => 'Ошибки', + 'Failed Actions' => 'Неудачные действия', + 'Failed to pause event' => 'Не удалось приостановить событие', + 'Failed to resume event' => 'Не удалось возобновить событие', + 'Failed to update event' => 'Не удалось обновить событие', + 'For Redis/Memcached to work, you need the PHP extension installed and a server available. If not, the system will automatically use the "database" driver.' => 'Для работы Redis/Memcached необходимо установить расширение PHP и иметь доступный сервер. В противном случае система автоматически будет использовать драйвер "database".', + 'Help' => 'Помощь', + 'History' => 'История', + 'History of all job executions for diagnostics and debugging.' => 'История всех выполненных заданий для диагностики и отладки.', + 'https://github.com/rwsite/wp-queue' => 'https://github.com/rwsite/wp-queue', + 'https://rwsite.ru' => 'https://rwsite.ru', + 'If installed, displays version and statistics (pending/running/failed actions).' => 'Если установлено, отображает версию и статистику (ожидающие/выполняемые/неудачные действия).', + 'Job' => 'Задача', + 'Job Class' => 'Job Class', + 'Job class, execution interval (e.g., "hourly", "daily"), queue assignment, next run time.' => 'Класс Job, интервал выполнения (например, "ежечасно", "ежедневно"), назначение в очередь, время следующего запуска.', + 'Job Details' => 'Job Details', + 'Job information' => 'Job information', + 'Job list' => 'Список Job', + 'jobs' => 'задачи', + 'Jobs in Queue' => 'Задачи в очереди', + 'Log table' => 'Таблица логов', + 'Logs' => 'Логи', + 'Logs – history of completed and failed jobs that helps to diagnose problems.' => 'Логи — история выполненных и неудачных заданий, которая помогает диагностировать проблемы.', + 'Loopback' => 'Обратная связь', + 'Loopback issue: %s' => 'Проблема обратной связи: %s', + 'Loopback Request' => 'Запрос обратной связи', + 'Loopback request successful' => 'Запрос обратной связи выполнен успешно', + 'Manage queues from command line:' => 'Управление очередями из командной строки:', + 'Management of scheduled recurring tasks.' => 'Управление запланированными повторяющимися задачами.', + 'Management of WordPress system timers that trigger background processes.' => 'Управление системными таймерами WordPress, запускающими фоновые процессы.', + 'Manual run' => 'Ручной запуск', + 'Max Execution Time' => 'Максимальное время выполнения', + 'Memory Limit' => 'Ограничение памяти', + 'Memory usage is above 80%.' => 'Использование памяти выше 80%.', + 'Message' => 'Сообщение', + 'Monitor which background jobs are queued and running right now.' => 'Отслеживайте, какие фоновые задачи находятся в очереди и выполняются в данный момент.', + 'More documentation' => 'Дополнительная документация', + 'Name' => 'Имя', + 'Named Queues' => 'Именованные очереди', + 'Next Run' => 'Следующий запуск', + 'Next run status' => 'Статус следующего запуска', + 'No activity' => 'Нет активности', + 'No cron events found.' => 'Событий cron не обнаружено.', + 'No errors' => 'Ошибок нет.', + 'No extension' => 'Нет расширения', + 'No logs found' => 'Журналы не найдены', + 'No paused events' => 'Нет приостановленных событий', + 'No scheduled events' => 'Мероприятия не запланированы.', + 'No scheduled jobs found.' => 'Запланированных заданий не найдено.', + 'No server' => 'Нет сервера', + 'Not implemented yet' => 'Пока не реализовано', + 'Notifications of critical issues (low memory, disabled WP-Cron).' => 'Уведомления о критических проблемах (недостаток памяти, отключение WP-Cron).', + 'Now' => 'Сейчас', + 'Number of entries' => 'Количество записей', + 'OK' => 'OK', + 'One-time' => 'Один раз', + 'Overdue' => 'Просрочено', + 'Overview' => 'Обзор', + 'Pause' => 'Пауза', + 'Pause this queue?' => 'Приостановить выполнение этой очереди?', + 'Paused' => 'Приостановлено', + 'Paused At' => 'Приостановлено на', + 'Paused Events' => 'Приостановленные события', + 'Paused events' => 'Приостановленные события', + 'Paused Since' => 'Приостановлено с', + 'Pending' => 'В ожидании', + 'Pending Actions' => 'Ожидающие действия', + 'PHP' => 'PHP', + 'PHP and WordPress versions, memory limits (current usage), maximum execution time, timezone.' => 'Версии PHP и WordPress, ограничения памяти (текущее использование), максимальное время выполнения, часовой пояс.', + 'PHP extension "memcached" is not installed' => 'PHP-расширение "memcached" не установлено', + 'PHP extension "redis" (phpredis) is not installed' => 'PHP-расширение "redis" (phpredis) не установлено', + 'PHP max_execution_time is less than 30 seconds.' => 'PHP max_execution_time меньше 30 секунд.', + 'PHP Version' => 'Версия PHP', + 'Plugins' => 'Плагины', + 'Predis library is not available' => 'Библиотека Predis недоступна', + 'Process' => 'Процесс', + 'Process Now' => 'Обработать сейчас', + 'Process Queues' => 'Обработочные очереди', + 'Processing' => 'Обработка', + 'Processing trigger' => 'Триггер обработки', + 'Queue' => 'Очередь', + 'Queue is empty' => 'Очередь пуста', + 'Queue statistics' => 'Статистика очереди', + 'Queue Storage backend' => 'бэкэнд хранилища очередей', + 'Queue table' => 'Таблица очереди', + 'Queue: %s' => 'Очередь: %s', + 'Queues' => 'Очереди', + 'Quick Start' => 'Быстрый старт', + 'Quickly see if any jobs are failing and view recent log entries.' => 'Быстро проверьте, не завершаются ли какие-либо задания с ошибкой, и просмотрите последние записи в журнале.', + 'Ready' => 'Готово', + 'Recent Activity' => 'Последние события', + 'Recent activity' => 'Последние события', + 'Redis connection failed' => 'Подключение к Redis не удалось.', + 'Redis is disabled via WP_REDIS_DISABLED' => 'Redis отключен с помощью WP_REDIS_DISABLED', + 'Redis Support' => 'Поддержка Redis', + 'Registered Schedules' => 'Зарегистрированные расписания', + 'Registered schedules' => 'Зарегистрированные расписания', + 'Report an Issue' => 'Сообщить о проблеме', + 'Report Issues' => 'Сообщить о проблемах', + 'REST trigger (planned)' => 'REST-триггер (запланировано)', + 'Resume' => 'Резюме', + 'Retry Attempts' => 'Повторные попытки', + 'Run' => 'Запуск', + 'Run Now' => 'Запустите сейчас', + 'Running' => 'Запущено', + 'Running Actions' => 'Выполнение действий', + 'Save Changes' => 'Сохранить изменения', + 'Schedule' => 'Расписание', + 'Schedule a job to run after a specific time:' => 'Настройте выполнение задания по истечении определенного времени:', + 'Scheduled' => 'Запланировано', + 'Scheduled Jobs' => 'Запланированные задания', + 'Scheduled Jobs – list of recurring background jobs added by your theme or plugins.' => 'Запланированные задания — список повторяющихся фоновых заданий, добавленных вашей темой или плагинами.', + 'Scheduler' => 'Планировщик', + 'Source' => 'Источник', + 'Status' => 'Статус', + 'Status filters' => 'Фильтры состояния', + 'Storage' => 'Хранилище', + 'Storage backend' => 'бэкэнд хранилища', + 'Storage backend "%s" is configured in wp-config.php, but not available. Falling back to "%s".' => 'В файле wp-config.php настроен бэкэнд хранилища "%s", но он недоступен. Используется резервный вариант "%s".', + 'Synchronous execution (no queue)' => 'Синхронное выполнение (без очереди)', + 'System' => 'Система', + 'System Cron (Recommended)' => 'Системный планировщик задач (рекомендуется)', + 'System health' => 'Здоровье системы', + 'System Issues Detected:' => 'Обнаружены системные неполадки:', + 'System Status' => 'Состояние системы', + 'System – checks PHP version, WP-Cron status and other important settings.' => 'Система проверяет версию PHP, статус WP-Cron и другие важные настройки.', + 'The "Run Now" button allows you to run any job immediately, without waiting for the schedule.' => 'Кнопка «Запустить сейчас» позволяет немедленно запустить любое задание, не дожидаясь расписания.', + 'The job is saved in the database (or Redis) waiting to be picked up.' => 'Задание сохраняется в базе данных (или Redis) в ожидании обработки.', + 'The last 10 log entries for quick tracking of queue activity.' => 'Последние 10 записей в журнале для быстрого отслеживания активности в очереди.', + 'The main tab for monitoring queue status in real-time.' => 'Главная вкладка для мониторинга состояния очереди в режиме реального времени.', + 'The plugin itself does not add new features to the frontend. It provides a reliable queue that other plugins or your custom code can use for background work.' => 'Сам плагин не добавляет новых функций на фронтенд. Он предоставляет надежную очередь, которую другие плагины или ваш пользовательский код могут использовать для фоновой работы.', + 'The worker picks up the job and executes it. If it succeeds, it is marked as "Completed". If it fails, it can be retried.' => 'Работник берет задание и выполняет его. Если оно выполняется успешно, оно помечается как «Завершено». Если оно не выполняется, его можно повторить.', + 'This section is under development.' => 'Этот раздел находится в разработке.', + 'Time' => 'Время', + 'Timeout' => 'Тайм-аут', + 'Timezone' => 'Часовой пояс', + 'To add your own background jobs, use the WP Queue PHP API from your plugin or theme. You can dispatch jobs to different queues, set delays and retries. Full code examples are available in the README on GitHub.' => 'Чтобы добавить собственные фоновые задачи, используйте PHP API WP Queue из вашего плагина или темы. Вы можете отправлять задачи в разные очереди, устанавливать задержки и повторные попытки. Полные примеры кода доступны в файле README на GitHub .', + 'to get a list of available commands.' => 'чтобы получить список доступных команд.', + 'To process the queue, WordPress needs a trigger. There are two ways to do this:' => 'Для обработки очереди WordPress необходим триггер. Это можно сделать двумя способами:', + 'Tools' => 'Инструменты', + 'Total' => 'Всего', + 'Total errors' => 'Общее количество ошибок', + 'Total Events' => 'Всего событий', + 'Total Jobs' => 'Общее количество рабочих мест', + 'Total number of events, overdue, grouped by source (WordPress, WooCommerce, WP Queue, plugins).' => 'Общее количество просроченных событий, сгруппированных по источнику (WordPress, WooCommerce, WP Queue, плагины).', + 'Unavailable' => 'Недоступно', + 'Unexpected response code: %d' => 'Неожиданный код ответа: %d', + 'Unknown' => 'Неизвестно', + 'Unknown driver' => 'Неизвестный драйвер', + 'Upcoming Events' => 'Предстоящие события', + 'Usage' => 'Использование', + 'Use system cron' => 'Используйте системный cron', + 'Use this tab for quick checks of queue performance and identifying stuck processes.' => 'Используйте эту вкладку для быстрой проверки производительности очереди и выявления зависших процессов.', + 'Used' => 'Использовал', + 'Useful for testing jobs and forcing synchronizations.' => 'Полезно для тестирования заданий и принудительной синхронизации.', + 'Useful Links' => 'Полезные ссылки', + 'Uses wp_options table' => 'Использует таблицу wp_options', + 'Version' => 'Версия', + 'Versions' => 'Версии', + 'VPS worker (planned)' => 'VPS-сервер (планируется)', + 'Warning' => 'Предупреждение', + 'What you can use it for' => 'Для чего его можно использовать', + 'Why is it needed?' => 'Зачем это нужно?', + 'WooCommerce' => 'WooCommerce', + 'WordPress' => 'WordPress', + 'WordPress checks for scheduled tasks on every page load. This works out of the box but has downsides: on low-traffic sites, tasks might not run on time; on high-traffic sites, it can cause performance issues. It is "fake" cron.' => 'WordPress проверяет наличие запланированных задач при каждой загрузке страницы. Это работает «из коробки», но имеет свои недостатки: на сайтах с низкой посещаемостью задачи могут не выполняться вовремя; на сайтах с высокой посещаемостью это может вызывать проблемы с производительностью. Это «поддельный» cron.', + 'WordPress Time' => 'Время WordPress', + 'WordPress Version' => 'Версия WordPress', + 'Worker' => 'Воркер', + 'WP Queue' => 'WP Queue', + 'WP Queue allows executing tasks asynchronously in the background without blocking the main WordPress execution flow.' => 'WP Queue позволяет выполнять задачи асинхронно в фоновом режиме, не блокируя основной поток выполнения WordPress.', + 'WP Queue helps your site run heavy or regular tasks in the background (emails, synchronizations, cleanups) so that pages load faster for visitors.' => 'WP Queue помогает вашему сайту выполнять ресурсоемкие или регулярно выполняемые задачи в фоновом режиме (отправка электронной почты, синхронизация, очистка), благодаря чему страницы загружаются быстрее для посетителей.', + 'WP Queue is a robust background processing library for WordPress. It allows you to offload time-consuming tasks (like sending emails, syncing data, or generating reports) to be processed asynchronously, ensuring your site remains fast and responsive for visitors.' => 'WP Queue — это мощная библиотека для фоновой обработки данных в WordPress. Она позволяет переносить трудоемкие задачи (например, отправку электронных писем, синхронизацию данных или создание отчетов) на асинхронную обработку, обеспечивая быструю и отзывчивую работу вашего сайта для посетителей.', + 'WP Queue solves this by pushing these tasks to a "Queue" and processing them later in the background. The user gets an instant response, and the heavy work happens behind the scenes.' => 'WP Queue решает эту проблему, отправляя эти задачи в "очередь" и обрабатывая их позже в фоновом режиме. Пользователь получает мгновенный ответ, а основная работа происходит за кулисами.', + 'WP Queue — Queue System for WordPress' => 'WP Queue — система очередей для WordPress', + 'WP-CLI' => 'WP-CLI', + 'WP-CLI Commands' => 'Команды WP-CLI', + 'WP-CLI команды' => 'Команда WP-CLI', + 'WP-Cron' => 'WP-Cron', + 'WP-Cron (Default)' => 'WP-Cron (по умолчанию)', + 'WP-Cron (scheduled)' => 'WP-Cron (запланировано)', + 'WP-Cron Disabled' => 'WP-Cron отключен', + 'WP-Cron is disabled. Background tasks may not run automatically.' => 'WP-Cron отключен. Фоновые задачи могут не выполняться автоматически.', + 'WP-Cron Status' => 'Статус WP-Cron', + 'WP-Cron status' => 'статус WP-Cron', + 'WP-Cron vs System Cron' => 'WP-Cron против System Cron', + 'WP-Cron – list of cron events with the ability to run, pause or delete them.' => 'WP-Cron – список событий cron с возможностью их запуска, приостановки или удаления.', + 'WP-Cron:' => 'WP-Cron:', + '⚠️ Warning:' => '⚠️ Предупреждение:', + 'Queue handler' => 'Обработчик очереди', + 'Daemon process' => 'Демон-процесс', + 'WP-Cron + Loopback' => 'WP-Cron + Loopback', + 'WP-Cron only' => 'Только WP-Cron', + 'A daemon worker is expected to process queues. WP-Cron and loopback are disabled.' => 'Для обработки очередей ожидается демон-воркер. WP-Cron и loopback отключены.', + 'Loopback is enabled and working. Jobs start immediately after dispatch.' => 'Loopback включен и работает. Задачи запускаются сразу после отправки.', + 'Loopback is inactive. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Enable loopback or run a daemon worker for instant processing.' => 'Loopback неактивен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Включите loopback или запустите демон-воркер для мгновенной обработки.', + 'Loopback is disabled. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Run a daemon worker for instant processing.' => 'Loopback отключен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Запустите демон-воркер для мгновенной обработки.', + 'WP-Cron checks the queue every minute as a fallback.' => 'WP-Cron раз в минуту проверяет очередь как подстраховку.', + 'Disabled' => 'Отключен', + 'Daemon worker' => 'Демон-воркер', + 'How to run WP Queue as a long-running background process.' => 'Как запустить WP Queue в виде долгоживущего фонового процесса.', + 'When to use a daemon' => 'Когда использовать демон', + 'Use a daemon worker on VPS, Docker or dedicated servers where you can keep a process running. It polls the queue continuously and starts jobs immediately. Without a daemon, WP Queue relies on WP-Cron and/or loopback, which can delay jobs by up to a minute.' => 'Запускайте демон-воркер на VPS, Docker или выделенном сервере, где можно держать процесс запущенным. Он постоянно опрашивает очередь и сразу запускает задания. Без демона WP Queue полагается на WP-Cron и/или loopback, что может задерживать задания до минуты.', + '1. Enable daemon runtime mode' => '1. Включите режим демона', + 'Add this to wp-config.php:' => 'Добавьте в wp-config.php:', + 'In this mode WP-Cron scheduling and loopback requests are disabled automatically.' => 'В этом режиме планирование WP-Cron и loopback-запросы отключаются автоматически.', + '2. Run the worker' => '2. Запустите воркер', + 'Start the worker from the WordPress root:' => 'Запустите воркер из корня WordPress:', + '--memory limits the PHP memory for the worker process. Adjust the value to your needs.' => '--memory ограничивает память PHP для процесса воркера. Подберите значение под свои задачи.', + '3. Keep it running' => '3. Держите процесс запущенным', + 'The command above must stay alive. In production use one of the options below.' => 'Команда выше должна оставаться запущенной. В продакшене используйте один из вариантов ниже.', + 'Option A: systemd service' => 'Вариант A: сервис systemd', + 'Save as /etc/systemd/system/wp-queue-worker.service, then run systemctl enable --now wp-queue-worker.' => 'Сохраните как /etc/systemd/system/wp-queue-worker.service, затем выполните systemctl enable --now wp-queue-worker.', + 'Option B: Supervisor' => 'Вариант B: Supervisor', + 'Option C: Docker Compose' => 'Вариант C: Docker Compose', + '4. Check status' => '4. Проверьте статус', + 'If the worker is not running, queues will not be processed in daemon mode. Make sure the process is started and monitored.' => 'Если воркер не запущен, очереди в режиме демона обрабатываться не будут. Убедитесь, что процесс запущен и мониторится.', + 'With WP-CLI' => 'С WP-CLI', + 'Without WP-CLI' => 'Без WP-CLI', + 'If WP-CLI is not available, create a PHP script that boots WordPress and runs the worker loop:' => 'Если WP-CLI недоступен, создайте PHP-скрипт, который загружает WordPress и запускает цикл воркера:', + 'Save the script, make it executable and run it in the background:' => 'Сохраните скрипт, сделайте его исполняемым и запустите в фоне:', + 'Option D: plain PHP script' => 'Вариант D: простой PHP-скрипт', + 'Use the script from step 2 (Without WP-CLI) inside screen, tmux or a simple cron-based restart loop. Remember that the script must stay alive to act as a daemon.' => 'Используйте скрипт из шага 2 (Без WP-CLI) внутри screen, tmux или простого цикла перезапуска через cron. Помните, что скрипт должен оставаться запущенным, чтобы работать как демон.', + ), +); diff --git a/languages/wp-queue-ru_RU.mo b/languages/wp-queue-ru_RU.mo index 4c48f1ca9b0847b64b2c368f22bfb5b87289e8cf..67df5dd85b0643b1696965eb755c2b412bd763da 100644 GIT binary patch literal 43931 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 diff --git a/languages/wp-queue-ru_RU.po b/languages/wp-queue-ru_RU.po index f6e5393..a202c93 100644 --- a/languages/wp-queue-ru_RU.po +++ b/languages/wp-queue-ru_RU.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: WP Queue 1.0.0\n" "Report-Msgid-Bugs-To: https://github.com/rwsite/wp-queue/issues\n" "POT-Creation-Date: 2025-12-06 01:35+0000\n" -"PO-Revision-Date: 2025-12-06 00:11+0000\n" +"PO-Revision-Date: 2026-07-25 20:21+0000\n" "Last-Translator: \n" "Language-Team: Русский\n" "Language: ru_RU\n" @@ -33,7 +33,8 @@ msgstr "(настроено)" #: src/Admin/AdminPage.php:666 msgid "A background process (Worker) constantly checks the queue for new jobs." msgstr "" -"Фоновый процесс (Worker) постоянно проверяет очередь на наличие новых задач." +"Фоновый процесс (Worker) постоянно проверяет очередь на наличие новых " +"заданий." #: src/Admin/AdminPage.php:716 msgid "" @@ -41,13 +42,13 @@ msgid "" "(idle/pending/running/paused), and control buttons (pause/resume, clear all " "tasks)." msgstr "" -"Список всех активных очередей с их размером, статусом " -"(бездействие/ожидание/выполнение/пауза) и кнопками управления " +"Список всех активных очередей с указанием их размера, статуса " +"(простой/ожидание/выполнение/приостановка) и кнопок управления " "(пауза/возобновление, очистить все задачи)." #: src/Admin/AdminPage.php:664 msgid "A plugin creates a \"Job\" (a task) and pushes it to the queue." -msgstr "Плагин создает \"Задачу\" (Job) и помещает ее в очередь." +msgstr "Плагин создает «Задание» (задачу) и помещает его в очередь." #: src/Admin/AdminPage.php:688 msgid "" @@ -55,19 +56,19 @@ msgid "" "minute. This is reliable and precise. Ideally, you should disable default WP-" "Cron and use System Cron." msgstr "" -"Настоящая задача cron, настроенная на вашем сервере (Linux), которая " -"вызывает WordPress каждую минуту. Это надежно и точно. В идеале, вы должны " -"отключить стандартный WP-Cron и использовать системный Cron." +"На вашем сервере (Linux) должна быть настроена настоящая задача cron, " +"которая будет запускать WordPress каждую минуту. Это надежно и точно. В " +"идеале следует отключить стандартный WP-Cron и использовать системный Cron." #: src/Admin/AdminPage.php:765 msgid "A separate table for events that are temporarily disabled." -msgstr "Отдельная таблица для временно отключенных событий." +msgstr "Отдельная таблица для событий, которые временно отключены." #: src/Admin/AdminPage.php:766 msgid "" "A table of all available intervals (hourly, daily, etc.) with their duration." msgstr "" -"Таблица всех доступных интервалов (ежечасно, ежедневно и т.д.) с их " +"Таблица со всеми доступными интервалами (почасовыми, суточным и т. д.) и их " "продолжительностью." #: src/Admin/AdminPage.php:85 src/Admin/AdminPage.php:106 @@ -77,31 +78,37 @@ msgstr "О WP Queue" #: src/Admin/AdminPage.php:198 msgid "Action completed successfully" -msgstr "Действие выполнено успешно" +msgstr "Действие успешно завершено." #: src/Admin/AdminPage.php:782 src/Admin/AdminPage.php:1743 -#: src/Admin/AdminPage.php:1942 +#: src/Admin/AdminPage.php:1962 msgid "Action Scheduler" msgstr "Планировщик действий" #: src/Admin/AdminPage.php:481 src/Admin/AdminPage.php:594 #: src/Admin/AdminPage.php:1483 src/Admin/AdminPage.php:1558 -#: src/Admin/AdminPage.php:2207 +#: src/Admin/AdminPage.php:2233 msgid "Actions" msgstr "Действия" #: src/Admin/AdminPage.php:428 src/Admin/AdminPage.php:1055 -#: src/Admin/AdminPage.php:1367 src/Admin/AdminPage.php:1872 +#: src/Admin/AdminPage.php:1367 src/Admin/AdminPage.php:1892 msgid "Active" msgstr "Активный" #: src/Admin/AdminPage.php:1100 msgid "Add to wp-config.php:" -msgstr "Добавить в wp-config.php:" +msgstr "Добавьте в файл wp-config.php:" + +#: src/Admin/AdminPage.php:1873 +msgid "After dispatch, schedules a single cron run and calls spawn_cron()" +msgstr "" +"После отправки задачи планирует выполнение одного запуска cron и вызывает " +"функцию spawn_cron()." #: src/Admin/AdminPage.php:615 msgid "ago (overdue)" -msgstr "назад (просрочено)" +msgstr "давно (просрочено)" #. Author of the plugin msgid "Aleksei Tikhomirov" @@ -125,7 +132,7 @@ msgstr "Альтернативный Cron" #: src/Admin/AdminPage.php:199 msgid "An error occurred" -msgstr "Произошла ошибка" +msgstr "Произошла ошибка." #: src/Admin/AdminPage.php:196 msgid "Are you sure you want to clear this queue?" @@ -137,7 +144,7 @@ msgstr "Попытки" #: src/Admin/AdminPage.php:167 msgid "Author Website" -msgstr "Сайт автора" +msgstr "Веб-сайт автора" #: src/Admin/AdminPage.php:479 msgid "Available From" @@ -153,19 +160,19 @@ msgstr "" #: src/Admin/AdminPage.php:122 msgid "Basic Usage" -msgstr "Базовое использование" +msgstr "Основные правила использования" #: src/Admin/AdminPage.php:748 msgid "Button to delete old log entries to avoid cluttering the database." msgstr "" -"Кнопка для удаления старых записей журнала, чтобы избежать загромождения " -"базы данных." +"Кнопка для удаления старых записей журнала во избежание засорения базы " +"данных." #: src/Admin/AdminPage.php:746 msgid "Buttons to show all entries, only completed, or only failed jobs." msgstr "" -"Кнопки для показа всех записей, только завершенных или только неудачных " -"задач." +"Кнопки для отображения всех записей, только завершенных или только неудачно " +"завершенных заданий." #: src/Admin/AdminPage.php:650 msgid "" @@ -174,10 +181,10 @@ msgid "" "the user has to wait until it finishes. This leads to slow page loads or " "timeouts." msgstr "" -"По умолчанию WordPress выполняет все действия во время загрузки страницы. " -"Если плагину нужно отправить 100 писем или синхронизировать 500 товаров с " -"внешним API, пользователь должен дождаться завершения. Это приводит к " -"медленной загрузке страниц или тайм-аутам." +"По умолчанию WordPress выполняет все действия во время запроса на загрузку " +"страницы. Если плагину необходимо отправить 100 электронных писем или " +"синхронизировать 500 товаров с внешним API, пользователю приходится ждать " +"завершения процесса. Это приводит к медленной загрузке страниц или таймаутам." #: src/Admin/AdminPage.php:698 msgid "" @@ -186,22 +193,22 @@ msgid "" "in-memory data store that is much faster than a SQL database for queue " "operations. It reduces load on your database and speeds up job processing." msgstr "" -"По умолчанию WP Queue хранит задачи в базе данных WordPress (wp_options или " -"пользовательские таблицы). Для сайтов с высокой производительностью вы " -"можете использовать Redis. Redis - это хранилище данных в памяти, которое " -"намного быстрее, чем база данных SQL для операций с очередью. Это снижает " -"нагрузку на вашу базу данных и ускоряет обработку задач." +"По умолчанию WP Queue хранит задания в базе данных WordPress (в папке " +"wp_options или в пользовательских таблицах). Для высокопроизводительных " +"сайтов можно использовать Redis. Redis — это хранилище данных в оперативной " +"памяти, которое намного быстрее, чем база данных SQL, при работе с очередями." +" Оно снижает нагрузку на базу данных и ускоряет обработку заданий." #: src/Admin/AdminPage.php:1623 msgid "Cancel" msgstr "Отмена" -#: src/QueueManager.php:318 +#: src/QueueManager.php:500 #, php-format msgid "Cannot connect to Memcached at %s:%d - %s" msgstr "Не удалось подключиться к Memcached на %s:%d - %s" -#: src/QueueManager.php:266 +#: src/QueueManager.php:297 src/QueueManager.php:375 src/QueueManager.php:448 #, php-format msgid "Cannot connect to Redis at %s:%d - %s" msgstr "Не удалось подключиться к Redis на %s:%d - %s" @@ -209,7 +216,7 @@ msgstr "Не удалось подключиться к Redis на %s:%d - %s" #: src/Admin/AdminPage.php:114 msgid "Check basic system requirements that affect queue stability." msgstr "" -"Проверьте базовые системные требования, влияющие на стабильность очереди." +"Проверьте основные системные требования, влияющие на стабильность очереди." #: src/Admin/AdminPage.php:1037 msgid "Check driver settings." @@ -217,44 +224,45 @@ msgstr "Проверьте настройки драйвера." #: src/Admin/AdminPage.php:751 msgid "Check logs when encountering errors in background processes." -msgstr "Проверьте журналы при возникновении ошибок в фоновых процессах." +msgstr "При обнаружении ошибок в фоновых процессах проверяйте журналы." #: src/Admin/AdminPage.php:785 msgid "Check this tab when setting up your server or debugging queue issues." msgstr "" -"Проверьте эту вкладку при настройке сервера или отладке проблем с очередью." +"Проверьте эту вкладку при настройке сервера или отладке проблем с очередями." #: src/Admin/AdminPage.php:781 msgid "" "Checking for disablement (DISABLE_WP_CRON), alternative cron, loopback " "requests." msgstr "" -"Проверка отключения (DISABLE_WP_CRON), альтернативного cron, обратных " -"запросов." +"Проверка на отключение (DISABLE_WP_CRON), альтернативный cron, запросы " +"обратной связи." #: src/Admin/AdminPage.php:777 msgid "" "Checking system requirements and environment for stable queue operation." msgstr "" -"Проверка системных требований и окружения для стабильной работы очереди." +"Проверка системных требований и среды для обеспечения стабильной работы " +"очереди." #: src/Admin/AdminPage.php:451 msgid "Clear" msgstr "Очистить" -#: src/Admin/AdminPage.php:1995 +#: src/Admin/AdminPage.php:2015 msgid "Clear All" msgstr "Очистить все" -#: src/Admin/AdminPage.php:1983 +#: src/Admin/AdminPage.php:2003 msgid "Clear All Logs" msgstr "Очистить все журналы" -#: src/Admin/AdminPage.php:1993 +#: src/Admin/AdminPage.php:2013 msgid "Clear All Queues" msgstr "Очистить все очереди" -#: src/Admin/AdminPage.php:1981 +#: src/Admin/AdminPage.php:2001 msgid "Clear Logs" msgstr "Очистить журналы" @@ -264,7 +272,7 @@ msgstr "Очистить журналы" #: src/Admin/AdminPage.php:860 msgid "Clear old" -msgstr "Очистить старые" +msgstr "Удалить старые" #: src/Admin/AdminPage.php:567 msgid "Close" @@ -275,57 +283,67 @@ msgid "" "Comparison of server time, WordPress, and GMT offset for diagnosing " "scheduling issues." msgstr "" -"Сравнение серверного времени, WordPress и смещения GMT для диагностики " -"проблем с планированием." +"Сравнение серверного времени, времени WordPress и смещения GMT для " +"диагностики проблем с планированием." #: src/Admin/AdminPage.php:326 src/Admin/AdminPage.php:352 #: src/Admin/AdminPage.php:840 src/Admin/AdminPage.php:1820 msgid "Completed" -msgstr "Завершено" +msgstr "Завершенные" #: src/Admin/AdminPage.php:1856 msgid "Component Status" -msgstr "Статус компонента" +msgstr "Состояние компонента" #: src/Admin/AdminPage.php:366 msgid "Configure" -msgstr "Настроить" +msgstr "Настройка" -#: src/Admin/AdminPage.php:2095 +#: src/Admin/AdminPage.php:2115 msgid "Configure automatic retries on errors:" -msgstr "Настроить автоматические повторные попытки при ошибках:" +msgstr "Настройте автоматическое повторение попыток при возникновении ошибок:" #: src/Admin/AdminPage.php:1109 msgid "Configure Memcached" -msgstr "Настроить Memcached" +msgstr "Настройка Memcached" #: src/Admin/AdminPage.php:1103 msgid "Configure Redis" -msgstr "Настроить Redis" +msgstr "Настройка Redis" -#: src/Admin/AdminPage.php:1870 +#: src/Admin/AdminPage.php:1890 msgid "Configure system cron" -msgstr "Настроить системный cron" +msgstr "Настройте системный cron." -#: src/QueueManager.php:307 +#: src/QueueManager.php:489 #, php-format msgid "Connected to Memcached at %s:%d" msgstr "Подключено к Memcached на %s:%d" -#: src/QueueManager.php:255 +#: src/QueueManager.php:289 +#, php-format +msgid "Connected to Redis at %s:%d (phpredis)" +msgstr "Подключено к Redis по адресу %s:%d (phpredis)" + +#: src/QueueManager.php:440 +#, php-format +msgid "Connected to Redis at %s:%d (Predis)" +msgstr "Подключено к Redis по адресу %s:%d (Predis)" + +#: src/QueueManager.php:349 src/QueueManager.php:367 #, php-format -msgid "Connected to Redis at %s:%d" -msgstr "Подключено к Redis на %s:%d" +msgid "Connected to Redis at %s:%d (via redis-cache plugin)" +msgstr "Подключено к Redis по адресу %s:%d (через плагин redis-cache)" -#: src/Admin/AdminPage.php:2038 +#: src/Admin/AdminPage.php:2058 msgid "Create a job class and dispatch it to the queue:" -msgstr "Создайте класс задачи и отправьте его в очередь:" +msgstr "Создайте класс задания и отправьте его в очередь:" #: src/Admin/AdminPage.php:768 msgid "Critical for understanding why tasks are not running on time." msgstr "" -"Критически важно для понимания причин, по которым задачи не выполняются " -"вовремя." +"Это крайне важно для понимания причин, по которым задачи не выполняются в " +"срок." #: src/Admin/RestApi.php:523 msgid "Cron event paused" @@ -341,17 +359,17 @@ msgstr "Cron-событие обновлено" #: src/Admin/AdminPage.php:50 msgid "Cron Events" -msgstr "Cron-события" - -#: src/Admin/AdminPage.php:1043 -msgid "Current driver:" -msgstr "Текущий драйвер:" +msgstr "События Cron" #: src/Admin/AdminPage.php:1677 msgid "Current Memory Usage" msgstr "Текущее использование памяти" -#: src/QueueManager.php:207 src/QueueManager.php:351 src/QueueManager.php:353 +#: src/Admin/AdminPage.php:1043 +msgid "Current storage backend:" +msgstr "Текущая система хранения данных:" + +#: src/QueueManager.php:207 src/QueueManager.php:533 src/QueueManager.php:535 msgid "Custom driver" msgstr "Пользовательский драйвер" @@ -363,12 +381,12 @@ msgstr "Панель управления" msgid "" "Dashboard – quick overview of queues, number of jobs and recent activity." msgstr "" -"Панель управления – быстрый обзор очередей, количества задач и недавней " +"Панель управления – краткий обзор очередей, количества заданий и недавней " "активности." -#: src/Admin/AdminPage.php:2056 +#: src/Admin/AdminPage.php:2076 msgid "Delayed Jobs" -msgstr "Отложенные задачи" +msgstr "Задержка с выполнением заданий" #: src/Admin/AdminPage.php:527 src/Admin/AdminPage.php:1539 #: src/Admin/AdminPage.php:1540 @@ -379,17 +397,17 @@ msgstr "Удалить" msgid "Delete all" msgstr "Удалить все" -#: src/Admin/AdminPage.php:1982 +#: src/Admin/AdminPage.php:2002 msgid "Deletes all job execution logs" -msgstr "Удаляет все журналы выполнения задач" +msgstr "Удаляет все журналы выполнения заданий." -#: src/Admin/AdminPage.php:1994 +#: src/Admin/AdminPage.php:2014 msgid "Deletes all jobs from all queues" -msgstr "Удаляет все задачи из всех очередей" +msgstr "Удаляет все задания из всех очередей." #: src/Admin/AdminPage.php:858 msgid "Deletes logs older than 7 days" -msgstr "Удаляет журналы старше 7 дней" +msgstr "" #: src/Admin/AdminPage.php:1054 msgid "Description" @@ -397,11 +415,11 @@ msgstr "Описание" #: src/Admin/AdminPage.php:706 msgid "Detailed description of the panel tabs" -msgstr "Подробное описание вкладок панели" +msgstr "" #: src/Admin/AdminPage.php:524 msgid "Details" -msgstr "Детали" +msgstr "Подробности" #: src/Admin/AdminPage.php:117 msgid "" @@ -409,29 +427,28 @@ msgid "" "(Database, Sync, Redis), configure retries and schedules. See the " "documentation and examples on GitHub for integration details." msgstr "" -"Разработчики могут отправлять свои задачи в очередь, выбирать драйверы " -"(Database, Sync, Redis), настраивать повторные попытки и расписания. См. " -"документацию и примеры на GitHub для деталей интеграции." +"Разработчики могут отправлять свои собственные задания в очередь, выбирать " +"драйверы (база данных, синхронизация, Redis), настраивать повторные попытки " +"и расписание. Подробную информацию об интеграции см. в документации и " +"примерах на GitHub." #: src/Admin/AdminPage.php:1702 msgid "" "DISABLE_WP_CRON is set to true. Background tasks will not run automatically." msgstr "" -"DISABLE_WP_CRON установлен в true. Фоновые задачи не будут выполняться " -"автоматически." #: src/Admin/AdminPage.php:1364 src/Admin/AdminPage.php:1701 -#: src/Admin/AdminPage.php:1714 src/Admin/AdminPage.php:1869 +#: src/Admin/AdminPage.php:1714 src/Admin/AdminPage.php:1889 msgid "Disabled" -msgstr "Отключено" +msgstr "Отключен" #: src/Admin/AdminPage.php:664 msgid "Dispatch" -msgstr "Отправить" +msgstr "" #: src/Admin/AdminPage.php:1586 msgid "Display" -msgstr "Отобразить" +msgstr "" #: src/Admin/AdminPage.php:582 msgid "" @@ -439,13 +456,15 @@ msgid "" "Queue: job class, execution interval, queue assignment, and next run time. " "Allows you to run any task manually." msgstr "" -"Отображает таблицу запланированных повторяющихся задач (классы PHP), " +"Отображает таблицу запланированных повторяющихся задач (PHP-классов), " "зарегистрированных в WP Queue: класс задачи, интервал выполнения, назначение " -"очереди и время следующего запуска. Позволяет запустить любую задачу вручную." +"в очередь и время следующего запуска. Позволяет запускать любую задачу " +"вручную." #: src/Admin/AdminPage.php:730 msgid "Displays all registered PHP job classes with their configuration." -msgstr "Отображает все зарегистрированные классы задач PHP с их конфигурацией." +msgstr "" +"Отображает все зарегистрированные классы заданий PHP с их конфигурацией." #: src/Admin/AdminPage.php:1641 msgid "" @@ -454,49 +473,38 @@ msgid "" "loopback checks). If Action Scheduler is installed - its statistics. Server " "and WordPress time." msgstr "" -"Отображает информацию об окружении (версии PHP и WordPress, лимиты памяти, " -"время выполнения, часовой пояс), статус WP-Cron (отключен, альтернативный " -"cron, проверки обратной связи). Если установлен Action Scheduler - его " -"статистика. Серверное и время WordPress." +"Отображает информацию об окружении (версии PHP и WordPress, ограничения " +"памяти, время выполнения, часовой пояс), статус WP-Cron (отключен, " +"альтернативный cron, проверки обратной связи). Если установлен Action " +"Scheduler — его статистика. Время сервера и WordPress." #: src/Admin/AdminPage.php:749 msgid "Displays the last 200 entries by default or all completed/failed." msgstr "" -"Отображает последние 200 записей по умолчанию или все завершенные/неудачные." +"По умолчанию отображаются последние 200 записей или все " +"завершенные/незавершенные." #: src/Admin/AdminPage.php:715 msgid "" "Displays the total number of tasks in different statuses (pending, running, " "completed, failed)." msgstr "" -"Отображает общее количество задач в разных статусах (ожидание, выполнение, " -"завершено, неудача)." +"Отображает общее количество задач в различных статусах (ожидание, выполнение," +" завершено, сбой)." #: src/Admin/AdminPage.php:733 msgid "Displays when the job should run next or marks overdue jobs." msgstr "" -"Отображает, когда задача должна выполняться следующей, или отмечает " -"просроченные задачи." +"Отображает время следующего запуска задания или помечает просроченные " +"задания." -#: src/Admin/AdminPage.php:2077 +#: src/Admin/AdminPage.php:2097 msgid "Distribute jobs across different queues:" -msgstr "Распределите задачи по разным очередям:" +msgstr "Распределите задания по разным очередям:" -#: src/Admin/AdminPage.php:2164 +#: src/Admin/AdminPage.php:2184 msgid "Documentation on GitHub" -msgstr "Документация на GitHub" - -#: src/Admin/AdminPage.php:1052 -msgid "Driver" -msgstr "Драйвер" - -#: src/Admin/AdminPage.php:1031 -#, php-format -msgid "" -"Driver \"%s\" is configured in wp-config.php, but not available. Falling " -"back to \"%s\"." msgstr "" -"Драйвер \"%s\" настроен в wp-config.php, но недоступен. Переход на \"%s\"." #: src/Admin/AdminPage.php:363 msgid "Driver:" @@ -512,7 +520,7 @@ msgstr "Редактировать" #: src/Admin/AdminPage.php:1603 msgid "Edit Cron Event" -msgstr "Редактировать Cron-событие" +msgstr "Редактировать событие Cron" #: src/Admin/AdminPage.php:1525 msgid "Edit Schedule" @@ -524,7 +532,7 @@ msgstr "Включено" #: src/Admin/AdminPage.php:780 src/Admin/AdminPage.php:1661 msgid "Environment" -msgstr "Окружение" +msgstr "Environment" #: src/Admin/AdminPage.php:1729 msgid "Error" @@ -532,57 +540,58 @@ msgstr "Ошибка" #: src/Admin/AdminPage.php:961 msgid "Error message" -msgstr "Сообщение об ошибке" +msgstr "" #: src/Admin/AdminPage.php:1824 msgid "Errors" -msgstr "Ошибки" +msgstr "" #: src/Admin/AdminPage.php:764 msgid "Event actions" -msgstr "Действия событий" +msgstr "" #: src/Admin/AdminPage.php:763 msgid "" "Event hook, next run time, schedule (single/hourly/daily), source, arguments." msgstr "" -"Хук события, время следующего запуска, расписание " -"(однократно/ежечасно/ежедневно), источник, аргументы." #: src/Admin/AdminPage.php:762 msgid "Event statistics" -msgstr "Статистика событий" +msgstr "" #: src/Admin/AdminPage.php:763 msgid "Event table" -msgstr "Таблица событий" +msgstr "" #: src/Admin/AdminPage.php:1382 msgid "events" -msgstr "события" +msgstr "" #: src/Admin/AdminPage.php:1372 msgid "Events by Source" -msgstr "События по источникам" +msgstr "" #. %d: number of minutes #: src/ScheduledJob.php:45 msgid "Every %d Minutes" msgstr "Каждые %d минут" +#: src/Admin/AdminPage.php:2196 +msgid "Example Plugin on GitHub" +msgstr "" + #: src/Admin/AdminPage.php:747 msgid "" "Execution time, status (completed/failed/retrying), job class, queue, error " "message." msgstr "" -"Время выполнения, статус (завершено/неудача/повторная попытка), класс задачи," -" очередь, сообщение об ошибке." +"Время выполнения, статус (завершено/сбой/повторная попытка), класс задания, " +"очередь, сообщение об ошибке." #: src/Admin/AdminPage.php:45 src/Admin/AdminPage.php:327 #: src/Admin/AdminPage.php:356 src/Admin/AdminPage.php:843 -#| msgid "File" msgid "Failed" -msgstr "Сбои и неудачи" +msgstr "Ошибки" #: src/Admin/AdminPage.php:1760 msgid "Failed Actions" @@ -602,11 +611,11 @@ msgstr "Не удалось обновить событие" #: src/Admin/AdminPage.php:116 src/Admin/AdminPage.php:132 msgid "For developers" -msgstr "Для разработчиков" +msgstr "" #: src/Admin/AdminPage.php:164 msgid "For more information:" -msgstr "Для получения дополнительной информации:" +msgstr "" #: src/Admin/AdminPage.php:1117 msgid "" @@ -614,35 +623,35 @@ msgid "" "server available. If not, the system will automatically use the \"database\" " "driver." msgstr "" -"Для работы Redis/Memcached необходимо установить PHP-расширение и иметь " -"доступный сервер. В противном случае система автоматически использует " -"драйвер \"база данных\"." +"Для работы Redis/Memcached необходимо установить расширение PHP и иметь " +"доступный сервер. В противном случае система автоматически будет " +"использовать драйвер \"database\"." #: src/Admin/AdminPage.php:123 msgid "For site administrators" -msgstr "Для администраторов сайтов" +msgstr "" -#: src/Admin/AdminPage.php:1988 +#: src/Admin/AdminPage.php:2008 msgid "Forces processing of all queues" -msgstr "Принудительно обрабатывает все очереди" +msgstr "" #: src/Admin/AdminPage.php:504 src/Admin/AdminPage.php:615 msgid "from now" -msgstr "сейчас" +msgstr "" #. %s: URL to GitHub repository #: src/Admin/AdminPage.php:795 #, php-format msgid "Full documentation and code examples are available on GitHub: %s." -msgstr "Полная документация и примеры кода доступны на GitHub: %s." +msgstr "" #: src/Admin/AdminPage.php:165 msgid "GitHub Repository" -msgstr "Репозиторий GitHub" +msgstr "" #: src/Admin/AdminPage.php:1788 msgid "GMT Offset" -msgstr "Смещение GMT" +msgstr "" #: src/Admin/AdminPage.php:57 msgid "Help" @@ -654,20 +663,20 @@ msgstr "История" #: src/Admin/AdminPage.php:744 msgid "History of all job executions for diagnostics and debugging." -msgstr "История всех выполнений задач для диагностики и отладки." +msgstr "История всех выполненных заданий для диагностики и отладки." #: src/Admin/AdminPage.php:1402 src/Admin/AdminPage.php:1479 -#: src/Admin/AdminPage.php:1555 src/Admin/AdminPage.php:2204 +#: src/Admin/AdminPage.php:1555 src/Admin/AdminPage.php:2230 msgid "Hook" -msgstr "Хук" +msgstr "" #: src/Admin/AdminPage.php:662 msgid "How Queues Work" -msgstr "Как работают очереди" +msgstr "" #: src/Admin/AdminPage.php:1099 -msgid "How to change the driver?" -msgstr "Как изменить драйвер?" +msgid "How to change the storage backend?" +msgstr "" #. URI of the plugin msgid "https://github.com/rwsite/wp-queue" @@ -679,19 +688,19 @@ msgstr "https://rwsite.ru" #: src/Admin/AdminPage.php:476 msgid "ID" -msgstr "ID" +msgstr "" #: src/Admin/AdminPage.php:322 msgid "Idle" -msgstr "Бездействие" +msgstr "" #: src/Admin/AdminPage.php:782 msgid "" "If installed, displays version and statistics (pending/running/failed " "actions)." msgstr "" -"Если установлен, отображает версию и статистику " -"(ожидание/выполнение/неудачные действия)." +"Если установлено, отображает версию и статистику " +"(ожидающие/выполняемые/неудачные действия)." #: src/Admin/AdminPage.php:131 msgid "" @@ -699,34 +708,34 @@ msgid "" "not need to configure anything here. Use these tabs mainly for monitoring " "and troubleshooting." msgstr "" -"Если вы установили WP Queue, потому что другой плагин требует его, обычно " -"вам не нужно ничего настраивать здесь. Используйте эти вкладки в основном " -"для мониторинга и устранения неполадок." + +#: src/Admin/AdminPage.php:1872 +msgid "Immediate spawn (pseudo-loopback)" +msgstr "" #: src/Admin/AdminPage.php:1116 msgid "Important:" -msgstr "Важно:" +msgstr "" #: src/Admin/AdminPage.php:344 msgid "In Queue" -msgstr "В очереди" +msgstr "" #: src/Admin/AdminPage.php:113 msgid "Inspect and manage WP-Cron events for WP Queue and other plugins." msgstr "" -"Проверяйте и управляйте WP-Cron событиями для WP Queue и других плагинов." #: src/Admin/AdminPage.php:1081 msgid "Install: pecl install memcached" -msgstr "Установка: pecl install memcached" +msgstr "" #: src/Admin/AdminPage.php:1079 msgid "Install: pecl install redis" -msgstr "Установка: pecl install redis" +msgstr "" #: src/Admin/AdminPage.php:1585 msgid "Interval" -msgstr "Интервал" +msgstr "" #: src/Admin/AdminPage.php:590 src/Admin/AdminPage.php:874 #: src/Admin/AdminPage.php:958 src/Admin/AdminPage.php:1162 @@ -735,27 +744,27 @@ msgstr "Задача" #: src/Admin/AdminPage.php:477 msgid "Job Class" -msgstr "Класс задачи" +msgstr "Job Class" #: src/Admin/AdminPage.php:731 msgid "" "Job class, execution interval (e.g., \"hourly\", \"daily\"), queue " "assignment, next run time." msgstr "" -"Класс задачи, интервал выполнения (например, \"ежечасно\", \"ежедневно\"), " -"назначение очереди, время следующего запуска." +"Класс Job, интервал выполнения (например, \"ежечасно\", \"ежедневно\"), " +"назначение в очередь, время следующего запуска." #: src/Admin/AdminPage.php:564 msgid "Job Details" -msgstr "Детали задачи" +msgstr "Job Details" #: src/Admin/AdminPage.php:731 msgid "Job information" -msgstr "Информация о задаче" +msgstr "Job information" #: src/Admin/AdminPage.php:730 msgid "Job list" -msgstr "Список задач" +msgstr "Список Job" #: src/Admin/AdminPage.php:384 msgid "jobs" @@ -767,20 +776,20 @@ msgstr "Задачи в очереди" #: src/Admin/AdminPage.php:747 msgid "Log table" -msgstr "Таблица журнала" +msgstr "Таблица логов" #: src/Admin/AdminPage.php:741 msgid "Logs" -msgstr "Журналы" +msgstr "Логи" #: src/Admin/AdminPage.php:127 msgid "" "Logs – history of completed and failed jobs that helps to diagnose problems." msgstr "" -"Журналы – история завершенных и неудачных задач, которые помогают " +"Логи — история выполненных и неудачных заданий, которая помогает " "диагностировать проблемы." -#: src/Admin/AdminPage.php:1877 +#: src/Admin/AdminPage.php:1897 msgid "Loopback" msgstr "Обратная связь" @@ -798,7 +807,7 @@ msgstr "Запрос обратной связи" msgid "Loopback request successful" msgstr "Запрос обратной связи выполнен успешно" -#: src/Admin/AdminPage.php:2139 +#: src/Admin/AdminPage.php:2159 msgid "Manage queues from command line:" msgstr "Управление очередями из командной строки:" @@ -810,21 +819,20 @@ msgstr "Управление запланированными повторяющ msgid "" "Management of WordPress system timers that trigger background processes." msgstr "" -"Управление системными таймерами WordPress, которые запускают фоновые " -"процессы." +"Управление системными таймерами WordPress, запускающими фоновые процессы." #: src/Admin/AdminPage.php:732 msgid "Manual run" msgstr "Ручной запуск" -#: src/Admin/AdminPage.php:1684 src/Admin/AdminPage.php:1911 +#: src/Admin/AdminPage.php:1684 src/Admin/AdminPage.php:1931 msgid "Max Execution Time" msgstr "Максимальное время выполнения" #: src/Admin/AdminPage.php:1673 src/Admin/AdminPage.php:1828 -#: src/Admin/AdminPage.php:1903 +#: src/Admin/AdminPage.php:1923 msgid "Memory Limit" -msgstr "Лимит памяти" +msgstr "Ограничение памяти" #: src/Admin/SystemStatus.php:275 msgid "Memory usage is above 80%." @@ -837,8 +845,8 @@ msgstr "Сообщение" #: src/Admin/AdminPage.php:111 msgid "Monitor which background jobs are queued and running right now." msgstr "" -"Отслеживайте, какие фоновые задачи находятся в очереди и выполняются прямо " -"сейчас." +"Отслеживайте, какие фоновые задачи находятся в очереди и выполняются в " +"данный момент." #: src/Admin/AdminPage.php:790 msgid "More documentation" @@ -848,7 +856,7 @@ msgstr "Дополнительная документация" msgid "Name" msgstr "Имя" -#: src/Admin/AdminPage.php:2076 +#: src/Admin/AdminPage.php:2096 msgid "Named Queues" msgstr "Именованные очереди" @@ -867,11 +875,11 @@ msgstr "Нет активности" #: src/Admin/AdminPage.php:1489 msgid "No cron events found." -msgstr "Cron-события не найдены." +msgstr "Событий cron не обнаружено." #: src/Admin/AdminPage.php:967 msgid "No errors" -msgstr "Нет ошибок" +msgstr "Ошибок нет." #: src/Admin/AdminPage.php:1140 msgid "No extension" @@ -881,26 +889,30 @@ msgstr "Нет расширения" msgid "No logs found" msgstr "Журналы не найдены" -#: src/Admin/AdminPage.php:2198 +#: src/Admin/AdminPage.php:2224 msgid "No paused events" msgstr "Нет приостановленных событий" #: src/Admin/AdminPage.php:1397 msgid "No scheduled events" -msgstr "Нет запланированных событий" +msgstr "Мероприятия не запланированы." #: src/Admin/AdminPage.php:600 msgid "No scheduled jobs found." -msgstr "Запланированные задачи не найдены." +msgstr "Запланированных заданий не найдено." #: src/Admin/AdminPage.php:1144 msgid "No server" msgstr "Нет сервера" +#: src/Admin/AdminPage.php:1877 src/Admin/AdminPage.php:1881 +msgid "Not implemented yet" +msgstr "Пока не реализовано" + #: src/Admin/AdminPage.php:779 msgid "Notifications of critical issues (low memory, disabled WP-Cron)." msgstr "" -"Уведомления о критических проблемах (низкая память, отключенный WP-Cron)." +"Уведомления о критических проблемах (недостаток памяти, отключение WP-Cron)." #: src/Admin/AdminPage.php:506 msgid "Now" @@ -912,11 +924,11 @@ msgstr "Количество записей" #: src/Admin/AdminPage.php:1725 msgid "OK" -msgstr "ОК" +msgstr "OK" -#: src/Admin/AdminPage.php:2214 +#: src/Admin/AdminPage.php:2240 msgid "One-time" -msgstr "Однократно" +msgstr "Один раз" #: src/Admin/AdminPage.php:1351 src/Admin/AdminPage.php:1446 #: src/Admin/AdminPage.php:1502 src/Admin/CronMonitor.php:220 @@ -931,11 +943,11 @@ msgstr "Обзор" #: src/Admin/AdminPage.php:442 src/Admin/AdminPage.php:1532 #: src/Admin/AdminPage.php:1533 msgid "Pause" -msgstr "Приостановить" +msgstr "Пауза" #: src/Admin/AdminPage.php:197 msgid "Pause this queue?" -msgstr "Приостановить эту очередь?" +msgstr "Приостановить выполнение этой очереди?" #: src/Admin/AdminPage.php:52 src/Admin/AdminPage.php:325 #: src/Admin/AdminPage.php:424 src/Admin/AdminPage.php:1355 @@ -944,7 +956,7 @@ msgstr "Приостановлено" #: src/Admin/AdminPage.php:1557 msgid "Paused At" -msgstr "Приостановлено в" +msgstr "Приостановлено на" #: src/Admin/AdminPage.php:1551 msgid "Paused Events" @@ -954,20 +966,20 @@ msgstr "Приостановленные события" msgid "Paused events" msgstr "Приостановленные события" -#: src/Admin/AdminPage.php:2206 +#: src/Admin/AdminPage.php:2232 msgid "Paused Since" msgstr "Приостановлено с" #: src/Admin/AdminPage.php:323 src/Admin/AdminPage.php:464 -#: src/Admin/AdminPage.php:1951 +#: src/Admin/AdminPage.php:1971 msgid "Pending" -msgstr "Ожидание" +msgstr "В ожидании" #: src/Admin/AdminPage.php:1752 msgid "Pending Actions" msgstr "Ожидающие действия" -#: src/Admin/AdminPage.php:1849 src/Admin/AdminPage.php:1899 +#: src/Admin/AdminPage.php:1849 src/Admin/AdminPage.php:1919 msgid "PHP" msgstr "PHP" @@ -976,14 +988,14 @@ msgid "" "PHP and WordPress versions, memory limits (current usage), maximum execution " "time, timezone." msgstr "" -"Версии PHP и WordPress, лимиты памяти (текущее использование), максимальное " -"время выполнения, часовой пояс." +"Версии PHP и WordPress, ограничения памяти (текущее использование), " +"максимальное время выполнения, часовой пояс." -#: src/QueueManager.php:288 +#: src/QueueManager.php:470 msgid "PHP extension \"memcached\" is not installed" msgstr "PHP-расширение \"memcached\" не установлено" -#: src/QueueManager.php:235 +#: src/QueueManager.php:267 msgid "PHP extension \"redis\" (phpredis) is not installed" msgstr "PHP-расширение \"redis\" (phpredis) не установлено" @@ -999,31 +1011,35 @@ msgstr "Версия PHP" msgid "Plugins" msgstr "Плагины" +#: src/QueueManager.php:416 +msgid "Predis library is not available" +msgstr "Библиотека Predis недоступна" + #: src/Admin/AdminPage.php:667 msgid "Process" -msgstr "Обработать" +msgstr "Процесс" -#: src/Admin/AdminPage.php:447 src/Admin/AdminPage.php:1989 +#: src/Admin/AdminPage.php:447 src/Admin/AdminPage.php:2009 msgid "Process Now" msgstr "Обработать сейчас" -#: src/Admin/AdminPage.php:1987 +#: src/Admin/AdminPage.php:2007 msgid "Process Queues" -msgstr "Обработать очереди" +msgstr "Обработочные очереди" #: src/Admin/AdminPage.php:426 src/Admin/AdminPage.php:468 msgid "Processing" msgstr "Обработка" +#: src/Admin/AdminPage.php:1866 +msgid "Processing trigger" +msgstr "Триггер обработки" + #: src/Admin/AdminPage.php:592 src/Admin/AdminPage.php:875 #: src/Admin/AdminPage.php:959 msgid "Queue" msgstr "Очередь" -#: src/Admin/AdminPage.php:1860 -msgid "Queue Driver" -msgstr "Драйвер очереди" - #: src/Admin/AdminPage.php:487 msgid "Queue is empty" msgstr "Очередь пуста" @@ -1032,6 +1048,10 @@ msgstr "Очередь пуста" msgid "Queue statistics" msgstr "Статистика очереди" +#: src/Admin/AdminPage.php:1860 +msgid "Queue Storage backend" +msgstr "бэкэнд хранилища очередей" + #: src/Admin/AdminPage.php:716 msgid "Queue table" msgstr "Таблица очереди" @@ -1045,15 +1065,15 @@ msgstr "Очередь: %s" msgid "Queues" msgstr "Очереди" -#: src/Admin/AdminPage.php:2037 +#: src/Admin/AdminPage.php:2057 msgid "Quick Start" msgstr "Быстрый старт" #: src/Admin/AdminPage.php:112 msgid "Quickly see if any jobs are failing and view recent log entries." msgstr "" -"Быстро проверьте, не завершаются ли задачи неудачей, и просмотрите недавние " -"записи журнала." +"Быстро проверьте, не завершаются ли какие-либо задания с ошибкой, и " +"просмотрите последние записи в журнале." #: src/Admin/AdminPage.php:1136 msgid "Ready" @@ -1061,11 +1081,19 @@ msgstr "Готово" #: src/Admin/AdminPage.php:395 msgid "Recent Activity" -msgstr "Недавняя активность" +msgstr "Последние события" #: src/Admin/AdminPage.php:717 msgid "Recent activity" -msgstr "Недавняя активность" +msgstr "Последние события" + +#: src/QueueManager.php:358 +msgid "Redis connection failed" +msgstr "Подключение к Redis не удалось." + +#: src/QueueManager.php:243 +msgid "Redis is disabled via WP_REDIS_DISABLED" +msgstr "Redis отключен с помощью WP_REDIS_DISABLED" #: src/Admin/AdminPage.php:696 msgid "Redis Support" @@ -1079,7 +1107,7 @@ msgstr "Зарегистрированные расписания" msgid "Registered schedules" msgstr "Зарегистрированные расписания" -#: src/Admin/AdminPage.php:2170 +#: src/Admin/AdminPage.php:2190 msgid "Report an Issue" msgstr "Сообщить о проблеме" @@ -1087,41 +1115,43 @@ msgstr "Сообщить о проблеме" msgid "Report Issues" msgstr "Сообщить о проблемах" +#: src/Admin/AdminPage.php:1876 +msgid "REST trigger (planned)" +msgstr "REST-триггер (запланировано)" + #: src/Admin/AdminPage.php:437 src/Admin/AdminPage.php:1571 -#: src/Admin/AdminPage.php:2220 +#: src/Admin/AdminPage.php:2246 msgid "Resume" -msgstr "Возобновить" +msgstr "Резюме" -#: src/Admin/AdminPage.php:2094 +#: src/Admin/AdminPage.php:2114 msgid "Retry Attempts" -msgstr "Попытки повтора" +msgstr "Повторные попытки" #: src/Admin/AdminPage.php:143 src/Admin/AdminPage.php:1518 msgid "Run" -msgstr "Запустить" +msgstr "Запуск" #: src/Admin/AdminPage.php:622 src/Admin/AdminPage.php:1517 msgid "Run Now" -msgstr "Запустить сейчас" +msgstr "Запустите сейчас" #: src/Admin/AdminPage.php:764 msgid "" "Run now, edit schedule, pause, delete. Modal window for changing interval." msgstr "" -"Запустить сейчас, редактировать расписание, приостановить, удалить. " -"Модальное окно для изменения интервала." -#: src/Admin/AdminPage.php:2116 +#: src/Admin/AdminPage.php:2136 msgid "Run tasks on schedule:" -msgstr "Выполнять задачи по расписанию:" +msgstr "" #: src/Admin/AdminPage.php:324 src/Admin/AdminPage.php:348 msgid "Running" -msgstr "Выполняется" +msgstr "Запущено" #: src/Admin/AdminPage.php:1756 msgid "Running Actions" -msgstr "Выполняющиеся действия" +msgstr "Выполнение действий" #: src/Admin/AdminPage.php:1622 msgid "Save Changes" @@ -1129,13 +1159,13 @@ msgstr "Сохранить изменения" #: src/Admin/AdminPage.php:591 src/Admin/AdminPage.php:1481 #: src/Admin/AdminPage.php:1556 src/Admin/AdminPage.php:1610 -#: src/Admin/AdminPage.php:2205 +#: src/Admin/AdminPage.php:2231 msgid "Schedule" msgstr "Расписание" -#: src/Admin/AdminPage.php:2057 +#: src/Admin/AdminPage.php:2077 msgid "Schedule a job to run after a specific time:" -msgstr "Запланировать выполнение задачи после определенного времени:" +msgstr "Настройте выполнение задания по истечении определенного времени:" #: src/Admin/AdminPage.php:51 src/Admin/AdminPage.php:1347 msgid "Scheduled" @@ -1143,36 +1173,36 @@ msgstr "Запланировано" #: src/Admin/AdminPage.php:725 msgid "Scheduled Jobs" -msgstr "Запланированные задачи" +msgstr "Запланированные задания" #: src/Admin/AdminPage.php:126 msgid "" "Scheduled Jobs – list of recurring background jobs added by your theme or " "plugins." msgstr "" -"Запланированные задачи – список повторяющихся фоновых задач, добавленных " +"Запланированные задания — список повторяющихся фоновых заданий, добавленных " "вашей темой или плагинами." -#: src/Admin/AdminPage.php:36 src/Admin/AdminPage.php:2115 +#: src/Admin/AdminPage.php:36 src/Admin/AdminPage.php:2135 msgid "Scheduler" msgstr "Планировщик" #: src/Admin/AdminPage.php:1776 src/Admin/AdminPage.php:1780 -#: src/Admin/AdminPage.php:1922 +#: src/Admin/AdminPage.php:1942 msgid "Server Time" -msgstr "Серверное время" +msgstr "" #: src/Admin/AdminPage.php:783 msgid "Server time" -msgstr "Серверное время" +msgstr "" #: src/Admin/AdminPage.php:1507 src/Admin/AdminPage.php:1565 msgid "Single" -msgstr "Одиночный" +msgstr "" #: src/Admin/AdminPage.php:1612 msgid "Single (run once)" -msgstr "Одиночный (выполнить один раз)" +msgstr "" #: src/Admin/AdminPage.php:1404 src/Admin/AdminPage.php:1482 msgid "Source" @@ -1185,12 +1215,25 @@ msgstr "Статус" #: src/Admin/AdminPage.php:746 msgid "Status filters" -msgstr "Фильтры статуса" +msgstr "Фильтры состояния" #: src/Admin/AdminPage.php:665 msgid "Storage" msgstr "Хранилище" +#: src/Admin/AdminPage.php:1052 +msgid "Storage backend" +msgstr "бэкэнд хранилища" + +#: src/Admin/AdminPage.php:1031 +#, php-format +msgid "" +"Storage backend \"%s\" is configured in wp-config.php, but not available. " +"Falling back to \"%s\"." +msgstr "" +"В файле wp-config.php настроен бэкэнд хранилища \"%s\", но он недоступен. " +"Используется резервный вариант \"%s\"." + #: src/QueueManager.php:198 msgid "Synchronous execution (no queue)" msgstr "Синхронное выполнение (без очереди)" @@ -1201,46 +1244,48 @@ msgstr "Система" #: src/Admin/AdminPage.php:686 msgid "System Cron (Recommended)" -msgstr "Системный Cron (Рекомендуется)" +msgstr "Системный планировщик задач (рекомендуется)" #: src/Admin/AdminPage.php:779 msgid "System health" -msgstr "Системное здоровье" +msgstr "Здоровье системы" #: src/Admin/AdminPage.php:1648 msgid "System Issues Detected:" -msgstr "Обнаружены системные проблемы:" +msgstr "Обнаружены системные неполадки:" #: src/Admin/AdminPage.php:55 msgid "System Status" -msgstr "Системный статус" +msgstr "Состояние системы" #: src/Admin/AdminPage.php:129 msgid "" "System – checks PHP version, WP-Cron status and other important settings." msgstr "" -"Система – проверяет версию PHP, статус WP-Cron и другие важные настройки." +"Система проверяет версию PHP, статус WP-Cron и другие важные настройки." #: src/Admin/AdminPage.php:732 msgid "" "The \"Run Now\" button allows you to run any job immediately, without " "waiting for the schedule." msgstr "" -"Кнопка \"Запустить сейчас\" позволяет запустить любую задачу немедленно, без " -"ожидания расписания." +"Кнопка «Запустить сейчас» позволяет немедленно запустить любое задание, не " +"дожидаясь расписания." #: src/Admin/AdminPage.php:665 msgid "The job is saved in the database (or Redis) waiting to be picked up." -msgstr "Задача сохраняется в базе данных (или Redis) в ожидании обработки." +msgstr "Задание сохраняется в базе данных (или Redis) в ожидании обработки." #: src/Admin/AdminPage.php:717 msgid "The last 10 log entries for quick tracking of queue activity." msgstr "" -"Последние 10 записей журнала для быстрого отслеживания активности очереди." +"Последние 10 записей в журнале для быстрого отслеживания активности в " +"очереди." #: src/Admin/AdminPage.php:713 msgid "The main tab for monitoring queue status in real-time." -msgstr "Основная вкладка для мониторинга статуса очереди в реальном времени." +msgstr "" +"Главная вкладка для мониторинга состояния очереди в режиме реального времени." #: src/Admin/AdminPage.php:108 msgid "" @@ -1248,24 +1293,24 @@ msgid "" "reliable queue that other plugins or your custom code can use for background " "work." msgstr "" -"Сам плагин не добавляет новые функции на фронтенд. Он предоставляет надежную " -"очередь, которую другие плагины или ваш кастомный код могут использовать для " -"фоновой работы." +"Сам плагин не добавляет новых функций на фронтенд. Он предоставляет надежную " +"очередь, которую другие плагины или ваш пользовательский код могут " +"использовать для фоновой работы." #: src/Admin/AdminPage.php:667 msgid "" "The worker picks up the job and executes it. If it succeeds, it is marked as " "\"Completed\". If it fails, it can be retried." msgstr "" -"Рабочий процесс забирает задачу и выполняет ее. В случае успеха она " -"отмечается как \"Завершено\". В случае неудачи ее можно повторить." +"Работник берет задание и выполняет его. Если оно выполняется успешно, оно " +"помечается как «Завершено». Если оно не выполняется, его можно повторить." #: src/Admin/AdminPage.php:314 msgid "This section is under development." msgstr "Этот раздел находится в разработке." #: src/Admin/AdminPage.php:872 src/Admin/AdminPage.php:957 -#: src/Admin/AdminPage.php:1160 src/Admin/AdminPage.php:1918 +#: src/Admin/AdminPage.php:1160 src/Admin/AdminPage.php:1938 msgid "Time" msgstr "Время" @@ -1273,7 +1318,7 @@ msgstr "Время" msgid "Timeout" msgstr "Тайм-аут" -#: src/Admin/AdminPage.php:1688 src/Admin/AdminPage.php:1930 +#: src/Admin/AdminPage.php:1688 src/Admin/AdminPage.php:1950 msgid "Timezone" msgstr "Часовой пояс" @@ -1286,10 +1331,10 @@ msgid "" "Full code examples are available in the " "README on GitHub." msgstr "" -"Чтобы добавить свои фоновые задачи, используйте PHP API WP Queue из вашего " -"плагина или темы. Вы можете отправлять задачи в разные очереди, " +"Чтобы добавить собственные фоновые задачи, используйте PHP API WP Queue из " +"вашего плагина или темы. Вы можете отправлять задачи в разные очереди, " "устанавливать задержки и повторные попытки. Полные примеры кода доступны в " -"README на GitHub." +"файле README на GitHub ." #: src/Admin/AdminPage.php:143 msgid "to get a list of available commands." @@ -1300,9 +1345,10 @@ msgid "" "To process the queue, WordPress needs a trigger. There are two ways to do " "this:" msgstr "" -"Для обработки очереди WordPress нужен триггер. Есть два способа это сделать:" +"Для обработки очереди WordPress необходим триггер. Это можно сделать двумя " +"способами:" -#: src/Admin/AdminPage.php:56 src/Admin/AdminPage.php:1977 +#: src/Admin/AdminPage.php:56 src/Admin/AdminPage.php:1997 msgid "Tools" msgstr "Инструменты" @@ -1312,7 +1358,7 @@ msgstr "Всего" #: src/Admin/AdminPage.php:950 msgid "Total errors" -msgstr "Всего ошибок" +msgstr "Общее количество ошибок" #: src/Admin/AdminPage.php:1343 msgid "Total Events" @@ -1320,14 +1366,14 @@ msgstr "Всего событий" #: src/Admin/AdminPage.php:460 msgid "Total Jobs" -msgstr "Всего задач" +msgstr "Общее количество рабочих мест" #: src/Admin/AdminPage.php:762 msgid "" "Total number of events, overdue, grouped by source (WordPress, WooCommerce, " "WP Queue, plugins)." msgstr "" -"Общее количество событий, просроченных, сгруппированных по источнику " +"Общее количество просроченных событий, сгруппированных по источнику " "(WordPress, WooCommerce, WP Queue, плагины)." #: src/Admin/AdminPage.php:1148 @@ -1357,7 +1403,7 @@ msgstr "Использование" #: src/Admin/AdminPage.php:1365 msgid "Use system cron" -msgstr "Использовать системный cron" +msgstr "Используйте системный cron" #: src/Admin/AdminPage.php:719 msgid "" @@ -1367,15 +1413,15 @@ msgstr "" "Используйте эту вкладку для быстрой проверки производительности очереди и " "выявления зависших процессов." -#: src/Admin/AdminPage.php:1907 +#: src/Admin/AdminPage.php:1927 msgid "Used" -msgstr "Использовано" +msgstr "Использовал" #: src/Admin/AdminPage.php:735 msgid "Useful for testing jobs and forcing synchronizations." -msgstr "Полезно для тестирования задач и принудительных синхронизаций." +msgstr "Полезно для тестирования заданий и принудительной синхронизации." -#: src/Admin/AdminPage.php:2159 +#: src/Admin/AdminPage.php:2179 msgid "Useful Links" msgstr "Полезные ссылки" @@ -1383,7 +1429,7 @@ msgstr "Полезные ссылки" msgid "Uses wp_options table" msgstr "Использует таблицу wp_options" -#: src/Admin/AdminPage.php:1747 src/Admin/AdminPage.php:1946 +#: src/Admin/AdminPage.php:1747 src/Admin/AdminPage.php:1966 msgid "Version" msgstr "Версия" @@ -1391,13 +1437,17 @@ msgstr "Версия" msgid "Versions" msgstr "Версии" +#: src/Admin/AdminPage.php:1880 +msgid "VPS worker (planned)" +msgstr "VPS-сервер (планируется)" + #: src/Admin/AdminPage.php:1727 msgid "Warning" msgstr "Предупреждение" #: src/Admin/AdminPage.php:109 msgid "What you can use it for" -msgstr "Для чего это можно использовать" +msgstr "Для чего его можно использовать" #: src/Admin/AdminPage.php:648 msgid "Why is it needed?" @@ -1417,12 +1467,13 @@ msgid "" "the box but has downsides: on low-traffic sites, tasks might not run on time;" " on high-traffic sites, it can cause performance issues. It is \"fake\" cron." msgstr "" -"WordPress проверяет запланированные задачи при каждой загрузке страницы. Это " -"работает из коробки, но имеет недостатки: на сайтах с низким трафиком задачи " -"могут не выполняться вовремя; на сайтах с высоким трафиком это может " -"вызывать проблемы с производительностью. Это \"поддельный\" cron." +"WordPress проверяет наличие запланированных задач при каждой загрузке " +"страницы. Это работает «из коробки», но имеет свои недостатки: на сайтах с " +"низкой посещаемостью задачи могут не выполняться вовремя; на сайтах с " +"высокой посещаемостью это может вызывать проблемы с производительностью. Это " +"«поддельный» cron." -#: src/Admin/AdminPage.php:1784 src/Admin/AdminPage.php:1926 +#: src/Admin/AdminPage.php:1784 src/Admin/AdminPage.php:1946 msgid "WordPress Time" msgstr "Время WordPress" @@ -1430,9 +1481,9 @@ msgstr "Время WordPress" msgid "WordPress Version" msgstr "Версия WordPress" -#: src/Admin/AdminPage.php:666 +#: src/Admin/AdminPage.php:40 src/Admin/AdminPage.php:666 msgid "Worker" -msgstr "Рабочий процесс" +msgstr "Воркер" #. Name of the plugin #: src/Admin/AdminPage.php:65 src/Admin/AdminPage.php:66 @@ -1440,22 +1491,23 @@ msgstr "Рабочий процесс" msgid "WP Queue" msgstr "WP Queue" -#: src/Admin/AdminPage.php:2027 +#: src/Admin/AdminPage.php:2047 msgid "" "WP Queue allows executing tasks asynchronously in the background without " "blocking the main WordPress execution flow." msgstr "" -"WP Queue позволяет выполнять задачи асинхронно в фоне без блокировки " -"основного потока выполнения WordPress." +"WP Queue позволяет выполнять задачи асинхронно в фоновом режиме, не блокируя " +"основной поток выполнения WordPress." #: src/Admin/AdminPage.php:107 msgid "" "WP Queue helps your site run heavy or regular tasks in the background " "(emails, synchronizations, cleanups) so that pages load faster for visitors." msgstr "" -"WP Queue помогает вашему сайту выполнять тяжелые или регулярные задачи в " -"фоновом режиме (отправка писем, синхронизации, очистка), чтобы страницы " -"загружались быстрее для посетителей." +"WP Queue помогает вашему сайту выполнять ресурсоемкие или регулярно " +"выполняемые задачи в фоновом режиме (отправка электронной почты, " +"синхронизация, очистка), благодаря чему страницы загружаются быстрее для " +"посетителей." #: src/Admin/AdminPage.php:640 msgid "" @@ -1464,10 +1516,10 @@ msgid "" "generating reports) to be processed asynchronously, ensuring your site " "remains fast and responsive for visitors." msgstr "" -"WP Queue - это надежная библиотека фоновой обработки для WordPress. Она " -"позволяет вам выгружать трудоемкие задачи (например, отправку писем, " -"синхронизацию данных или генерацию отчетов) для асинхронной обработки, " -"обеспечивая быструю и отзывчивую работу сайта для посетителей." +"WP Queue — это мощная библиотека для фоновой обработки данных в WordPress. " +"Она позволяет переносить трудоемкие задачи (например, отправку электронных " +"писем, синхронизацию данных или создание отчетов) на асинхронную обработку, " +"обеспечивая быструю и отзывчивую работу вашего сайта для посетителей." #: src/Admin/AdminPage.php:656 msgid "" @@ -1475,33 +1527,37 @@ msgid "" "them later in the background. The user gets an instant response, and the " "heavy work happens behind the scenes." msgstr "" -"WP Queue решает эту проблему, помещая эти задачи в \"Очередь\" и обрабатывая " -"их позже в фоновом режиме. Пользователь получает мгновенный ответ, а тяжелая " -"работа происходит за кулисами." +"WP Queue решает эту проблему, отправляя эти задачи в \"очередь\" и " +"обрабатывая их позже в фоновом режиме. Пользователь получает мгновенный " +"ответ, а основная работа происходит за кулисами." -#: src/Admin/AdminPage.php:2025 +#: src/Admin/AdminPage.php:2045 msgid "WP Queue — Queue System for WordPress" -msgstr "WP Queue — Система очередей для WordPress" +msgstr "WP Queue — система очередей для WordPress" #: src/Admin/AdminPage.php:97 msgid "WP-CLI" msgstr "WP-CLI" -#: src/Admin/AdminPage.php:142 src/Admin/AdminPage.php:1999 +#: src/Admin/AdminPage.php:142 src/Admin/AdminPage.php:2019 msgid "WP-CLI Commands" msgstr "Команды WP-CLI" -#: src/Admin/AdminPage.php:2138 +#: src/Admin/AdminPage.php:2158 msgid "WP-CLI команды" -msgstr "Команды WP-CLI" +msgstr "Команда WP-CLI" -#: src/Admin/AdminPage.php:757 src/Admin/AdminPage.php:1866 +#: src/Admin/AdminPage.php:757 src/Admin/AdminPage.php:1886 msgid "WP-Cron" msgstr "WP-Cron" #: src/Admin/AdminPage.php:678 msgid "WP-Cron (Default)" -msgstr "WP-Cron (По умолчанию)" +msgstr "WP-Cron (по умолчанию)" + +#: src/Admin/AdminPage.php:1869 +msgid "WP-Cron (scheduled)" +msgstr "WP-Cron (запланировано)" #: src/Admin/AdminPage.php:1698 msgid "WP-Cron Disabled" @@ -1517,17 +1573,17 @@ msgstr "Статус WP-Cron" #: src/Admin/AdminPage.php:781 msgid "WP-Cron status" -msgstr "Статус WP-Cron" +msgstr "статус WP-Cron" #: src/Admin/AdminPage.php:670 msgid "WP-Cron vs System Cron" -msgstr "WP-Cron против системного Cron" +msgstr "WP-Cron против System Cron" #: src/Admin/AdminPage.php:128 msgid "" "WP-Cron – list of cron events with the ability to run, pause or delete them." msgstr "" -"WP-Cron – список cron-событий с возможностью запуска, приостановки или " +"WP-Cron – список событий cron с возможностью их запуска, приостановки или " "удаления." #: src/Admin/AdminPage.php:1362 @@ -1537,3 +1593,135 @@ msgstr "WP-Cron:" #: src/Admin/AdminPage.php:1029 msgid "⚠️ Warning:" msgstr "⚠️ Предупреждение:" + +#: src/Admin/AdminPage.php:1894 +msgid "Queue handler" +msgstr "Обработчик очереди" + +#: src/Admin/AdminPage.php:1864 +msgid "Daemon process" +msgstr "Демон-процесс" + +#: src/Admin/AdminPage.php:1868 src/Admin/AdminPage.php:1872 +msgid "WP-Cron + Loopback" +msgstr "WP-Cron + Loopback" + +#: src/Admin/AdminPage.php:1876 +msgid "WP-Cron only" +msgstr "Только WP-Cron" + +#: src/Admin/AdminPage.php:1866 +msgid "A daemon worker is expected to process queues. WP-Cron and loopback are disabled." +msgstr "Для обработки очередей ожидается демон-воркер. WP-Cron и loopback отключены." + +#: src/Admin/AdminPage.php:1870 +msgid "Loopback is enabled and working. Jobs start immediately after dispatch." +msgstr "Loopback включен и работает. Задачи запускаются сразу после отправки." + +#: src/Admin/AdminPage.php:1874 +msgid "Loopback is inactive. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Enable loopback or run a daemon worker for instant processing." +msgstr "Loopback неактивен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Включите loopback или запустите демон-воркер для мгновенной обработки." + +#: src/Admin/AdminPage.php:1878 +msgid "Loopback is disabled. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Run a daemon worker for instant processing." +msgstr "Loopback отключен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Запустите демон-воркер для мгновенной обработки." + +#: src/Admin/AdminPage.php:1899 +msgid "WP-Cron checks the queue every minute as a fallback." +msgstr "WP-Cron раз в минуту проверяет очередь как подстраховку." + +#: src/Admin/AdminPage.php:58 src/Admin/AdminPage.php:2288 +msgid "Daemon worker" +msgstr "Демон-воркер" + +#: src/Admin/AdminPage.php:2289 +msgid "How to run WP Queue as a long-running background process." +msgstr "Как запустить WP Queue в виде долгоживущего фонового процесса." + +#: src/Admin/AdminPage.php:2293 +msgid "When to use a daemon" +msgstr "Когда использовать демон" + +#: src/Admin/AdminPage.php:2294 +msgid "Use a daemon worker on VPS, Docker or dedicated servers where you can keep a process running. It polls the queue continuously and starts jobs immediately. Without a daemon, WP Queue relies on WP-Cron and/or loopback, which can delay jobs by up to a minute." +msgstr "Запускайте демон-воркер на VPS, Docker или выделенном сервере, где можно держать процесс запущенным. Он постоянно опрашивает очередь и сразу запускает задания. Без демона WP Queue полагается на WP-Cron и/или loopback, что может задерживать задания до минуты." + +#: src/Admin/AdminPage.php:2296 +msgid "1. Enable daemon runtime mode" +msgstr "1. Включите режим демона" + +#: src/Admin/AdminPage.php:2297 +msgid "Add this to wp-config.php:" +msgstr "Добавьте в wp-config.php:" + +#: src/Admin/AdminPage.php:2299 +msgid "In this mode WP-Cron scheduling and loopback requests are disabled automatically." +msgstr "В этом режиме планирование WP-Cron и loopback-запросы отключаются автоматически." + +#: src/Admin/AdminPage.php:2301 +msgid "2. Run the worker" +msgstr "2. Запустите воркер" + +#: src/Admin/AdminPage.php:2303 +msgid "With WP-CLI" +msgstr "С WP-CLI" + +#: src/Admin/AdminPage.php:2304 +msgid "Start the worker from the WordPress root:" +msgstr "Запустите воркер из корня WordPress:" + +#: src/Admin/AdminPage.php:2306 +msgid "--memory limits the PHP memory for the worker process. Adjust the value to your needs." +msgstr "--memory ограничивает память PHP для процесса воркера. Подберите значение под свои задачи." + +#: src/Admin/AdminPage.php:2308 +msgid "Without WP-CLI" +msgstr "Без WP-CLI" + +#: src/Admin/AdminPage.php:2309 +msgid "If WP-CLI is not available, create a PHP script that boots WordPress and runs the worker loop:" +msgstr "Если WP-CLI недоступен, создайте PHP-скрипт, который загружает WordPress и запускает цикл воркера:" + +#: src/Admin/AdminPage.php:2324 +msgid "Save the script, make it executable and run it in the background:" +msgstr "Сохраните скрипт, сделайте его исполняемым и запустите в фоне:" + +#: src/Admin/AdminPage.php:2328 +msgid "3. Keep it running" +msgstr "3. Держите процесс запущенным" + +#: src/Admin/AdminPage.php:2329 +msgid "The command above must stay alive. In production use one of the options below." +msgstr "Команда выше должна оставаться запущенной. В продакшене используйте один из вариантов ниже." + +#: src/Admin/AdminPage.php:2331 +msgid "Option A: systemd service" +msgstr "Вариант A: сервис systemd" + +#: src/Admin/AdminPage.php:2346 +msgid "Save as /etc/systemd/system/wp-queue-worker.service, then run systemctl enable --now wp-queue-worker." +msgstr "Сохраните как /etc/systemd/system/wp-queue-worker.service, затем выполните systemctl enable --now wp-queue-worker." + +#: src/Admin/AdminPage.php:2348 +msgid "Option B: Supervisor" +msgstr "Вариант B: Supervisor" + +#: src/Admin/AdminPage.php:2358 +msgid "Option C: Docker Compose" +msgstr "Вариант C: Docker Compose" + +#: src/Admin/AdminPage.php:2364 +msgid "Option D: plain PHP script" +msgstr "Вариант D: простой PHP-скрипт" + +#: src/Admin/AdminPage.php:2365 +msgid "Use the script from step 2 (Without WP-CLI) inside screen, tmux or a simple cron-based restart loop. Remember that the script must stay alive to act as a daemon." +msgstr "Используйте скрипт из шага 2 (Без WP-CLI) внутри screen, tmux или простого цикла перезапуска через cron. Помните, что скрипт должен оставаться запущенным, чтобы работать как демон." + +#: src/Admin/AdminPage.php:2367 +msgid "4. Check status" +msgstr "4. Проверьте статус" + +#: src/Admin/AdminPage.php:2369 +msgid "If the worker is not running, queues will not be processed in daemon mode. Make sure the process is started and monitored." +msgstr "Если воркер не запущен, очереди в режиме демона обрабатываться не будут. Убедитесь, что процесс запущен и мониторится." diff --git a/src/Admin/AdminPage.php b/src/Admin/AdminPage.php index d52f588..93c8335 100644 --- a/src/Admin/AdminPage.php +++ b/src/Admin/AdminPage.php @@ -4,6 +4,8 @@ namespace WPQueue\Admin; +use WPQueue\Loopback\LoopbackDispatcher; +use WPQueue\Runtime\RuntimeMode; use WPQueue\WPQueue; /** @@ -53,6 +55,7 @@ public function initTabs(): void ], 'system' => [ 'status' => ['title' => __('System Status', 'wp-queue'), 'icon' => 'dashicons-heart'], + 'daemon' => ['title' => __('Daemon worker', 'wp-queue'), 'icon' => 'dashicons-admin-generic'], 'tools' => ['title' => __('Tools', 'wp-queue'), 'icon' => 'dashicons-admin-tools'], 'help' => ['title' => __('Help', 'wp-queue'), 'icon' => 'dashicons-editor-help'], ], @@ -1852,6 +1855,32 @@ protected function renderSystemStatus(): void
+

@@ -1863,29 +1892,19 @@ protected function renderSystemStatus(): void - +
-
- -
-
- - -
-
- - -
-
- - -
+ + + + +
- + @@ -1897,16 +1916,19 @@ protected function renderSystemStatus(): void 'completed', - 'warning' => 'pending', - default => 'failed', + $lbBadgeClass = match ($loopbackStatus) { + 'ok' => 'status-completed', + 'warning' => 'status-pending', + default => 'status-failed', + }; + $lbStatusLabel = match ($loopbackStatus) { + 'ok' => __('OK', 'wp-queue'), + 'warning' => __('Warning', 'wp-queue'), + 'error' => __('Error', 'wp-queue'), + default => __('Unknown', 'wp-queue'), }; ?> - - - + @@ -2254,6 +2276,101 @@ protected function renderSchedulerPaused(): void +
+
+

+

+
+ +
+

+

+ +

+

+
define('WP_QUEUE_RUNTIME_MODE', 'daemon');
+

+ +

+ +

+

+
wp queue work --daemon --memory=256
+

+ +

+

+
<?php
+define('WP_QUEUE_DAEMON', true);
+define('WP_QUEUE_RUNTIME_MODE', 'daemon');
+
+require '/var/www/html/wordpress/wp-load.php';
+
+$queue = $argv[1] ?? 'default';
+$memory = 256;
+
+ini_set('memory_limit', "{$memory}M");
+set_time_limit(0);
+
+WPQueue\WPQueue::worker()->setMemoryLimit($memory);
+WPQueue\WPQueue::worker()->daemon($queue);
+

+
chmod +x /var/www/html/wp-queue-daemon.php
+nohup php /var/www/html/wp-queue-daemon.php > /var/log/wp-queue-daemon.log 2>&1 &
+ +

+

+ +

+
[Unit]
+Description=WP Queue daemon worker
+After=network.target
+
+[Service]
+Type=simple
+User=www-data
+WorkingDirectory=/var/www/html
+ExecStart=/usr/local/bin/wp queue work --daemon --memory=256
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target
+

+ +

+
[program:wp-queue-worker]
+command=/usr/local/bin/wp queue work --daemon --memory=256
+directory=/var/www/html
+user=www-data
+autostart=true
+autorestart=true
+stderr_logfile=/var/log/wp-queue-worker.err.log
+stdout_logfile=/var/log/wp-queue-worker.out.log
+ +

+
worker:
+  image: your-wordpress-image
+  command: ["wp", "queue", "work", "--daemon", "--memory=256"]
+  restart: unless-stopped
+ +

+

+ +

+
wp queue status
+

+
+
+ toHaveKey('scheduled'); }); -test('Вкладка Система имеет 3 секции', function (): void { +test('Вкладка Система имеет 4 секции', function (): void { $adminPage = new AdminPage(); $adminPage->initTabs(); $reflection = new ReflectionClass($adminPage); @@ -109,8 +109,9 @@ function add_menu_page(string $page_title, string $menu_title, string $capabilit $sectionsProperty->setAccessible(true); $sections = $sectionsProperty->getValue($adminPage); - expect($sections['system'])->toHaveCount(3); + expect($sections['system'])->toHaveCount(4); expect($sections['system'])->toHaveKey('status'); + expect($sections['system'])->toHaveKey('daemon'); expect($sections['system'])->toHaveKey('tools'); expect($sections['system'])->toHaveKey('help'); }); @@ -172,6 +173,12 @@ function add_menu_page(string $page_title, string $menu_title, string $capabilit expect(method_exists($adminPage, 'renderSchedulerEvents'))->toBeTrue(); }); +test('AdminPage рендерит метод для секции Демон', function (): void { + $adminPage = new AdminPage(); + + expect(method_exists($adminPage, 'renderSystemDaemon'))->toBeTrue(); +}); + test('Метод getStatusLabel возвращает корректные метки', function (): void { $adminPage = new AdminPage(); $reflection = new ReflectionClass($adminPage); From 75410f5e5d2e83b9f809bb3d2751dfb14a6e46e5 Mon Sep 17 00:00:00 2001 From: Aleksei Tikhomirov Date: Sun, 26 Jul 2026 00:14:59 +0300 Subject: [PATCH 7/8] translation update --- languages/wp-queue-ru_RU.l10n.php | 340 +-------- languages/wp-queue-ru_RU.mo | Bin 43931 -> 45695 bytes languages/wp-queue-ru_RU.po | 1061 +++++++++++++++-------------- languages/wp-queue.pot | 862 ++++++++++++++--------- 4 files changed, 1072 insertions(+), 1191 deletions(-) diff --git a/languages/wp-queue-ru_RU.l10n.php b/languages/wp-queue-ru_RU.l10n.php index 60e217a..c12cd09 100644 --- a/languages/wp-queue-ru_RU.l10n.php +++ b/languages/wp-queue-ru_RU.l10n.php @@ -1,340 +1,2 @@ 'WP Queue 1.0.0', - 'report-msgid-bugs-to' => 'https://github.com/rwsite/wp-queue/issues', - 'pot-creation-date' => '2025-12-06 01:35+0000', - 'po-revision-date' => '2026-07-25 20:21+0000', - 'last-translator' => '', - 'language-team' => 'Русский', - 'language' => 'ru_RU', - 'mime-version' => '1.0', - 'content-type' => 'text/plain; charset=UTF-8', - 'content-transfer-encoding' => '8bit', - 'plural-forms' => 'nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);', - 'x-generator' => 'Loco https://localise.biz/', - 'x-loco-version' => '2.8.0; wp-6.9; php-8.3.28', - 'messages' => - array ( - '%d entries' => '%d записей', - '%d tasks' => '%d задач', - '(configured)' => '(настроено)', - 'A background process (Worker) constantly checks the queue for new jobs.' => 'Фоновый процесс (Worker) постоянно проверяет очередь на наличие новых заданий.', - 'A list of all active queues with their size, status (idle/pending/running/paused), and control buttons (pause/resume, clear all tasks).' => 'Список всех активных очередей с указанием их размера, статуса (простой/ожидание/выполнение/приостановка) и кнопок управления (пауза/возобновление, очистить все задачи).', - 'A plugin creates a "Job" (a task) and pushes it to the queue.' => 'Плагин создает «Задание» (задачу) и помещает его в очередь.', - 'A real cron job configured on your server (Linux) that calls WordPress every minute. This is reliable and precise. Ideally, you should disable default WP-Cron and use System Cron.' => 'На вашем сервере (Linux) должна быть настроена настоящая задача cron, которая будет запускать WordPress каждую минуту. Это надежно и точно. В идеале следует отключить стандартный WP-Cron и использовать системный Cron.', - 'A separate table for events that are temporarily disabled.' => 'Отдельная таблица для событий, которые временно отключены.', - 'A table of all available intervals (hourly, daily, etc.) with their duration.' => 'Таблица со всеми доступными интервалами (почасовыми, суточным и т. д.) и их продолжительностью.', - 'About WP Queue' => 'О WP Queue', - 'Action completed successfully' => 'Действие успешно завершено.', - 'Action Scheduler' => 'Планировщик действий', - 'Actions' => 'Действия', - 'Active' => 'Активный', - 'Add to wp-config.php:' => 'Добавьте в файл wp-config.php:', - 'After dispatch, schedules a single cron run and calls spawn_cron()' => 'После отправки задачи планирует выполнение одного запуска cron и вызывает функцию spawn_cron().', - 'ago (overdue)' => 'давно (просрочено)', - 'Aleksei Tikhomirov' => 'Алексей Тихомиров', - 'All' => 'Все', - 'All queues' => 'Все очереди', - 'All systems are healthy.' => 'Все системы работают исправно.', - 'Alternate Cron' => 'Альтернативный Cron', - 'An error occurred' => 'Произошла ошибка.', - 'Are you sure you want to clear this queue?' => 'Вы уверены, что хотите очистить эту очередь?', - 'Attempts' => 'Попытки', - 'Author Website' => 'Веб-сайт автора', - 'Available From' => 'Доступно с', - 'Background job processing and WP-Cron management for WordPress. Schedule tasks, manage queues, and monitor cron events.' => 'Обработка фоновых задач и управление WP-Cron для WordPress. Планируйте задачи, управляйте очередями и отслеживайте cron-события.', - 'Basic Usage' => 'Основные правила использования', - 'Button to delete old log entries to avoid cluttering the database.' => 'Кнопка для удаления старых записей журнала во избежание засорения базы данных.', - 'Buttons to show all entries, only completed, or only failed jobs.' => 'Кнопки для отображения всех записей, только завершенных или только неудачно завершенных заданий.', - 'By default, WordPress executes all actions during the page load request. If a plugin needs to send 100 emails or sync 500 products with an external API, the user has to wait until it finishes. This leads to slow page loads or timeouts.' => 'По умолчанию WordPress выполняет все действия во время запроса на загрузку страницы. Если плагину необходимо отправить 100 электронных писем или синхронизировать 500 товаров с внешним API, пользователю приходится ждать завершения процесса. Это приводит к медленной загрузке страниц или таймаутам.', - 'By default, WP Queue stores jobs in the WordPress database (wp_options or custom tables). For high-performance sites, you can use Redis. Redis is an in-memory data store that is much faster than a SQL database for queue operations. It reduces load on your database and speeds up job processing.' => 'По умолчанию WP Queue хранит задания в базе данных WordPress (в папке wp_options или в пользовательских таблицах). Для высокопроизводительных сайтов можно использовать Redis. Redis — это хранилище данных в оперативной памяти, которое намного быстрее, чем база данных SQL, при работе с очередями. Оно снижает нагрузку на базу данных и ускоряет обработку заданий.', - 'Cancel' => 'Отмена', - 'Cannot connect to Memcached at %s:%d - %s' => 'Не удалось подключиться к Memcached на %s:%d - %s', - 'Cannot connect to Redis at %s:%d - %s' => 'Не удалось подключиться к Redis на %s:%d - %s', - 'Check basic system requirements that affect queue stability.' => 'Проверьте основные системные требования, влияющие на стабильность очереди.', - 'Check driver settings.' => 'Проверьте настройки драйвера.', - 'Check logs when encountering errors in background processes.' => 'При обнаружении ошибок в фоновых процессах проверяйте журналы.', - 'Check this tab when setting up your server or debugging queue issues.' => 'Проверьте эту вкладку при настройке сервера или отладке проблем с очередями.', - 'Checking for disablement (DISABLE_WP_CRON), alternative cron, loopback requests.' => 'Проверка на отключение (DISABLE_WP_CRON), альтернативный cron, запросы обратной связи.', - 'Checking system requirements and environment for stable queue operation.' => 'Проверка системных требований и среды для обеспечения стабильной работы очереди.', - 'Clear' => 'Очистить', - 'Clear All' => 'Очистить все', - 'Clear All Logs' => 'Очистить все журналы', - 'Clear All Queues' => 'Очистить все очереди', - 'Clear Logs' => 'Очистить журналы', - 'Clear logs' => 'Очистить журналы', - 'Clear old' => 'Удалить старые', - 'Close' => 'Закрыть', - 'Comparison of server time, WordPress, and GMT offset for diagnosing scheduling issues.' => 'Сравнение серверного времени, времени WordPress и смещения GMT для диагностики проблем с планированием.', - 'Completed' => 'Завершенные', - 'Component Status' => 'Состояние компонента', - 'Configure' => 'Настройка', - 'Configure automatic retries on errors:' => 'Настройте автоматическое повторение попыток при возникновении ошибок:', - 'Configure Memcached' => 'Настройка Memcached', - 'Configure Redis' => 'Настройка Redis', - 'Configure system cron' => 'Настройте системный cron.', - 'Connected to Memcached at %s:%d' => 'Подключено к Memcached на %s:%d', - 'Connected to Redis at %s:%d (phpredis)' => 'Подключено к Redis по адресу %s:%d (phpredis)', - 'Connected to Redis at %s:%d (Predis)' => 'Подключено к Redis по адресу %s:%d (Predis)', - 'Connected to Redis at %s:%d (via redis-cache plugin)' => 'Подключено к Redis по адресу %s:%d (через плагин redis-cache)', - 'Create a job class and dispatch it to the queue:' => 'Создайте класс задания и отправьте его в очередь:', - 'Critical for understanding why tasks are not running on time.' => 'Это крайне важно для понимания причин, по которым задачи не выполняются в срок.', - 'Cron event paused' => 'Cron-событие приостановлено', - 'Cron event resumed' => 'Cron-событие возобновлено', - 'Cron event updated' => 'Cron-событие обновлено', - 'Cron Events' => 'События Cron', - 'Current Memory Usage' => 'Текущее использование памяти', - 'Current storage backend:' => 'Текущая система хранения данных:', - 'Custom driver' => 'Пользовательский драйвер', - 'Dashboard' => 'Панель управления', - 'Dashboard – quick overview of queues, number of jobs and recent activity.' => 'Панель управления – краткий обзор очередей, количества заданий и недавней активности.', - 'Delayed Jobs' => 'Задержка с выполнением заданий', - 'Delete' => 'Удалить', - 'Delete all' => 'Удалить все', - 'Deletes all job execution logs' => 'Удаляет все журналы выполнения заданий.', - 'Deletes all jobs from all queues' => 'Удаляет все задания из всех очередей.', - 'Description' => 'Описание', - 'Details' => 'Подробности', - 'Developers can dispatch their own jobs to the queue, choose drivers (Database, Sync, Redis), configure retries and schedules. See the documentation and examples on GitHub for integration details.' => 'Разработчики могут отправлять свои собственные задания в очередь, выбирать драйверы (база данных, синхронизация, Redis), настраивать повторные попытки и расписание. Подробную информацию об интеграции см. в документации и примерах на GitHub.', - 'Displays a table of scheduled recurring tasks (PHP classes) registered in WP Queue: job class, execution interval, queue assignment, and next run time. Allows you to run any task manually.' => 'Отображает таблицу запланированных повторяющихся задач (PHP-классов), зарегистрированных в WP Queue: класс задачи, интервал выполнения, назначение в очередь и время следующего запуска. Позволяет запускать любую задачу вручную.', - 'Displays all registered PHP job classes with their configuration.' => 'Отображает все зарегистрированные классы заданий PHP с их конфигурацией.', - 'Displays environment information (PHP and WordPress versions, memory limits, execution time, timezone), WP-Cron status (disabled, alternative cron, loopback checks). If Action Scheduler is installed - its statistics. Server and WordPress time.' => 'Отображает информацию об окружении (версии PHP и WordPress, ограничения памяти, время выполнения, часовой пояс), статус WP-Cron (отключен, альтернативный cron, проверки обратной связи). Если установлен Action Scheduler — его статистика. Время сервера и WordPress.', - 'Displays the last 200 entries by default or all completed/failed.' => 'По умолчанию отображаются последние 200 записей или все завершенные/незавершенные.', - 'Displays the total number of tasks in different statuses (pending, running, completed, failed).' => 'Отображает общее количество задач в различных статусах (ожидание, выполнение, завершено, сбой).', - 'Displays when the job should run next or marks overdue jobs.' => 'Отображает время следующего запуска задания или помечает просроченные задания.', - 'Distribute jobs across different queues:' => 'Распределите задания по разным очередям:', - 'Driver:' => 'Драйвер:', - 'Drivers' => 'Драйверы', - 'Edit' => 'Редактировать', - 'Edit Cron Event' => 'Редактировать событие Cron', - 'Edit Schedule' => 'Редактировать расписание', - 'Enabled' => 'Включено', - 'Environment' => 'Environment', - 'Error' => 'Ошибка', - 'Every %d Minutes' => 'Каждые %d минут', - 'Execution time, status (completed/failed/retrying), job class, queue, error message.' => 'Время выполнения, статус (завершено/сбой/повторная попытка), класс задания, очередь, сообщение об ошибке.', - 'Failed' => 'Ошибки', - 'Failed Actions' => 'Неудачные действия', - 'Failed to pause event' => 'Не удалось приостановить событие', - 'Failed to resume event' => 'Не удалось возобновить событие', - 'Failed to update event' => 'Не удалось обновить событие', - 'For Redis/Memcached to work, you need the PHP extension installed and a server available. If not, the system will automatically use the "database" driver.' => 'Для работы Redis/Memcached необходимо установить расширение PHP и иметь доступный сервер. В противном случае система автоматически будет использовать драйвер "database".', - 'Help' => 'Помощь', - 'History' => 'История', - 'History of all job executions for diagnostics and debugging.' => 'История всех выполненных заданий для диагностики и отладки.', - 'https://github.com/rwsite/wp-queue' => 'https://github.com/rwsite/wp-queue', - 'https://rwsite.ru' => 'https://rwsite.ru', - 'If installed, displays version and statistics (pending/running/failed actions).' => 'Если установлено, отображает версию и статистику (ожидающие/выполняемые/неудачные действия).', - 'Job' => 'Задача', - 'Job Class' => 'Job Class', - 'Job class, execution interval (e.g., "hourly", "daily"), queue assignment, next run time.' => 'Класс Job, интервал выполнения (например, "ежечасно", "ежедневно"), назначение в очередь, время следующего запуска.', - 'Job Details' => 'Job Details', - 'Job information' => 'Job information', - 'Job list' => 'Список Job', - 'jobs' => 'задачи', - 'Jobs in Queue' => 'Задачи в очереди', - 'Log table' => 'Таблица логов', - 'Logs' => 'Логи', - 'Logs – history of completed and failed jobs that helps to diagnose problems.' => 'Логи — история выполненных и неудачных заданий, которая помогает диагностировать проблемы.', - 'Loopback' => 'Обратная связь', - 'Loopback issue: %s' => 'Проблема обратной связи: %s', - 'Loopback Request' => 'Запрос обратной связи', - 'Loopback request successful' => 'Запрос обратной связи выполнен успешно', - 'Manage queues from command line:' => 'Управление очередями из командной строки:', - 'Management of scheduled recurring tasks.' => 'Управление запланированными повторяющимися задачами.', - 'Management of WordPress system timers that trigger background processes.' => 'Управление системными таймерами WordPress, запускающими фоновые процессы.', - 'Manual run' => 'Ручной запуск', - 'Max Execution Time' => 'Максимальное время выполнения', - 'Memory Limit' => 'Ограничение памяти', - 'Memory usage is above 80%.' => 'Использование памяти выше 80%.', - 'Message' => 'Сообщение', - 'Monitor which background jobs are queued and running right now.' => 'Отслеживайте, какие фоновые задачи находятся в очереди и выполняются в данный момент.', - 'More documentation' => 'Дополнительная документация', - 'Name' => 'Имя', - 'Named Queues' => 'Именованные очереди', - 'Next Run' => 'Следующий запуск', - 'Next run status' => 'Статус следующего запуска', - 'No activity' => 'Нет активности', - 'No cron events found.' => 'Событий cron не обнаружено.', - 'No errors' => 'Ошибок нет.', - 'No extension' => 'Нет расширения', - 'No logs found' => 'Журналы не найдены', - 'No paused events' => 'Нет приостановленных событий', - 'No scheduled events' => 'Мероприятия не запланированы.', - 'No scheduled jobs found.' => 'Запланированных заданий не найдено.', - 'No server' => 'Нет сервера', - 'Not implemented yet' => 'Пока не реализовано', - 'Notifications of critical issues (low memory, disabled WP-Cron).' => 'Уведомления о критических проблемах (недостаток памяти, отключение WP-Cron).', - 'Now' => 'Сейчас', - 'Number of entries' => 'Количество записей', - 'OK' => 'OK', - 'One-time' => 'Один раз', - 'Overdue' => 'Просрочено', - 'Overview' => 'Обзор', - 'Pause' => 'Пауза', - 'Pause this queue?' => 'Приостановить выполнение этой очереди?', - 'Paused' => 'Приостановлено', - 'Paused At' => 'Приостановлено на', - 'Paused Events' => 'Приостановленные события', - 'Paused events' => 'Приостановленные события', - 'Paused Since' => 'Приостановлено с', - 'Pending' => 'В ожидании', - 'Pending Actions' => 'Ожидающие действия', - 'PHP' => 'PHP', - 'PHP and WordPress versions, memory limits (current usage), maximum execution time, timezone.' => 'Версии PHP и WordPress, ограничения памяти (текущее использование), максимальное время выполнения, часовой пояс.', - 'PHP extension "memcached" is not installed' => 'PHP-расширение "memcached" не установлено', - 'PHP extension "redis" (phpredis) is not installed' => 'PHP-расширение "redis" (phpredis) не установлено', - 'PHP max_execution_time is less than 30 seconds.' => 'PHP max_execution_time меньше 30 секунд.', - 'PHP Version' => 'Версия PHP', - 'Plugins' => 'Плагины', - 'Predis library is not available' => 'Библиотека Predis недоступна', - 'Process' => 'Процесс', - 'Process Now' => 'Обработать сейчас', - 'Process Queues' => 'Обработочные очереди', - 'Processing' => 'Обработка', - 'Processing trigger' => 'Триггер обработки', - 'Queue' => 'Очередь', - 'Queue is empty' => 'Очередь пуста', - 'Queue statistics' => 'Статистика очереди', - 'Queue Storage backend' => 'бэкэнд хранилища очередей', - 'Queue table' => 'Таблица очереди', - 'Queue: %s' => 'Очередь: %s', - 'Queues' => 'Очереди', - 'Quick Start' => 'Быстрый старт', - 'Quickly see if any jobs are failing and view recent log entries.' => 'Быстро проверьте, не завершаются ли какие-либо задания с ошибкой, и просмотрите последние записи в журнале.', - 'Ready' => 'Готово', - 'Recent Activity' => 'Последние события', - 'Recent activity' => 'Последние события', - 'Redis connection failed' => 'Подключение к Redis не удалось.', - 'Redis is disabled via WP_REDIS_DISABLED' => 'Redis отключен с помощью WP_REDIS_DISABLED', - 'Redis Support' => 'Поддержка Redis', - 'Registered Schedules' => 'Зарегистрированные расписания', - 'Registered schedules' => 'Зарегистрированные расписания', - 'Report an Issue' => 'Сообщить о проблеме', - 'Report Issues' => 'Сообщить о проблемах', - 'REST trigger (planned)' => 'REST-триггер (запланировано)', - 'Resume' => 'Резюме', - 'Retry Attempts' => 'Повторные попытки', - 'Run' => 'Запуск', - 'Run Now' => 'Запустите сейчас', - 'Running' => 'Запущено', - 'Running Actions' => 'Выполнение действий', - 'Save Changes' => 'Сохранить изменения', - 'Schedule' => 'Расписание', - 'Schedule a job to run after a specific time:' => 'Настройте выполнение задания по истечении определенного времени:', - 'Scheduled' => 'Запланировано', - 'Scheduled Jobs' => 'Запланированные задания', - 'Scheduled Jobs – list of recurring background jobs added by your theme or plugins.' => 'Запланированные задания — список повторяющихся фоновых заданий, добавленных вашей темой или плагинами.', - 'Scheduler' => 'Планировщик', - 'Source' => 'Источник', - 'Status' => 'Статус', - 'Status filters' => 'Фильтры состояния', - 'Storage' => 'Хранилище', - 'Storage backend' => 'бэкэнд хранилища', - 'Storage backend "%s" is configured in wp-config.php, but not available. Falling back to "%s".' => 'В файле wp-config.php настроен бэкэнд хранилища "%s", но он недоступен. Используется резервный вариант "%s".', - 'Synchronous execution (no queue)' => 'Синхронное выполнение (без очереди)', - 'System' => 'Система', - 'System Cron (Recommended)' => 'Системный планировщик задач (рекомендуется)', - 'System health' => 'Здоровье системы', - 'System Issues Detected:' => 'Обнаружены системные неполадки:', - 'System Status' => 'Состояние системы', - 'System – checks PHP version, WP-Cron status and other important settings.' => 'Система проверяет версию PHP, статус WP-Cron и другие важные настройки.', - 'The "Run Now" button allows you to run any job immediately, without waiting for the schedule.' => 'Кнопка «Запустить сейчас» позволяет немедленно запустить любое задание, не дожидаясь расписания.', - 'The job is saved in the database (or Redis) waiting to be picked up.' => 'Задание сохраняется в базе данных (или Redis) в ожидании обработки.', - 'The last 10 log entries for quick tracking of queue activity.' => 'Последние 10 записей в журнале для быстрого отслеживания активности в очереди.', - 'The main tab for monitoring queue status in real-time.' => 'Главная вкладка для мониторинга состояния очереди в режиме реального времени.', - 'The plugin itself does not add new features to the frontend. It provides a reliable queue that other plugins or your custom code can use for background work.' => 'Сам плагин не добавляет новых функций на фронтенд. Он предоставляет надежную очередь, которую другие плагины или ваш пользовательский код могут использовать для фоновой работы.', - 'The worker picks up the job and executes it. If it succeeds, it is marked as "Completed". If it fails, it can be retried.' => 'Работник берет задание и выполняет его. Если оно выполняется успешно, оно помечается как «Завершено». Если оно не выполняется, его можно повторить.', - 'This section is under development.' => 'Этот раздел находится в разработке.', - 'Time' => 'Время', - 'Timeout' => 'Тайм-аут', - 'Timezone' => 'Часовой пояс', - 'To add your own background jobs, use the WP Queue PHP API from your plugin or theme. You can dispatch jobs to different queues, set delays and retries. Full code examples are available in the README on GitHub.' => 'Чтобы добавить собственные фоновые задачи, используйте PHP API WP Queue из вашего плагина или темы. Вы можете отправлять задачи в разные очереди, устанавливать задержки и повторные попытки. Полные примеры кода доступны в файле README на GitHub .', - 'to get a list of available commands.' => 'чтобы получить список доступных команд.', - 'To process the queue, WordPress needs a trigger. There are two ways to do this:' => 'Для обработки очереди WordPress необходим триггер. Это можно сделать двумя способами:', - 'Tools' => 'Инструменты', - 'Total' => 'Всего', - 'Total errors' => 'Общее количество ошибок', - 'Total Events' => 'Всего событий', - 'Total Jobs' => 'Общее количество рабочих мест', - 'Total number of events, overdue, grouped by source (WordPress, WooCommerce, WP Queue, plugins).' => 'Общее количество просроченных событий, сгруппированных по источнику (WordPress, WooCommerce, WP Queue, плагины).', - 'Unavailable' => 'Недоступно', - 'Unexpected response code: %d' => 'Неожиданный код ответа: %d', - 'Unknown' => 'Неизвестно', - 'Unknown driver' => 'Неизвестный драйвер', - 'Upcoming Events' => 'Предстоящие события', - 'Usage' => 'Использование', - 'Use system cron' => 'Используйте системный cron', - 'Use this tab for quick checks of queue performance and identifying stuck processes.' => 'Используйте эту вкладку для быстрой проверки производительности очереди и выявления зависших процессов.', - 'Used' => 'Использовал', - 'Useful for testing jobs and forcing synchronizations.' => 'Полезно для тестирования заданий и принудительной синхронизации.', - 'Useful Links' => 'Полезные ссылки', - 'Uses wp_options table' => 'Использует таблицу wp_options', - 'Version' => 'Версия', - 'Versions' => 'Версии', - 'VPS worker (planned)' => 'VPS-сервер (планируется)', - 'Warning' => 'Предупреждение', - 'What you can use it for' => 'Для чего его можно использовать', - 'Why is it needed?' => 'Зачем это нужно?', - 'WooCommerce' => 'WooCommerce', - 'WordPress' => 'WordPress', - 'WordPress checks for scheduled tasks on every page load. This works out of the box but has downsides: on low-traffic sites, tasks might not run on time; on high-traffic sites, it can cause performance issues. It is "fake" cron.' => 'WordPress проверяет наличие запланированных задач при каждой загрузке страницы. Это работает «из коробки», но имеет свои недостатки: на сайтах с низкой посещаемостью задачи могут не выполняться вовремя; на сайтах с высокой посещаемостью это может вызывать проблемы с производительностью. Это «поддельный» cron.', - 'WordPress Time' => 'Время WordPress', - 'WordPress Version' => 'Версия WordPress', - 'Worker' => 'Воркер', - 'WP Queue' => 'WP Queue', - 'WP Queue allows executing tasks asynchronously in the background without blocking the main WordPress execution flow.' => 'WP Queue позволяет выполнять задачи асинхронно в фоновом режиме, не блокируя основной поток выполнения WordPress.', - 'WP Queue helps your site run heavy or regular tasks in the background (emails, synchronizations, cleanups) so that pages load faster for visitors.' => 'WP Queue помогает вашему сайту выполнять ресурсоемкие или регулярно выполняемые задачи в фоновом режиме (отправка электронной почты, синхронизация, очистка), благодаря чему страницы загружаются быстрее для посетителей.', - 'WP Queue is a robust background processing library for WordPress. It allows you to offload time-consuming tasks (like sending emails, syncing data, or generating reports) to be processed asynchronously, ensuring your site remains fast and responsive for visitors.' => 'WP Queue — это мощная библиотека для фоновой обработки данных в WordPress. Она позволяет переносить трудоемкие задачи (например, отправку электронных писем, синхронизацию данных или создание отчетов) на асинхронную обработку, обеспечивая быструю и отзывчивую работу вашего сайта для посетителей.', - 'WP Queue solves this by pushing these tasks to a "Queue" and processing them later in the background. The user gets an instant response, and the heavy work happens behind the scenes.' => 'WP Queue решает эту проблему, отправляя эти задачи в "очередь" и обрабатывая их позже в фоновом режиме. Пользователь получает мгновенный ответ, а основная работа происходит за кулисами.', - 'WP Queue — Queue System for WordPress' => 'WP Queue — система очередей для WordPress', - 'WP-CLI' => 'WP-CLI', - 'WP-CLI Commands' => 'Команды WP-CLI', - 'WP-CLI команды' => 'Команда WP-CLI', - 'WP-Cron' => 'WP-Cron', - 'WP-Cron (Default)' => 'WP-Cron (по умолчанию)', - 'WP-Cron (scheduled)' => 'WP-Cron (запланировано)', - 'WP-Cron Disabled' => 'WP-Cron отключен', - 'WP-Cron is disabled. Background tasks may not run automatically.' => 'WP-Cron отключен. Фоновые задачи могут не выполняться автоматически.', - 'WP-Cron Status' => 'Статус WP-Cron', - 'WP-Cron status' => 'статус WP-Cron', - 'WP-Cron vs System Cron' => 'WP-Cron против System Cron', - 'WP-Cron – list of cron events with the ability to run, pause or delete them.' => 'WP-Cron – список событий cron с возможностью их запуска, приостановки или удаления.', - 'WP-Cron:' => 'WP-Cron:', - '⚠️ Warning:' => '⚠️ Предупреждение:', - 'Queue handler' => 'Обработчик очереди', - 'Daemon process' => 'Демон-процесс', - 'WP-Cron + Loopback' => 'WP-Cron + Loopback', - 'WP-Cron only' => 'Только WP-Cron', - 'A daemon worker is expected to process queues. WP-Cron and loopback are disabled.' => 'Для обработки очередей ожидается демон-воркер. WP-Cron и loopback отключены.', - 'Loopback is enabled and working. Jobs start immediately after dispatch.' => 'Loopback включен и работает. Задачи запускаются сразу после отправки.', - 'Loopback is inactive. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Enable loopback or run a daemon worker for instant processing.' => 'Loopback неактивен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Включите loopback или запустите демон-воркер для мгновенной обработки.', - 'Loopback is disabled. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Run a daemon worker for instant processing.' => 'Loopback отключен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Запустите демон-воркер для мгновенной обработки.', - 'WP-Cron checks the queue every minute as a fallback.' => 'WP-Cron раз в минуту проверяет очередь как подстраховку.', - 'Disabled' => 'Отключен', - 'Daemon worker' => 'Демон-воркер', - 'How to run WP Queue as a long-running background process.' => 'Как запустить WP Queue в виде долгоживущего фонового процесса.', - 'When to use a daemon' => 'Когда использовать демон', - 'Use a daemon worker on VPS, Docker or dedicated servers where you can keep a process running. It polls the queue continuously and starts jobs immediately. Without a daemon, WP Queue relies on WP-Cron and/or loopback, which can delay jobs by up to a minute.' => 'Запускайте демон-воркер на VPS, Docker или выделенном сервере, где можно держать процесс запущенным. Он постоянно опрашивает очередь и сразу запускает задания. Без демона WP Queue полагается на WP-Cron и/или loopback, что может задерживать задания до минуты.', - '1. Enable daemon runtime mode' => '1. Включите режим демона', - 'Add this to wp-config.php:' => 'Добавьте в wp-config.php:', - 'In this mode WP-Cron scheduling and loopback requests are disabled automatically.' => 'В этом режиме планирование WP-Cron и loopback-запросы отключаются автоматически.', - '2. Run the worker' => '2. Запустите воркер', - 'Start the worker from the WordPress root:' => 'Запустите воркер из корня WordPress:', - '--memory limits the PHP memory for the worker process. Adjust the value to your needs.' => '--memory ограничивает память PHP для процесса воркера. Подберите значение под свои задачи.', - '3. Keep it running' => '3. Держите процесс запущенным', - 'The command above must stay alive. In production use one of the options below.' => 'Команда выше должна оставаться запущенной. В продакшене используйте один из вариантов ниже.', - 'Option A: systemd service' => 'Вариант A: сервис systemd', - 'Save as /etc/systemd/system/wp-queue-worker.service, then run systemctl enable --now wp-queue-worker.' => 'Сохраните как /etc/systemd/system/wp-queue-worker.service, затем выполните systemctl enable --now wp-queue-worker.', - 'Option B: Supervisor' => 'Вариант B: Supervisor', - 'Option C: Docker Compose' => 'Вариант C: Docker Compose', - '4. Check status' => '4. Проверьте статус', - 'If the worker is not running, queues will not be processed in daemon mode. Make sure the process is started and monitored.' => 'Если воркер не запущен, очереди в режиме демона обрабатываться не будут. Убедитесь, что процесс запущен и мониторится.', - 'With WP-CLI' => 'С WP-CLI', - 'Without WP-CLI' => 'Без WP-CLI', - 'If WP-CLI is not available, create a PHP script that boots WordPress and runs the worker loop:' => 'Если WP-CLI недоступен, создайте PHP-скрипт, который загружает WordPress и запускает цикл воркера:', - 'Save the script, make it executable and run it in the background:' => 'Сохраните скрипт, сделайте его исполняемым и запустите в фоне:', - 'Option D: plain PHP script' => 'Вариант D: простой PHP-скрипт', - 'Use the script from step 2 (Without WP-CLI) inside screen, tmux or a simple cron-based restart loop. Remember that the script must stay alive to act as a daemon.' => 'Используйте скрипт из шага 2 (Без WP-CLI) внутри screen, tmux или простого цикла перезапуска через cron. Помните, что скрипт должен оставаться запущенным, чтобы работать как демон.', - ), -); +return ['project-id-version'=>'WP Queue 1.0.0','report-msgid-bugs-to'=>'https://github.com/rwsite/wp-queue/issues','pot-creation-date'=>'2025-12-06 01:35+0000','po-revision-date'=>'2026-07-25 21:14+0000','last-translator'=>'','language-team'=>'Русский','language'=>'ru_RU','mime-version'=>'1.0','content-type'=>'text/plain; charset=UTF-8','content-transfer-encoding'=>'8bit','plural-forms'=>'nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);','x-generator'=>'Loco https://localise.biz/','x-loco-version'=>'2.8.0; wp-6.9; php-8.3.28','messages'=>['%d entries'=>'%d записей','%d tasks'=>'%d задач','(configured)'=>'(настроено)','--memory limits the PHP memory for the worker process. Adjust the value to your needs.'=>'--memory ограничивает память PHP для процесса воркера. Подберите значение под свои задачи.','1. Enable daemon runtime mode'=>'1. Включите режим демона','2. Run the worker'=>'2. Запустите воркер','3. Keep it running'=>'3. Держите процесс запущенным','4. Check status'=>'4. Проверьте статус','A background process (Worker) constantly checks the queue for new jobs.'=>'Фоновый процесс (Worker) постоянно проверяет очередь на наличие новых заданий.','A daemon worker is expected to process queues. WP-Cron and loopback are disabled.'=>'Для обработки очередей ожидается демон-воркер. WP-Cron и loopback отключены.','A list of all active queues with their size, status (idle/pending/running/paused), and control buttons (pause/resume, clear all tasks).'=>'Список всех активных очередей с указанием их размера, статуса (простой/ожидание/выполнение/приостановка) и кнопок управления (пауза/возобновление, очистить все задачи).','A plugin creates a "Job" (a task) and pushes it to the queue.'=>'Плагин создает «Задание» (задачу) и помещает его в очередь.','A real cron job configured on your server (Linux) that calls WordPress every minute. This is reliable and precise. Ideally, you should disable default WP-Cron and use System Cron.'=>'На вашем сервере (Linux) должна быть настроена настоящая задача cron, которая будет запускать WordPress каждую минуту. Это надежно и точно. В идеале следует отключить стандартный WP-Cron и использовать системный Cron.','A separate table for events that are temporarily disabled.'=>'Отдельная таблица для событий, которые временно отключены.','A table of all available intervals (hourly, daily, etc.) with their duration.'=>'Таблица со всеми доступными интервалами (почасовыми, суточным и т. д.) и их продолжительностью.','About WP Queue'=>'О WP Queue','Action completed successfully'=>'Действие успешно завершено.','Action Scheduler'=>'Планировщик действий','Actions'=>'Действия','Active'=>'Активный','Add this to wp-config.php:'=>'Добавьте в wp-config.php:','Add to wp-config.php:'=>'Добавьте в файл wp-config.php:','ago (overdue)'=>'давно (просрочено)','Aleksei Tikhomirov'=>'Алексей Тихомиров','All'=>'Все','All queues'=>'Все очереди','All systems are healthy.'=>'Все системы работают исправно.','Alternate Cron'=>'Альтернативный Cron','An error occurred'=>'Произошла ошибка.','Are you sure you want to clear this queue?'=>'Вы уверены, что хотите очистить эту очередь?','Attempts'=>'Попытки','Author Website'=>'Веб-сайт автора','Available From'=>'Доступно с','Background job processing and WP-Cron management for WordPress. Schedule tasks, manage queues, and monitor cron events.'=>'Обработка фоновых задач и управление WP-Cron для WordPress. Планируйте задачи, управляйте очередями и отслеживайте cron-события.','Basic Usage'=>'Основные правила использования','Button to delete old log entries to avoid cluttering the database.'=>'Кнопка для удаления старых записей журнала во избежание засорения базы данных.','Buttons to show all entries, only completed, or only failed jobs.'=>'Кнопки для отображения всех записей, только завершенных или только неудачно завершенных заданий.','By default, WordPress executes all actions during the page load request. If a plugin needs to send 100 emails or sync 500 products with an external API, the user has to wait until it finishes. This leads to slow page loads or timeouts.'=>'По умолчанию WordPress выполняет все действия во время запроса на загрузку страницы. Если плагину необходимо отправить 100 электронных писем или синхронизировать 500 товаров с внешним API, пользователю приходится ждать завершения процесса. Это приводит к медленной загрузке страниц или таймаутам.','By default, WP Queue stores jobs in the WordPress database (wp_options or custom tables). For high-performance sites, you can use Redis. Redis is an in-memory data store that is much faster than a SQL database for queue operations. It reduces load on your database and speeds up job processing.'=>'По умолчанию WP Queue хранит задания в базе данных WordPress (в папке wp_options или в пользовательских таблицах). Для высокопроизводительных сайтов можно использовать Redis. Redis — это хранилище данных в оперативной памяти, которое намного быстрее, чем база данных SQL, при работе с очередями. Оно снижает нагрузку на базу данных и ускоряет обработку заданий.','Cancel'=>'Отмена','Cannot connect to Memcached at %s:%d - %s'=>'Не удалось подключиться к Memcached на %s:%d - %s','Cannot connect to Redis at %s:%d - %s'=>'Не удалось подключиться к Redis на %s:%d - %s','Check basic system requirements that affect queue stability.'=>'Проверьте основные системные требования, влияющие на стабильность очереди.','Check driver settings.'=>'Проверьте настройки драйвера.','Check logs when encountering errors in background processes.'=>'При обнаружении ошибок в фоновых процессах проверяйте журналы.','Check this tab when setting up your server or debugging queue issues.'=>'Проверьте эту вкладку при настройке сервера или отладке проблем с очередями.','Checking for disablement (DISABLE_WP_CRON), alternative cron, loopback requests.'=>'Проверка на отключение (DISABLE_WP_CRON), альтернативный cron, запросы обратной связи.','Checking system requirements and environment for stable queue operation.'=>'Проверка системных требований и среды для обеспечения стабильной работы очереди.','Clear'=>'Очистить','Clear All'=>'Очистить все','Clear All Logs'=>'Очистить все журналы','Clear All Queues'=>'Очистить все очереди','Clear Logs'=>'Очистить журналы','Clear logs'=>'Очистить журналы','Clear old'=>'Удалить старые','Close'=>'Закрыть','Comparison of server time, WordPress, and GMT offset for diagnosing scheduling issues.'=>'Сравнение серверного времени, времени WordPress и смещения GMT для диагностики проблем с планированием.','Completed'=>'Завершенные','Component Status'=>'Состояние компонента','Configure'=>'Настройка','Configure automatic retries on errors:'=>'Настройте автоматическое повторение попыток при возникновении ошибок:','Configure Memcached'=>'Настройка Memcached','Configure Redis'=>'Настройка Redis','Configure system cron'=>'Настройте системный cron.','Connected to Memcached at %s:%d'=>'Подключено к Memcached на %s:%d','Connected to Redis at %s:%d (phpredis)'=>'Подключено к Redis по адресу %s:%d (phpredis)','Connected to Redis at %s:%d (Predis)'=>'Подключено к Redis по адресу %s:%d (Predis)','Connected to Redis at %s:%d (via redis-cache plugin)'=>'Подключено к Redis по адресу %s:%d (через плагин redis-cache)','Create a job class and dispatch it to the queue:'=>'Создайте класс задания и отправьте его в очередь:','Critical for understanding why tasks are not running on time.'=>'Это крайне важно для понимания причин, по которым задачи не выполняются в срок.','Cron event paused'=>'Cron-событие приостановлено','Cron event resumed'=>'Cron-событие возобновлено','Cron event updated'=>'Cron-событие обновлено','Cron Events'=>'События Cron','Current Memory Usage'=>'Текущее использование памяти','Current storage backend:'=>'Текущая система хранения данных:','Custom driver'=>'Пользовательский драйвер','Daemon process'=>'Демон-процесс','Daemon worker'=>'Демон-воркер','Dashboard'=>'Панель управления','Dashboard – quick overview of queues, number of jobs and recent activity.'=>'Панель управления – краткий обзор очередей, количества заданий и недавней активности.','Delayed Jobs'=>'Задержка с выполнением заданий','Delete'=>'Удалить','Delete all'=>'Удалить все','Deletes all job execution logs'=>'Удаляет все журналы выполнения заданий.','Deletes all jobs from all queues'=>'Удаляет все задания из всех очередей.','Deletes logs older than 7 days'=>'Удаляет журналы старше 7 дней.','Description'=>'Описание','Detailed description of the panel tabs'=>'Подробное описание вкладок панели','Details'=>'Подробности','Developers can dispatch their own jobs to the queue, choose drivers (Database, Sync, Redis), configure retries and schedules. See the documentation and examples on GitHub for integration details.'=>'Разработчики могут отправлять свои собственные задания в очередь, выбирать драйверы (база данных, синхронизация, Redis), настраивать повторные попытки и расписание. Подробную информацию об интеграции см. в документации и примерах на GitHub.','DISABLE_WP_CRON is set to true. Background tasks will not run automatically.'=>'Параметр DISABLE_WP_CRON установлен в значение true. Фоновые задачи не будут выполняться автоматически.','Disabled'=>'Отключен','Dispatch'=>'Отправлять','Display'=>'Показ','Displays a table of scheduled recurring tasks (PHP classes) registered in WP Queue: job class, execution interval, queue assignment, and next run time. Allows you to run any task manually.'=>'Отображает таблицу запланированных повторяющихся задач (PHP-классов), зарегистрированных в WP Queue: класс задачи, интервал выполнения, назначение в очередь и время следующего запуска. Позволяет запускать любую задачу вручную.','Displays all registered PHP job classes with their configuration.'=>'Отображает все зарегистрированные классы заданий PHP с их конфигурацией.','Displays environment information (PHP and WordPress versions, memory limits, execution time, timezone), WP-Cron status (disabled, alternative cron, loopback checks). If Action Scheduler is installed - its statistics. Server and WordPress time.'=>'Отображает информацию об окружении (версии PHP и WordPress, ограничения памяти, время выполнения, часовой пояс), статус WP-Cron (отключен, альтернативный cron, проверки обратной связи). Если установлен Action Scheduler — его статистика. Время сервера и WordPress.','Displays the last 200 entries by default or all completed/failed.'=>'По умолчанию отображаются последние 200 записей или все завершенные/незавершенные.','Displays the total number of tasks in different statuses (pending, running, completed, failed).'=>'Отображает общее количество задач в различных статусах (ожидание, выполнение, завершено, сбой).','Displays when the job should run next or marks overdue jobs.'=>'Отображает время следующего запуска задания или помечает просроченные задания.','Distribute jobs across different queues:'=>'Распределите задания по разным очередям:','Documentation on GitHub'=>'Документация на GitHub','Driver:'=>'Драйвер:','Drivers'=>'Драйверы','Edit'=>'Редактировать','Edit Cron Event'=>'Редактировать событие Cron','Edit Schedule'=>'Редактировать расписание','Enabled'=>'Включено','Environment'=>'Environment','Error'=>'Ошибка','Error message'=>'Сообщение об ошибке','Errors'=>'Ошибки','Event actions'=>'Действия события','Event hook, next run time, schedule (single/hourly/daily), source, arguments.'=>'Перехватчик событий, время следующего запуска, расписание (однократное/ежечасное/ежедневное), источник, аргументы.','Event statistics'=>'Статистика событий','Event table'=>'Таблица событий','events'=>'события','Events by Source'=>'События по источникам','Every %d Minutes'=>'Каждые %d минут','Example Plugin on GitHub'=>'Пример плагина на GitHub','Execution time, status (completed/failed/retrying), job class, queue, error message.'=>'Время выполнения, статус (завершено/сбой/повторная попытка), класс задания, очередь, сообщение об ошибке.','Failed'=>'Ошибки','Failed Actions'=>'Неудачные действия','Failed to pause event'=>'Не удалось приостановить событие','Failed to resume event'=>'Не удалось возобновить событие','Failed to update event'=>'Не удалось обновить событие','For developers'=>'Для разработчиков','For more information:'=>'Для получения дополнительной информации:','For Redis/Memcached to work, you need the PHP extension installed and a server available. If not, the system will automatically use the "database" driver.'=>'Для работы Redis/Memcached необходимо установить расширение PHP и иметь доступный сервер. В противном случае система автоматически будет использовать драйвер "database".','For site administrators'=>'Для администраторов сайта','Forces processing of all queues'=>'Принудительная обработка всех очередей','from now'=>'с настоящего момента','Full documentation and code examples are available on GitHub: %s.'=>'Полная документация и примеры кода доступны на GitHub: %s.','GitHub Repository'=>'Репозиторий GitHub','GMT Offset'=>'GMT Offset','Help'=>'Помощь','History'=>'История','History of all job executions for diagnostics and debugging.'=>'История всех выполненных заданий для диагностики и отладки.','Hook'=>'Хук','How Queues Work'=>'Как работают очереди','How to change the storage backend?'=>'Как изменить хранилище для данных?','How to run WP Queue as a long-running background process.'=>'Как запустить WP Queue в виде долгоживущего фонового процесса.','https://github.com/rwsite/wp-queue'=>'https://github.com/rwsite/wp-queue','https://rwsite.ru'=>'https://rwsite.ru','ID'=>'ID','Idle'=>'Idle','If installed, displays version and statistics (pending/running/failed actions).'=>'Если установлено, отображает версию и статистику (ожидающие/выполняемые/неудачные действия).','If the worker is not running, queues will not be processed in daemon mode. Make sure the process is started and monitored.'=>'Если воркер не запущен, очереди в режиме демона обрабатываться не будут. Убедитесь, что процесс запущен и мониторится.','If WP-CLI is not available, create a PHP script that boots WordPress and runs the worker loop:'=>'Если WP-CLI недоступен, создайте PHP-скрипт, который загружает WordPress и запускает цикл воркера:','If you installed WP Queue because another plugin requires it, you usually do not need to configure anything here. Use these tabs mainly for monitoring and troubleshooting.'=>'Если вы установили WP Queue, потому что он требуется другому плагину, обычно здесь ничего настраивать не нужно. Используйте эти вкладки в основном для мониторинга и устранения неполадок.','Important:'=>'Важно:','In Queue'=>'В очереди','In this mode WP-Cron scheduling and loopback requests are disabled automatically.'=>'В этом режиме планирование WP-Cron и loopback-запросы отключаются автоматически.','Inspect and manage WP-Cron events for WP Queue and other plugins.'=>'Проверяйте и управляйте событиями WP-Cron для WP Queue и других плагинов.','Install: pecl install memcached'=>'Установите: pecl install memcached','Install: pecl install redis'=>'Установите: pecl install redis','Interval'=>'Интервал','Job'=>'Задача','Job Class'=>'Job Class','Job class, execution interval (e.g., "hourly", "daily"), queue assignment, next run time.'=>'Класс Job, интервал выполнения (например, "ежечасно", "ежедневно"), назначение в очередь, время следующего запуска.','Job Details'=>'Job Details','Job information'=>'Job information','Job list'=>'Список Job','jobs'=>'задачи','Jobs in Queue'=>'Задачи в очереди','Log table'=>'Таблица логов','Logs'=>'Логи','Logs – history of completed and failed jobs that helps to diagnose problems.'=>'Логи — история выполненных и неудачных заданий, которая помогает диагностировать проблемы.','Loopback'=>'Обратная связь','Loopback is disabled. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Run a daemon worker for instant processing.'=>'Loopback отключен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Запустите демон-воркер для мгновенной обработки.','Loopback is enabled and working. Jobs start immediately after dispatch.'=>'Loopback включен и работает. Задачи запускаются сразу после отправки.','Loopback is inactive. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Enable loopback or run a daemon worker for instant processing.'=>'Loopback неактивен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Включите loopback или запустите демон-воркер для мгновенной обработки.','Loopback issue: %s'=>'Проблема обратной связи: %s','Loopback Request'=>'Запрос обратной связи','Loopback request successful'=>'Запрос обратной связи выполнен успешно','Manage queues from command line:'=>'Управление очередями из командной строки:','Management of scheduled recurring tasks.'=>'Управление запланированными повторяющимися задачами.','Management of WordPress system timers that trigger background processes.'=>'Управление системными таймерами WordPress, запускающими фоновые процессы.','Manual run'=>'Ручной запуск','Max Execution Time'=>'Максимальное время выполнения','Memory Limit'=>'Ограничение памяти','Memory usage is above 80%.'=>'Использование памяти выше 80%.','Message'=>'Сообщение','Monitor which background jobs are queued and running right now.'=>'Отслеживайте, какие фоновые задачи находятся в очереди и выполняются в данный момент.','More documentation'=>'Дополнительная документация','Name'=>'Имя','Named Queues'=>'Именованные очереди','Next Run'=>'Следующий запуск','Next run status'=>'Статус следующего запуска','No activity'=>'Нет активности','No cron events found.'=>'Событий cron не обнаружено.','No errors'=>'Ошибок нет.','No extension'=>'Нет расширения','No logs found'=>'Журналы не найдены','No paused events'=>'Нет приостановленных событий','No scheduled events'=>'Мероприятия не запланированы.','No scheduled jobs found.'=>'Запланированных заданий не найдено.','No server'=>'Нет сервера','Notifications of critical issues (low memory, disabled WP-Cron).'=>'Уведомления о критических проблемах (недостаток памяти, отключение WP-Cron).','Now'=>'Сейчас','Number of entries'=>'Количество записей','OK'=>'OK','One-time'=>'Один раз','Option A: systemd service'=>'Вариант A: сервис systemd','Option B: Supervisor'=>'Вариант B: Supervisor','Option C: Docker Compose'=>'Вариант C: Docker Compose','Option D: plain PHP script'=>'Вариант D: простой PHP-скрипт','Overdue'=>'Просрочено','Overview'=>'Обзор','Pause'=>'Пауза','Pause this queue?'=>'Приостановить выполнение этой очереди?','Paused'=>'Приостановлено','Paused At'=>'Приостановлено на','Paused Events'=>'Приостановленные события','Paused events'=>'Приостановленные события','Paused Since'=>'Приостановлено с','Pending'=>'В ожидании','Pending Actions'=>'Ожидающие действия','PHP'=>'PHP','PHP and WordPress versions, memory limits (current usage), maximum execution time, timezone.'=>'Версии PHP и WordPress, ограничения памяти (текущее использование), максимальное время выполнения, часовой пояс.','PHP extension "memcached" is not installed'=>'PHP-расширение "memcached" не установлено','PHP extension "redis" (phpredis) is not installed'=>'PHP-расширение "redis" (phpredis) не установлено','PHP max_execution_time is less than 30 seconds.'=>'PHP max_execution_time меньше 30 секунд.','PHP Version'=>'Версия PHP','Plugins'=>'Плагины','Predis library is not available'=>'Библиотека Predis недоступна','Process'=>'Процесс','Process Now'=>'Обработать сейчас','Process Queues'=>'Обработочные очереди','Processing'=>'Обработка','Queue'=>'Очередь','Queue handler'=>'Обработчик очереди','Queue is empty'=>'Очередь пуста','Queue statistics'=>'Статистика очереди','Queue Storage backend'=>'бэкэнд хранилища очередей','Queue table'=>'Таблица очереди','Queue: %s'=>'Очередь: %s','Queues'=>'Очереди','Quick Start'=>'Быстрый старт','Quickly see if any jobs are failing and view recent log entries.'=>'Быстро проверьте, не завершаются ли какие-либо задания с ошибкой, и просмотрите последние записи в журнале.','Ready'=>'Готово','Recent Activity'=>'Последние события','Recent activity'=>'Последние события','Redis connection failed'=>'Подключение к Redis не удалось.','Redis is disabled via WP_REDIS_DISABLED'=>'Redis отключен с помощью WP_REDIS_DISABLED','Redis Support'=>'Поддержка Redis','Registered Schedules'=>'Зарегистрированные расписания','Registered schedules'=>'Зарегистрированные расписания','Report an Issue'=>'Сообщить о проблеме','Report Issues'=>'Сообщить о проблемах','Resume'=>'Резюме','Retry Attempts'=>'Повторные попытки','Run'=>'Запуск','Run Now'=>'Запустите сейчас','Run now, edit schedule, pause, delete. Modal window for changing interval.'=>'Запустить сейчас, отредактировать расписание, приостановить, удалить. Модальное окно для изменения интервала.','Run tasks on schedule:'=>'Выполнить задачи по расписанию:','Running'=>'Запущено','Running Actions'=>'Выполнение действий','Save as /etc/systemd/system/wp-queue-worker.service, then run systemctl enable --now wp-queue-worker.'=>'Сохраните как /etc/systemd/system/wp-queue-worker.service, затем выполните systemctl enable --now wp-queue-worker.','Save Changes'=>'Сохранить изменения','Save the script, make it executable and run it in the background:'=>'Сохраните скрипт, сделайте его исполняемым и запустите в фоне:','Schedule'=>'Расписание','Schedule a job to run after a specific time:'=>'Настройте выполнение задания по истечении определенного времени:','Scheduled'=>'Запланировано','Scheduled Jobs'=>'Запланированные задания','Scheduled Jobs – list of recurring background jobs added by your theme or plugins.'=>'Запланированные задания — список повторяющихся фоновых заданий, добавленных вашей темой или плагинами.','Scheduler'=>'Планировщик','Server Time'=>'Время сервера','Server time'=>'Время сервера','Single'=>'Один','Single (run once)'=>'Один (запуск один раз)','Source'=>'Источник','Start the worker from the WordPress root:'=>'Запустите воркер из корня WordPress:','Status'=>'Статус','Status filters'=>'Фильтры состояния','Storage'=>'Хранилище','Storage backend'=>'бэкэнд хранилища','Storage backend "%s" is configured in wp-config.php, but not available. Falling back to "%s".'=>'В файле wp-config.php настроен бэкэнд хранилища "%s", но он недоступен. Используется резервный вариант "%s".','Synchronous execution (no queue)'=>'Синхронное выполнение (без очереди)','System'=>'Система','System Cron (Recommended)'=>'Системный планировщик задач (рекомендуется)','System health'=>'Здоровье системы','System Issues Detected:'=>'Обнаружены системные неполадки:','System Status'=>'Состояние системы','System – checks PHP version, WP-Cron status and other important settings.'=>'Система проверяет версию PHP, статус WP-Cron и другие важные настройки.','The "Run Now" button allows you to run any job immediately, without waiting for the schedule.'=>'Кнопка «Запустить сейчас» позволяет немедленно запустить любое задание, не дожидаясь расписания.','The command above must stay alive. In production use one of the options below.'=>'Команда выше должна оставаться запущенной. В продакшене используйте один из вариантов ниже.','The job is saved in the database (or Redis) waiting to be picked up.'=>'Задание сохраняется в базе данных (или Redis) в ожидании обработки.','The last 10 log entries for quick tracking of queue activity.'=>'Последние 10 записей в журнале для быстрого отслеживания активности в очереди.','The main tab for monitoring queue status in real-time.'=>'Главная вкладка для мониторинга состояния очереди в режиме реального времени.','The plugin itself does not add new features to the frontend. It provides a reliable queue that other plugins or your custom code can use for background work.'=>'Сам плагин не добавляет новых функций на фронтенд. Он предоставляет надежную очередь, которую другие плагины или ваш пользовательский код могут использовать для фоновой работы.','The worker picks up the job and executes it. If it succeeds, it is marked as "Completed". If it fails, it can be retried.'=>'Работник берет задание и выполняет его. Если оно выполняется успешно, оно помечается как «Завершено». Если оно не выполняется, его можно повторить.','This section is under development.'=>'Этот раздел находится в разработке.','Time'=>'Время','Timeout'=>'Тайм-аут','Timezone'=>'Часовой пояс','To add your own background jobs, use the WP Queue PHP API from your plugin or theme. You can dispatch jobs to different queues, set delays and retries. Full code examples are available in the README on GitHub.'=>'Чтобы добавить собственные фоновые задачи, используйте PHP API WP Queue из вашего плагина или темы. Вы можете отправлять задачи в разные очереди, устанавливать задержки и повторные попытки. Полные примеры кода доступны в файле README на GitHub .','to get a list of available commands.'=>'чтобы получить список доступных команд.','To process the queue, WordPress needs a trigger. There are two ways to do this:'=>'Для обработки очереди WordPress необходим триггер. Это можно сделать двумя способами:','Tools'=>'Инструменты','Total'=>'Всего','Total errors'=>'Общее количество ошибок','Total Events'=>'Всего событий','Total Jobs'=>'Общее количество рабочих мест','Total number of events, overdue, grouped by source (WordPress, WooCommerce, WP Queue, plugins).'=>'Общее количество просроченных событий, сгруппированных по источнику (WordPress, WooCommerce, WP Queue, плагины).','Unavailable'=>'Недоступно','Unexpected response code: %d'=>'Неожиданный код ответа: %d','Unknown'=>'Неизвестно','Unknown driver'=>'Неизвестный драйвер','Upcoming Events'=>'Предстоящие события','Usage'=>'Использование','Use a daemon worker on VPS, Docker or dedicated servers where you can keep a process running. It polls the queue continuously and starts jobs immediately. Without a daemon, WP Queue relies on WP-Cron and/or loopback, which can delay jobs by up to a minute.'=>'Запускайте демон-воркер на VPS, Docker или выделенном сервере, где можно держать процесс запущенным. Он постоянно опрашивает очередь и сразу запускает задания. Без демона WP Queue полагается на WP-Cron и/или loopback, что может задерживать задания до минуты.','Use system cron'=>'Используйте системный cron','Use the script from step 2 (Without WP-CLI) inside screen, tmux or a simple cron-based restart loop. Remember that the script must stay alive to act as a daemon.'=>'Используйте скрипт из шага 2 (Без WP-CLI) внутри screen, tmux или простого цикла перезапуска через cron. Помните, что скрипт должен оставаться запущенным, чтобы работать как демон.','Use this tab for quick checks of queue performance and identifying stuck processes.'=>'Используйте эту вкладку для быстрой проверки производительности очереди и выявления зависших процессов.','Used'=>'Использовал','Useful for testing jobs and forcing synchronizations.'=>'Полезно для тестирования заданий и принудительной синхронизации.','Useful Links'=>'Полезные ссылки','Uses wp_options table'=>'Использует таблицу wp_options','Version'=>'Версия','Versions'=>'Версии','Warning'=>'Предупреждение','What you can use it for'=>'Для чего его можно использовать','When to use a daemon'=>'Когда использовать демон','Why is it needed?'=>'Зачем это нужно?','With WP-CLI'=>'С WP-CLI','Without WP-CLI'=>'Без WP-CLI','WooCommerce'=>'WooCommerce','WordPress'=>'WordPress','WordPress checks for scheduled tasks on every page load. This works out of the box but has downsides: on low-traffic sites, tasks might not run on time; on high-traffic sites, it can cause performance issues. It is "fake" cron.'=>'WordPress проверяет наличие запланированных задач при каждой загрузке страницы. Это работает «из коробки», но имеет свои недостатки: на сайтах с низкой посещаемостью задачи могут не выполняться вовремя; на сайтах с высокой посещаемостью это может вызывать проблемы с производительностью. Это «поддельный» cron.','WordPress Time'=>'Время WordPress','WordPress Version'=>'Версия WordPress','Worker'=>'Воркер','WP Queue'=>'WP Queue','WP Queue allows executing tasks asynchronously in the background without blocking the main WordPress execution flow.'=>'WP Queue позволяет выполнять задачи асинхронно в фоновом режиме, не блокируя основной поток выполнения WordPress.','WP Queue helps your site run heavy or regular tasks in the background (emails, synchronizations, cleanups) so that pages load faster for visitors.'=>'WP Queue помогает вашему сайту выполнять ресурсоемкие или регулярно выполняемые задачи в фоновом режиме (отправка электронной почты, синхронизация, очистка), благодаря чему страницы загружаются быстрее для посетителей.','WP Queue is a robust background processing library for WordPress. It allows you to offload time-consuming tasks (like sending emails, syncing data, or generating reports) to be processed asynchronously, ensuring your site remains fast and responsive for visitors.'=>'WP Queue — это мощная библиотека для фоновой обработки данных в WordPress. Она позволяет переносить трудоемкие задачи (например, отправку электронных писем, синхронизацию данных или создание отчетов) на асинхронную обработку, обеспечивая быструю и отзывчивую работу вашего сайта для посетителей.','WP Queue solves this by pushing these tasks to a "Queue" and processing them later in the background. The user gets an instant response, and the heavy work happens behind the scenes.'=>'WP Queue решает эту проблему, отправляя эти задачи в "очередь" и обрабатывая их позже в фоновом режиме. Пользователь получает мгновенный ответ, а основная работа происходит за кулисами.','WP Queue — Queue System for WordPress'=>'WP Queue — система очередей для WordPress','WP-CLI'=>'WP-CLI','WP-CLI Commands'=>'Команды WP-CLI','WP-CLI команды'=>'Команда WP-CLI','WP-Cron'=>'WP-Cron','WP-Cron (Default)'=>'WP-Cron (по умолчанию)','WP-Cron + Loopback'=>'WP-Cron + Loopback','WP-Cron checks the queue every minute as a fallback.'=>'WP-Cron раз в минуту проверяет очередь как подстраховку.','WP-Cron Disabled'=>'WP-Cron отключен','WP-Cron is disabled. Background tasks may not run automatically.'=>'WP-Cron отключен. Фоновые задачи могут не выполняться автоматически.','WP-Cron only'=>'Только WP-Cron','WP-Cron Status'=>'Статус WP-Cron','WP-Cron status'=>'статус WP-Cron','WP-Cron vs System Cron'=>'WP-Cron против System Cron','WP-Cron – list of cron events with the ability to run, pause or delete them.'=>'WP-Cron – список событий cron с возможностью их запуска, приостановки или удаления.','WP-Cron:'=>'WP-Cron:','⚠️ Warning:'=>'⚠️ Предупреждение:']]; diff --git a/languages/wp-queue-ru_RU.mo b/languages/wp-queue-ru_RU.mo index 67df5dd85b0643b1696965eb755c2b412bd763da..f40724a22bb218c62c7e0a6286b5ac6e32bde84a 100644 GIT binary patch delta 9018 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 delta 7647 zcmZYE30Rd?8o=?xB8$oXbI27Zo)%(_Avg%jBf#jHa1RTFsO#S~E5O_nzZS^UP;2zxSMPJKOi&d!K%}?*6;; z?zYQqJYP_3nQlsjVNy$_-Xb5+R%(^H+fga1)IIb;&rV9UMn9Z@9WfkdVi2yzHuwq# zU?UF0W0;Mtxk)WPjsumlsT(8?Dx$bb8eYKB7~EMYf6T=|EJL}`LiEN>=!M&mwy8g0 z2%f@Byn@n@$Oxr8un$T{`eAz6%I9z_c8uaCScEOG5q)t# zO2dw!jLe59J-crFJIZlCqMYZ+U1h3TqSWW2oL7W4shCF+j7w1FY(2){8z@8CjC5Mv zM6Rj4*(v*z_|qG6Fa?()bE@{CjL;7#BkK{Xry|4{hqAo-$1?sh7h|dL!$OpvRhjY< zlm@QDk+>0M@!di%`~jusKO@tveB+d|U>r&Vvd|kJ!J{|@eXvWsQg35IJmW8Ocaw@c z7|#Nba(JRrQ*kQFTpdQvRsTe}V04l;89gcYK^eI;l#Yxr`+tM2C_jNMuoz|N%W*s| zwvk9rE}-=M3d)dwg`wz~tnGyBDfdLV;Te>M{0XIj7qK6<>&Byn+4wLv;2c!l_2V}e zJt&?*8ChF1iL~$%PQsfQfEi4v3{^Jz;iD)gOh;)zIgY_9l;e(LAfCl~`~-(#bq}Ss z;}Mj{aYj$2conD`w8-=S63K8X4x$XPS1&!M-LVbjG;EEdQJ(WhQF=ZL2jP5_;|`)U z%!zXRpHUii4W&c3Q9Ak)$_RV2a((6b4=0fmVo`e98>J_i7>qe6i?je`1ZqtEGEAqu z5oJiPpse;!(H*}-X~13VfNp*Cs_%qyy%g-o{Z$r;^e7+YgkqEn&O&K%H9m&VqP(E4 zA)~4MQeD%k2B9pjQj`YFLRnL_C=FhP(y@A!j&3z&2ioMuM@VFdPN9@P#t6J>%5Hsi zLwwPn`Vf@IE(&GnyQ4H96GLz~$_*b!IldTWMCYP(Xa!2c>iaVO($dXl$Lp9*c{hgQ z_b3;}m=kE!efczQ7RdKzSre&#fpuoNru?BPqX#a{gyH1_$$!7=mk2UeV`~*;Td> zN*hQQ6HMuiypD!8w__p?^fV@rTF*qCP=c zjG=?|nn*&qPXEJ2km7p$QI`>z8!*t8Xpd2t6W%WOWGItA6TI@t`{1|2K zucEB>dnh;dAFhYif^wZCQ|^zlIER_~Y?R}lK-;GzAxkf&DHut)2<5<4D6iI+ zF$%Y!jKKSNn~}PRa@=uNo-D=-C=I)TFX2y^i1nlNb&sJ;(allJzuYK%v{K739T(tf z?8Aje(ETFHH4oEB%3okH<*C_9?Z6MP6;_YaQ}itMqWmVxkY6=^gK{4a7K}6`1~=ol z9LB#3$#+!92(%lo=d?5O=&Rl+`)8m9SL0Z0KpA4UNA$PmKn$jwj2AHjd2&_Q1l9pg zL_%ozUyPGNDfFr)|;Ax%kdrTi=(FKMfwb`qFIIof|qdL!sMZ$kOyv&XfA z>lCtLDOce$><=tr4k^EYb#j3j{OG`|XvZ}r`qdj%s-KQBltoyB9r1bWhC8r3Ucx}` zuUeJqRUC$`DaWCl&<79WSW_Q3lg|Ol;W!X8kk1)q!(O-#yU@TdQLYnEp+_JLX`4#K zVqA}}qIV_dZYSAJasemK(!b48X6p+yp)d9CVJkd~r|}X7;I=B=!@by<@=27bxrsjL z_B6kuuqDc3Ys5Ho;@|Mz(~Lj4y2d9@D_TBzj$R7|bM<$^dgN80uHr)MK93J3+=+6d z(E0i?O+gu%LhOSpQ5Nk{+<+gM`bu6dUXSeBmU|Xy} zsb7kb_!_3-3G9nMV;`~mW|SLadgW3#ZdyO0b- zS(Q^U0#}>zTNq6F3UY+W4(tztmuci7$6^Akc8JLE%u^;Yq z$-LbriJ>C;IX!2iQ08hT$^{pg^2;bA^CrrWpTTInZ1m(4Yz5^6EXTblQuV~WITuOaDU~_S)q6o<-!+HT6!B>W6Vn3kX|Sw@(4;prlSLwVg?RarAKN3W>a2? z{qYJ)M>?(6=MBVa%2UwRNOGR!bzHHA9}k%NJoAq`kSaA`tx^xU(PQ+(w(Il_BVW*q zDjx$lt`ys$4Nq}g9rB;btT*Xyb5P|y6!X5H)p!6c)H_k8>TC4Dh1>LVy$odyZA0ncHI$wQ z{a(M)yQ3dvTR)OkB*V;(9Fzu3K^d}g>_JbTLm8O^Z|EMJ#7N4wFbMs&>-`a!ML7wj zhqI9Za(#aUl}h0VvL@9h^8Cvt7m}@%aJn)*8q-a_3tP)o*ghcMcV+rd3iWxvD#wx2 zCiN9@i5Ngw%(Y| z)DRO0*}fzgD791yY%;ZniJeklyF+|NuzXayG)nr&T=4| zd?W6JZa5AZS@kU;+diV0@L}IGQo%NgSm4U^S1*&Qdn6I2U<=`d^80%*o^k*oFCwO0 zC6eFY5=rI|51NW-9BcAqj*}Td)OTCEg+Eyv_BwE|; z^0@F+xjq#^{e|el{^96_Rd|aCBmWx?C3s<~vxIDa*8J!17bfe-@gI@5MA!VE$HBx( zB0(zI4ibNKW%_r3q&Y;ssk@5unDrnQ5krVxL?7b*7DFdT)U!QF%yVV`{WG65nq$7k<3tbgr!k2r zARd?ghmt%+3}R;xF^1eh+~58{GTRgaj1O>}Y`t+EW)P=|=ZIm1e5Rxjv4m{biSLMZ z9RDMh5x&Gg8UNlS!9;g_E&i_071!h@XkproJQIB=(xJ zaPC)mAm{a`{4OE?m&BdesMkMVyQwTP2Ol!F;efW}-H6W#Z(cKROl^_jA@nDa!Y<; zMOkiT-t;6(Mc#C4{;Xnag(cTgQCLz?Y_;T-mzG${XO&oTOY$vwxy8j57LKkenJPQt z;vM5UPV}*VANiqgMP7MfS!H2qiM@T)MTbZ9U3YtM+~|PW*79mgbiQSDVacpYYlR~= zex#edTjD7DuEc(hJBbNy_P-`)dyFW3(tc)MJIC2>TRj6Ug)_>Etuw48mDYSqwYAbQ zv)5YpHe<_6^Q;xpDobT~VL^el-0q&bCuC^O`1@r`Tv>5$Nr^Q--o7XGn&Zd5)oza0 z`W^QP9-CvSDlIRftN%H|F+FpVN6WbT9nN>`9eUE;zIymM`--eE&y=*DJsdl-zV%7l zYz1fB>>tetbj&Nf(ZXI^dd&WpnVlRF<%iwv<7Y3okFF|q9H~lhw@;e8 z)bZ}T^S)i_0}XDlaQ)pDIO=nlAsor&FpM)I{3G{xrPoqce=W} z)75pl?AW^eUAK^N40&?%qW?KI&VF`L2lqqquNJIyca*GY;o-Po|3^^#gt0lv3?EnH sMsm%#{~xF3h0Uwu9VfO_d%3x;;&#ZscWAgHXUEVM%ts%)$F6z*25|j~FaQ7m diff --git a/languages/wp-queue-ru_RU.po b/languages/wp-queue-ru_RU.po index a202c93..1f920d1 100644 --- a/languages/wp-queue-ru_RU.po +++ b/languages/wp-queue-ru_RU.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: WP Queue 1.0.0\n" "Report-Msgid-Bugs-To: https://github.com/rwsite/wp-queue/issues\n" "POT-Creation-Date: 2025-12-06 01:35+0000\n" -"PO-Revision-Date: 2026-07-25 20:21+0000\n" +"PO-Revision-Date: 2026-07-25 21:14+0000\n" "Last-Translator: \n" "Language-Team: Русский\n" "Language: ru_RU\n" @@ -18,25 +18,56 @@ msgstr "" "X-Generator: Loco https://localise.biz/\n" "X-Loco-Version: 2.8.0; wp-6.9; php-8.3.28" -#: src/Admin/AdminPage.php:910 +#: src/Admin/AdminPage.php:913 msgid "%d entries" msgstr "%d записей" -#: src/Admin/AdminPage.php:542 +#: src/Admin/AdminPage.php:545 msgid "%d tasks" msgstr "%d задач" -#: src/Admin/AdminPage.php:1068 +#: src/Admin/AdminPage.php:1071 msgid "(configured)" msgstr "(настроено)" -#: src/Admin/AdminPage.php:666 +#: src/Admin/AdminPage.php:2306 +msgid "" +"--memory limits the PHP memory for the worker process. Adjust the value to " +"your needs." +msgstr "" +"--memory ограничивает память PHP для процесса воркера. Подберите значение " +"под свои задачи." + +#: src/Admin/AdminPage.php:2296 +msgid "1. Enable daemon runtime mode" +msgstr "1. Включите режим демона" + +#: src/Admin/AdminPage.php:2301 +msgid "2. Run the worker" +msgstr "2. Запустите воркер" + +#: src/Admin/AdminPage.php:2328 +msgid "3. Keep it running" +msgstr "3. Держите процесс запущенным" + +#: src/Admin/AdminPage.php:2367 +msgid "4. Check status" +msgstr "4. Проверьте статус" + +#: src/Admin/AdminPage.php:669 msgid "A background process (Worker) constantly checks the queue for new jobs." msgstr "" "Фоновый процесс (Worker) постоянно проверяет очередь на наличие новых " "заданий." -#: src/Admin/AdminPage.php:716 +#: src/Admin/AdminPage.php:1867 +msgid "" +"A daemon worker is expected to process queues. WP-Cron and loopback are " +"disabled." +msgstr "" +"Для обработки очередей ожидается демон-воркер. WP-Cron и loopback отключены." + +#: src/Admin/AdminPage.php:719 msgid "" "A list of all active queues with their size, status " "(idle/pending/running/paused), and control buttons (pause/resume, clear all " @@ -46,11 +77,11 @@ msgstr "" "(простой/ожидание/выполнение/приостановка) и кнопок управления " "(пауза/возобновление, очистить все задачи)." -#: src/Admin/AdminPage.php:664 +#: src/Admin/AdminPage.php:667 msgid "A plugin creates a \"Job\" (a task) and pushes it to the queue." msgstr "Плагин создает «Задание» (задачу) и помещает его в очередь." -#: src/Admin/AdminPage.php:688 +#: src/Admin/AdminPage.php:691 msgid "" "A real cron job configured on your server (Linux) that calls WordPress every " "minute. This is reliable and precise. Ideally, you should disable default WP-" @@ -60,53 +91,51 @@ msgstr "" "которая будет запускать WordPress каждую минуту. Это надежно и точно. В " "идеале следует отключить стандартный WP-Cron и использовать системный Cron." -#: src/Admin/AdminPage.php:765 +#: src/Admin/AdminPage.php:768 msgid "A separate table for events that are temporarily disabled." msgstr "Отдельная таблица для событий, которые временно отключены." -#: src/Admin/AdminPage.php:766 +#: src/Admin/AdminPage.php:769 msgid "" "A table of all available intervals (hourly, daily, etc.) with their duration." msgstr "" "Таблица со всеми доступными интервалами (почасовыми, суточным и т. д.) и их " "продолжительностью." -#: src/Admin/AdminPage.php:85 src/Admin/AdminPage.php:106 -#: src/Admin/AdminPage.php:638 +#: src/Admin/AdminPage.php:88 src/Admin/AdminPage.php:109 +#: src/Admin/AdminPage.php:641 msgid "About WP Queue" msgstr "О WP Queue" -#: src/Admin/AdminPage.php:198 +#: src/Admin/AdminPage.php:201 msgid "Action completed successfully" msgstr "Действие успешно завершено." -#: src/Admin/AdminPage.php:782 src/Admin/AdminPage.php:1743 -#: src/Admin/AdminPage.php:1962 +#: src/Admin/AdminPage.php:785 src/Admin/AdminPage.php:1746 +#: src/Admin/AdminPage.php:1984 msgid "Action Scheduler" msgstr "Планировщик действий" -#: src/Admin/AdminPage.php:481 src/Admin/AdminPage.php:594 -#: src/Admin/AdminPage.php:1483 src/Admin/AdminPage.php:1558 -#: src/Admin/AdminPage.php:2233 +#: src/Admin/AdminPage.php:484 src/Admin/AdminPage.php:597 +#: src/Admin/AdminPage.php:1486 src/Admin/AdminPage.php:1561 +#: src/Admin/AdminPage.php:2255 msgid "Actions" msgstr "Действия" -#: src/Admin/AdminPage.php:428 src/Admin/AdminPage.php:1055 -#: src/Admin/AdminPage.php:1367 src/Admin/AdminPage.php:1892 +#: src/Admin/AdminPage.php:431 src/Admin/AdminPage.php:1058 +#: src/Admin/AdminPage.php:1370 src/Admin/AdminPage.php:1911 msgid "Active" msgstr "Активный" -#: src/Admin/AdminPage.php:1100 +#: src/Admin/AdminPage.php:2297 +msgid "Add this to wp-config.php:" +msgstr "Добавьте в wp-config.php:" + +#: src/Admin/AdminPage.php:1103 msgid "Add to wp-config.php:" msgstr "Добавьте в файл wp-config.php:" -#: src/Admin/AdminPage.php:1873 -msgid "After dispatch, schedules a single cron run and calls spawn_cron()" -msgstr "" -"После отправки задачи планирует выполнение одного запуска cron и вызывает " -"функцию spawn_cron()." - -#: src/Admin/AdminPage.php:615 +#: src/Admin/AdminPage.php:618 msgid "ago (overdue)" msgstr "давно (просрочено)" @@ -114,39 +143,39 @@ msgstr "давно (просрочено)" msgid "Aleksei Tikhomirov" msgstr "Алексей Тихомиров" -#: src/Admin/AdminPage.php:837 src/Admin/AdminPage.php:1459 +#: src/Admin/AdminPage.php:840 src/Admin/AdminPage.php:1462 msgid "All" msgstr "Все" -#: src/Admin/AdminPage.php:848 +#: src/Admin/AdminPage.php:851 msgid "All queues" msgstr "Все очереди" -#: src/Admin/AdminPage.php:1657 +#: src/Admin/AdminPage.php:1660 msgid "All systems are healthy." msgstr "Все системы работают исправно." -#: src/Admin/AdminPage.php:1709 +#: src/Admin/AdminPage.php:1712 msgid "Alternate Cron" msgstr "Альтернативный Cron" -#: src/Admin/AdminPage.php:199 +#: src/Admin/AdminPage.php:202 msgid "An error occurred" msgstr "Произошла ошибка." -#: src/Admin/AdminPage.php:196 +#: src/Admin/AdminPage.php:199 msgid "Are you sure you want to clear this queue?" msgstr "Вы уверены, что хотите очистить эту очередь?" -#: src/Admin/AdminPage.php:478 src/Admin/AdminPage.php:960 +#: src/Admin/AdminPage.php:481 src/Admin/AdminPage.php:963 msgid "Attempts" msgstr "Попытки" -#: src/Admin/AdminPage.php:167 +#: src/Admin/AdminPage.php:170 msgid "Author Website" msgstr "Веб-сайт автора" -#: src/Admin/AdminPage.php:479 +#: src/Admin/AdminPage.php:482 msgid "Available From" msgstr "Доступно с" @@ -158,23 +187,23 @@ msgstr "" "Обработка фоновых задач и управление WP-Cron для WordPress. Планируйте " "задачи, управляйте очередями и отслеживайте cron-события." -#: src/Admin/AdminPage.php:122 +#: src/Admin/AdminPage.php:125 msgid "Basic Usage" msgstr "Основные правила использования" -#: src/Admin/AdminPage.php:748 +#: src/Admin/AdminPage.php:751 msgid "Button to delete old log entries to avoid cluttering the database." msgstr "" "Кнопка для удаления старых записей журнала во избежание засорения базы " "данных." -#: src/Admin/AdminPage.php:746 +#: src/Admin/AdminPage.php:749 msgid "Buttons to show all entries, only completed, or only failed jobs." msgstr "" "Кнопки для отображения всех записей, только завершенных или только неудачно " "завершенных заданий." -#: src/Admin/AdminPage.php:650 +#: src/Admin/AdminPage.php:653 msgid "" "By default, WordPress executes all actions during the page load request. If " "a plugin needs to send 100 emails or sync 500 products with an external API, " @@ -186,7 +215,7 @@ msgstr "" "синхронизировать 500 товаров с внешним API, пользователю приходится ждать " "завершения процесса. Это приводит к медленной загрузке страниц или таймаутам." -#: src/Admin/AdminPage.php:698 +#: src/Admin/AdminPage.php:701 msgid "" "By default, WP Queue stores jobs in the WordPress database (wp_options or " "custom tables). For high-performance sites, you can use Redis. Redis is an " @@ -199,7 +228,7 @@ msgstr "" "памяти, которое намного быстрее, чем база данных SQL, при работе с очередями." " Оно снижает нагрузку на базу данных и ускоряет обработку заданий." -#: src/Admin/AdminPage.php:1623 +#: src/Admin/AdminPage.php:1626 msgid "Cancel" msgstr "Отмена" @@ -213,25 +242,25 @@ msgstr "Не удалось подключиться к Memcached на %s:%d - % msgid "Cannot connect to Redis at %s:%d - %s" msgstr "Не удалось подключиться к Redis на %s:%d - %s" -#: src/Admin/AdminPage.php:114 +#: src/Admin/AdminPage.php:117 msgid "Check basic system requirements that affect queue stability." msgstr "" "Проверьте основные системные требования, влияющие на стабильность очереди." -#: src/Admin/AdminPage.php:1037 +#: src/Admin/AdminPage.php:1040 msgid "Check driver settings." msgstr "Проверьте настройки драйвера." -#: src/Admin/AdminPage.php:751 +#: src/Admin/AdminPage.php:754 msgid "Check logs when encountering errors in background processes." msgstr "При обнаружении ошибок в фоновых процессах проверяйте журналы." -#: src/Admin/AdminPage.php:785 +#: src/Admin/AdminPage.php:788 msgid "Check this tab when setting up your server or debugging queue issues." msgstr "" "Проверьте эту вкладку при настройке сервера или отладке проблем с очередями." -#: src/Admin/AdminPage.php:781 +#: src/Admin/AdminPage.php:784 msgid "" "Checking for disablement (DISABLE_WP_CRON), alternative cron, loopback " "requests." @@ -239,46 +268,46 @@ msgstr "" "Проверка на отключение (DISABLE_WP_CRON), альтернативный cron, запросы " "обратной связи." -#: src/Admin/AdminPage.php:777 +#: src/Admin/AdminPage.php:780 msgid "" "Checking system requirements and environment for stable queue operation." msgstr "" "Проверка системных требований и среды для обеспечения стабильной работы " "очереди." -#: src/Admin/AdminPage.php:451 +#: src/Admin/AdminPage.php:454 msgid "Clear" msgstr "Очистить" -#: src/Admin/AdminPage.php:2015 +#: src/Admin/AdminPage.php:2037 msgid "Clear All" msgstr "Очистить все" -#: src/Admin/AdminPage.php:2003 +#: src/Admin/AdminPage.php:2025 msgid "Clear All Logs" msgstr "Очистить все журналы" -#: src/Admin/AdminPage.php:2013 +#: src/Admin/AdminPage.php:2035 msgid "Clear All Queues" msgstr "Очистить все очереди" -#: src/Admin/AdminPage.php:2001 +#: src/Admin/AdminPage.php:2023 msgid "Clear Logs" msgstr "Очистить журналы" -#: src/Admin/AdminPage.php:748 +#: src/Admin/AdminPage.php:751 msgid "Clear logs" msgstr "Очистить журналы" -#: src/Admin/AdminPage.php:860 +#: src/Admin/AdminPage.php:863 msgid "Clear old" msgstr "Удалить старые" -#: src/Admin/AdminPage.php:567 +#: src/Admin/AdminPage.php:570 msgid "Close" msgstr "Закрыть" -#: src/Admin/AdminPage.php:783 +#: src/Admin/AdminPage.php:786 msgid "" "Comparison of server time, WordPress, and GMT offset for diagnosing " "scheduling issues." @@ -286,32 +315,32 @@ msgstr "" "Сравнение серверного времени, времени WordPress и смещения GMT для " "диагностики проблем с планированием." -#: src/Admin/AdminPage.php:326 src/Admin/AdminPage.php:352 -#: src/Admin/AdminPage.php:840 src/Admin/AdminPage.php:1820 +#: src/Admin/AdminPage.php:329 src/Admin/AdminPage.php:355 +#: src/Admin/AdminPage.php:843 src/Admin/AdminPage.php:1823 msgid "Completed" msgstr "Завершенные" -#: src/Admin/AdminPage.php:1856 +#: src/Admin/AdminPage.php:1885 msgid "Component Status" msgstr "Состояние компонента" -#: src/Admin/AdminPage.php:366 +#: src/Admin/AdminPage.php:369 msgid "Configure" msgstr "Настройка" -#: src/Admin/AdminPage.php:2115 +#: src/Admin/AdminPage.php:2137 msgid "Configure automatic retries on errors:" msgstr "Настройте автоматическое повторение попыток при возникновении ошибок:" -#: src/Admin/AdminPage.php:1109 +#: src/Admin/AdminPage.php:1112 msgid "Configure Memcached" msgstr "Настройка Memcached" -#: src/Admin/AdminPage.php:1103 +#: src/Admin/AdminPage.php:1106 msgid "Configure Redis" msgstr "Настройка Redis" -#: src/Admin/AdminPage.php:1890 +#: src/Admin/AdminPage.php:1909 msgid "Configure system cron" msgstr "Настройте системный cron." @@ -335,11 +364,11 @@ msgstr "Подключено к Redis по адресу %s:%d (Predis)" msgid "Connected to Redis at %s:%d (via redis-cache plugin)" msgstr "Подключено к Redis по адресу %s:%d (через плагин redis-cache)" -#: src/Admin/AdminPage.php:2058 +#: src/Admin/AdminPage.php:2080 msgid "Create a job class and dispatch it to the queue:" msgstr "Создайте класс задания и отправьте его в очередь:" -#: src/Admin/AdminPage.php:768 +#: src/Admin/AdminPage.php:771 msgid "Critical for understanding why tasks are not running on time." msgstr "" "Это крайне важно для понимания причин, по которым задачи не выполняются в " @@ -357,15 +386,15 @@ msgstr "Cron-событие возобновлено" msgid "Cron event updated" msgstr "Cron-событие обновлено" -#: src/Admin/AdminPage.php:50 +#: src/Admin/AdminPage.php:52 msgid "Cron Events" msgstr "События Cron" -#: src/Admin/AdminPage.php:1677 +#: src/Admin/AdminPage.php:1680 msgid "Current Memory Usage" msgstr "Текущее использование памяти" -#: src/Admin/AdminPage.php:1043 +#: src/Admin/AdminPage.php:1046 msgid "Current storage backend:" msgstr "Текущая система хранения данных:" @@ -373,55 +402,63 @@ msgstr "Текущая система хранения данных:" msgid "Custom driver" msgstr "Пользовательский драйвер" -#: src/Admin/AdminPage.php:710 +#: src/Admin/AdminPage.php:1865 +msgid "Daemon process" +msgstr "Демон-процесс" + +#: src/Admin/AdminPage.php:58 src/Admin/AdminPage.php:2288 +msgid "Daemon worker" +msgstr "Демон-воркер" + +#: src/Admin/AdminPage.php:713 msgid "Dashboard" msgstr "Панель управления" -#: src/Admin/AdminPage.php:125 +#: src/Admin/AdminPage.php:128 msgid "" "Dashboard – quick overview of queues, number of jobs and recent activity." msgstr "" "Панель управления – краткий обзор очередей, количества заданий и недавней " "активности." -#: src/Admin/AdminPage.php:2076 +#: src/Admin/AdminPage.php:2098 msgid "Delayed Jobs" msgstr "Задержка с выполнением заданий" -#: src/Admin/AdminPage.php:527 src/Admin/AdminPage.php:1539 -#: src/Admin/AdminPage.php:1540 +#: src/Admin/AdminPage.php:530 src/Admin/AdminPage.php:1542 +#: src/Admin/AdminPage.php:1543 msgid "Delete" msgstr "Удалить" -#: src/Admin/AdminPage.php:864 +#: src/Admin/AdminPage.php:867 msgid "Delete all" msgstr "Удалить все" -#: src/Admin/AdminPage.php:2002 +#: src/Admin/AdminPage.php:2024 msgid "Deletes all job execution logs" msgstr "Удаляет все журналы выполнения заданий." -#: src/Admin/AdminPage.php:2014 +#: src/Admin/AdminPage.php:2036 msgid "Deletes all jobs from all queues" msgstr "Удаляет все задания из всех очередей." -#: src/Admin/AdminPage.php:858 +#: src/Admin/AdminPage.php:861 msgid "Deletes logs older than 7 days" -msgstr "" +msgstr "Удаляет журналы старше 7 дней." -#: src/Admin/AdminPage.php:1054 +#: src/Admin/AdminPage.php:1057 msgid "Description" msgstr "Описание" -#: src/Admin/AdminPage.php:706 +#: src/Admin/AdminPage.php:709 msgid "Detailed description of the panel tabs" -msgstr "" +msgstr "Подробное описание вкладок панели" -#: src/Admin/AdminPage.php:524 +#: src/Admin/AdminPage.php:527 msgid "Details" msgstr "Подробности" -#: src/Admin/AdminPage.php:117 +#: src/Admin/AdminPage.php:120 msgid "" "Developers can dispatch their own jobs to the queue, choose drivers " "(Database, Sync, Redis), configure retries and schedules. See the " @@ -432,25 +469,27 @@ msgstr "" "и расписание. Подробную информацию об интеграции см. в документации и " "примерах на GitHub." -#: src/Admin/AdminPage.php:1702 +#: src/Admin/AdminPage.php:1705 msgid "" "DISABLE_WP_CRON is set to true. Background tasks will not run automatically." msgstr "" +"Параметр DISABLE_WP_CRON установлен в значение true. Фоновые задачи не будут " +"выполняться автоматически." -#: src/Admin/AdminPage.php:1364 src/Admin/AdminPage.php:1701 -#: src/Admin/AdminPage.php:1714 src/Admin/AdminPage.php:1889 +#: src/Admin/AdminPage.php:1367 src/Admin/AdminPage.php:1704 +#: src/Admin/AdminPage.php:1717 src/Admin/AdminPage.php:1908 msgid "Disabled" msgstr "Отключен" -#: src/Admin/AdminPage.php:664 +#: src/Admin/AdminPage.php:667 msgid "Dispatch" -msgstr "" +msgstr "Отправлять" -#: src/Admin/AdminPage.php:1586 +#: src/Admin/AdminPage.php:1589 msgid "Display" -msgstr "" +msgstr "Показ" -#: src/Admin/AdminPage.php:582 +#: src/Admin/AdminPage.php:585 msgid "" "Displays a table of scheduled recurring tasks (PHP classes) registered in WP " "Queue: job class, execution interval, queue assignment, and next run time. " @@ -461,12 +500,12 @@ msgstr "" "в очередь и время следующего запуска. Позволяет запускать любую задачу " "вручную." -#: src/Admin/AdminPage.php:730 +#: src/Admin/AdminPage.php:733 msgid "Displays all registered PHP job classes with their configuration." msgstr "" "Отображает все зарегистрированные классы заданий PHP с их конфигурацией." -#: src/Admin/AdminPage.php:1641 +#: src/Admin/AdminPage.php:1644 msgid "" "Displays environment information (PHP and WordPress versions, memory limits, " "execution time, timezone), WP-Cron status (disabled, alternative cron, " @@ -478,13 +517,13 @@ msgstr "" "альтернативный cron, проверки обратной связи). Если установлен Action " "Scheduler — его статистика. Время сервера и WordPress." -#: src/Admin/AdminPage.php:749 +#: src/Admin/AdminPage.php:752 msgid "Displays the last 200 entries by default or all completed/failed." msgstr "" "По умолчанию отображаются последние 200 записей или все " "завершенные/незавершенные." -#: src/Admin/AdminPage.php:715 +#: src/Admin/AdminPage.php:718 msgid "" "Displays the total number of tasks in different statuses (pending, running, " "completed, failed)." @@ -492,95 +531,97 @@ msgstr "" "Отображает общее количество задач в различных статусах (ожидание, выполнение," " завершено, сбой)." -#: src/Admin/AdminPage.php:733 +#: src/Admin/AdminPage.php:736 msgid "Displays when the job should run next or marks overdue jobs." msgstr "" "Отображает время следующего запуска задания или помечает просроченные " "задания." -#: src/Admin/AdminPage.php:2097 +#: src/Admin/AdminPage.php:2119 msgid "Distribute jobs across different queues:" msgstr "Распределите задания по разным очередям:" -#: src/Admin/AdminPage.php:2184 +#: src/Admin/AdminPage.php:2206 msgid "Documentation on GitHub" -msgstr "" +msgstr "Документация на GitHub" -#: src/Admin/AdminPage.php:363 +#: src/Admin/AdminPage.php:366 msgid "Driver:" msgstr "Драйвер:" -#: src/Admin/AdminPage.php:46 +#: src/Admin/AdminPage.php:48 msgid "Drivers" msgstr "Драйверы" -#: src/Admin/AdminPage.php:1526 +#: src/Admin/AdminPage.php:1529 msgid "Edit" msgstr "Редактировать" -#: src/Admin/AdminPage.php:1603 +#: src/Admin/AdminPage.php:1606 msgid "Edit Cron Event" msgstr "Редактировать событие Cron" -#: src/Admin/AdminPage.php:1525 +#: src/Admin/AdminPage.php:1528 msgid "Edit Schedule" msgstr "Редактировать расписание" -#: src/Admin/AdminPage.php:1704 src/Admin/AdminPage.php:1712 +#: src/Admin/AdminPage.php:1707 src/Admin/AdminPage.php:1715 msgid "Enabled" msgstr "Включено" -#: src/Admin/AdminPage.php:780 src/Admin/AdminPage.php:1661 +#: src/Admin/AdminPage.php:783 src/Admin/AdminPage.php:1664 msgid "Environment" msgstr "Environment" -#: src/Admin/AdminPage.php:1729 +#: src/Admin/AdminPage.php:1732 src/Admin/AdminPage.php:1927 msgid "Error" msgstr "Ошибка" -#: src/Admin/AdminPage.php:961 +#: src/Admin/AdminPage.php:964 msgid "Error message" -msgstr "" +msgstr "Сообщение об ошибке" -#: src/Admin/AdminPage.php:1824 +#: src/Admin/AdminPage.php:1827 msgid "Errors" -msgstr "" +msgstr "Ошибки" -#: src/Admin/AdminPage.php:764 +#: src/Admin/AdminPage.php:767 msgid "Event actions" -msgstr "" +msgstr "Действия события" -#: src/Admin/AdminPage.php:763 +#: src/Admin/AdminPage.php:766 msgid "" "Event hook, next run time, schedule (single/hourly/daily), source, arguments." msgstr "" +"Перехватчик событий, время следующего запуска, расписание " +"(однократное/ежечасное/ежедневное), источник, аргументы." -#: src/Admin/AdminPage.php:762 +#: src/Admin/AdminPage.php:765 msgid "Event statistics" -msgstr "" +msgstr "Статистика событий" -#: src/Admin/AdminPage.php:763 +#: src/Admin/AdminPage.php:766 msgid "Event table" -msgstr "" +msgstr "Таблица событий" -#: src/Admin/AdminPage.php:1382 +#: src/Admin/AdminPage.php:1385 msgid "events" -msgstr "" +msgstr "события" -#: src/Admin/AdminPage.php:1372 +#: src/Admin/AdminPage.php:1375 msgid "Events by Source" -msgstr "" +msgstr "События по источникам" #. %d: number of minutes #: src/ScheduledJob.php:45 msgid "Every %d Minutes" msgstr "Каждые %d минут" -#: src/Admin/AdminPage.php:2196 +#: src/Admin/AdminPage.php:2218 msgid "Example Plugin on GitHub" -msgstr "" +msgstr "Пример плагина на GitHub" -#: src/Admin/AdminPage.php:747 +#: src/Admin/AdminPage.php:750 msgid "" "Execution time, status (completed/failed/retrying), job class, queue, error " "message." @@ -588,12 +629,12 @@ msgstr "" "Время выполнения, статус (завершено/сбой/повторная попытка), класс задания, " "очередь, сообщение об ошибке." -#: src/Admin/AdminPage.php:45 src/Admin/AdminPage.php:327 -#: src/Admin/AdminPage.php:356 src/Admin/AdminPage.php:843 +#: src/Admin/AdminPage.php:47 src/Admin/AdminPage.php:330 +#: src/Admin/AdminPage.php:359 src/Admin/AdminPage.php:846 msgid "Failed" msgstr "Ошибки" -#: src/Admin/AdminPage.php:1760 +#: src/Admin/AdminPage.php:1763 msgid "Failed Actions" msgstr "Неудачные действия" @@ -609,15 +650,15 @@ msgstr "Не удалось возобновить событие" msgid "Failed to update event" msgstr "Не удалось обновить событие" -#: src/Admin/AdminPage.php:116 src/Admin/AdminPage.php:132 +#: src/Admin/AdminPage.php:119 src/Admin/AdminPage.php:135 msgid "For developers" -msgstr "" +msgstr "Для разработчиков" -#: src/Admin/AdminPage.php:164 +#: src/Admin/AdminPage.php:167 msgid "For more information:" -msgstr "" +msgstr "Для получения дополнительной информации:" -#: src/Admin/AdminPage.php:1117 +#: src/Admin/AdminPage.php:1120 msgid "" "For Redis/Memcached to work, you need the PHP extension installed and a " "server available. If not, the system will automatically use the \"database\" " @@ -627,56 +668,60 @@ msgstr "" "доступный сервер. В противном случае система автоматически будет " "использовать драйвер \"database\"." -#: src/Admin/AdminPage.php:123 +#: src/Admin/AdminPage.php:126 msgid "For site administrators" -msgstr "" +msgstr "Для администраторов сайта" -#: src/Admin/AdminPage.php:2008 +#: src/Admin/AdminPage.php:2030 msgid "Forces processing of all queues" -msgstr "" +msgstr "Принудительная обработка всех очередей" -#: src/Admin/AdminPage.php:504 src/Admin/AdminPage.php:615 +#: src/Admin/AdminPage.php:507 src/Admin/AdminPage.php:618 msgid "from now" -msgstr "" +msgstr "с настоящего момента" #. %s: URL to GitHub repository -#: src/Admin/AdminPage.php:795 +#: src/Admin/AdminPage.php:798 #, php-format msgid "Full documentation and code examples are available on GitHub: %s." -msgstr "" +msgstr "Полная документация и примеры кода доступны на GitHub: %s." -#: src/Admin/AdminPage.php:165 +#: src/Admin/AdminPage.php:168 msgid "GitHub Repository" -msgstr "" +msgstr "Репозиторий GitHub" -#: src/Admin/AdminPage.php:1788 +#: src/Admin/AdminPage.php:1791 msgid "GMT Offset" -msgstr "" +msgstr "GMT Offset" -#: src/Admin/AdminPage.php:57 +#: src/Admin/AdminPage.php:60 msgid "Help" msgstr "Помощь" -#: src/Admin/AdminPage.php:44 +#: src/Admin/AdminPage.php:46 msgid "History" msgstr "История" -#: src/Admin/AdminPage.php:744 +#: src/Admin/AdminPage.php:747 msgid "History of all job executions for diagnostics and debugging." msgstr "История всех выполненных заданий для диагностики и отладки." -#: src/Admin/AdminPage.php:1402 src/Admin/AdminPage.php:1479 -#: src/Admin/AdminPage.php:1555 src/Admin/AdminPage.php:2230 +#: src/Admin/AdminPage.php:1405 src/Admin/AdminPage.php:1482 +#: src/Admin/AdminPage.php:1558 src/Admin/AdminPage.php:2252 msgid "Hook" -msgstr "" +msgstr "Хук" -#: src/Admin/AdminPage.php:662 +#: src/Admin/AdminPage.php:665 msgid "How Queues Work" -msgstr "" +msgstr "Как работают очереди" -#: src/Admin/AdminPage.php:1099 +#: src/Admin/AdminPage.php:1102 msgid "How to change the storage backend?" -msgstr "" +msgstr "Как изменить хранилище для данных?" + +#: src/Admin/AdminPage.php:2289 +msgid "How to run WP Queue as a long-running background process." +msgstr "Как запустить WP Queue в виде долгоживущего фонового процесса." #. URI of the plugin msgid "https://github.com/rwsite/wp-queue" @@ -686,15 +731,15 @@ msgstr "https://github.com/rwsite/wp-queue" msgid "https://rwsite.ru" msgstr "https://rwsite.ru" -#: src/Admin/AdminPage.php:476 +#: src/Admin/AdminPage.php:479 msgid "ID" -msgstr "" +msgstr "ID" -#: src/Admin/AdminPage.php:322 +#: src/Admin/AdminPage.php:325 msgid "Idle" -msgstr "" +msgstr "Idle" -#: src/Admin/AdminPage.php:782 +#: src/Admin/AdminPage.php:785 msgid "" "If installed, displays version and statistics (pending/running/failed " "actions)." @@ -702,51 +747,75 @@ msgstr "" "Если установлено, отображает версию и статистику " "(ожидающие/выполняемые/неудачные действия)." -#: src/Admin/AdminPage.php:131 +#: src/Admin/AdminPage.php:2369 +msgid "" +"If the worker is not running, queues will not be processed in daemon mode. " +"Make sure the process is started and monitored." +msgstr "" +"Если воркер не запущен, очереди в режиме демона обрабатываться не будут. " +"Убедитесь, что процесс запущен и мониторится." + +#: src/Admin/AdminPage.php:2309 +msgid "" +"If WP-CLI is not available, create a PHP script that boots WordPress and " +"runs the worker loop:" +msgstr "" +"Если WP-CLI недоступен, создайте PHP-скрипт, который загружает WordPress и " +"запускает цикл воркера:" + +#: src/Admin/AdminPage.php:134 msgid "" "If you installed WP Queue because another plugin requires it, you usually do " "not need to configure anything here. Use these tabs mainly for monitoring " "and troubleshooting." msgstr "" +"Если вы установили WP Queue, потому что он требуется другому плагину, обычно " +"здесь ничего настраивать не нужно. Используйте эти вкладки в основном для " +"мониторинга и устранения неполадок." -#: src/Admin/AdminPage.php:1872 -msgid "Immediate spawn (pseudo-loopback)" -msgstr "" - -#: src/Admin/AdminPage.php:1116 +#: src/Admin/AdminPage.php:1119 msgid "Important:" -msgstr "" +msgstr "Важно:" -#: src/Admin/AdminPage.php:344 +#: src/Admin/AdminPage.php:347 msgid "In Queue" +msgstr "В очереди" + +#: src/Admin/AdminPage.php:2299 +msgid "" +"In this mode WP-Cron scheduling and loopback requests are disabled " +"automatically." msgstr "" +"В этом режиме планирование WP-Cron и loopback-запросы отключаются " +"автоматически." -#: src/Admin/AdminPage.php:113 +#: src/Admin/AdminPage.php:116 msgid "Inspect and manage WP-Cron events for WP Queue and other plugins." msgstr "" +"Проверяйте и управляйте событиями WP-Cron для WP Queue и других плагинов." -#: src/Admin/AdminPage.php:1081 +#: src/Admin/AdminPage.php:1084 msgid "Install: pecl install memcached" -msgstr "" +msgstr "Установите: pecl install memcached" -#: src/Admin/AdminPage.php:1079 +#: src/Admin/AdminPage.php:1082 msgid "Install: pecl install redis" -msgstr "" +msgstr "Установите: pecl install redis" -#: src/Admin/AdminPage.php:1585 +#: src/Admin/AdminPage.php:1588 msgid "Interval" -msgstr "" +msgstr "Интервал" -#: src/Admin/AdminPage.php:590 src/Admin/AdminPage.php:874 -#: src/Admin/AdminPage.php:958 src/Admin/AdminPage.php:1162 +#: src/Admin/AdminPage.php:593 src/Admin/AdminPage.php:877 +#: src/Admin/AdminPage.php:961 src/Admin/AdminPage.php:1165 msgid "Job" msgstr "Задача" -#: src/Admin/AdminPage.php:477 +#: src/Admin/AdminPage.php:480 msgid "Job Class" msgstr "Job Class" -#: src/Admin/AdminPage.php:731 +#: src/Admin/AdminPage.php:734 msgid "" "Job class, execution interval (e.g., \"hourly\", \"daily\"), queue " "assignment, next run time." @@ -754,52 +823,75 @@ msgstr "" "Класс Job, интервал выполнения (например, \"ежечасно\", \"ежедневно\"), " "назначение в очередь, время следующего запуска." -#: src/Admin/AdminPage.php:564 +#: src/Admin/AdminPage.php:567 msgid "Job Details" msgstr "Job Details" -#: src/Admin/AdminPage.php:731 +#: src/Admin/AdminPage.php:734 msgid "Job information" msgstr "Job information" -#: src/Admin/AdminPage.php:730 +#: src/Admin/AdminPage.php:733 msgid "Job list" msgstr "Список Job" -#: src/Admin/AdminPage.php:384 +#: src/Admin/AdminPage.php:387 msgid "jobs" msgstr "задачи" -#: src/Admin/AdminPage.php:43 +#: src/Admin/AdminPage.php:45 msgid "Jobs in Queue" msgstr "Задачи в очереди" -#: src/Admin/AdminPage.php:747 +#: src/Admin/AdminPage.php:750 msgid "Log table" msgstr "Таблица логов" -#: src/Admin/AdminPage.php:741 +#: src/Admin/AdminPage.php:744 msgid "Logs" msgstr "Логи" -#: src/Admin/AdminPage.php:127 +#: src/Admin/AdminPage.php:130 msgid "" "Logs – history of completed and failed jobs that helps to diagnose problems." msgstr "" "Логи — история выполненных и неудачных заданий, которая помогает " "диагностировать проблемы." -#: src/Admin/AdminPage.php:1897 +#: src/Admin/AdminPage.php:1916 msgid "Loopback" msgstr "Обратная связь" +#: src/Admin/AdminPage.php:1879 +msgid "" +"Loopback is disabled. Jobs will be processed only by WP-Cron, which can " +"delay execution by up to one minute. Run a daemon worker for instant " +"processing." +msgstr "" +"Loopback отключен. Задачи будут обрабатываться только WP-Cron с задержкой до " +"минуты. Запустите демон-воркер для мгновенной обработки." + +#: src/Admin/AdminPage.php:1871 +msgid "Loopback is enabled and working. Jobs start immediately after dispatch." +msgstr "Loopback включен и работает. Задачи запускаются сразу после отправки." + +#: src/Admin/AdminPage.php:1875 +msgid "" +"Loopback is inactive. Jobs will be processed only by WP-Cron, which can " +"delay execution by up to one minute. Enable loopback or run a daemon worker " +"for instant processing." +msgstr "" +"Loopback неактивен. Задачи будут обрабатываться только WP-Cron с задержкой " +"до минуты. Включите loopback или запустите демон-воркер для мгновенной " +"обработки." + #. %s: loopback error message #: src/Admin/SystemStatus.php:271 #, php-format msgid "Loopback issue: %s" msgstr "Проблема обратной связи: %s" -#: src/Admin/AdminPage.php:1719 +#: src/Admin/AdminPage.php:1722 msgid "Loopback Request" msgstr "Запрос обратной связи" @@ -807,30 +899,30 @@ msgstr "Запрос обратной связи" msgid "Loopback request successful" msgstr "Запрос обратной связи выполнен успешно" -#: src/Admin/AdminPage.php:2159 +#: src/Admin/AdminPage.php:2181 msgid "Manage queues from command line:" msgstr "Управление очередями из командной строки:" -#: src/Admin/AdminPage.php:728 +#: src/Admin/AdminPage.php:731 msgid "Management of scheduled recurring tasks." msgstr "Управление запланированными повторяющимися задачами." -#: src/Admin/AdminPage.php:760 +#: src/Admin/AdminPage.php:763 msgid "" "Management of WordPress system timers that trigger background processes." msgstr "" "Управление системными таймерами WordPress, запускающими фоновые процессы." -#: src/Admin/AdminPage.php:732 +#: src/Admin/AdminPage.php:735 msgid "Manual run" msgstr "Ручной запуск" -#: src/Admin/AdminPage.php:1684 src/Admin/AdminPage.php:1931 +#: src/Admin/AdminPage.php:1687 src/Admin/AdminPage.php:1953 msgid "Max Execution Time" msgstr "Максимальное время выполнения" -#: src/Admin/AdminPage.php:1673 src/Admin/AdminPage.php:1828 -#: src/Admin/AdminPage.php:1923 +#: src/Admin/AdminPage.php:1676 src/Admin/AdminPage.php:1831 +#: src/Admin/AdminPage.php:1945 msgid "Memory Limit" msgstr "Ограничение памяти" @@ -838,152 +930,164 @@ msgstr "Ограничение памяти" msgid "Memory usage is above 80%." msgstr "Использование памяти выше 80%." -#: src/Admin/AdminPage.php:876 +#: src/Admin/AdminPage.php:879 msgid "Message" msgstr "Сообщение" -#: src/Admin/AdminPage.php:111 +#: src/Admin/AdminPage.php:114 msgid "Monitor which background jobs are queued and running right now." msgstr "" "Отслеживайте, какие фоновые задачи находятся в очереди и выполняются в " "данный момент." -#: src/Admin/AdminPage.php:790 +#: src/Admin/AdminPage.php:793 msgid "More documentation" msgstr "Дополнительная документация" -#: src/Admin/AdminPage.php:1584 +#: src/Admin/AdminPage.php:1587 msgid "Name" msgstr "Имя" -#: src/Admin/AdminPage.php:2096 +#: src/Admin/AdminPage.php:2118 msgid "Named Queues" msgstr "Именованные очереди" -#: src/Admin/AdminPage.php:593 src/Admin/AdminPage.php:1403 -#: src/Admin/AdminPage.php:1480 +#: src/Admin/AdminPage.php:596 src/Admin/AdminPage.php:1406 +#: src/Admin/AdminPage.php:1483 msgid "Next Run" msgstr "Следующий запуск" -#: src/Admin/AdminPage.php:733 +#: src/Admin/AdminPage.php:736 msgid "Next run status" msgstr "Статус следующего запуска" -#: src/Admin/AdminPage.php:1168 +#: src/Admin/AdminPage.php:1171 msgid "No activity" msgstr "Нет активности" -#: src/Admin/AdminPage.php:1489 +#: src/Admin/AdminPage.php:1492 msgid "No cron events found." msgstr "Событий cron не обнаружено." -#: src/Admin/AdminPage.php:967 +#: src/Admin/AdminPage.php:970 msgid "No errors" msgstr "Ошибок нет." -#: src/Admin/AdminPage.php:1140 +#: src/Admin/AdminPage.php:1143 msgid "No extension" msgstr "Нет расширения" -#: src/Admin/AdminPage.php:882 +#: src/Admin/AdminPage.php:885 msgid "No logs found" msgstr "Журналы не найдены" -#: src/Admin/AdminPage.php:2224 +#: src/Admin/AdminPage.php:2246 msgid "No paused events" msgstr "Нет приостановленных событий" -#: src/Admin/AdminPage.php:1397 +#: src/Admin/AdminPage.php:1400 msgid "No scheduled events" msgstr "Мероприятия не запланированы." -#: src/Admin/AdminPage.php:600 +#: src/Admin/AdminPage.php:603 msgid "No scheduled jobs found." msgstr "Запланированных заданий не найдено." -#: src/Admin/AdminPage.php:1144 +#: src/Admin/AdminPage.php:1147 msgid "No server" msgstr "Нет сервера" -#: src/Admin/AdminPage.php:1877 src/Admin/AdminPage.php:1881 -msgid "Not implemented yet" -msgstr "Пока не реализовано" - -#: src/Admin/AdminPage.php:779 +#: src/Admin/AdminPage.php:782 msgid "Notifications of critical issues (low memory, disabled WP-Cron)." msgstr "" "Уведомления о критических проблемах (недостаток памяти, отключение WP-Cron)." -#: src/Admin/AdminPage.php:506 +#: src/Admin/AdminPage.php:509 msgid "Now" msgstr "Сейчас" -#: src/Admin/AdminPage.php:749 +#: src/Admin/AdminPage.php:752 msgid "Number of entries" msgstr "Количество записей" -#: src/Admin/AdminPage.php:1725 +#: src/Admin/AdminPage.php:1728 src/Admin/AdminPage.php:1925 msgid "OK" msgstr "OK" -#: src/Admin/AdminPage.php:2240 +#: src/Admin/AdminPage.php:2262 msgid "One-time" msgstr "Один раз" -#: src/Admin/AdminPage.php:1351 src/Admin/AdminPage.php:1446 -#: src/Admin/AdminPage.php:1502 src/Admin/CronMonitor.php:220 +#: src/Admin/AdminPage.php:2331 +msgid "Option A: systemd service" +msgstr "Вариант A: сервис systemd" + +#: src/Admin/AdminPage.php:2348 +msgid "Option B: Supervisor" +msgstr "Вариант B: Supervisor" + +#: src/Admin/AdminPage.php:2358 +msgid "Option C: Docker Compose" +msgstr "Вариант C: Docker Compose" + +#: src/Admin/AdminPage.php:2364 +msgid "Option D: plain PHP script" +msgstr "Вариант D: простой PHP-скрипт" + +#: src/Admin/AdminPage.php:1354 src/Admin/AdminPage.php:1449 +#: src/Admin/AdminPage.php:1505 src/Admin/CronMonitor.php:220 msgid "Overdue" msgstr "Просрочено" -#: src/Admin/AdminPage.php:42 src/Admin/AdminPage.php:49 -#: src/Admin/AdminPage.php:250 +#: src/Admin/AdminPage.php:44 src/Admin/AdminPage.php:51 +#: src/Admin/AdminPage.php:253 msgid "Overview" msgstr "Обзор" -#: src/Admin/AdminPage.php:442 src/Admin/AdminPage.php:1532 -#: src/Admin/AdminPage.php:1533 +#: src/Admin/AdminPage.php:445 src/Admin/AdminPage.php:1535 +#: src/Admin/AdminPage.php:1536 msgid "Pause" msgstr "Пауза" -#: src/Admin/AdminPage.php:197 +#: src/Admin/AdminPage.php:200 msgid "Pause this queue?" msgstr "Приостановить выполнение этой очереди?" -#: src/Admin/AdminPage.php:52 src/Admin/AdminPage.php:325 -#: src/Admin/AdminPage.php:424 src/Admin/AdminPage.php:1355 +#: src/Admin/AdminPage.php:54 src/Admin/AdminPage.php:328 +#: src/Admin/AdminPage.php:427 src/Admin/AdminPage.php:1358 msgid "Paused" msgstr "Приостановлено" -#: src/Admin/AdminPage.php:1557 +#: src/Admin/AdminPage.php:1560 msgid "Paused At" msgstr "Приостановлено на" -#: src/Admin/AdminPage.php:1551 +#: src/Admin/AdminPage.php:1554 msgid "Paused Events" msgstr "Приостановленные события" -#: src/Admin/AdminPage.php:765 +#: src/Admin/AdminPage.php:768 msgid "Paused events" msgstr "Приостановленные события" -#: src/Admin/AdminPage.php:2232 +#: src/Admin/AdminPage.php:2254 msgid "Paused Since" msgstr "Приостановлено с" -#: src/Admin/AdminPage.php:323 src/Admin/AdminPage.php:464 -#: src/Admin/AdminPage.php:1971 +#: src/Admin/AdminPage.php:326 src/Admin/AdminPage.php:467 +#: src/Admin/AdminPage.php:1993 msgid "Pending" msgstr "В ожидании" -#: src/Admin/AdminPage.php:1752 +#: src/Admin/AdminPage.php:1755 msgid "Pending Actions" msgstr "Ожидающие действия" -#: src/Admin/AdminPage.php:1849 src/Admin/AdminPage.php:1919 +#: src/Admin/AdminPage.php:1852 src/Admin/AdminPage.php:1941 msgid "PHP" msgstr "PHP" -#: src/Admin/AdminPage.php:780 +#: src/Admin/AdminPage.php:783 msgid "" "PHP and WordPress versions, memory limits (current usage), maximum execution " "time, timezone." @@ -1003,11 +1107,11 @@ msgstr "PHP-расширение \"redis\" (phpredis) не установлен msgid "PHP max_execution_time is less than 30 seconds." msgstr "PHP max_execution_time меньше 30 секунд." -#: src/Admin/AdminPage.php:1665 +#: src/Admin/AdminPage.php:1668 msgid "PHP Version" msgstr "Версия PHP" -#: src/Admin/AdminPage.php:1471 +#: src/Admin/AdminPage.php:1474 msgid "Plugins" msgstr "Плагины" @@ -1015,75 +1119,75 @@ msgstr "Плагины" msgid "Predis library is not available" msgstr "Библиотека Predis недоступна" -#: src/Admin/AdminPage.php:667 +#: src/Admin/AdminPage.php:670 msgid "Process" msgstr "Процесс" -#: src/Admin/AdminPage.php:447 src/Admin/AdminPage.php:2009 +#: src/Admin/AdminPage.php:450 src/Admin/AdminPage.php:2031 msgid "Process Now" msgstr "Обработать сейчас" -#: src/Admin/AdminPage.php:2007 +#: src/Admin/AdminPage.php:2029 msgid "Process Queues" msgstr "Обработочные очереди" -#: src/Admin/AdminPage.php:426 src/Admin/AdminPage.php:468 +#: src/Admin/AdminPage.php:429 src/Admin/AdminPage.php:471 msgid "Processing" msgstr "Обработка" -#: src/Admin/AdminPage.php:1866 -msgid "Processing trigger" -msgstr "Триггер обработки" - -#: src/Admin/AdminPage.php:592 src/Admin/AdminPage.php:875 -#: src/Admin/AdminPage.php:959 +#: src/Admin/AdminPage.php:595 src/Admin/AdminPage.php:878 +#: src/Admin/AdminPage.php:962 msgid "Queue" msgstr "Очередь" -#: src/Admin/AdminPage.php:487 +#: src/Admin/AdminPage.php:1895 +msgid "Queue handler" +msgstr "Обработчик очереди" + +#: src/Admin/AdminPage.php:490 msgid "Queue is empty" msgstr "Очередь пуста" -#: src/Admin/AdminPage.php:715 +#: src/Admin/AdminPage.php:718 msgid "Queue statistics" msgstr "Статистика очереди" -#: src/Admin/AdminPage.php:1860 +#: src/Admin/AdminPage.php:1889 msgid "Queue Storage backend" msgstr "бэкэнд хранилища очередей" -#: src/Admin/AdminPage.php:716 +#: src/Admin/AdminPage.php:719 msgid "Queue table" msgstr "Таблица очереди" -#: src/Admin/AdminPage.php:420 +#: src/Admin/AdminPage.php:423 #, php-format msgid "Queue: %s" msgstr "Очередь: %s" -#: src/Admin/AdminPage.php:35 src/Admin/AdminPage.php:371 +#: src/Admin/AdminPage.php:37 src/Admin/AdminPage.php:374 msgid "Queues" msgstr "Очереди" -#: src/Admin/AdminPage.php:2057 +#: src/Admin/AdminPage.php:2079 msgid "Quick Start" msgstr "Быстрый старт" -#: src/Admin/AdminPage.php:112 +#: src/Admin/AdminPage.php:115 msgid "Quickly see if any jobs are failing and view recent log entries." msgstr "" "Быстро проверьте, не завершаются ли какие-либо задания с ошибкой, и " "просмотрите последние записи в журнале." -#: src/Admin/AdminPage.php:1136 +#: src/Admin/AdminPage.php:1139 msgid "Ready" msgstr "Готово" -#: src/Admin/AdminPage.php:395 +#: src/Admin/AdminPage.php:398 msgid "Recent Activity" msgstr "Последние события" -#: src/Admin/AdminPage.php:717 +#: src/Admin/AdminPage.php:720 msgid "Recent activity" msgstr "Последние события" @@ -1095,87 +1199,97 @@ msgstr "Подключение к Redis не удалось." msgid "Redis is disabled via WP_REDIS_DISABLED" msgstr "Redis отключен с помощью WP_REDIS_DISABLED" -#: src/Admin/AdminPage.php:696 +#: src/Admin/AdminPage.php:699 msgid "Redis Support" msgstr "Поддержка Redis" -#: src/Admin/AdminPage.php:1580 +#: src/Admin/AdminPage.php:1583 msgid "Registered Schedules" msgstr "Зарегистрированные расписания" -#: src/Admin/AdminPage.php:766 +#: src/Admin/AdminPage.php:769 msgid "Registered schedules" msgstr "Зарегистрированные расписания" -#: src/Admin/AdminPage.php:2190 +#: src/Admin/AdminPage.php:2212 msgid "Report an Issue" msgstr "Сообщить о проблеме" -#: src/Admin/AdminPage.php:166 +#: src/Admin/AdminPage.php:169 msgid "Report Issues" msgstr "Сообщить о проблемах" -#: src/Admin/AdminPage.php:1876 -msgid "REST trigger (planned)" -msgstr "REST-триггер (запланировано)" - -#: src/Admin/AdminPage.php:437 src/Admin/AdminPage.php:1571 -#: src/Admin/AdminPage.php:2246 +#: src/Admin/AdminPage.php:440 src/Admin/AdminPage.php:1574 +#: src/Admin/AdminPage.php:2268 msgid "Resume" msgstr "Резюме" -#: src/Admin/AdminPage.php:2114 +#: src/Admin/AdminPage.php:2136 msgid "Retry Attempts" msgstr "Повторные попытки" -#: src/Admin/AdminPage.php:143 src/Admin/AdminPage.php:1518 +#: src/Admin/AdminPage.php:146 src/Admin/AdminPage.php:1521 msgid "Run" msgstr "Запуск" -#: src/Admin/AdminPage.php:622 src/Admin/AdminPage.php:1517 +#: src/Admin/AdminPage.php:625 src/Admin/AdminPage.php:1520 msgid "Run Now" msgstr "Запустите сейчас" -#: src/Admin/AdminPage.php:764 +#: src/Admin/AdminPage.php:767 msgid "" "Run now, edit schedule, pause, delete. Modal window for changing interval." msgstr "" +"Запустить сейчас, отредактировать расписание, приостановить, удалить. " +"Модальное окно для изменения интервала." -#: src/Admin/AdminPage.php:2136 +#: src/Admin/AdminPage.php:2158 msgid "Run tasks on schedule:" -msgstr "" +msgstr "Выполнить задачи по расписанию:" -#: src/Admin/AdminPage.php:324 src/Admin/AdminPage.php:348 +#: src/Admin/AdminPage.php:327 src/Admin/AdminPage.php:351 msgid "Running" msgstr "Запущено" -#: src/Admin/AdminPage.php:1756 +#: src/Admin/AdminPage.php:1759 msgid "Running Actions" msgstr "Выполнение действий" -#: src/Admin/AdminPage.php:1622 +#: src/Admin/AdminPage.php:2346 +msgid "" +"Save as /etc/systemd/system/wp-queue-worker.service, then run systemctl " +"enable --now wp-queue-worker." +msgstr "" +"Сохраните как /etc/systemd/system/wp-queue-worker.service, затем выполните " +"systemctl enable --now wp-queue-worker." + +#: src/Admin/AdminPage.php:1625 msgid "Save Changes" msgstr "Сохранить изменения" -#: src/Admin/AdminPage.php:591 src/Admin/AdminPage.php:1481 -#: src/Admin/AdminPage.php:1556 src/Admin/AdminPage.php:1610 -#: src/Admin/AdminPage.php:2231 +#: src/Admin/AdminPage.php:2324 +msgid "Save the script, make it executable and run it in the background:" +msgstr "Сохраните скрипт, сделайте его исполняемым и запустите в фоне:" + +#: src/Admin/AdminPage.php:594 src/Admin/AdminPage.php:1484 +#: src/Admin/AdminPage.php:1559 src/Admin/AdminPage.php:1613 +#: src/Admin/AdminPage.php:2253 msgid "Schedule" msgstr "Расписание" -#: src/Admin/AdminPage.php:2077 +#: src/Admin/AdminPage.php:2099 msgid "Schedule a job to run after a specific time:" msgstr "Настройте выполнение задания по истечении определенного времени:" -#: src/Admin/AdminPage.php:51 src/Admin/AdminPage.php:1347 +#: src/Admin/AdminPage.php:53 src/Admin/AdminPage.php:1350 msgid "Scheduled" msgstr "Запланировано" -#: src/Admin/AdminPage.php:725 +#: src/Admin/AdminPage.php:728 msgid "Scheduled Jobs" msgstr "Запланированные задания" -#: src/Admin/AdminPage.php:126 +#: src/Admin/AdminPage.php:129 msgid "" "Scheduled Jobs – list of recurring background jobs added by your theme or " "plugins." @@ -1183,49 +1297,53 @@ msgstr "" "Запланированные задания — список повторяющихся фоновых заданий, добавленных " "вашей темой или плагинами." -#: src/Admin/AdminPage.php:36 src/Admin/AdminPage.php:2135 +#: src/Admin/AdminPage.php:38 src/Admin/AdminPage.php:2157 msgid "Scheduler" msgstr "Планировщик" -#: src/Admin/AdminPage.php:1776 src/Admin/AdminPage.php:1780 -#: src/Admin/AdminPage.php:1942 +#: src/Admin/AdminPage.php:1779 src/Admin/AdminPage.php:1783 +#: src/Admin/AdminPage.php:1964 msgid "Server Time" -msgstr "" +msgstr "Время сервера" -#: src/Admin/AdminPage.php:783 +#: src/Admin/AdminPage.php:786 msgid "Server time" -msgstr "" +msgstr "Время сервера" -#: src/Admin/AdminPage.php:1507 src/Admin/AdminPage.php:1565 +#: src/Admin/AdminPage.php:1510 src/Admin/AdminPage.php:1568 msgid "Single" -msgstr "" +msgstr "Один" -#: src/Admin/AdminPage.php:1612 +#: src/Admin/AdminPage.php:1615 msgid "Single (run once)" -msgstr "" +msgstr "Один (запуск один раз)" -#: src/Admin/AdminPage.php:1404 src/Admin/AdminPage.php:1482 +#: src/Admin/AdminPage.php:1407 src/Admin/AdminPage.php:1485 msgid "Source" msgstr "Источник" -#: src/Admin/AdminPage.php:480 src/Admin/AdminPage.php:873 -#: src/Admin/AdminPage.php:1053 src/Admin/AdminPage.php:1161 +#: src/Admin/AdminPage.php:2304 +msgid "Start the worker from the WordPress root:" +msgstr "Запустите воркер из корня WordPress:" + +#: src/Admin/AdminPage.php:483 src/Admin/AdminPage.php:876 +#: src/Admin/AdminPage.php:1056 src/Admin/AdminPage.php:1164 msgid "Status" msgstr "Статус" -#: src/Admin/AdminPage.php:746 +#: src/Admin/AdminPage.php:749 msgid "Status filters" msgstr "Фильтры состояния" -#: src/Admin/AdminPage.php:665 +#: src/Admin/AdminPage.php:668 msgid "Storage" msgstr "Хранилище" -#: src/Admin/AdminPage.php:1052 +#: src/Admin/AdminPage.php:1055 msgid "Storage backend" msgstr "бэкэнд хранилища" -#: src/Admin/AdminPage.php:1031 +#: src/Admin/AdminPage.php:1034 #, php-format msgid "" "Storage backend \"%s\" is configured in wp-config.php, but not available. " @@ -1238,33 +1356,33 @@ msgstr "" msgid "Synchronous execution (no queue)" msgstr "Синхронное выполнение (без очереди)" -#: src/Admin/AdminPage.php:37 src/Admin/AdminPage.php:774 +#: src/Admin/AdminPage.php:39 src/Admin/AdminPage.php:777 msgid "System" msgstr "Система" -#: src/Admin/AdminPage.php:686 +#: src/Admin/AdminPage.php:689 msgid "System Cron (Recommended)" msgstr "Системный планировщик задач (рекомендуется)" -#: src/Admin/AdminPage.php:779 +#: src/Admin/AdminPage.php:782 msgid "System health" msgstr "Здоровье системы" -#: src/Admin/AdminPage.php:1648 +#: src/Admin/AdminPage.php:1651 msgid "System Issues Detected:" msgstr "Обнаружены системные неполадки:" -#: src/Admin/AdminPage.php:55 +#: src/Admin/AdminPage.php:57 msgid "System Status" msgstr "Состояние системы" -#: src/Admin/AdminPage.php:129 +#: src/Admin/AdminPage.php:132 msgid "" "System – checks PHP version, WP-Cron status and other important settings." msgstr "" "Система проверяет версию PHP, статус WP-Cron и другие важные настройки." -#: src/Admin/AdminPage.php:732 +#: src/Admin/AdminPage.php:735 msgid "" "The \"Run Now\" button allows you to run any job immediately, without " "waiting for the schedule." @@ -1272,22 +1390,30 @@ msgstr "" "Кнопка «Запустить сейчас» позволяет немедленно запустить любое задание, не " "дожидаясь расписания." -#: src/Admin/AdminPage.php:665 +#: src/Admin/AdminPage.php:2329 +msgid "" +"The command above must stay alive. In production use one of the options " +"below." +msgstr "" +"Команда выше должна оставаться запущенной. В продакшене используйте один из " +"вариантов ниже." + +#: src/Admin/AdminPage.php:668 msgid "The job is saved in the database (or Redis) waiting to be picked up." msgstr "Задание сохраняется в базе данных (или Redis) в ожидании обработки." -#: src/Admin/AdminPage.php:717 +#: src/Admin/AdminPage.php:720 msgid "The last 10 log entries for quick tracking of queue activity." msgstr "" "Последние 10 записей в журнале для быстрого отслеживания активности в " "очереди." -#: src/Admin/AdminPage.php:713 +#: src/Admin/AdminPage.php:716 msgid "The main tab for monitoring queue status in real-time." msgstr "" "Главная вкладка для мониторинга состояния очереди в режиме реального времени." -#: src/Admin/AdminPage.php:108 +#: src/Admin/AdminPage.php:111 msgid "" "The plugin itself does not add new features to the frontend. It provides a " "reliable queue that other plugins or your custom code can use for background " @@ -1297,7 +1423,7 @@ msgstr "" "очередь, которую другие плагины или ваш пользовательский код могут " "использовать для фоновой работы." -#: src/Admin/AdminPage.php:667 +#: src/Admin/AdminPage.php:670 msgid "" "The worker picks up the job and executes it. If it succeeds, it is marked as " "\"Completed\". If it fails, it can be retried." @@ -1305,25 +1431,25 @@ msgstr "" "Работник берет задание и выполняет его. Если оно выполняется успешно, оно " "помечается как «Завершено». Если оно не выполняется, его можно повторить." -#: src/Admin/AdminPage.php:314 +#: src/Admin/AdminPage.php:317 msgid "This section is under development." msgstr "Этот раздел находится в разработке." -#: src/Admin/AdminPage.php:872 src/Admin/AdminPage.php:957 -#: src/Admin/AdminPage.php:1160 src/Admin/AdminPage.php:1938 +#: src/Admin/AdminPage.php:875 src/Admin/AdminPage.php:960 +#: src/Admin/AdminPage.php:1163 src/Admin/AdminPage.php:1960 msgid "Time" msgstr "Время" -#: src/Admin/AdminPage.php:1832 +#: src/Admin/AdminPage.php:1835 msgid "Timeout" msgstr "Тайм-аут" -#: src/Admin/AdminPage.php:1688 src/Admin/AdminPage.php:1950 +#: src/Admin/AdminPage.php:1691 src/Admin/AdminPage.php:1972 msgid "Timezone" msgstr "Часовой пояс" #. %s: URL to GitHub repository -#: src/Admin/AdminPage.php:135 +#: src/Admin/AdminPage.php:138 #, php-format msgid "" "To add your own background jobs, use the WP Queue PHP API from your plugin " @@ -1336,11 +1462,11 @@ msgstr "" "устанавливать задержки и повторные попытки. Полные примеры кода доступны в " "файле README на GitHub ." -#: src/Admin/AdminPage.php:143 +#: src/Admin/AdminPage.php:146 msgid "to get a list of available commands." msgstr "чтобы получить список доступных команд." -#: src/Admin/AdminPage.php:672 +#: src/Admin/AdminPage.php:675 msgid "" "To process the queue, WordPress needs a trigger. There are two ways to do " "this:" @@ -1348,27 +1474,27 @@ msgstr "" "Для обработки очереди WordPress необходим триггер. Это можно сделать двумя " "способами:" -#: src/Admin/AdminPage.php:56 src/Admin/AdminPage.php:1997 +#: src/Admin/AdminPage.php:59 src/Admin/AdminPage.php:2019 msgid "Tools" msgstr "Инструменты" -#: src/Admin/AdminPage.php:1442 +#: src/Admin/AdminPage.php:1445 msgid "Total" msgstr "Всего" -#: src/Admin/AdminPage.php:950 +#: src/Admin/AdminPage.php:953 msgid "Total errors" msgstr "Общее количество ошибок" -#: src/Admin/AdminPage.php:1343 +#: src/Admin/AdminPage.php:1346 msgid "Total Events" msgstr "Всего событий" -#: src/Admin/AdminPage.php:460 +#: src/Admin/AdminPage.php:463 msgid "Total Jobs" msgstr "Общее количество рабочих мест" -#: src/Admin/AdminPage.php:762 +#: src/Admin/AdminPage.php:765 msgid "" "Total number of events, overdue, grouped by source (WordPress, WooCommerce, " "WP Queue, plugins)." @@ -1376,7 +1502,7 @@ msgstr "" "Общее количество просроченных событий, сгруппированных по источнику " "(WordPress, WooCommerce, WP Queue, плагины)." -#: src/Admin/AdminPage.php:1148 +#: src/Admin/AdminPage.php:1151 msgid "Unavailable" msgstr "Недоступно" @@ -1385,7 +1511,8 @@ msgstr "Недоступно" msgid "Unexpected response code: %d" msgstr "Неожиданный код ответа: %d" -#: src/Admin/AdminPage.php:494 src/Admin/AdminPage.php:1264 +#: src/Admin/AdminPage.php:497 src/Admin/AdminPage.php:1267 +#: src/Admin/AdminPage.php:1928 msgid "Unknown" msgstr "Неизвестно" @@ -1393,19 +1520,41 @@ msgstr "Неизвестно" msgid "Unknown driver" msgstr "Неизвестный драйвер" -#: src/Admin/AdminPage.php:1393 +#: src/Admin/AdminPage.php:1396 msgid "Upcoming Events" msgstr "Предстоящие события" -#: src/Admin/AdminPage.php:91 +#: src/Admin/AdminPage.php:94 msgid "Usage" msgstr "Использование" -#: src/Admin/AdminPage.php:1365 +#: src/Admin/AdminPage.php:2294 +msgid "" +"Use a daemon worker on VPS, Docker or dedicated servers where you can keep a " +"process running. It polls the queue continuously and starts jobs immediately." +" Without a daemon, WP Queue relies on WP-Cron and/or loopback, which can " +"delay jobs by up to a minute." +msgstr "" +"Запускайте демон-воркер на VPS, Docker или выделенном сервере, где можно " +"держать процесс запущенным. Он постоянно опрашивает очередь и сразу " +"запускает задания. Без демона WP Queue полагается на WP-Cron и/или loopback, " +"что может задерживать задания до минуты." + +#: src/Admin/AdminPage.php:1368 msgid "Use system cron" msgstr "Используйте системный cron" -#: src/Admin/AdminPage.php:719 +#: src/Admin/AdminPage.php:2365 +msgid "" +"Use the script from step 2 (Without WP-CLI) inside screen, tmux or a simple " +"cron-based restart loop. Remember that the script must stay alive to act as " +"a daemon." +msgstr "" +"Используйте скрипт из шага 2 (Без WP-CLI) внутри screen, tmux или простого " +"цикла перезапуска через cron. Помните, что скрипт должен оставаться " +"запущенным, чтобы работать как демон." + +#: src/Admin/AdminPage.php:722 msgid "" "Use this tab for quick checks of queue performance and identifying stuck " "processes." @@ -1413,15 +1562,15 @@ msgstr "" "Используйте эту вкладку для быстрой проверки производительности очереди и " "выявления зависших процессов." -#: src/Admin/AdminPage.php:1927 +#: src/Admin/AdminPage.php:1949 msgid "Used" msgstr "Использовал" -#: src/Admin/AdminPage.php:735 +#: src/Admin/AdminPage.php:738 msgid "Useful for testing jobs and forcing synchronizations." msgstr "Полезно для тестирования заданий и принудительной синхронизации." -#: src/Admin/AdminPage.php:2179 +#: src/Admin/AdminPage.php:2201 msgid "Useful Links" msgstr "Полезные ссылки" @@ -1429,39 +1578,47 @@ msgstr "Полезные ссылки" msgid "Uses wp_options table" msgstr "Использует таблицу wp_options" -#: src/Admin/AdminPage.php:1747 src/Admin/AdminPage.php:1966 +#: src/Admin/AdminPage.php:1750 src/Admin/AdminPage.php:1988 msgid "Version" msgstr "Версия" -#: src/Admin/AdminPage.php:1837 +#: src/Admin/AdminPage.php:1840 msgid "Versions" msgstr "Версии" -#: src/Admin/AdminPage.php:1880 -msgid "VPS worker (planned)" -msgstr "VPS-сервер (планируется)" - -#: src/Admin/AdminPage.php:1727 +#: src/Admin/AdminPage.php:1730 src/Admin/AdminPage.php:1926 msgid "Warning" msgstr "Предупреждение" -#: src/Admin/AdminPage.php:109 +#: src/Admin/AdminPage.php:112 msgid "What you can use it for" msgstr "Для чего его можно использовать" -#: src/Admin/AdminPage.php:648 +#: src/Admin/AdminPage.php:2293 +msgid "When to use a daemon" +msgstr "Когда использовать демон" + +#: src/Admin/AdminPage.php:651 msgid "Why is it needed?" msgstr "Зачем это нужно?" -#: src/Admin/AdminPage.php:1465 +#: src/Admin/AdminPage.php:2303 +msgid "With WP-CLI" +msgstr "С WP-CLI" + +#: src/Admin/AdminPage.php:2308 +msgid "Without WP-CLI" +msgstr "Без WP-CLI" + +#: src/Admin/AdminPage.php:1468 msgid "WooCommerce" msgstr "WooCommerce" -#: src/Admin/AdminPage.php:1462 src/Admin/AdminPage.php:1845 +#: src/Admin/AdminPage.php:1465 src/Admin/AdminPage.php:1848 msgid "WordPress" msgstr "WordPress" -#: src/Admin/AdminPage.php:680 +#: src/Admin/AdminPage.php:683 msgid "" "WordPress checks for scheduled tasks on every page load. This works out of " "the box but has downsides: on low-traffic sites, tasks might not run on time;" @@ -1473,25 +1630,25 @@ msgstr "" "высокой посещаемостью это может вызывать проблемы с производительностью. Это " "«поддельный» cron." -#: src/Admin/AdminPage.php:1784 src/Admin/AdminPage.php:1946 +#: src/Admin/AdminPage.php:1787 src/Admin/AdminPage.php:1968 msgid "WordPress Time" msgstr "Время WordPress" -#: src/Admin/AdminPage.php:1669 +#: src/Admin/AdminPage.php:1672 msgid "WordPress Version" msgstr "Версия WordPress" -#: src/Admin/AdminPage.php:40 src/Admin/AdminPage.php:666 +#: src/Admin/AdminPage.php:669 msgid "Worker" msgstr "Воркер" #. Name of the plugin -#: src/Admin/AdminPage.php:65 src/Admin/AdminPage.php:66 -#: src/Admin/AdminPage.php:1468 src/Admin/AdminPage.php:1841 +#: src/Admin/AdminPage.php:68 src/Admin/AdminPage.php:69 +#: src/Admin/AdminPage.php:1471 src/Admin/AdminPage.php:1844 msgid "WP Queue" msgstr "WP Queue" -#: src/Admin/AdminPage.php:2047 +#: src/Admin/AdminPage.php:2069 msgid "" "WP Queue allows executing tasks asynchronously in the background without " "blocking the main WordPress execution flow." @@ -1499,7 +1656,7 @@ msgstr "" "WP Queue позволяет выполнять задачи асинхронно в фоновом режиме, не блокируя " "основной поток выполнения WordPress." -#: src/Admin/AdminPage.php:107 +#: src/Admin/AdminPage.php:110 msgid "" "WP Queue helps your site run heavy or regular tasks in the background " "(emails, synchronizations, cleanups) so that pages load faster for visitors." @@ -1509,7 +1666,7 @@ msgstr "" "синхронизация, очистка), благодаря чему страницы загружаются быстрее для " "посетителей." -#: src/Admin/AdminPage.php:640 +#: src/Admin/AdminPage.php:643 msgid "" "WP Queue is a robust background processing library for WordPress. It allows " "you to offload time-consuming tasks (like sending emails, syncing data, or " @@ -1521,7 +1678,7 @@ msgstr "" "писем, синхронизацию данных или создание отчетов) на асинхронную обработку, " "обеспечивая быструю и отзывчивую работу вашего сайта для посетителей." -#: src/Admin/AdminPage.php:656 +#: src/Admin/AdminPage.php:659 msgid "" "WP Queue solves this by pushing these tasks to a \"Queue\" and processing " "them later in the background. The user gets an instant response, and the " @@ -1531,35 +1688,39 @@ msgstr "" "обрабатывая их позже в фоновом режиме. Пользователь получает мгновенный " "ответ, а основная работа происходит за кулисами." -#: src/Admin/AdminPage.php:2045 +#: src/Admin/AdminPage.php:2067 msgid "WP Queue — Queue System for WordPress" msgstr "WP Queue — система очередей для WordPress" -#: src/Admin/AdminPage.php:97 +#: src/Admin/AdminPage.php:100 msgid "WP-CLI" msgstr "WP-CLI" -#: src/Admin/AdminPage.php:142 src/Admin/AdminPage.php:2019 +#: src/Admin/AdminPage.php:145 src/Admin/AdminPage.php:2041 msgid "WP-CLI Commands" msgstr "Команды WP-CLI" -#: src/Admin/AdminPage.php:2158 +#: src/Admin/AdminPage.php:2180 msgid "WP-CLI команды" msgstr "Команда WP-CLI" -#: src/Admin/AdminPage.php:757 src/Admin/AdminPage.php:1886 +#: src/Admin/AdminPage.php:760 src/Admin/AdminPage.php:1905 msgid "WP-Cron" msgstr "WP-Cron" -#: src/Admin/AdminPage.php:678 +#: src/Admin/AdminPage.php:681 msgid "WP-Cron (Default)" msgstr "WP-Cron (по умолчанию)" -#: src/Admin/AdminPage.php:1869 -msgid "WP-Cron (scheduled)" -msgstr "WP-Cron (запланировано)" +#: src/Admin/AdminPage.php:1869 src/Admin/AdminPage.php:1873 +msgid "WP-Cron + Loopback" +msgstr "WP-Cron + Loopback" + +#: src/Admin/AdminPage.php:1900 +msgid "WP-Cron checks the queue every minute as a fallback." +msgstr "WP-Cron раз в минуту проверяет очередь как подстраховку." -#: src/Admin/AdminPage.php:1698 +#: src/Admin/AdminPage.php:1701 msgid "WP-Cron Disabled" msgstr "WP-Cron отключен" @@ -1567,161 +1728,33 @@ msgstr "WP-Cron отключен" msgid "WP-Cron is disabled. Background tasks may not run automatically." msgstr "WP-Cron отключен. Фоновые задачи могут не выполняться автоматически." -#: src/Admin/AdminPage.php:1694 +#: src/Admin/AdminPage.php:1877 +msgid "WP-Cron only" +msgstr "Только WP-Cron" + +#: src/Admin/AdminPage.php:1697 msgid "WP-Cron Status" msgstr "Статус WP-Cron" -#: src/Admin/AdminPage.php:781 +#: src/Admin/AdminPage.php:784 msgid "WP-Cron status" msgstr "статус WP-Cron" -#: src/Admin/AdminPage.php:670 +#: src/Admin/AdminPage.php:673 msgid "WP-Cron vs System Cron" msgstr "WP-Cron против System Cron" -#: src/Admin/AdminPage.php:128 +#: src/Admin/AdminPage.php:131 msgid "" "WP-Cron – list of cron events with the ability to run, pause or delete them." msgstr "" "WP-Cron – список событий cron с возможностью их запуска, приостановки или " "удаления." -#: src/Admin/AdminPage.php:1362 +#: src/Admin/AdminPage.php:1365 msgid "WP-Cron:" msgstr "WP-Cron:" -#: src/Admin/AdminPage.php:1029 +#: src/Admin/AdminPage.php:1032 msgid "⚠️ Warning:" msgstr "⚠️ Предупреждение:" - -#: src/Admin/AdminPage.php:1894 -msgid "Queue handler" -msgstr "Обработчик очереди" - -#: src/Admin/AdminPage.php:1864 -msgid "Daemon process" -msgstr "Демон-процесс" - -#: src/Admin/AdminPage.php:1868 src/Admin/AdminPage.php:1872 -msgid "WP-Cron + Loopback" -msgstr "WP-Cron + Loopback" - -#: src/Admin/AdminPage.php:1876 -msgid "WP-Cron only" -msgstr "Только WP-Cron" - -#: src/Admin/AdminPage.php:1866 -msgid "A daemon worker is expected to process queues. WP-Cron and loopback are disabled." -msgstr "Для обработки очередей ожидается демон-воркер. WP-Cron и loopback отключены." - -#: src/Admin/AdminPage.php:1870 -msgid "Loopback is enabled and working. Jobs start immediately after dispatch." -msgstr "Loopback включен и работает. Задачи запускаются сразу после отправки." - -#: src/Admin/AdminPage.php:1874 -msgid "Loopback is inactive. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Enable loopback or run a daemon worker for instant processing." -msgstr "Loopback неактивен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Включите loopback или запустите демон-воркер для мгновенной обработки." - -#: src/Admin/AdminPage.php:1878 -msgid "Loopback is disabled. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Run a daemon worker for instant processing." -msgstr "Loopback отключен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Запустите демон-воркер для мгновенной обработки." - -#: src/Admin/AdminPage.php:1899 -msgid "WP-Cron checks the queue every minute as a fallback." -msgstr "WP-Cron раз в минуту проверяет очередь как подстраховку." - -#: src/Admin/AdminPage.php:58 src/Admin/AdminPage.php:2288 -msgid "Daemon worker" -msgstr "Демон-воркер" - -#: src/Admin/AdminPage.php:2289 -msgid "How to run WP Queue as a long-running background process." -msgstr "Как запустить WP Queue в виде долгоживущего фонового процесса." - -#: src/Admin/AdminPage.php:2293 -msgid "When to use a daemon" -msgstr "Когда использовать демон" - -#: src/Admin/AdminPage.php:2294 -msgid "Use a daemon worker on VPS, Docker or dedicated servers where you can keep a process running. It polls the queue continuously and starts jobs immediately. Without a daemon, WP Queue relies on WP-Cron and/or loopback, which can delay jobs by up to a minute." -msgstr "Запускайте демон-воркер на VPS, Docker или выделенном сервере, где можно держать процесс запущенным. Он постоянно опрашивает очередь и сразу запускает задания. Без демона WP Queue полагается на WP-Cron и/или loopback, что может задерживать задания до минуты." - -#: src/Admin/AdminPage.php:2296 -msgid "1. Enable daemon runtime mode" -msgstr "1. Включите режим демона" - -#: src/Admin/AdminPage.php:2297 -msgid "Add this to wp-config.php:" -msgstr "Добавьте в wp-config.php:" - -#: src/Admin/AdminPage.php:2299 -msgid "In this mode WP-Cron scheduling and loopback requests are disabled automatically." -msgstr "В этом режиме планирование WP-Cron и loopback-запросы отключаются автоматически." - -#: src/Admin/AdminPage.php:2301 -msgid "2. Run the worker" -msgstr "2. Запустите воркер" - -#: src/Admin/AdminPage.php:2303 -msgid "With WP-CLI" -msgstr "С WP-CLI" - -#: src/Admin/AdminPage.php:2304 -msgid "Start the worker from the WordPress root:" -msgstr "Запустите воркер из корня WordPress:" - -#: src/Admin/AdminPage.php:2306 -msgid "--memory limits the PHP memory for the worker process. Adjust the value to your needs." -msgstr "--memory ограничивает память PHP для процесса воркера. Подберите значение под свои задачи." - -#: src/Admin/AdminPage.php:2308 -msgid "Without WP-CLI" -msgstr "Без WP-CLI" - -#: src/Admin/AdminPage.php:2309 -msgid "If WP-CLI is not available, create a PHP script that boots WordPress and runs the worker loop:" -msgstr "Если WP-CLI недоступен, создайте PHP-скрипт, который загружает WordPress и запускает цикл воркера:" - -#: src/Admin/AdminPage.php:2324 -msgid "Save the script, make it executable and run it in the background:" -msgstr "Сохраните скрипт, сделайте его исполняемым и запустите в фоне:" - -#: src/Admin/AdminPage.php:2328 -msgid "3. Keep it running" -msgstr "3. Держите процесс запущенным" - -#: src/Admin/AdminPage.php:2329 -msgid "The command above must stay alive. In production use one of the options below." -msgstr "Команда выше должна оставаться запущенной. В продакшене используйте один из вариантов ниже." - -#: src/Admin/AdminPage.php:2331 -msgid "Option A: systemd service" -msgstr "Вариант A: сервис systemd" - -#: src/Admin/AdminPage.php:2346 -msgid "Save as /etc/systemd/system/wp-queue-worker.service, then run systemctl enable --now wp-queue-worker." -msgstr "Сохраните как /etc/systemd/system/wp-queue-worker.service, затем выполните systemctl enable --now wp-queue-worker." - -#: src/Admin/AdminPage.php:2348 -msgid "Option B: Supervisor" -msgstr "Вариант B: Supervisor" - -#: src/Admin/AdminPage.php:2358 -msgid "Option C: Docker Compose" -msgstr "Вариант C: Docker Compose" - -#: src/Admin/AdminPage.php:2364 -msgid "Option D: plain PHP script" -msgstr "Вариант D: простой PHP-скрипт" - -#: src/Admin/AdminPage.php:2365 -msgid "Use the script from step 2 (Without WP-CLI) inside screen, tmux or a simple cron-based restart loop. Remember that the script must stay alive to act as a daemon." -msgstr "Используйте скрипт из шага 2 (Без WP-CLI) внутри screen, tmux или простого цикла перезапуска через cron. Помните, что скрипт должен оставаться запущенным, чтобы работать как демон." - -#: src/Admin/AdminPage.php:2367 -msgid "4. Check status" -msgstr "4. Проверьте статус" - -#: src/Admin/AdminPage.php:2369 -msgid "If the worker is not running, queues will not be processed in daemon mode. Make sure the process is started and monitored." -msgstr "Если воркер не запущен, очереди в режиме демона обрабатываться не будут. Убедитесь, что процесс запущен и мониторится." diff --git a/languages/wp-queue.pot b/languages/wp-queue.pot index 20f6317..3f559d0 100644 --- a/languages/wp-queue.pot +++ b/languages/wp-queue.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: WP Queue 1.0.0\n" "Report-Msgid-Bugs-To: https://github.com/rwsite/wp-queue/issues\n" -"POT-Creation-Date: 2025-12-05 23:27+0000\n" +"POT-Creation-Date: 2026-07-25 21:09+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -16,79 +16,111 @@ msgstr "" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" "X-Generator: Loco https://localise.biz/" -#: src/Admin/AdminPage.php:910 +#: src/Admin/AdminPage.php:913 msgid "%d entries" msgstr "" -#: src/Admin/AdminPage.php:542 +#: src/Admin/AdminPage.php:545 msgid "%d tasks" msgstr "" -#: src/Admin/AdminPage.php:1068 +#: src/Admin/AdminPage.php:1071 msgid "(configured)" msgstr "" -#: src/Admin/AdminPage.php:666 +#: src/Admin/AdminPage.php:2306 +msgid "" +"--memory limits the PHP memory for the worker process. Adjust the value to " +"your needs." +msgstr "" + +#: src/Admin/AdminPage.php:2296 +msgid "1. Enable daemon runtime mode" +msgstr "" + +#: src/Admin/AdminPage.php:2301 +msgid "2. Run the worker" +msgstr "" + +#: src/Admin/AdminPage.php:2328 +msgid "3. Keep it running" +msgstr "" + +#: src/Admin/AdminPage.php:2367 +msgid "4. Check status" +msgstr "" + +#: src/Admin/AdminPage.php:669 msgid "A background process (Worker) constantly checks the queue for new jobs." msgstr "" -#: src/Admin/AdminPage.php:716 +#: src/Admin/AdminPage.php:1867 +msgid "" +"A daemon worker is expected to process queues. WP-Cron and loopback are " +"disabled." +msgstr "" + +#: src/Admin/AdminPage.php:719 msgid "" "A list of all active queues with their size, status " "(idle/pending/running/paused), and control buttons (pause/resume, clear all " "tasks)." msgstr "" -#: src/Admin/AdminPage.php:664 +#: src/Admin/AdminPage.php:667 msgid "A plugin creates a \"Job\" (a task) and pushes it to the queue." msgstr "" -#: src/Admin/AdminPage.php:688 +#: src/Admin/AdminPage.php:691 msgid "" "A real cron job configured on your server (Linux) that calls WordPress every " "minute. This is reliable and precise. Ideally, you should disable default WP-" "Cron and use System Cron." msgstr "" -#: src/Admin/AdminPage.php:765 +#: src/Admin/AdminPage.php:768 msgid "A separate table for events that are temporarily disabled." msgstr "" -#: src/Admin/AdminPage.php:766 +#: src/Admin/AdminPage.php:769 msgid "" "A table of all available intervals (hourly, daily, etc.) with their duration." msgstr "" -#: src/Admin/AdminPage.php:85 src/Admin/AdminPage.php:106 -#: src/Admin/AdminPage.php:638 +#: src/Admin/AdminPage.php:88 src/Admin/AdminPage.php:109 +#: src/Admin/AdminPage.php:641 msgid "About WP Queue" msgstr "" -#: src/Admin/AdminPage.php:198 +#: src/Admin/AdminPage.php:201 msgid "Action completed successfully" msgstr "" -#: src/Admin/AdminPage.php:782 src/Admin/AdminPage.php:1743 -#: src/Admin/AdminPage.php:1942 +#: src/Admin/AdminPage.php:785 src/Admin/AdminPage.php:1746 +#: src/Admin/AdminPage.php:1984 msgid "Action Scheduler" msgstr "" -#: src/Admin/AdminPage.php:481 src/Admin/AdminPage.php:594 -#: src/Admin/AdminPage.php:1483 src/Admin/AdminPage.php:1558 -#: src/Admin/AdminPage.php:2207 +#: src/Admin/AdminPage.php:484 src/Admin/AdminPage.php:597 +#: src/Admin/AdminPage.php:1486 src/Admin/AdminPage.php:1561 +#: src/Admin/AdminPage.php:2255 msgid "Actions" msgstr "" -#: src/Admin/AdminPage.php:428 src/Admin/AdminPage.php:1055 -#: src/Admin/AdminPage.php:1367 src/Admin/AdminPage.php:1872 +#: src/Admin/AdminPage.php:431 src/Admin/AdminPage.php:1058 +#: src/Admin/AdminPage.php:1370 src/Admin/AdminPage.php:1911 msgid "Active" msgstr "" -#: src/Admin/AdminPage.php:1100 +#: src/Admin/AdminPage.php:2297 +msgid "Add this to wp-config.php:" +msgstr "" + +#: src/Admin/AdminPage.php:1103 msgid "Add to wp-config.php:" msgstr "" -#: src/Admin/AdminPage.php:615 +#: src/Admin/AdminPage.php:618 msgid "ago (overdue)" msgstr "" @@ -96,39 +128,39 @@ msgstr "" msgid "Aleksei Tikhomirov" msgstr "" -#: src/Admin/AdminPage.php:837 src/Admin/AdminPage.php:1459 +#: src/Admin/AdminPage.php:840 src/Admin/AdminPage.php:1462 msgid "All" msgstr "" -#: src/Admin/AdminPage.php:848 +#: src/Admin/AdminPage.php:851 msgid "All queues" msgstr "" -#: src/Admin/AdminPage.php:1657 +#: src/Admin/AdminPage.php:1660 msgid "All systems are healthy." msgstr "" -#: src/Admin/AdminPage.php:1709 +#: src/Admin/AdminPage.php:1712 msgid "Alternate Cron" msgstr "" -#: src/Admin/AdminPage.php:199 +#: src/Admin/AdminPage.php:202 msgid "An error occurred" msgstr "" -#: src/Admin/AdminPage.php:196 +#: src/Admin/AdminPage.php:199 msgid "Are you sure you want to clear this queue?" msgstr "" -#: src/Admin/AdminPage.php:478 src/Admin/AdminPage.php:960 +#: src/Admin/AdminPage.php:481 src/Admin/AdminPage.php:963 msgid "Attempts" msgstr "" -#: src/Admin/AdminPage.php:167 +#: src/Admin/AdminPage.php:170 msgid "Author Website" msgstr "" -#: src/Admin/AdminPage.php:479 +#: src/Admin/AdminPage.php:482 msgid "Available From" msgstr "" @@ -138,19 +170,19 @@ msgid "" "tasks, manage queues, and monitor cron events." msgstr "" -#: src/Admin/AdminPage.php:122 +#: src/Admin/AdminPage.php:125 msgid "Basic Usage" msgstr "" -#: src/Admin/AdminPage.php:748 +#: src/Admin/AdminPage.php:751 msgid "Button to delete old log entries to avoid cluttering the database." msgstr "" -#: src/Admin/AdminPage.php:746 +#: src/Admin/AdminPage.php:749 msgid "Buttons to show all entries, only completed, or only failed jobs." msgstr "" -#: src/Admin/AdminPage.php:650 +#: src/Admin/AdminPage.php:653 msgid "" "By default, WordPress executes all actions during the page load request. If " "a plugin needs to send 100 emails or sync 500 products with an external API, " @@ -158,7 +190,7 @@ msgid "" "timeouts." msgstr "" -#: src/Admin/AdminPage.php:698 +#: src/Admin/AdminPage.php:701 msgid "" "By default, WP Queue stores jobs in the WordPress database (wp_options or " "custom tables). For high-performance sites, you can use Redis. Redis is an " @@ -166,129 +198,139 @@ msgid "" "operations. It reduces load on your database and speeds up job processing." msgstr "" -#: src/Admin/AdminPage.php:1623 +#: src/Admin/AdminPage.php:1626 msgid "Cancel" msgstr "" -#: src/QueueManager.php:318 +#: src/QueueManager.php:500 #, php-format msgid "Cannot connect to Memcached at %s:%d - %s" msgstr "" -#: src/QueueManager.php:266 +#: src/QueueManager.php:297 src/QueueManager.php:375 src/QueueManager.php:448 #, php-format msgid "Cannot connect to Redis at %s:%d - %s" msgstr "" -#: src/Admin/AdminPage.php:114 +#: src/Admin/AdminPage.php:117 msgid "Check basic system requirements that affect queue stability." msgstr "" -#: src/Admin/AdminPage.php:1037 +#: src/Admin/AdminPage.php:1040 msgid "Check driver settings." msgstr "" -#: src/Admin/AdminPage.php:751 +#: src/Admin/AdminPage.php:754 msgid "Check logs when encountering errors in background processes." msgstr "" -#: src/Admin/AdminPage.php:785 +#: src/Admin/AdminPage.php:788 msgid "Check this tab when setting up your server or debugging queue issues." msgstr "" -#: src/Admin/AdminPage.php:781 +#: src/Admin/AdminPage.php:784 msgid "" "Checking for disablement (DISABLE_WP_CRON), alternative cron, loopback " "requests." msgstr "" -#: src/Admin/AdminPage.php:777 +#: src/Admin/AdminPage.php:780 msgid "" "Checking system requirements and environment for stable queue operation." msgstr "" -#: src/Admin/AdminPage.php:451 +#: src/Admin/AdminPage.php:454 msgid "Clear" msgstr "" -#: src/Admin/AdminPage.php:1995 +#: src/Admin/AdminPage.php:2037 msgid "Clear All" msgstr "" -#: src/Admin/AdminPage.php:1983 +#: src/Admin/AdminPage.php:2025 msgid "Clear All Logs" msgstr "" -#: src/Admin/AdminPage.php:1993 +#: src/Admin/AdminPage.php:2035 msgid "Clear All Queues" msgstr "" -#: src/Admin/AdminPage.php:1981 +#: src/Admin/AdminPage.php:2023 msgid "Clear Logs" msgstr "" -#: src/Admin/AdminPage.php:748 +#: src/Admin/AdminPage.php:751 msgid "Clear logs" msgstr "" -#: src/Admin/AdminPage.php:860 +#: src/Admin/AdminPage.php:863 msgid "Clear old" msgstr "" -#: src/Admin/AdminPage.php:567 +#: src/Admin/AdminPage.php:570 msgid "Close" msgstr "" -#: src/Admin/AdminPage.php:783 +#: src/Admin/AdminPage.php:786 msgid "" "Comparison of server time, WordPress, and GMT offset for diagnosing " "scheduling issues." msgstr "" -#: src/Admin/AdminPage.php:326 src/Admin/AdminPage.php:352 -#: src/Admin/AdminPage.php:840 src/Admin/AdminPage.php:1820 +#: src/Admin/AdminPage.php:329 src/Admin/AdminPage.php:355 +#: src/Admin/AdminPage.php:843 src/Admin/AdminPage.php:1823 msgid "Completed" msgstr "" -#: src/Admin/AdminPage.php:1856 +#: src/Admin/AdminPage.php:1885 msgid "Component Status" msgstr "" -#: src/Admin/AdminPage.php:366 +#: src/Admin/AdminPage.php:369 msgid "Configure" msgstr "" -#: src/Admin/AdminPage.php:2095 +#: src/Admin/AdminPage.php:2137 msgid "Configure automatic retries on errors:" msgstr "" -#: src/Admin/AdminPage.php:1109 +#: src/Admin/AdminPage.php:1112 msgid "Configure Memcached" msgstr "" -#: src/Admin/AdminPage.php:1103 +#: src/Admin/AdminPage.php:1106 msgid "Configure Redis" msgstr "" -#: src/Admin/AdminPage.php:1870 +#: src/Admin/AdminPage.php:1909 msgid "Configure system cron" msgstr "" -#: src/QueueManager.php:307 +#: src/QueueManager.php:489 #, php-format msgid "Connected to Memcached at %s:%d" msgstr "" -#: src/QueueManager.php:255 +#: src/QueueManager.php:289 +#, php-format +msgid "Connected to Redis at %s:%d (phpredis)" +msgstr "" + +#: src/QueueManager.php:440 +#, php-format +msgid "Connected to Redis at %s:%d (Predis)" +msgstr "" + +#: src/QueueManager.php:349 src/QueueManager.php:367 #, php-format -msgid "Connected to Redis at %s:%d" +msgid "Connected to Redis at %s:%d (via redis-cache plugin)" msgstr "" -#: src/Admin/AdminPage.php:2038 +#: src/Admin/AdminPage.php:2080 msgid "Create a job class and dispatch it to the queue:" msgstr "" -#: src/Admin/AdminPage.php:768 +#: src/Admin/AdminPage.php:771 msgid "Critical for understanding why tasks are not running on time." msgstr "" @@ -304,105 +346,113 @@ msgstr "" msgid "Cron event updated" msgstr "" -#: src/Admin/AdminPage.php:50 +#: src/Admin/AdminPage.php:52 msgid "Cron Events" msgstr "" -#: src/Admin/AdminPage.php:1043 -msgid "Current driver:" +#: src/Admin/AdminPage.php:1680 +msgid "Current Memory Usage" msgstr "" -#: src/Admin/AdminPage.php:1677 -msgid "Current Memory Usage" +#: src/Admin/AdminPage.php:1046 +msgid "Current storage backend:" msgstr "" -#: src/QueueManager.php:207 src/QueueManager.php:351 src/QueueManager.php:353 +#: src/QueueManager.php:207 src/QueueManager.php:533 src/QueueManager.php:535 msgid "Custom driver" msgstr "" -#: src/Admin/AdminPage.php:710 +#: src/Admin/AdminPage.php:1865 +msgid "Daemon process" +msgstr "" + +#: src/Admin/AdminPage.php:58 src/Admin/AdminPage.php:2288 +msgid "Daemon worker" +msgstr "" + +#: src/Admin/AdminPage.php:713 msgid "Dashboard" msgstr "" -#: src/Admin/AdminPage.php:125 +#: src/Admin/AdminPage.php:128 msgid "" "Dashboard – quick overview of queues, number of jobs and recent activity." msgstr "" -#: src/Admin/AdminPage.php:2056 +#: src/Admin/AdminPage.php:2098 msgid "Delayed Jobs" msgstr "" -#: src/Admin/AdminPage.php:527 src/Admin/AdminPage.php:1539 -#: src/Admin/AdminPage.php:1540 +#: src/Admin/AdminPage.php:530 src/Admin/AdminPage.php:1542 +#: src/Admin/AdminPage.php:1543 msgid "Delete" msgstr "" -#: src/Admin/AdminPage.php:864 +#: src/Admin/AdminPage.php:867 msgid "Delete all" msgstr "" -#: src/Admin/AdminPage.php:1982 +#: src/Admin/AdminPage.php:2024 msgid "Deletes all job execution logs" msgstr "" -#: src/Admin/AdminPage.php:1994 +#: src/Admin/AdminPage.php:2036 msgid "Deletes all jobs from all queues" msgstr "" -#: src/Admin/AdminPage.php:858 +#: src/Admin/AdminPage.php:861 msgid "Deletes logs older than 7 days" msgstr "" -#: src/Admin/AdminPage.php:1054 +#: src/Admin/AdminPage.php:1057 msgid "Description" msgstr "" -#: src/Admin/AdminPage.php:706 +#: src/Admin/AdminPage.php:709 msgid "Detailed description of the panel tabs" msgstr "" -#: src/Admin/AdminPage.php:524 +#: src/Admin/AdminPage.php:527 msgid "Details" msgstr "" -#: src/Admin/AdminPage.php:117 +#: src/Admin/AdminPage.php:120 msgid "" "Developers can dispatch their own jobs to the queue, choose drivers " "(Database, Sync, Redis), configure retries and schedules. See the " "documentation and examples on GitHub for integration details." msgstr "" -#: src/Admin/AdminPage.php:1702 +#: src/Admin/AdminPage.php:1705 msgid "" "DISABLE_WP_CRON is set to true. Background tasks will not run automatically." msgstr "" -#: src/Admin/AdminPage.php:1364 src/Admin/AdminPage.php:1701 -#: src/Admin/AdminPage.php:1714 src/Admin/AdminPage.php:1869 +#: src/Admin/AdminPage.php:1367 src/Admin/AdminPage.php:1704 +#: src/Admin/AdminPage.php:1717 src/Admin/AdminPage.php:1908 msgid "Disabled" msgstr "" -#: src/Admin/AdminPage.php:664 +#: src/Admin/AdminPage.php:667 msgid "Dispatch" msgstr "" -#: src/Admin/AdminPage.php:1586 +#: src/Admin/AdminPage.php:1589 msgid "Display" msgstr "" -#: src/Admin/AdminPage.php:582 +#: src/Admin/AdminPage.php:585 msgid "" "Displays a table of scheduled recurring tasks (PHP classes) registered in WP " "Queue: job class, execution interval, queue assignment, and next run time. " "Allows you to run any task manually." msgstr "" -#: src/Admin/AdminPage.php:730 +#: src/Admin/AdminPage.php:733 msgid "Displays all registered PHP job classes with their configuration." msgstr "" -#: src/Admin/AdminPage.php:1641 +#: src/Admin/AdminPage.php:1644 msgid "" "Displays environment information (PHP and WordPress versions, memory limits, " "execution time, timezone), WP-Cron status (disabled, alternative cron, " @@ -410,101 +460,90 @@ msgid "" "and WordPress time." msgstr "" -#: src/Admin/AdminPage.php:749 +#: src/Admin/AdminPage.php:752 msgid "Displays the last 200 entries by default or all completed/failed." msgstr "" -#: src/Admin/AdminPage.php:715 +#: src/Admin/AdminPage.php:718 msgid "" "Displays the total number of tasks in different statuses (pending, running, " "completed, failed)." msgstr "" -#: src/Admin/AdminPage.php:733 +#: src/Admin/AdminPage.php:736 msgid "Displays when the job should run next or marks overdue jobs." msgstr "" -#: src/Admin/AdminPage.php:2077 +#: src/Admin/AdminPage.php:2119 msgid "Distribute jobs across different queues:" msgstr "" -#: src/Admin/AdminPage.php:2164 +#: src/Admin/AdminPage.php:2206 msgid "Documentation on GitHub" msgstr "" -#: src/Admin/AdminPage.php:1052 -msgid "Driver" -msgstr "" - -#: src/Admin/AdminPage.php:1031 -#, php-format -msgid "" -"Driver \"%s\" is configured in wp-config.php, but not available. Falling " -"back to \"%s\"." -msgstr "" - -#: src/Admin/AdminPage.php:363 +#: src/Admin/AdminPage.php:366 msgid "Driver:" msgstr "" -#: src/Admin/AdminPage.php:46 +#: src/Admin/AdminPage.php:48 msgid "Drivers" msgstr "" -#: src/Admin/AdminPage.php:1526 +#: src/Admin/AdminPage.php:1529 msgid "Edit" msgstr "" -#: src/Admin/AdminPage.php:1603 +#: src/Admin/AdminPage.php:1606 msgid "Edit Cron Event" msgstr "" -#: src/Admin/AdminPage.php:1525 +#: src/Admin/AdminPage.php:1528 msgid "Edit Schedule" msgstr "" -#: src/Admin/AdminPage.php:1704 src/Admin/AdminPage.php:1712 +#: src/Admin/AdminPage.php:1707 src/Admin/AdminPage.php:1715 msgid "Enabled" msgstr "" -#: src/Admin/AdminPage.php:780 src/Admin/AdminPage.php:1661 +#: src/Admin/AdminPage.php:783 src/Admin/AdminPage.php:1664 msgid "Environment" msgstr "" -#: src/Admin/AdminPage.php:1729 +#: src/Admin/AdminPage.php:1732 src/Admin/AdminPage.php:1927 msgid "Error" msgstr "" -#: src/Admin/AdminPage.php:961 +#: src/Admin/AdminPage.php:964 msgid "Error message" msgstr "" -#: src/Admin/AdminPage.php:1824 +#: src/Admin/AdminPage.php:1827 msgid "Errors" msgstr "" -#: src/Admin/AdminPage.php:764 +#: src/Admin/AdminPage.php:767 msgid "Event actions" msgstr "" -#: src/Admin/AdminPage.php:763 +#: src/Admin/AdminPage.php:766 msgid "" "Event hook, next run time, schedule (single/hourly/daily), source, arguments." msgstr "" -#: src/Admin/AdminPage.php:762 +#: src/Admin/AdminPage.php:765 msgid "Event statistics" msgstr "" -#: src/Admin/AdminPage.php:763 +#: src/Admin/AdminPage.php:766 msgid "Event table" msgstr "" -#: src/Admin/AdminPage.php:1382 +#: src/Admin/AdminPage.php:1385 msgid "events" msgstr "" -#: src/Admin/AdminPage.php:1372 +#: src/Admin/AdminPage.php:1375 msgid "Events by Source" msgstr "" @@ -513,18 +552,22 @@ msgstr "" msgid "Every %d Minutes" msgstr "" -#: src/Admin/AdminPage.php:747 +#: src/Admin/AdminPage.php:2218 +msgid "Example Plugin on GitHub" +msgstr "" + +#: src/Admin/AdminPage.php:750 msgid "" "Execution time, status (completed/failed/retrying), job class, queue, error " "message." msgstr "" -#: src/Admin/AdminPage.php:45 src/Admin/AdminPage.php:327 -#: src/Admin/AdminPage.php:356 src/Admin/AdminPage.php:843 +#: src/Admin/AdminPage.php:47 src/Admin/AdminPage.php:330 +#: src/Admin/AdminPage.php:359 src/Admin/AdminPage.php:846 msgid "Failed" msgstr "" -#: src/Admin/AdminPage.php:1760 +#: src/Admin/AdminPage.php:1763 msgid "Failed Actions" msgstr "" @@ -540,70 +583,74 @@ msgstr "" msgid "Failed to update event" msgstr "" -#: src/Admin/AdminPage.php:116 src/Admin/AdminPage.php:132 +#: src/Admin/AdminPage.php:119 src/Admin/AdminPage.php:135 msgid "For developers" msgstr "" -#: src/Admin/AdminPage.php:164 +#: src/Admin/AdminPage.php:167 msgid "For more information:" msgstr "" -#: src/Admin/AdminPage.php:1117 +#: src/Admin/AdminPage.php:1120 msgid "" "For Redis/Memcached to work, you need the PHP extension installed and a " "server available. If not, the system will automatically use the \"database\" " "driver." msgstr "" -#: src/Admin/AdminPage.php:123 +#: src/Admin/AdminPage.php:126 msgid "For site administrators" msgstr "" -#: src/Admin/AdminPage.php:1988 +#: src/Admin/AdminPage.php:2030 msgid "Forces processing of all queues" msgstr "" -#: src/Admin/AdminPage.php:504 src/Admin/AdminPage.php:615 +#: src/Admin/AdminPage.php:507 src/Admin/AdminPage.php:618 msgid "from now" msgstr "" #. %s: URL to GitHub repository -#: src/Admin/AdminPage.php:795 +#: src/Admin/AdminPage.php:798 #, php-format msgid "Full documentation and code examples are available on GitHub: %s." msgstr "" -#: src/Admin/AdminPage.php:165 +#: src/Admin/AdminPage.php:168 msgid "GitHub Repository" msgstr "" -#: src/Admin/AdminPage.php:1788 +#: src/Admin/AdminPage.php:1791 msgid "GMT Offset" msgstr "" -#: src/Admin/AdminPage.php:57 +#: src/Admin/AdminPage.php:60 msgid "Help" msgstr "" -#: src/Admin/AdminPage.php:44 +#: src/Admin/AdminPage.php:46 msgid "History" msgstr "" -#: src/Admin/AdminPage.php:744 +#: src/Admin/AdminPage.php:747 msgid "History of all job executions for diagnostics and debugging." msgstr "" -#: src/Admin/AdminPage.php:1402 src/Admin/AdminPage.php:1479 -#: src/Admin/AdminPage.php:1555 src/Admin/AdminPage.php:2204 +#: src/Admin/AdminPage.php:1405 src/Admin/AdminPage.php:1482 +#: src/Admin/AdminPage.php:1558 src/Admin/AdminPage.php:2252 msgid "Hook" msgstr "" -#: src/Admin/AdminPage.php:662 +#: src/Admin/AdminPage.php:665 msgid "How Queues Work" msgstr "" -#: src/Admin/AdminPage.php:1099 -msgid "How to change the driver?" +#: src/Admin/AdminPage.php:1102 +msgid "How to change the storage backend?" +msgstr "" + +#: src/Admin/AdminPage.php:2289 +msgid "How to run WP Queue as a long-running background process." msgstr "" #. URI of the plugin @@ -614,110 +661,146 @@ msgstr "" msgid "https://rwsite.ru" msgstr "" -#: src/Admin/AdminPage.php:476 +#: src/Admin/AdminPage.php:479 msgid "ID" msgstr "" -#: src/Admin/AdminPage.php:322 +#: src/Admin/AdminPage.php:325 msgid "Idle" msgstr "" -#: src/Admin/AdminPage.php:782 +#: src/Admin/AdminPage.php:785 msgid "" "If installed, displays version and statistics (pending/running/failed " "actions)." msgstr "" -#: src/Admin/AdminPage.php:131 +#: src/Admin/AdminPage.php:2369 +msgid "" +"If the worker is not running, queues will not be processed in daemon mode. " +"Make sure the process is started and monitored." +msgstr "" + +#: src/Admin/AdminPage.php:2309 +msgid "" +"If WP-CLI is not available, create a PHP script that boots WordPress and " +"runs the worker loop:" +msgstr "" + +#: src/Admin/AdminPage.php:134 msgid "" "If you installed WP Queue because another plugin requires it, you usually do " "not need to configure anything here. Use these tabs mainly for monitoring " "and troubleshooting." msgstr "" -#: src/Admin/AdminPage.php:1116 +#: src/Admin/AdminPage.php:1119 msgid "Important:" msgstr "" -#: src/Admin/AdminPage.php:344 +#: src/Admin/AdminPage.php:347 msgid "In Queue" msgstr "" -#: src/Admin/AdminPage.php:113 +#: src/Admin/AdminPage.php:2299 +msgid "" +"In this mode WP-Cron scheduling and loopback requests are disabled " +"automatically." +msgstr "" + +#: src/Admin/AdminPage.php:116 msgid "Inspect and manage WP-Cron events for WP Queue and other plugins." msgstr "" -#: src/Admin/AdminPage.php:1081 +#: src/Admin/AdminPage.php:1084 msgid "Install: pecl install memcached" msgstr "" -#: src/Admin/AdminPage.php:1079 +#: src/Admin/AdminPage.php:1082 msgid "Install: pecl install redis" msgstr "" -#: src/Admin/AdminPage.php:1585 +#: src/Admin/AdminPage.php:1588 msgid "Interval" msgstr "" -#: src/Admin/AdminPage.php:590 src/Admin/AdminPage.php:874 -#: src/Admin/AdminPage.php:958 src/Admin/AdminPage.php:1162 +#: src/Admin/AdminPage.php:593 src/Admin/AdminPage.php:877 +#: src/Admin/AdminPage.php:961 src/Admin/AdminPage.php:1165 msgid "Job" msgstr "" -#: src/Admin/AdminPage.php:477 +#: src/Admin/AdminPage.php:480 msgid "Job Class" msgstr "" -#: src/Admin/AdminPage.php:731 +#: src/Admin/AdminPage.php:734 msgid "" "Job class, execution interval (e.g., \"hourly\", \"daily\"), queue " "assignment, next run time." msgstr "" -#: src/Admin/AdminPage.php:564 +#: src/Admin/AdminPage.php:567 msgid "Job Details" msgstr "" -#: src/Admin/AdminPage.php:731 +#: src/Admin/AdminPage.php:734 msgid "Job information" msgstr "" -#: src/Admin/AdminPage.php:730 +#: src/Admin/AdminPage.php:733 msgid "Job list" msgstr "" -#: src/Admin/AdminPage.php:384 +#: src/Admin/AdminPage.php:387 msgid "jobs" msgstr "" -#: src/Admin/AdminPage.php:43 +#: src/Admin/AdminPage.php:45 msgid "Jobs in Queue" msgstr "" -#: src/Admin/AdminPage.php:747 +#: src/Admin/AdminPage.php:750 msgid "Log table" msgstr "" -#: src/Admin/AdminPage.php:741 +#: src/Admin/AdminPage.php:744 msgid "Logs" msgstr "" -#: src/Admin/AdminPage.php:127 +#: src/Admin/AdminPage.php:130 msgid "" "Logs – history of completed and failed jobs that helps to diagnose problems." msgstr "" -#: src/Admin/AdminPage.php:1877 +#: src/Admin/AdminPage.php:1916 msgid "Loopback" msgstr "" +#: src/Admin/AdminPage.php:1879 +msgid "" +"Loopback is disabled. Jobs will be processed only by WP-Cron, which can " +"delay execution by up to one minute. Run a daemon worker for instant " +"processing." +msgstr "" + +#: src/Admin/AdminPage.php:1871 +msgid "Loopback is enabled and working. Jobs start immediately after dispatch." +msgstr "" + +#: src/Admin/AdminPage.php:1875 +msgid "" +"Loopback is inactive. Jobs will be processed only by WP-Cron, which can " +"delay execution by up to one minute. Enable loopback or run a daemon worker " +"for instant processing." +msgstr "" + #. %s: loopback error message #: src/Admin/SystemStatus.php:271 #, php-format msgid "Loopback issue: %s" msgstr "" -#: src/Admin/AdminPage.php:1719 +#: src/Admin/AdminPage.php:1722 msgid "Loopback Request" msgstr "" @@ -725,29 +808,29 @@ msgstr "" msgid "Loopback request successful" msgstr "" -#: src/Admin/AdminPage.php:2139 +#: src/Admin/AdminPage.php:2181 msgid "Manage queues from command line:" msgstr "" -#: src/Admin/AdminPage.php:728 +#: src/Admin/AdminPage.php:731 msgid "Management of scheduled recurring tasks." msgstr "" -#: src/Admin/AdminPage.php:760 +#: src/Admin/AdminPage.php:763 msgid "" "Management of WordPress system timers that trigger background processes." msgstr "" -#: src/Admin/AdminPage.php:732 +#: src/Admin/AdminPage.php:735 msgid "Manual run" msgstr "" -#: src/Admin/AdminPage.php:1684 src/Admin/AdminPage.php:1911 +#: src/Admin/AdminPage.php:1687 src/Admin/AdminPage.php:1953 msgid "Max Execution Time" msgstr "" -#: src/Admin/AdminPage.php:1673 src/Admin/AdminPage.php:1828 -#: src/Admin/AdminPage.php:1903 +#: src/Admin/AdminPage.php:1676 src/Admin/AdminPage.php:1831 +#: src/Admin/AdminPage.php:1945 msgid "Memory Limit" msgstr "" @@ -755,155 +838,171 @@ msgstr "" msgid "Memory usage is above 80%." msgstr "" -#: src/Admin/AdminPage.php:876 +#: src/Admin/AdminPage.php:879 msgid "Message" msgstr "" -#: src/Admin/AdminPage.php:111 +#: src/Admin/AdminPage.php:114 msgid "Monitor which background jobs are queued and running right now." msgstr "" -#: src/Admin/AdminPage.php:790 +#: src/Admin/AdminPage.php:793 msgid "More documentation" msgstr "" -#: src/Admin/AdminPage.php:1584 +#: src/Admin/AdminPage.php:1587 msgid "Name" msgstr "" -#: src/Admin/AdminPage.php:2076 +#: src/Admin/AdminPage.php:2118 msgid "Named Queues" msgstr "" -#: src/Admin/AdminPage.php:593 src/Admin/AdminPage.php:1403 -#: src/Admin/AdminPage.php:1480 +#: src/Admin/AdminPage.php:596 src/Admin/AdminPage.php:1406 +#: src/Admin/AdminPage.php:1483 msgid "Next Run" msgstr "" -#: src/Admin/AdminPage.php:733 +#: src/Admin/AdminPage.php:736 msgid "Next run status" msgstr "" -#: src/Admin/AdminPage.php:1168 +#: src/Admin/AdminPage.php:1171 msgid "No activity" msgstr "" -#: src/Admin/AdminPage.php:1489 +#: src/Admin/AdminPage.php:1492 msgid "No cron events found." msgstr "" -#: src/Admin/AdminPage.php:967 +#: src/Admin/AdminPage.php:970 msgid "No errors" msgstr "" -#: src/Admin/AdminPage.php:1140 +#: src/Admin/AdminPage.php:1143 msgid "No extension" msgstr "" -#: src/Admin/AdminPage.php:882 +#: src/Admin/AdminPage.php:885 msgid "No logs found" msgstr "" -#: src/Admin/AdminPage.php:2198 +#: src/Admin/AdminPage.php:2246 msgid "No paused events" msgstr "" -#: src/Admin/AdminPage.php:1397 +#: src/Admin/AdminPage.php:1400 msgid "No scheduled events" msgstr "" -#: src/Admin/AdminPage.php:600 +#: src/Admin/AdminPage.php:603 msgid "No scheduled jobs found." msgstr "" -#: src/Admin/AdminPage.php:1144 +#: src/Admin/AdminPage.php:1147 msgid "No server" msgstr "" -#: src/Admin/AdminPage.php:779 +#: src/Admin/AdminPage.php:782 msgid "Notifications of critical issues (low memory, disabled WP-Cron)." msgstr "" -#: src/Admin/AdminPage.php:506 +#: src/Admin/AdminPage.php:509 msgid "Now" msgstr "" -#: src/Admin/AdminPage.php:749 +#: src/Admin/AdminPage.php:752 msgid "Number of entries" msgstr "" -#: src/Admin/AdminPage.php:1725 +#: src/Admin/AdminPage.php:1728 src/Admin/AdminPage.php:1925 msgid "OK" msgstr "" -#: src/Admin/AdminPage.php:2214 +#: src/Admin/AdminPage.php:2262 msgid "One-time" msgstr "" -#: src/Admin/AdminPage.php:1351 src/Admin/AdminPage.php:1446 -#: src/Admin/AdminPage.php:1502 src/Admin/CronMonitor.php:220 +#: src/Admin/AdminPage.php:2331 +msgid "Option A: systemd service" +msgstr "" + +#: src/Admin/AdminPage.php:2348 +msgid "Option B: Supervisor" +msgstr "" + +#: src/Admin/AdminPage.php:2358 +msgid "Option C: Docker Compose" +msgstr "" + +#: src/Admin/AdminPage.php:2364 +msgid "Option D: plain PHP script" +msgstr "" + +#: src/Admin/AdminPage.php:1354 src/Admin/AdminPage.php:1449 +#: src/Admin/AdminPage.php:1505 src/Admin/CronMonitor.php:220 msgid "Overdue" msgstr "" -#: src/Admin/AdminPage.php:42 src/Admin/AdminPage.php:49 -#: src/Admin/AdminPage.php:250 +#: src/Admin/AdminPage.php:44 src/Admin/AdminPage.php:51 +#: src/Admin/AdminPage.php:253 msgid "Overview" msgstr "" -#: src/Admin/AdminPage.php:442 src/Admin/AdminPage.php:1532 -#: src/Admin/AdminPage.php:1533 +#: src/Admin/AdminPage.php:445 src/Admin/AdminPage.php:1535 +#: src/Admin/AdminPage.php:1536 msgid "Pause" msgstr "" -#: src/Admin/AdminPage.php:197 +#: src/Admin/AdminPage.php:200 msgid "Pause this queue?" msgstr "" -#: src/Admin/AdminPage.php:52 src/Admin/AdminPage.php:325 -#: src/Admin/AdminPage.php:424 src/Admin/AdminPage.php:1355 +#: src/Admin/AdminPage.php:54 src/Admin/AdminPage.php:328 +#: src/Admin/AdminPage.php:427 src/Admin/AdminPage.php:1358 msgid "Paused" msgstr "" -#: src/Admin/AdminPage.php:1557 +#: src/Admin/AdminPage.php:1560 msgid "Paused At" msgstr "" -#: src/Admin/AdminPage.php:1551 +#: src/Admin/AdminPage.php:1554 msgid "Paused Events" msgstr "" -#: src/Admin/AdminPage.php:765 +#: src/Admin/AdminPage.php:768 msgid "Paused events" msgstr "" -#: src/Admin/AdminPage.php:2206 +#: src/Admin/AdminPage.php:2254 msgid "Paused Since" msgstr "" -#: src/Admin/AdminPage.php:323 src/Admin/AdminPage.php:464 -#: src/Admin/AdminPage.php:1951 +#: src/Admin/AdminPage.php:326 src/Admin/AdminPage.php:467 +#: src/Admin/AdminPage.php:1993 msgid "Pending" msgstr "" -#: src/Admin/AdminPage.php:1752 +#: src/Admin/AdminPage.php:1755 msgid "Pending Actions" msgstr "" -#: src/Admin/AdminPage.php:1849 src/Admin/AdminPage.php:1899 +#: src/Admin/AdminPage.php:1852 src/Admin/AdminPage.php:1941 msgid "PHP" msgstr "" -#: src/Admin/AdminPage.php:780 +#: src/Admin/AdminPage.php:783 msgid "" "PHP and WordPress versions, memory limits (current usage), maximum execution " "time, timezone." msgstr "" -#: src/QueueManager.php:288 +#: src/QueueManager.php:470 msgid "PHP extension \"memcached\" is not installed" msgstr "" -#: src/QueueManager.php:235 +#: src/QueueManager.php:267 msgid "PHP extension \"redis\" (phpredis) is not installed" msgstr "" @@ -911,279 +1010,326 @@ msgstr "" msgid "PHP max_execution_time is less than 30 seconds." msgstr "" -#: src/Admin/AdminPage.php:1665 +#: src/Admin/AdminPage.php:1668 msgid "PHP Version" msgstr "" -#: src/Admin/AdminPage.php:1471 +#: src/Admin/AdminPage.php:1474 msgid "Plugins" msgstr "" -#: src/Admin/AdminPage.php:667 +#: src/QueueManager.php:416 +msgid "Predis library is not available" +msgstr "" + +#: src/Admin/AdminPage.php:670 msgid "Process" msgstr "" -#: src/Admin/AdminPage.php:447 src/Admin/AdminPage.php:1989 +#: src/Admin/AdminPage.php:450 src/Admin/AdminPage.php:2031 msgid "Process Now" msgstr "" -#: src/Admin/AdminPage.php:1987 +#: src/Admin/AdminPage.php:2029 msgid "Process Queues" msgstr "" -#: src/Admin/AdminPage.php:426 src/Admin/AdminPage.php:468 +#: src/Admin/AdminPage.php:429 src/Admin/AdminPage.php:471 msgid "Processing" msgstr "" -#: src/Admin/AdminPage.php:592 src/Admin/AdminPage.php:875 -#: src/Admin/AdminPage.php:959 +#: src/Admin/AdminPage.php:595 src/Admin/AdminPage.php:878 +#: src/Admin/AdminPage.php:962 msgid "Queue" msgstr "" -#: src/Admin/AdminPage.php:1860 -msgid "Queue Driver" +#: src/Admin/AdminPage.php:1895 +msgid "Queue handler" msgstr "" -#: src/Admin/AdminPage.php:487 +#: src/Admin/AdminPage.php:490 msgid "Queue is empty" msgstr "" -#: src/Admin/AdminPage.php:715 +#: src/Admin/AdminPage.php:718 msgid "Queue statistics" msgstr "" -#: src/Admin/AdminPage.php:716 +#: src/Admin/AdminPage.php:1889 +msgid "Queue Storage backend" +msgstr "" + +#: src/Admin/AdminPage.php:719 msgid "Queue table" msgstr "" -#: src/Admin/AdminPage.php:420 +#: src/Admin/AdminPage.php:423 #, php-format msgid "Queue: %s" msgstr "" -#: src/Admin/AdminPage.php:35 src/Admin/AdminPage.php:371 +#: src/Admin/AdminPage.php:37 src/Admin/AdminPage.php:374 msgid "Queues" msgstr "" -#: src/Admin/AdminPage.php:2037 +#: src/Admin/AdminPage.php:2079 msgid "Quick Start" msgstr "" -#: src/Admin/AdminPage.php:112 +#: src/Admin/AdminPage.php:115 msgid "Quickly see if any jobs are failing and view recent log entries." msgstr "" -#: src/Admin/AdminPage.php:1136 +#: src/Admin/AdminPage.php:1139 msgid "Ready" msgstr "" -#: src/Admin/AdminPage.php:395 +#: src/Admin/AdminPage.php:398 msgid "Recent Activity" msgstr "" -#: src/Admin/AdminPage.php:717 +#: src/Admin/AdminPage.php:720 msgid "Recent activity" msgstr "" -#: src/Admin/AdminPage.php:696 +#: src/QueueManager.php:358 +msgid "Redis connection failed" +msgstr "" + +#: src/QueueManager.php:243 +msgid "Redis is disabled via WP_REDIS_DISABLED" +msgstr "" + +#: src/Admin/AdminPage.php:699 msgid "Redis Support" msgstr "" -#: src/Admin/AdminPage.php:1580 +#: src/Admin/AdminPage.php:1583 msgid "Registered Schedules" msgstr "" -#: src/Admin/AdminPage.php:766 +#: src/Admin/AdminPage.php:769 msgid "Registered schedules" msgstr "" -#: src/Admin/AdminPage.php:2170 +#: src/Admin/AdminPage.php:2212 msgid "Report an Issue" msgstr "" -#: src/Admin/AdminPage.php:166 +#: src/Admin/AdminPage.php:169 msgid "Report Issues" msgstr "" -#: src/Admin/AdminPage.php:437 src/Admin/AdminPage.php:1571 -#: src/Admin/AdminPage.php:2220 +#: src/Admin/AdminPage.php:440 src/Admin/AdminPage.php:1574 +#: src/Admin/AdminPage.php:2268 msgid "Resume" msgstr "" -#: src/Admin/AdminPage.php:2094 +#: src/Admin/AdminPage.php:2136 msgid "Retry Attempts" msgstr "" -#: src/Admin/AdminPage.php:143 src/Admin/AdminPage.php:1518 +#: src/Admin/AdminPage.php:146 src/Admin/AdminPage.php:1521 msgid "Run" msgstr "" -#: src/Admin/AdminPage.php:622 src/Admin/AdminPage.php:1517 +#: src/Admin/AdminPage.php:625 src/Admin/AdminPage.php:1520 msgid "Run Now" msgstr "" -#: src/Admin/AdminPage.php:764 +#: src/Admin/AdminPage.php:767 msgid "" "Run now, edit schedule, pause, delete. Modal window for changing interval." msgstr "" -#: src/Admin/AdminPage.php:2116 +#: src/Admin/AdminPage.php:2158 msgid "Run tasks on schedule:" msgstr "" -#: src/Admin/AdminPage.php:324 src/Admin/AdminPage.php:348 +#: src/Admin/AdminPage.php:327 src/Admin/AdminPage.php:351 msgid "Running" msgstr "" -#: src/Admin/AdminPage.php:1756 +#: src/Admin/AdminPage.php:1759 msgid "Running Actions" msgstr "" -#: src/Admin/AdminPage.php:1622 +#: src/Admin/AdminPage.php:2346 +msgid "" +"Save as /etc/systemd/system/wp-queue-worker.service, then run systemctl " +"enable --now wp-queue-worker." +msgstr "" + +#: src/Admin/AdminPage.php:1625 msgid "Save Changes" msgstr "" -#: src/Admin/AdminPage.php:591 src/Admin/AdminPage.php:1481 -#: src/Admin/AdminPage.php:1556 src/Admin/AdminPage.php:1610 -#: src/Admin/AdminPage.php:2205 +#: src/Admin/AdminPage.php:2324 +msgid "Save the script, make it executable and run it in the background:" +msgstr "" + +#: src/Admin/AdminPage.php:594 src/Admin/AdminPage.php:1484 +#: src/Admin/AdminPage.php:1559 src/Admin/AdminPage.php:1613 +#: src/Admin/AdminPage.php:2253 msgid "Schedule" msgstr "" -#: src/Admin/AdminPage.php:2057 +#: src/Admin/AdminPage.php:2099 msgid "Schedule a job to run after a specific time:" msgstr "" -#: src/Admin/AdminPage.php:51 src/Admin/AdminPage.php:1347 +#: src/Admin/AdminPage.php:53 src/Admin/AdminPage.php:1350 msgid "Scheduled" msgstr "" -#: src/Admin/AdminPage.php:725 +#: src/Admin/AdminPage.php:728 msgid "Scheduled Jobs" msgstr "" -#: src/Admin/AdminPage.php:126 +#: src/Admin/AdminPage.php:129 msgid "" "Scheduled Jobs – list of recurring background jobs added by your theme or " "plugins." msgstr "" -#: src/Admin/AdminPage.php:36 src/Admin/AdminPage.php:2115 +#: src/Admin/AdminPage.php:38 src/Admin/AdminPage.php:2157 msgid "Scheduler" msgstr "" -#: src/Admin/AdminPage.php:1776 src/Admin/AdminPage.php:1780 -#: src/Admin/AdminPage.php:1922 +#: src/Admin/AdminPage.php:1779 src/Admin/AdminPage.php:1783 +#: src/Admin/AdminPage.php:1964 msgid "Server Time" msgstr "" -#: src/Admin/AdminPage.php:783 +#: src/Admin/AdminPage.php:786 msgid "Server time" msgstr "" -#: src/Admin/AdminPage.php:1507 src/Admin/AdminPage.php:1565 +#: src/Admin/AdminPage.php:1510 src/Admin/AdminPage.php:1568 msgid "Single" msgstr "" -#: src/Admin/AdminPage.php:1612 +#: src/Admin/AdminPage.php:1615 msgid "Single (run once)" msgstr "" -#: src/Admin/AdminPage.php:1404 src/Admin/AdminPage.php:1482 +#: src/Admin/AdminPage.php:1407 src/Admin/AdminPage.php:1485 msgid "Source" msgstr "" -#: src/Admin/AdminPage.php:480 src/Admin/AdminPage.php:873 -#: src/Admin/AdminPage.php:1053 src/Admin/AdminPage.php:1161 +#: src/Admin/AdminPage.php:2304 +msgid "Start the worker from the WordPress root:" +msgstr "" + +#: src/Admin/AdminPage.php:483 src/Admin/AdminPage.php:876 +#: src/Admin/AdminPage.php:1056 src/Admin/AdminPage.php:1164 msgid "Status" msgstr "" -#: src/Admin/AdminPage.php:746 +#: src/Admin/AdminPage.php:749 msgid "Status filters" msgstr "" -#: src/Admin/AdminPage.php:665 +#: src/Admin/AdminPage.php:668 msgid "Storage" msgstr "" +#: src/Admin/AdminPage.php:1055 +msgid "Storage backend" +msgstr "" + +#: src/Admin/AdminPage.php:1034 +#, php-format +msgid "" +"Storage backend \"%s\" is configured in wp-config.php, but not available. " +"Falling back to \"%s\"." +msgstr "" + #: src/QueueManager.php:198 msgid "Synchronous execution (no queue)" msgstr "" -#: src/Admin/AdminPage.php:37 src/Admin/AdminPage.php:774 +#: src/Admin/AdminPage.php:39 src/Admin/AdminPage.php:777 msgid "System" msgstr "" -#: src/Admin/AdminPage.php:686 +#: src/Admin/AdminPage.php:689 msgid "System Cron (Recommended)" msgstr "" -#: src/Admin/AdminPage.php:779 +#: src/Admin/AdminPage.php:782 msgid "System health" msgstr "" -#: src/Admin/AdminPage.php:1648 +#: src/Admin/AdminPage.php:1651 msgid "System Issues Detected:" msgstr "" -#: src/Admin/AdminPage.php:55 +#: src/Admin/AdminPage.php:57 msgid "System Status" msgstr "" -#: src/Admin/AdminPage.php:129 +#: src/Admin/AdminPage.php:132 msgid "" "System – checks PHP version, WP-Cron status and other important settings." msgstr "" -#: src/Admin/AdminPage.php:732 +#: src/Admin/AdminPage.php:735 msgid "" "The \"Run Now\" button allows you to run any job immediately, without " "waiting for the schedule." msgstr "" -#: src/Admin/AdminPage.php:665 +#: src/Admin/AdminPage.php:2329 +msgid "" +"The command above must stay alive. In production use one of the options " +"below." +msgstr "" + +#: src/Admin/AdminPage.php:668 msgid "The job is saved in the database (or Redis) waiting to be picked up." msgstr "" -#: src/Admin/AdminPage.php:717 +#: src/Admin/AdminPage.php:720 msgid "The last 10 log entries for quick tracking of queue activity." msgstr "" -#: src/Admin/AdminPage.php:713 +#: src/Admin/AdminPage.php:716 msgid "The main tab for monitoring queue status in real-time." msgstr "" -#: src/Admin/AdminPage.php:108 +#: src/Admin/AdminPage.php:111 msgid "" "The plugin itself does not add new features to the frontend. It provides a " "reliable queue that other plugins or your custom code can use for background " "work." msgstr "" -#: src/Admin/AdminPage.php:667 +#: src/Admin/AdminPage.php:670 msgid "" "The worker picks up the job and executes it. If it succeeds, it is marked as " "\"Completed\". If it fails, it can be retried." msgstr "" -#: src/Admin/AdminPage.php:314 +#: src/Admin/AdminPage.php:317 msgid "This section is under development." msgstr "" -#: src/Admin/AdminPage.php:872 src/Admin/AdminPage.php:957 -#: src/Admin/AdminPage.php:1160 src/Admin/AdminPage.php:1918 +#: src/Admin/AdminPage.php:875 src/Admin/AdminPage.php:960 +#: src/Admin/AdminPage.php:1163 src/Admin/AdminPage.php:1960 msgid "Time" msgstr "" -#: src/Admin/AdminPage.php:1832 +#: src/Admin/AdminPage.php:1835 msgid "Timeout" msgstr "" -#: src/Admin/AdminPage.php:1688 src/Admin/AdminPage.php:1930 +#: src/Admin/AdminPage.php:1691 src/Admin/AdminPage.php:1972 msgid "Timezone" msgstr "" #. %s: URL to GitHub repository -#: src/Admin/AdminPage.php:135 +#: src/Admin/AdminPage.php:138 #, php-format msgid "" "To add your own background jobs, use the WP Queue PHP API from your plugin " @@ -1192,43 +1338,43 @@ msgid "" "README on GitHub." msgstr "" -#: src/Admin/AdminPage.php:143 +#: src/Admin/AdminPage.php:146 msgid "to get a list of available commands." msgstr "" -#: src/Admin/AdminPage.php:672 +#: src/Admin/AdminPage.php:675 msgid "" "To process the queue, WordPress needs a trigger. There are two ways to do " "this:" msgstr "" -#: src/Admin/AdminPage.php:56 src/Admin/AdminPage.php:1977 +#: src/Admin/AdminPage.php:59 src/Admin/AdminPage.php:2019 msgid "Tools" msgstr "" -#: src/Admin/AdminPage.php:1442 +#: src/Admin/AdminPage.php:1445 msgid "Total" msgstr "" -#: src/Admin/AdminPage.php:950 +#: src/Admin/AdminPage.php:953 msgid "Total errors" msgstr "" -#: src/Admin/AdminPage.php:1343 +#: src/Admin/AdminPage.php:1346 msgid "Total Events" msgstr "" -#: src/Admin/AdminPage.php:460 +#: src/Admin/AdminPage.php:463 msgid "Total Jobs" msgstr "" -#: src/Admin/AdminPage.php:762 +#: src/Admin/AdminPage.php:765 msgid "" "Total number of events, overdue, grouped by source (WordPress, WooCommerce, " "WP Queue, plugins)." msgstr "" -#: src/Admin/AdminPage.php:1148 +#: src/Admin/AdminPage.php:1151 msgid "Unavailable" msgstr "" @@ -1237,7 +1383,8 @@ msgstr "" msgid "Unexpected response code: %d" msgstr "" -#: src/Admin/AdminPage.php:494 src/Admin/AdminPage.php:1264 +#: src/Admin/AdminPage.php:497 src/Admin/AdminPage.php:1267 +#: src/Admin/AdminPage.php:1928 msgid "Unknown" msgstr "" @@ -1245,33 +1392,48 @@ msgstr "" msgid "Unknown driver" msgstr "" -#: src/Admin/AdminPage.php:1393 +#: src/Admin/AdminPage.php:1396 msgid "Upcoming Events" msgstr "" -#: src/Admin/AdminPage.php:91 +#: src/Admin/AdminPage.php:94 msgid "Usage" msgstr "" -#: src/Admin/AdminPage.php:1365 +#: src/Admin/AdminPage.php:2294 +msgid "" +"Use a daemon worker on VPS, Docker or dedicated servers where you can keep a " +"process running. It polls the queue continuously and starts jobs immediately." +" Without a daemon, WP Queue relies on WP-Cron and/or loopback, which can " +"delay jobs by up to a minute." +msgstr "" + +#: src/Admin/AdminPage.php:1368 msgid "Use system cron" msgstr "" -#: src/Admin/AdminPage.php:719 +#: src/Admin/AdminPage.php:2365 +msgid "" +"Use the script from step 2 (Without WP-CLI) inside screen, tmux or a simple " +"cron-based restart loop. Remember that the script must stay alive to act as " +"a daemon." +msgstr "" + +#: src/Admin/AdminPage.php:722 msgid "" "Use this tab for quick checks of queue performance and identifying stuck " "processes." msgstr "" -#: src/Admin/AdminPage.php:1907 +#: src/Admin/AdminPage.php:1949 msgid "Used" msgstr "" -#: src/Admin/AdminPage.php:735 +#: src/Admin/AdminPage.php:738 msgid "Useful for testing jobs and forcing synchronizations." msgstr "" -#: src/Admin/AdminPage.php:2159 +#: src/Admin/AdminPage.php:2201 msgid "Useful Links" msgstr "" @@ -1279,72 +1441,84 @@ msgstr "" msgid "Uses wp_options table" msgstr "" -#: src/Admin/AdminPage.php:1747 src/Admin/AdminPage.php:1946 +#: src/Admin/AdminPage.php:1750 src/Admin/AdminPage.php:1988 msgid "Version" msgstr "" -#: src/Admin/AdminPage.php:1837 +#: src/Admin/AdminPage.php:1840 msgid "Versions" msgstr "" -#: src/Admin/AdminPage.php:1727 +#: src/Admin/AdminPage.php:1730 src/Admin/AdminPage.php:1926 msgid "Warning" msgstr "" -#: src/Admin/AdminPage.php:109 +#: src/Admin/AdminPage.php:112 msgid "What you can use it for" msgstr "" -#: src/Admin/AdminPage.php:648 +#: src/Admin/AdminPage.php:2293 +msgid "When to use a daemon" +msgstr "" + +#: src/Admin/AdminPage.php:651 msgid "Why is it needed?" msgstr "" -#: src/Admin/AdminPage.php:1465 +#: src/Admin/AdminPage.php:2303 +msgid "With WP-CLI" +msgstr "" + +#: src/Admin/AdminPage.php:2308 +msgid "Without WP-CLI" +msgstr "" + +#: src/Admin/AdminPage.php:1468 msgid "WooCommerce" msgstr "" -#: src/Admin/AdminPage.php:1462 src/Admin/AdminPage.php:1845 +#: src/Admin/AdminPage.php:1465 src/Admin/AdminPage.php:1848 msgid "WordPress" msgstr "" -#: src/Admin/AdminPage.php:680 +#: src/Admin/AdminPage.php:683 msgid "" "WordPress checks for scheduled tasks on every page load. This works out of " "the box but has downsides: on low-traffic sites, tasks might not run on time;" " on high-traffic sites, it can cause performance issues. It is \"fake\" cron." msgstr "" -#: src/Admin/AdminPage.php:1784 src/Admin/AdminPage.php:1926 +#: src/Admin/AdminPage.php:1787 src/Admin/AdminPage.php:1968 msgid "WordPress Time" msgstr "" -#: src/Admin/AdminPage.php:1669 +#: src/Admin/AdminPage.php:1672 msgid "WordPress Version" msgstr "" -#: src/Admin/AdminPage.php:666 +#: src/Admin/AdminPage.php:669 msgid "Worker" msgstr "" #. Name of the plugin -#: src/Admin/AdminPage.php:65 src/Admin/AdminPage.php:66 -#: src/Admin/AdminPage.php:1468 src/Admin/AdminPage.php:1841 +#: src/Admin/AdminPage.php:68 src/Admin/AdminPage.php:69 +#: src/Admin/AdminPage.php:1471 src/Admin/AdminPage.php:1844 msgid "WP Queue" msgstr "" -#: src/Admin/AdminPage.php:2027 +#: src/Admin/AdminPage.php:2069 msgid "" "WP Queue allows executing tasks asynchronously in the background without " "blocking the main WordPress execution flow." msgstr "" -#: src/Admin/AdminPage.php:107 +#: src/Admin/AdminPage.php:110 msgid "" "WP Queue helps your site run heavy or regular tasks in the background " "(emails, synchronizations, cleanups) so that pages load faster for visitors." msgstr "" -#: src/Admin/AdminPage.php:640 +#: src/Admin/AdminPage.php:643 msgid "" "WP Queue is a robust background processing library for WordPress. It allows " "you to offload time-consuming tasks (like sending emails, syncing data, or " @@ -1352,38 +1526,46 @@ msgid "" "remains fast and responsive for visitors." msgstr "" -#: src/Admin/AdminPage.php:656 +#: src/Admin/AdminPage.php:659 msgid "" "WP Queue solves this by pushing these tasks to a \"Queue\" and processing " "them later in the background. The user gets an instant response, and the " "heavy work happens behind the scenes." msgstr "" -#: src/Admin/AdminPage.php:2025 +#: src/Admin/AdminPage.php:2067 msgid "WP Queue — Queue System for WordPress" msgstr "" -#: src/Admin/AdminPage.php:97 +#: src/Admin/AdminPage.php:100 msgid "WP-CLI" msgstr "" -#: src/Admin/AdminPage.php:142 src/Admin/AdminPage.php:1999 +#: src/Admin/AdminPage.php:145 src/Admin/AdminPage.php:2041 msgid "WP-CLI Commands" msgstr "" -#: src/Admin/AdminPage.php:2138 +#: src/Admin/AdminPage.php:2180 msgid "WP-CLI команды" msgstr "" -#: src/Admin/AdminPage.php:757 src/Admin/AdminPage.php:1866 +#: src/Admin/AdminPage.php:760 src/Admin/AdminPage.php:1905 msgid "WP-Cron" msgstr "" -#: src/Admin/AdminPage.php:678 +#: src/Admin/AdminPage.php:681 msgid "WP-Cron (Default)" msgstr "" -#: src/Admin/AdminPage.php:1698 +#: src/Admin/AdminPage.php:1869 src/Admin/AdminPage.php:1873 +msgid "WP-Cron + Loopback" +msgstr "" + +#: src/Admin/AdminPage.php:1900 +msgid "WP-Cron checks the queue every minute as a fallback." +msgstr "" + +#: src/Admin/AdminPage.php:1701 msgid "WP-Cron Disabled" msgstr "" @@ -1391,27 +1573,31 @@ msgstr "" msgid "WP-Cron is disabled. Background tasks may not run automatically." msgstr "" -#: src/Admin/AdminPage.php:1694 +#: src/Admin/AdminPage.php:1877 +msgid "WP-Cron only" +msgstr "" + +#: src/Admin/AdminPage.php:1697 msgid "WP-Cron Status" msgstr "" -#: src/Admin/AdminPage.php:781 +#: src/Admin/AdminPage.php:784 msgid "WP-Cron status" msgstr "" -#: src/Admin/AdminPage.php:670 +#: src/Admin/AdminPage.php:673 msgid "WP-Cron vs System Cron" msgstr "" -#: src/Admin/AdminPage.php:128 +#: src/Admin/AdminPage.php:131 msgid "" "WP-Cron – list of cron events with the ability to run, pause or delete them." msgstr "" -#: src/Admin/AdminPage.php:1362 +#: src/Admin/AdminPage.php:1365 msgid "WP-Cron:" msgstr "" -#: src/Admin/AdminPage.php:1029 +#: src/Admin/AdminPage.php:1032 msgid "⚠️ Warning:" msgstr "" From ab91eb42fa20ddfd56884ca8cce5a4e41fd3684f Mon Sep 17 00:00:00 2001 From: tikhomirov <19173833+tikhomirov@users.noreply.github.com> Date: Sat, 25 Jul 2026 21:16:00 +0000 Subject: [PATCH 8/8] style: apply Laravel Pint auto-format --- languages/wp-queue-ru_RU.l10n.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/languages/wp-queue-ru_RU.l10n.php b/languages/wp-queue-ru_RU.l10n.php index c12cd09..b8e0123 100644 --- a/languages/wp-queue-ru_RU.l10n.php +++ b/languages/wp-queue-ru_RU.l10n.php @@ -1,2 +1,5 @@ 'WP Queue 1.0.0','report-msgid-bugs-to'=>'https://github.com/rwsite/wp-queue/issues','pot-creation-date'=>'2025-12-06 01:35+0000','po-revision-date'=>'2026-07-25 21:14+0000','last-translator'=>'','language-team'=>'Русский','language'=>'ru_RU','mime-version'=>'1.0','content-type'=>'text/plain; charset=UTF-8','content-transfer-encoding'=>'8bit','plural-forms'=>'nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);','x-generator'=>'Loco https://localise.biz/','x-loco-version'=>'2.8.0; wp-6.9; php-8.3.28','messages'=>['%d entries'=>'%d записей','%d tasks'=>'%d задач','(configured)'=>'(настроено)','--memory limits the PHP memory for the worker process. Adjust the value to your needs.'=>'--memory ограничивает память PHP для процесса воркера. Подберите значение под свои задачи.','1. Enable daemon runtime mode'=>'1. Включите режим демона','2. Run the worker'=>'2. Запустите воркер','3. Keep it running'=>'3. Держите процесс запущенным','4. Check status'=>'4. Проверьте статус','A background process (Worker) constantly checks the queue for new jobs.'=>'Фоновый процесс (Worker) постоянно проверяет очередь на наличие новых заданий.','A daemon worker is expected to process queues. WP-Cron and loopback are disabled.'=>'Для обработки очередей ожидается демон-воркер. WP-Cron и loopback отключены.','A list of all active queues with their size, status (idle/pending/running/paused), and control buttons (pause/resume, clear all tasks).'=>'Список всех активных очередей с указанием их размера, статуса (простой/ожидание/выполнение/приостановка) и кнопок управления (пауза/возобновление, очистить все задачи).','A plugin creates a "Job" (a task) and pushes it to the queue.'=>'Плагин создает «Задание» (задачу) и помещает его в очередь.','A real cron job configured on your server (Linux) that calls WordPress every minute. This is reliable and precise. Ideally, you should disable default WP-Cron and use System Cron.'=>'На вашем сервере (Linux) должна быть настроена настоящая задача cron, которая будет запускать WordPress каждую минуту. Это надежно и точно. В идеале следует отключить стандартный WP-Cron и использовать системный Cron.','A separate table for events that are temporarily disabled.'=>'Отдельная таблица для событий, которые временно отключены.','A table of all available intervals (hourly, daily, etc.) with their duration.'=>'Таблица со всеми доступными интервалами (почасовыми, суточным и т. д.) и их продолжительностью.','About WP Queue'=>'О WP Queue','Action completed successfully'=>'Действие успешно завершено.','Action Scheduler'=>'Планировщик действий','Actions'=>'Действия','Active'=>'Активный','Add this to wp-config.php:'=>'Добавьте в wp-config.php:','Add to wp-config.php:'=>'Добавьте в файл wp-config.php:','ago (overdue)'=>'давно (просрочено)','Aleksei Tikhomirov'=>'Алексей Тихомиров','All'=>'Все','All queues'=>'Все очереди','All systems are healthy.'=>'Все системы работают исправно.','Alternate Cron'=>'Альтернативный Cron','An error occurred'=>'Произошла ошибка.','Are you sure you want to clear this queue?'=>'Вы уверены, что хотите очистить эту очередь?','Attempts'=>'Попытки','Author Website'=>'Веб-сайт автора','Available From'=>'Доступно с','Background job processing and WP-Cron management for WordPress. Schedule tasks, manage queues, and monitor cron events.'=>'Обработка фоновых задач и управление WP-Cron для WordPress. Планируйте задачи, управляйте очередями и отслеживайте cron-события.','Basic Usage'=>'Основные правила использования','Button to delete old log entries to avoid cluttering the database.'=>'Кнопка для удаления старых записей журнала во избежание засорения базы данных.','Buttons to show all entries, only completed, or only failed jobs.'=>'Кнопки для отображения всех записей, только завершенных или только неудачно завершенных заданий.','By default, WordPress executes all actions during the page load request. If a plugin needs to send 100 emails or sync 500 products with an external API, the user has to wait until it finishes. This leads to slow page loads or timeouts.'=>'По умолчанию WordPress выполняет все действия во время запроса на загрузку страницы. Если плагину необходимо отправить 100 электронных писем или синхронизировать 500 товаров с внешним API, пользователю приходится ждать завершения процесса. Это приводит к медленной загрузке страниц или таймаутам.','By default, WP Queue stores jobs in the WordPress database (wp_options or custom tables). For high-performance sites, you can use Redis. Redis is an in-memory data store that is much faster than a SQL database for queue operations. It reduces load on your database and speeds up job processing.'=>'По умолчанию WP Queue хранит задания в базе данных WordPress (в папке wp_options или в пользовательских таблицах). Для высокопроизводительных сайтов можно использовать Redis. Redis — это хранилище данных в оперативной памяти, которое намного быстрее, чем база данных SQL, при работе с очередями. Оно снижает нагрузку на базу данных и ускоряет обработку заданий.','Cancel'=>'Отмена','Cannot connect to Memcached at %s:%d - %s'=>'Не удалось подключиться к Memcached на %s:%d - %s','Cannot connect to Redis at %s:%d - %s'=>'Не удалось подключиться к Redis на %s:%d - %s','Check basic system requirements that affect queue stability.'=>'Проверьте основные системные требования, влияющие на стабильность очереди.','Check driver settings.'=>'Проверьте настройки драйвера.','Check logs when encountering errors in background processes.'=>'При обнаружении ошибок в фоновых процессах проверяйте журналы.','Check this tab when setting up your server or debugging queue issues.'=>'Проверьте эту вкладку при настройке сервера или отладке проблем с очередями.','Checking for disablement (DISABLE_WP_CRON), alternative cron, loopback requests.'=>'Проверка на отключение (DISABLE_WP_CRON), альтернативный cron, запросы обратной связи.','Checking system requirements and environment for stable queue operation.'=>'Проверка системных требований и среды для обеспечения стабильной работы очереди.','Clear'=>'Очистить','Clear All'=>'Очистить все','Clear All Logs'=>'Очистить все журналы','Clear All Queues'=>'Очистить все очереди','Clear Logs'=>'Очистить журналы','Clear logs'=>'Очистить журналы','Clear old'=>'Удалить старые','Close'=>'Закрыть','Comparison of server time, WordPress, and GMT offset for diagnosing scheduling issues.'=>'Сравнение серверного времени, времени WordPress и смещения GMT для диагностики проблем с планированием.','Completed'=>'Завершенные','Component Status'=>'Состояние компонента','Configure'=>'Настройка','Configure automatic retries on errors:'=>'Настройте автоматическое повторение попыток при возникновении ошибок:','Configure Memcached'=>'Настройка Memcached','Configure Redis'=>'Настройка Redis','Configure system cron'=>'Настройте системный cron.','Connected to Memcached at %s:%d'=>'Подключено к Memcached на %s:%d','Connected to Redis at %s:%d (phpredis)'=>'Подключено к Redis по адресу %s:%d (phpredis)','Connected to Redis at %s:%d (Predis)'=>'Подключено к Redis по адресу %s:%d (Predis)','Connected to Redis at %s:%d (via redis-cache plugin)'=>'Подключено к Redis по адресу %s:%d (через плагин redis-cache)','Create a job class and dispatch it to the queue:'=>'Создайте класс задания и отправьте его в очередь:','Critical for understanding why tasks are not running on time.'=>'Это крайне важно для понимания причин, по которым задачи не выполняются в срок.','Cron event paused'=>'Cron-событие приостановлено','Cron event resumed'=>'Cron-событие возобновлено','Cron event updated'=>'Cron-событие обновлено','Cron Events'=>'События Cron','Current Memory Usage'=>'Текущее использование памяти','Current storage backend:'=>'Текущая система хранения данных:','Custom driver'=>'Пользовательский драйвер','Daemon process'=>'Демон-процесс','Daemon worker'=>'Демон-воркер','Dashboard'=>'Панель управления','Dashboard – quick overview of queues, number of jobs and recent activity.'=>'Панель управления – краткий обзор очередей, количества заданий и недавней активности.','Delayed Jobs'=>'Задержка с выполнением заданий','Delete'=>'Удалить','Delete all'=>'Удалить все','Deletes all job execution logs'=>'Удаляет все журналы выполнения заданий.','Deletes all jobs from all queues'=>'Удаляет все задания из всех очередей.','Deletes logs older than 7 days'=>'Удаляет журналы старше 7 дней.','Description'=>'Описание','Detailed description of the panel tabs'=>'Подробное описание вкладок панели','Details'=>'Подробности','Developers can dispatch their own jobs to the queue, choose drivers (Database, Sync, Redis), configure retries and schedules. See the documentation and examples on GitHub for integration details.'=>'Разработчики могут отправлять свои собственные задания в очередь, выбирать драйверы (база данных, синхронизация, Redis), настраивать повторные попытки и расписание. Подробную информацию об интеграции см. в документации и примерах на GitHub.','DISABLE_WP_CRON is set to true. Background tasks will not run automatically.'=>'Параметр DISABLE_WP_CRON установлен в значение true. Фоновые задачи не будут выполняться автоматически.','Disabled'=>'Отключен','Dispatch'=>'Отправлять','Display'=>'Показ','Displays a table of scheduled recurring tasks (PHP classes) registered in WP Queue: job class, execution interval, queue assignment, and next run time. Allows you to run any task manually.'=>'Отображает таблицу запланированных повторяющихся задач (PHP-классов), зарегистрированных в WP Queue: класс задачи, интервал выполнения, назначение в очередь и время следующего запуска. Позволяет запускать любую задачу вручную.','Displays all registered PHP job classes with their configuration.'=>'Отображает все зарегистрированные классы заданий PHP с их конфигурацией.','Displays environment information (PHP and WordPress versions, memory limits, execution time, timezone), WP-Cron status (disabled, alternative cron, loopback checks). If Action Scheduler is installed - its statistics. Server and WordPress time.'=>'Отображает информацию об окружении (версии PHP и WordPress, ограничения памяти, время выполнения, часовой пояс), статус WP-Cron (отключен, альтернативный cron, проверки обратной связи). Если установлен Action Scheduler — его статистика. Время сервера и WordPress.','Displays the last 200 entries by default or all completed/failed.'=>'По умолчанию отображаются последние 200 записей или все завершенные/незавершенные.','Displays the total number of tasks in different statuses (pending, running, completed, failed).'=>'Отображает общее количество задач в различных статусах (ожидание, выполнение, завершено, сбой).','Displays when the job should run next or marks overdue jobs.'=>'Отображает время следующего запуска задания или помечает просроченные задания.','Distribute jobs across different queues:'=>'Распределите задания по разным очередям:','Documentation on GitHub'=>'Документация на GitHub','Driver:'=>'Драйвер:','Drivers'=>'Драйверы','Edit'=>'Редактировать','Edit Cron Event'=>'Редактировать событие Cron','Edit Schedule'=>'Редактировать расписание','Enabled'=>'Включено','Environment'=>'Environment','Error'=>'Ошибка','Error message'=>'Сообщение об ошибке','Errors'=>'Ошибки','Event actions'=>'Действия события','Event hook, next run time, schedule (single/hourly/daily), source, arguments.'=>'Перехватчик событий, время следующего запуска, расписание (однократное/ежечасное/ежедневное), источник, аргументы.','Event statistics'=>'Статистика событий','Event table'=>'Таблица событий','events'=>'события','Events by Source'=>'События по источникам','Every %d Minutes'=>'Каждые %d минут','Example Plugin on GitHub'=>'Пример плагина на GitHub','Execution time, status (completed/failed/retrying), job class, queue, error message.'=>'Время выполнения, статус (завершено/сбой/повторная попытка), класс задания, очередь, сообщение об ошибке.','Failed'=>'Ошибки','Failed Actions'=>'Неудачные действия','Failed to pause event'=>'Не удалось приостановить событие','Failed to resume event'=>'Не удалось возобновить событие','Failed to update event'=>'Не удалось обновить событие','For developers'=>'Для разработчиков','For more information:'=>'Для получения дополнительной информации:','For Redis/Memcached to work, you need the PHP extension installed and a server available. If not, the system will automatically use the "database" driver.'=>'Для работы Redis/Memcached необходимо установить расширение PHP и иметь доступный сервер. В противном случае система автоматически будет использовать драйвер "database".','For site administrators'=>'Для администраторов сайта','Forces processing of all queues'=>'Принудительная обработка всех очередей','from now'=>'с настоящего момента','Full documentation and code examples are available on GitHub: %s.'=>'Полная документация и примеры кода доступны на GitHub: %s.','GitHub Repository'=>'Репозиторий GitHub','GMT Offset'=>'GMT Offset','Help'=>'Помощь','History'=>'История','History of all job executions for diagnostics and debugging.'=>'История всех выполненных заданий для диагностики и отладки.','Hook'=>'Хук','How Queues Work'=>'Как работают очереди','How to change the storage backend?'=>'Как изменить хранилище для данных?','How to run WP Queue as a long-running background process.'=>'Как запустить WP Queue в виде долгоживущего фонового процесса.','https://github.com/rwsite/wp-queue'=>'https://github.com/rwsite/wp-queue','https://rwsite.ru'=>'https://rwsite.ru','ID'=>'ID','Idle'=>'Idle','If installed, displays version and statistics (pending/running/failed actions).'=>'Если установлено, отображает версию и статистику (ожидающие/выполняемые/неудачные действия).','If the worker is not running, queues will not be processed in daemon mode. Make sure the process is started and monitored.'=>'Если воркер не запущен, очереди в режиме демона обрабатываться не будут. Убедитесь, что процесс запущен и мониторится.','If WP-CLI is not available, create a PHP script that boots WordPress and runs the worker loop:'=>'Если WP-CLI недоступен, создайте PHP-скрипт, который загружает WordPress и запускает цикл воркера:','If you installed WP Queue because another plugin requires it, you usually do not need to configure anything here. Use these tabs mainly for monitoring and troubleshooting.'=>'Если вы установили WP Queue, потому что он требуется другому плагину, обычно здесь ничего настраивать не нужно. Используйте эти вкладки в основном для мониторинга и устранения неполадок.','Important:'=>'Важно:','In Queue'=>'В очереди','In this mode WP-Cron scheduling and loopback requests are disabled automatically.'=>'В этом режиме планирование WP-Cron и loopback-запросы отключаются автоматически.','Inspect and manage WP-Cron events for WP Queue and other plugins.'=>'Проверяйте и управляйте событиями WP-Cron для WP Queue и других плагинов.','Install: pecl install memcached'=>'Установите: pecl install memcached','Install: pecl install redis'=>'Установите: pecl install redis','Interval'=>'Интервал','Job'=>'Задача','Job Class'=>'Job Class','Job class, execution interval (e.g., "hourly", "daily"), queue assignment, next run time.'=>'Класс Job, интервал выполнения (например, "ежечасно", "ежедневно"), назначение в очередь, время следующего запуска.','Job Details'=>'Job Details','Job information'=>'Job information','Job list'=>'Список Job','jobs'=>'задачи','Jobs in Queue'=>'Задачи в очереди','Log table'=>'Таблица логов','Logs'=>'Логи','Logs – history of completed and failed jobs that helps to diagnose problems.'=>'Логи — история выполненных и неудачных заданий, которая помогает диагностировать проблемы.','Loopback'=>'Обратная связь','Loopback is disabled. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Run a daemon worker for instant processing.'=>'Loopback отключен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Запустите демон-воркер для мгновенной обработки.','Loopback is enabled and working. Jobs start immediately after dispatch.'=>'Loopback включен и работает. Задачи запускаются сразу после отправки.','Loopback is inactive. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Enable loopback or run a daemon worker for instant processing.'=>'Loopback неактивен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Включите loopback или запустите демон-воркер для мгновенной обработки.','Loopback issue: %s'=>'Проблема обратной связи: %s','Loopback Request'=>'Запрос обратной связи','Loopback request successful'=>'Запрос обратной связи выполнен успешно','Manage queues from command line:'=>'Управление очередями из командной строки:','Management of scheduled recurring tasks.'=>'Управление запланированными повторяющимися задачами.','Management of WordPress system timers that trigger background processes.'=>'Управление системными таймерами WordPress, запускающими фоновые процессы.','Manual run'=>'Ручной запуск','Max Execution Time'=>'Максимальное время выполнения','Memory Limit'=>'Ограничение памяти','Memory usage is above 80%.'=>'Использование памяти выше 80%.','Message'=>'Сообщение','Monitor which background jobs are queued and running right now.'=>'Отслеживайте, какие фоновые задачи находятся в очереди и выполняются в данный момент.','More documentation'=>'Дополнительная документация','Name'=>'Имя','Named Queues'=>'Именованные очереди','Next Run'=>'Следующий запуск','Next run status'=>'Статус следующего запуска','No activity'=>'Нет активности','No cron events found.'=>'Событий cron не обнаружено.','No errors'=>'Ошибок нет.','No extension'=>'Нет расширения','No logs found'=>'Журналы не найдены','No paused events'=>'Нет приостановленных событий','No scheduled events'=>'Мероприятия не запланированы.','No scheduled jobs found.'=>'Запланированных заданий не найдено.','No server'=>'Нет сервера','Notifications of critical issues (low memory, disabled WP-Cron).'=>'Уведомления о критических проблемах (недостаток памяти, отключение WP-Cron).','Now'=>'Сейчас','Number of entries'=>'Количество записей','OK'=>'OK','One-time'=>'Один раз','Option A: systemd service'=>'Вариант A: сервис systemd','Option B: Supervisor'=>'Вариант B: Supervisor','Option C: Docker Compose'=>'Вариант C: Docker Compose','Option D: plain PHP script'=>'Вариант D: простой PHP-скрипт','Overdue'=>'Просрочено','Overview'=>'Обзор','Pause'=>'Пауза','Pause this queue?'=>'Приостановить выполнение этой очереди?','Paused'=>'Приостановлено','Paused At'=>'Приостановлено на','Paused Events'=>'Приостановленные события','Paused events'=>'Приостановленные события','Paused Since'=>'Приостановлено с','Pending'=>'В ожидании','Pending Actions'=>'Ожидающие действия','PHP'=>'PHP','PHP and WordPress versions, memory limits (current usage), maximum execution time, timezone.'=>'Версии PHP и WordPress, ограничения памяти (текущее использование), максимальное время выполнения, часовой пояс.','PHP extension "memcached" is not installed'=>'PHP-расширение "memcached" не установлено','PHP extension "redis" (phpredis) is not installed'=>'PHP-расширение "redis" (phpredis) не установлено','PHP max_execution_time is less than 30 seconds.'=>'PHP max_execution_time меньше 30 секунд.','PHP Version'=>'Версия PHP','Plugins'=>'Плагины','Predis library is not available'=>'Библиотека Predis недоступна','Process'=>'Процесс','Process Now'=>'Обработать сейчас','Process Queues'=>'Обработочные очереди','Processing'=>'Обработка','Queue'=>'Очередь','Queue handler'=>'Обработчик очереди','Queue is empty'=>'Очередь пуста','Queue statistics'=>'Статистика очереди','Queue Storage backend'=>'бэкэнд хранилища очередей','Queue table'=>'Таблица очереди','Queue: %s'=>'Очередь: %s','Queues'=>'Очереди','Quick Start'=>'Быстрый старт','Quickly see if any jobs are failing and view recent log entries.'=>'Быстро проверьте, не завершаются ли какие-либо задания с ошибкой, и просмотрите последние записи в журнале.','Ready'=>'Готово','Recent Activity'=>'Последние события','Recent activity'=>'Последние события','Redis connection failed'=>'Подключение к Redis не удалось.','Redis is disabled via WP_REDIS_DISABLED'=>'Redis отключен с помощью WP_REDIS_DISABLED','Redis Support'=>'Поддержка Redis','Registered Schedules'=>'Зарегистрированные расписания','Registered schedules'=>'Зарегистрированные расписания','Report an Issue'=>'Сообщить о проблеме','Report Issues'=>'Сообщить о проблемах','Resume'=>'Резюме','Retry Attempts'=>'Повторные попытки','Run'=>'Запуск','Run Now'=>'Запустите сейчас','Run now, edit schedule, pause, delete. Modal window for changing interval.'=>'Запустить сейчас, отредактировать расписание, приостановить, удалить. Модальное окно для изменения интервала.','Run tasks on schedule:'=>'Выполнить задачи по расписанию:','Running'=>'Запущено','Running Actions'=>'Выполнение действий','Save as /etc/systemd/system/wp-queue-worker.service, then run systemctl enable --now wp-queue-worker.'=>'Сохраните как /etc/systemd/system/wp-queue-worker.service, затем выполните systemctl enable --now wp-queue-worker.','Save Changes'=>'Сохранить изменения','Save the script, make it executable and run it in the background:'=>'Сохраните скрипт, сделайте его исполняемым и запустите в фоне:','Schedule'=>'Расписание','Schedule a job to run after a specific time:'=>'Настройте выполнение задания по истечении определенного времени:','Scheduled'=>'Запланировано','Scheduled Jobs'=>'Запланированные задания','Scheduled Jobs – list of recurring background jobs added by your theme or plugins.'=>'Запланированные задания — список повторяющихся фоновых заданий, добавленных вашей темой или плагинами.','Scheduler'=>'Планировщик','Server Time'=>'Время сервера','Server time'=>'Время сервера','Single'=>'Один','Single (run once)'=>'Один (запуск один раз)','Source'=>'Источник','Start the worker from the WordPress root:'=>'Запустите воркер из корня WordPress:','Status'=>'Статус','Status filters'=>'Фильтры состояния','Storage'=>'Хранилище','Storage backend'=>'бэкэнд хранилища','Storage backend "%s" is configured in wp-config.php, but not available. Falling back to "%s".'=>'В файле wp-config.php настроен бэкэнд хранилища "%s", но он недоступен. Используется резервный вариант "%s".','Synchronous execution (no queue)'=>'Синхронное выполнение (без очереди)','System'=>'Система','System Cron (Recommended)'=>'Системный планировщик задач (рекомендуется)','System health'=>'Здоровье системы','System Issues Detected:'=>'Обнаружены системные неполадки:','System Status'=>'Состояние системы','System – checks PHP version, WP-Cron status and other important settings.'=>'Система проверяет версию PHP, статус WP-Cron и другие важные настройки.','The "Run Now" button allows you to run any job immediately, without waiting for the schedule.'=>'Кнопка «Запустить сейчас» позволяет немедленно запустить любое задание, не дожидаясь расписания.','The command above must stay alive. In production use one of the options below.'=>'Команда выше должна оставаться запущенной. В продакшене используйте один из вариантов ниже.','The job is saved in the database (or Redis) waiting to be picked up.'=>'Задание сохраняется в базе данных (или Redis) в ожидании обработки.','The last 10 log entries for quick tracking of queue activity.'=>'Последние 10 записей в журнале для быстрого отслеживания активности в очереди.','The main tab for monitoring queue status in real-time.'=>'Главная вкладка для мониторинга состояния очереди в режиме реального времени.','The plugin itself does not add new features to the frontend. It provides a reliable queue that other plugins or your custom code can use for background work.'=>'Сам плагин не добавляет новых функций на фронтенд. Он предоставляет надежную очередь, которую другие плагины или ваш пользовательский код могут использовать для фоновой работы.','The worker picks up the job and executes it. If it succeeds, it is marked as "Completed". If it fails, it can be retried.'=>'Работник берет задание и выполняет его. Если оно выполняется успешно, оно помечается как «Завершено». Если оно не выполняется, его можно повторить.','This section is under development.'=>'Этот раздел находится в разработке.','Time'=>'Время','Timeout'=>'Тайм-аут','Timezone'=>'Часовой пояс','To add your own background jobs, use the WP Queue PHP API from your plugin or theme. You can dispatch jobs to different queues, set delays and retries. Full code examples are available in the README on GitHub.'=>'Чтобы добавить собственные фоновые задачи, используйте PHP API WP Queue из вашего плагина или темы. Вы можете отправлять задачи в разные очереди, устанавливать задержки и повторные попытки. Полные примеры кода доступны в файле README на GitHub .','to get a list of available commands.'=>'чтобы получить список доступных команд.','To process the queue, WordPress needs a trigger. There are two ways to do this:'=>'Для обработки очереди WordPress необходим триггер. Это можно сделать двумя способами:','Tools'=>'Инструменты','Total'=>'Всего','Total errors'=>'Общее количество ошибок','Total Events'=>'Всего событий','Total Jobs'=>'Общее количество рабочих мест','Total number of events, overdue, grouped by source (WordPress, WooCommerce, WP Queue, plugins).'=>'Общее количество просроченных событий, сгруппированных по источнику (WordPress, WooCommerce, WP Queue, плагины).','Unavailable'=>'Недоступно','Unexpected response code: %d'=>'Неожиданный код ответа: %d','Unknown'=>'Неизвестно','Unknown driver'=>'Неизвестный драйвер','Upcoming Events'=>'Предстоящие события','Usage'=>'Использование','Use a daemon worker on VPS, Docker or dedicated servers where you can keep a process running. It polls the queue continuously and starts jobs immediately. Without a daemon, WP Queue relies on WP-Cron and/or loopback, which can delay jobs by up to a minute.'=>'Запускайте демон-воркер на VPS, Docker или выделенном сервере, где можно держать процесс запущенным. Он постоянно опрашивает очередь и сразу запускает задания. Без демона WP Queue полагается на WP-Cron и/или loopback, что может задерживать задания до минуты.','Use system cron'=>'Используйте системный cron','Use the script from step 2 (Without WP-CLI) inside screen, tmux or a simple cron-based restart loop. Remember that the script must stay alive to act as a daemon.'=>'Используйте скрипт из шага 2 (Без WP-CLI) внутри screen, tmux или простого цикла перезапуска через cron. Помните, что скрипт должен оставаться запущенным, чтобы работать как демон.','Use this tab for quick checks of queue performance and identifying stuck processes.'=>'Используйте эту вкладку для быстрой проверки производительности очереди и выявления зависших процессов.','Used'=>'Использовал','Useful for testing jobs and forcing synchronizations.'=>'Полезно для тестирования заданий и принудительной синхронизации.','Useful Links'=>'Полезные ссылки','Uses wp_options table'=>'Использует таблицу wp_options','Version'=>'Версия','Versions'=>'Версии','Warning'=>'Предупреждение','What you can use it for'=>'Для чего его можно использовать','When to use a daemon'=>'Когда использовать демон','Why is it needed?'=>'Зачем это нужно?','With WP-CLI'=>'С WP-CLI','Without WP-CLI'=>'Без WP-CLI','WooCommerce'=>'WooCommerce','WordPress'=>'WordPress','WordPress checks for scheduled tasks on every page load. This works out of the box but has downsides: on low-traffic sites, tasks might not run on time; on high-traffic sites, it can cause performance issues. It is "fake" cron.'=>'WordPress проверяет наличие запланированных задач при каждой загрузке страницы. Это работает «из коробки», но имеет свои недостатки: на сайтах с низкой посещаемостью задачи могут не выполняться вовремя; на сайтах с высокой посещаемостью это может вызывать проблемы с производительностью. Это «поддельный» cron.','WordPress Time'=>'Время WordPress','WordPress Version'=>'Версия WordPress','Worker'=>'Воркер','WP Queue'=>'WP Queue','WP Queue allows executing tasks asynchronously in the background without blocking the main WordPress execution flow.'=>'WP Queue позволяет выполнять задачи асинхронно в фоновом режиме, не блокируя основной поток выполнения WordPress.','WP Queue helps your site run heavy or regular tasks in the background (emails, synchronizations, cleanups) so that pages load faster for visitors.'=>'WP Queue помогает вашему сайту выполнять ресурсоемкие или регулярно выполняемые задачи в фоновом режиме (отправка электронной почты, синхронизация, очистка), благодаря чему страницы загружаются быстрее для посетителей.','WP Queue is a robust background processing library for WordPress. It allows you to offload time-consuming tasks (like sending emails, syncing data, or generating reports) to be processed asynchronously, ensuring your site remains fast and responsive for visitors.'=>'WP Queue — это мощная библиотека для фоновой обработки данных в WordPress. Она позволяет переносить трудоемкие задачи (например, отправку электронных писем, синхронизацию данных или создание отчетов) на асинхронную обработку, обеспечивая быструю и отзывчивую работу вашего сайта для посетителей.','WP Queue solves this by pushing these tasks to a "Queue" and processing them later in the background. The user gets an instant response, and the heavy work happens behind the scenes.'=>'WP Queue решает эту проблему, отправляя эти задачи в "очередь" и обрабатывая их позже в фоновом режиме. Пользователь получает мгновенный ответ, а основная работа происходит за кулисами.','WP Queue — Queue System for WordPress'=>'WP Queue — система очередей для WordPress','WP-CLI'=>'WP-CLI','WP-CLI Commands'=>'Команды WP-CLI','WP-CLI команды'=>'Команда WP-CLI','WP-Cron'=>'WP-Cron','WP-Cron (Default)'=>'WP-Cron (по умолчанию)','WP-Cron + Loopback'=>'WP-Cron + Loopback','WP-Cron checks the queue every minute as a fallback.'=>'WP-Cron раз в минуту проверяет очередь как подстраховку.','WP-Cron Disabled'=>'WP-Cron отключен','WP-Cron is disabled. Background tasks may not run automatically.'=>'WP-Cron отключен. Фоновые задачи могут не выполняться автоматически.','WP-Cron only'=>'Только WP-Cron','WP-Cron Status'=>'Статус WP-Cron','WP-Cron status'=>'статус WP-Cron','WP-Cron vs System Cron'=>'WP-Cron против System Cron','WP-Cron – list of cron events with the ability to run, pause or delete them.'=>'WP-Cron – список событий cron с возможностью их запуска, приостановки или удаления.','WP-Cron:'=>'WP-Cron:','⚠️ Warning:'=>'⚠️ Предупреждение:']]; + +declare(strict_types=1); + +return ['project-id-version' => 'WP Queue 1.0.0', 'report-msgid-bugs-to' => 'https://github.com/rwsite/wp-queue/issues', 'pot-creation-date' => '2025-12-06 01:35+0000', 'po-revision-date' => '2026-07-25 21:14+0000', 'last-translator' => '', 'language-team' => 'Русский', 'language' => 'ru_RU', 'mime-version' => '1.0', 'content-type' => 'text/plain; charset=UTF-8', 'content-transfer-encoding' => '8bit', 'plural-forms' => 'nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);', 'x-generator' => 'Loco https://localise.biz/', 'x-loco-version' => '2.8.0; wp-6.9; php-8.3.28', 'messages' => ['%d entries' => '%d записей', '%d tasks' => '%d задач', '(configured)' => '(настроено)', '--memory limits the PHP memory for the worker process. Adjust the value to your needs.' => '--memory ограничивает память PHP для процесса воркера. Подберите значение под свои задачи.', '1. Enable daemon runtime mode' => '1. Включите режим демона', '2. Run the worker' => '2. Запустите воркер', '3. Keep it running' => '3. Держите процесс запущенным', '4. Check status' => '4. Проверьте статус', 'A background process (Worker) constantly checks the queue for new jobs.' => 'Фоновый процесс (Worker) постоянно проверяет очередь на наличие новых заданий.', 'A daemon worker is expected to process queues. WP-Cron and loopback are disabled.' => 'Для обработки очередей ожидается демон-воркер. WP-Cron и loopback отключены.', 'A list of all active queues with their size, status (idle/pending/running/paused), and control buttons (pause/resume, clear all tasks).' => 'Список всех активных очередей с указанием их размера, статуса (простой/ожидание/выполнение/приостановка) и кнопок управления (пауза/возобновление, очистить все задачи).', 'A plugin creates a "Job" (a task) and pushes it to the queue.' => 'Плагин создает «Задание» (задачу) и помещает его в очередь.', 'A real cron job configured on your server (Linux) that calls WordPress every minute. This is reliable and precise. Ideally, you should disable default WP-Cron and use System Cron.' => 'На вашем сервере (Linux) должна быть настроена настоящая задача cron, которая будет запускать WordPress каждую минуту. Это надежно и точно. В идеале следует отключить стандартный WP-Cron и использовать системный Cron.', 'A separate table for events that are temporarily disabled.' => 'Отдельная таблица для событий, которые временно отключены.', 'A table of all available intervals (hourly, daily, etc.) with their duration.' => 'Таблица со всеми доступными интервалами (почасовыми, суточным и т. д.) и их продолжительностью.', 'About WP Queue' => 'О WP Queue', 'Action completed successfully' => 'Действие успешно завершено.', 'Action Scheduler' => 'Планировщик действий', 'Actions' => 'Действия', 'Active' => 'Активный', 'Add this to wp-config.php:' => 'Добавьте в wp-config.php:', 'Add to wp-config.php:' => 'Добавьте в файл wp-config.php:', 'ago (overdue)' => 'давно (просрочено)', 'Aleksei Tikhomirov' => 'Алексей Тихомиров', 'All' => 'Все', 'All queues' => 'Все очереди', 'All systems are healthy.' => 'Все системы работают исправно.', 'Alternate Cron' => 'Альтернативный Cron', 'An error occurred' => 'Произошла ошибка.', 'Are you sure you want to clear this queue?' => 'Вы уверены, что хотите очистить эту очередь?', 'Attempts' => 'Попытки', 'Author Website' => 'Веб-сайт автора', 'Available From' => 'Доступно с', 'Background job processing and WP-Cron management for WordPress. Schedule tasks, manage queues, and monitor cron events.' => 'Обработка фоновых задач и управление WP-Cron для WordPress. Планируйте задачи, управляйте очередями и отслеживайте cron-события.', 'Basic Usage' => 'Основные правила использования', 'Button to delete old log entries to avoid cluttering the database.' => 'Кнопка для удаления старых записей журнала во избежание засорения базы данных.', 'Buttons to show all entries, only completed, or only failed jobs.' => 'Кнопки для отображения всех записей, только завершенных или только неудачно завершенных заданий.', 'By default, WordPress executes all actions during the page load request. If a plugin needs to send 100 emails or sync 500 products with an external API, the user has to wait until it finishes. This leads to slow page loads or timeouts.' => 'По умолчанию WordPress выполняет все действия во время запроса на загрузку страницы. Если плагину необходимо отправить 100 электронных писем или синхронизировать 500 товаров с внешним API, пользователю приходится ждать завершения процесса. Это приводит к медленной загрузке страниц или таймаутам.', 'By default, WP Queue stores jobs in the WordPress database (wp_options or custom tables). For high-performance sites, you can use Redis. Redis is an in-memory data store that is much faster than a SQL database for queue operations. It reduces load on your database and speeds up job processing.' => 'По умолчанию WP Queue хранит задания в базе данных WordPress (в папке wp_options или в пользовательских таблицах). Для высокопроизводительных сайтов можно использовать Redis. Redis — это хранилище данных в оперативной памяти, которое намного быстрее, чем база данных SQL, при работе с очередями. Оно снижает нагрузку на базу данных и ускоряет обработку заданий.', 'Cancel' => 'Отмена', 'Cannot connect to Memcached at %s:%d - %s' => 'Не удалось подключиться к Memcached на %s:%d - %s', 'Cannot connect to Redis at %s:%d - %s' => 'Не удалось подключиться к Redis на %s:%d - %s', 'Check basic system requirements that affect queue stability.' => 'Проверьте основные системные требования, влияющие на стабильность очереди.', 'Check driver settings.' => 'Проверьте настройки драйвера.', 'Check logs when encountering errors in background processes.' => 'При обнаружении ошибок в фоновых процессах проверяйте журналы.', 'Check this tab when setting up your server or debugging queue issues.' => 'Проверьте эту вкладку при настройке сервера или отладке проблем с очередями.', 'Checking for disablement (DISABLE_WP_CRON), alternative cron, loopback requests.' => 'Проверка на отключение (DISABLE_WP_CRON), альтернативный cron, запросы обратной связи.', 'Checking system requirements and environment for stable queue operation.' => 'Проверка системных требований и среды для обеспечения стабильной работы очереди.', 'Clear' => 'Очистить', 'Clear All' => 'Очистить все', 'Clear All Logs' => 'Очистить все журналы', 'Clear All Queues' => 'Очистить все очереди', 'Clear Logs' => 'Очистить журналы', 'Clear logs' => 'Очистить журналы', 'Clear old' => 'Удалить старые', 'Close' => 'Закрыть', 'Comparison of server time, WordPress, and GMT offset for diagnosing scheduling issues.' => 'Сравнение серверного времени, времени WordPress и смещения GMT для диагностики проблем с планированием.', 'Completed' => 'Завершенные', 'Component Status' => 'Состояние компонента', 'Configure' => 'Настройка', 'Configure automatic retries on errors:' => 'Настройте автоматическое повторение попыток при возникновении ошибок:', 'Configure Memcached' => 'Настройка Memcached', 'Configure Redis' => 'Настройка Redis', 'Configure system cron' => 'Настройте системный cron.', 'Connected to Memcached at %s:%d' => 'Подключено к Memcached на %s:%d', 'Connected to Redis at %s:%d (phpredis)' => 'Подключено к Redis по адресу %s:%d (phpredis)', 'Connected to Redis at %s:%d (Predis)' => 'Подключено к Redis по адресу %s:%d (Predis)', 'Connected to Redis at %s:%d (via redis-cache plugin)' => 'Подключено к Redis по адресу %s:%d (через плагин redis-cache)', 'Create a job class and dispatch it to the queue:' => 'Создайте класс задания и отправьте его в очередь:', 'Critical for understanding why tasks are not running on time.' => 'Это крайне важно для понимания причин, по которым задачи не выполняются в срок.', 'Cron event paused' => 'Cron-событие приостановлено', 'Cron event resumed' => 'Cron-событие возобновлено', 'Cron event updated' => 'Cron-событие обновлено', 'Cron Events' => 'События Cron', 'Current Memory Usage' => 'Текущее использование памяти', 'Current storage backend:' => 'Текущая система хранения данных:', 'Custom driver' => 'Пользовательский драйвер', 'Daemon process' => 'Демон-процесс', 'Daemon worker' => 'Демон-воркер', 'Dashboard' => 'Панель управления', 'Dashboard – quick overview of queues, number of jobs and recent activity.' => 'Панель управления – краткий обзор очередей, количества заданий и недавней активности.', 'Delayed Jobs' => 'Задержка с выполнением заданий', 'Delete' => 'Удалить', 'Delete all' => 'Удалить все', 'Deletes all job execution logs' => 'Удаляет все журналы выполнения заданий.', 'Deletes all jobs from all queues' => 'Удаляет все задания из всех очередей.', 'Deletes logs older than 7 days' => 'Удаляет журналы старше 7 дней.', 'Description' => 'Описание', 'Detailed description of the panel tabs' => 'Подробное описание вкладок панели', 'Details' => 'Подробности', 'Developers can dispatch their own jobs to the queue, choose drivers (Database, Sync, Redis), configure retries and schedules. See the documentation and examples on GitHub for integration details.' => 'Разработчики могут отправлять свои собственные задания в очередь, выбирать драйверы (база данных, синхронизация, Redis), настраивать повторные попытки и расписание. Подробную информацию об интеграции см. в документации и примерах на GitHub.', 'DISABLE_WP_CRON is set to true. Background tasks will not run automatically.' => 'Параметр DISABLE_WP_CRON установлен в значение true. Фоновые задачи не будут выполняться автоматически.', 'Disabled' => 'Отключен', 'Dispatch' => 'Отправлять', 'Display' => 'Показ', 'Displays a table of scheduled recurring tasks (PHP classes) registered in WP Queue: job class, execution interval, queue assignment, and next run time. Allows you to run any task manually.' => 'Отображает таблицу запланированных повторяющихся задач (PHP-классов), зарегистрированных в WP Queue: класс задачи, интервал выполнения, назначение в очередь и время следующего запуска. Позволяет запускать любую задачу вручную.', 'Displays all registered PHP job classes with their configuration.' => 'Отображает все зарегистрированные классы заданий PHP с их конфигурацией.', 'Displays environment information (PHP and WordPress versions, memory limits, execution time, timezone), WP-Cron status (disabled, alternative cron, loopback checks). If Action Scheduler is installed - its statistics. Server and WordPress time.' => 'Отображает информацию об окружении (версии PHP и WordPress, ограничения памяти, время выполнения, часовой пояс), статус WP-Cron (отключен, альтернативный cron, проверки обратной связи). Если установлен Action Scheduler — его статистика. Время сервера и WordPress.', 'Displays the last 200 entries by default or all completed/failed.' => 'По умолчанию отображаются последние 200 записей или все завершенные/незавершенные.', 'Displays the total number of tasks in different statuses (pending, running, completed, failed).' => 'Отображает общее количество задач в различных статусах (ожидание, выполнение, завершено, сбой).', 'Displays when the job should run next or marks overdue jobs.' => 'Отображает время следующего запуска задания или помечает просроченные задания.', 'Distribute jobs across different queues:' => 'Распределите задания по разным очередям:', 'Documentation on GitHub' => 'Документация на GitHub', 'Driver:' => 'Драйвер:', 'Drivers' => 'Драйверы', 'Edit' => 'Редактировать', 'Edit Cron Event' => 'Редактировать событие Cron', 'Edit Schedule' => 'Редактировать расписание', 'Enabled' => 'Включено', 'Environment' => 'Environment', 'Error' => 'Ошибка', 'Error message' => 'Сообщение об ошибке', 'Errors' => 'Ошибки', 'Event actions' => 'Действия события', 'Event hook, next run time, schedule (single/hourly/daily), source, arguments.' => 'Перехватчик событий, время следующего запуска, расписание (однократное/ежечасное/ежедневное), источник, аргументы.', 'Event statistics' => 'Статистика событий', 'Event table' => 'Таблица событий', 'events' => 'события', 'Events by Source' => 'События по источникам', 'Every %d Minutes' => 'Каждые %d минут', 'Example Plugin on GitHub' => 'Пример плагина на GitHub', 'Execution time, status (completed/failed/retrying), job class, queue, error message.' => 'Время выполнения, статус (завершено/сбой/повторная попытка), класс задания, очередь, сообщение об ошибке.', 'Failed' => 'Ошибки', 'Failed Actions' => 'Неудачные действия', 'Failed to pause event' => 'Не удалось приостановить событие', 'Failed to resume event' => 'Не удалось возобновить событие', 'Failed to update event' => 'Не удалось обновить событие', 'For developers' => 'Для разработчиков', 'For more information:' => 'Для получения дополнительной информации:', 'For Redis/Memcached to work, you need the PHP extension installed and a server available. If not, the system will automatically use the "database" driver.' => 'Для работы Redis/Memcached необходимо установить расширение PHP и иметь доступный сервер. В противном случае система автоматически будет использовать драйвер "database".', 'For site administrators' => 'Для администраторов сайта', 'Forces processing of all queues' => 'Принудительная обработка всех очередей', 'from now' => 'с настоящего момента', 'Full documentation and code examples are available on GitHub: %s.' => 'Полная документация и примеры кода доступны на GitHub: %s.', 'GitHub Repository' => 'Репозиторий GitHub', 'GMT Offset' => 'GMT Offset', 'Help' => 'Помощь', 'History' => 'История', 'History of all job executions for diagnostics and debugging.' => 'История всех выполненных заданий для диагностики и отладки.', 'Hook' => 'Хук', 'How Queues Work' => 'Как работают очереди', 'How to change the storage backend?' => 'Как изменить хранилище для данных?', 'How to run WP Queue as a long-running background process.' => 'Как запустить WP Queue в виде долгоживущего фонового процесса.', 'https://github.com/rwsite/wp-queue' => 'https://github.com/rwsite/wp-queue', 'https://rwsite.ru' => 'https://rwsite.ru', 'ID' => 'ID', 'Idle' => 'Idle', 'If installed, displays version and statistics (pending/running/failed actions).' => 'Если установлено, отображает версию и статистику (ожидающие/выполняемые/неудачные действия).', 'If the worker is not running, queues will not be processed in daemon mode. Make sure the process is started and monitored.' => 'Если воркер не запущен, очереди в режиме демона обрабатываться не будут. Убедитесь, что процесс запущен и мониторится.', 'If WP-CLI is not available, create a PHP script that boots WordPress and runs the worker loop:' => 'Если WP-CLI недоступен, создайте PHP-скрипт, который загружает WordPress и запускает цикл воркера:', 'If you installed WP Queue because another plugin requires it, you usually do not need to configure anything here. Use these tabs mainly for monitoring and troubleshooting.' => 'Если вы установили WP Queue, потому что он требуется другому плагину, обычно здесь ничего настраивать не нужно. Используйте эти вкладки в основном для мониторинга и устранения неполадок.', 'Important:' => 'Важно:', 'In Queue' => 'В очереди', 'In this mode WP-Cron scheduling and loopback requests are disabled automatically.' => 'В этом режиме планирование WP-Cron и loopback-запросы отключаются автоматически.', 'Inspect and manage WP-Cron events for WP Queue and other plugins.' => 'Проверяйте и управляйте событиями WP-Cron для WP Queue и других плагинов.', 'Install: pecl install memcached' => 'Установите: pecl install memcached', 'Install: pecl install redis' => 'Установите: pecl install redis', 'Interval' => 'Интервал', 'Job' => 'Задача', 'Job Class' => 'Job Class', 'Job class, execution interval (e.g., "hourly", "daily"), queue assignment, next run time.' => 'Класс Job, интервал выполнения (например, "ежечасно", "ежедневно"), назначение в очередь, время следующего запуска.', 'Job Details' => 'Job Details', 'Job information' => 'Job information', 'Job list' => 'Список Job', 'jobs' => 'задачи', 'Jobs in Queue' => 'Задачи в очереди', 'Log table' => 'Таблица логов', 'Logs' => 'Логи', 'Logs – history of completed and failed jobs that helps to diagnose problems.' => 'Логи — история выполненных и неудачных заданий, которая помогает диагностировать проблемы.', 'Loopback' => 'Обратная связь', 'Loopback is disabled. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Run a daemon worker for instant processing.' => 'Loopback отключен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Запустите демон-воркер для мгновенной обработки.', 'Loopback is enabled and working. Jobs start immediately after dispatch.' => 'Loopback включен и работает. Задачи запускаются сразу после отправки.', 'Loopback is inactive. Jobs will be processed only by WP-Cron, which can delay execution by up to one minute. Enable loopback or run a daemon worker for instant processing.' => 'Loopback неактивен. Задачи будут обрабатываться только WP-Cron с задержкой до минуты. Включите loopback или запустите демон-воркер для мгновенной обработки.', 'Loopback issue: %s' => 'Проблема обратной связи: %s', 'Loopback Request' => 'Запрос обратной связи', 'Loopback request successful' => 'Запрос обратной связи выполнен успешно', 'Manage queues from command line:' => 'Управление очередями из командной строки:', 'Management of scheduled recurring tasks.' => 'Управление запланированными повторяющимися задачами.', 'Management of WordPress system timers that trigger background processes.' => 'Управление системными таймерами WordPress, запускающими фоновые процессы.', 'Manual run' => 'Ручной запуск', 'Max Execution Time' => 'Максимальное время выполнения', 'Memory Limit' => 'Ограничение памяти', 'Memory usage is above 80%.' => 'Использование памяти выше 80%.', 'Message' => 'Сообщение', 'Monitor which background jobs are queued and running right now.' => 'Отслеживайте, какие фоновые задачи находятся в очереди и выполняются в данный момент.', 'More documentation' => 'Дополнительная документация', 'Name' => 'Имя', 'Named Queues' => 'Именованные очереди', 'Next Run' => 'Следующий запуск', 'Next run status' => 'Статус следующего запуска', 'No activity' => 'Нет активности', 'No cron events found.' => 'Событий cron не обнаружено.', 'No errors' => 'Ошибок нет.', 'No extension' => 'Нет расширения', 'No logs found' => 'Журналы не найдены', 'No paused events' => 'Нет приостановленных событий', 'No scheduled events' => 'Мероприятия не запланированы.', 'No scheduled jobs found.' => 'Запланированных заданий не найдено.', 'No server' => 'Нет сервера', 'Notifications of critical issues (low memory, disabled WP-Cron).' => 'Уведомления о критических проблемах (недостаток памяти, отключение WP-Cron).', 'Now' => 'Сейчас', 'Number of entries' => 'Количество записей', 'OK' => 'OK', 'One-time' => 'Один раз', 'Option A: systemd service' => 'Вариант A: сервис systemd', 'Option B: Supervisor' => 'Вариант B: Supervisor', 'Option C: Docker Compose' => 'Вариант C: Docker Compose', 'Option D: plain PHP script' => 'Вариант D: простой PHP-скрипт', 'Overdue' => 'Просрочено', 'Overview' => 'Обзор', 'Pause' => 'Пауза', 'Pause this queue?' => 'Приостановить выполнение этой очереди?', 'Paused' => 'Приостановлено', 'Paused At' => 'Приостановлено на', 'Paused Events' => 'Приостановленные события', 'Paused events' => 'Приостановленные события', 'Paused Since' => 'Приостановлено с', 'Pending' => 'В ожидании', 'Pending Actions' => 'Ожидающие действия', 'PHP' => 'PHP', 'PHP and WordPress versions, memory limits (current usage), maximum execution time, timezone.' => 'Версии PHP и WordPress, ограничения памяти (текущее использование), максимальное время выполнения, часовой пояс.', 'PHP extension "memcached" is not installed' => 'PHP-расширение "memcached" не установлено', 'PHP extension "redis" (phpredis) is not installed' => 'PHP-расширение "redis" (phpredis) не установлено', 'PHP max_execution_time is less than 30 seconds.' => 'PHP max_execution_time меньше 30 секунд.', 'PHP Version' => 'Версия PHP', 'Plugins' => 'Плагины', 'Predis library is not available' => 'Библиотека Predis недоступна', 'Process' => 'Процесс', 'Process Now' => 'Обработать сейчас', 'Process Queues' => 'Обработочные очереди', 'Processing' => 'Обработка', 'Queue' => 'Очередь', 'Queue handler' => 'Обработчик очереди', 'Queue is empty' => 'Очередь пуста', 'Queue statistics' => 'Статистика очереди', 'Queue Storage backend' => 'бэкэнд хранилища очередей', 'Queue table' => 'Таблица очереди', 'Queue: %s' => 'Очередь: %s', 'Queues' => 'Очереди', 'Quick Start' => 'Быстрый старт', 'Quickly see if any jobs are failing and view recent log entries.' => 'Быстро проверьте, не завершаются ли какие-либо задания с ошибкой, и просмотрите последние записи в журнале.', 'Ready' => 'Готово', 'Recent Activity' => 'Последние события', 'Recent activity' => 'Последние события', 'Redis connection failed' => 'Подключение к Redis не удалось.', 'Redis is disabled via WP_REDIS_DISABLED' => 'Redis отключен с помощью WP_REDIS_DISABLED', 'Redis Support' => 'Поддержка Redis', 'Registered Schedules' => 'Зарегистрированные расписания', 'Registered schedules' => 'Зарегистрированные расписания', 'Report an Issue' => 'Сообщить о проблеме', 'Report Issues' => 'Сообщить о проблемах', 'Resume' => 'Резюме', 'Retry Attempts' => 'Повторные попытки', 'Run' => 'Запуск', 'Run Now' => 'Запустите сейчас', 'Run now, edit schedule, pause, delete. Modal window for changing interval.' => 'Запустить сейчас, отредактировать расписание, приостановить, удалить. Модальное окно для изменения интервала.', 'Run tasks on schedule:' => 'Выполнить задачи по расписанию:', 'Running' => 'Запущено', 'Running Actions' => 'Выполнение действий', 'Save as /etc/systemd/system/wp-queue-worker.service, then run systemctl enable --now wp-queue-worker.' => 'Сохраните как /etc/systemd/system/wp-queue-worker.service, затем выполните systemctl enable --now wp-queue-worker.', 'Save Changes' => 'Сохранить изменения', 'Save the script, make it executable and run it in the background:' => 'Сохраните скрипт, сделайте его исполняемым и запустите в фоне:', 'Schedule' => 'Расписание', 'Schedule a job to run after a specific time:' => 'Настройте выполнение задания по истечении определенного времени:', 'Scheduled' => 'Запланировано', 'Scheduled Jobs' => 'Запланированные задания', 'Scheduled Jobs – list of recurring background jobs added by your theme or plugins.' => 'Запланированные задания — список повторяющихся фоновых заданий, добавленных вашей темой или плагинами.', 'Scheduler' => 'Планировщик', 'Server Time' => 'Время сервера', 'Server time' => 'Время сервера', 'Single' => 'Один', 'Single (run once)' => 'Один (запуск один раз)', 'Source' => 'Источник', 'Start the worker from the WordPress root:' => 'Запустите воркер из корня WordPress:', 'Status' => 'Статус', 'Status filters' => 'Фильтры состояния', 'Storage' => 'Хранилище', 'Storage backend' => 'бэкэнд хранилища', 'Storage backend "%s" is configured in wp-config.php, but not available. Falling back to "%s".' => 'В файле wp-config.php настроен бэкэнд хранилища "%s", но он недоступен. Используется резервный вариант "%s".', 'Synchronous execution (no queue)' => 'Синхронное выполнение (без очереди)', 'System' => 'Система', 'System Cron (Recommended)' => 'Системный планировщик задач (рекомендуется)', 'System health' => 'Здоровье системы', 'System Issues Detected:' => 'Обнаружены системные неполадки:', 'System Status' => 'Состояние системы', 'System – checks PHP version, WP-Cron status and other important settings.' => 'Система проверяет версию PHP, статус WP-Cron и другие важные настройки.', 'The "Run Now" button allows you to run any job immediately, without waiting for the schedule.' => 'Кнопка «Запустить сейчас» позволяет немедленно запустить любое задание, не дожидаясь расписания.', 'The command above must stay alive. In production use one of the options below.' => 'Команда выше должна оставаться запущенной. В продакшене используйте один из вариантов ниже.', 'The job is saved in the database (or Redis) waiting to be picked up.' => 'Задание сохраняется в базе данных (или Redis) в ожидании обработки.', 'The last 10 log entries for quick tracking of queue activity.' => 'Последние 10 записей в журнале для быстрого отслеживания активности в очереди.', 'The main tab for monitoring queue status in real-time.' => 'Главная вкладка для мониторинга состояния очереди в режиме реального времени.', 'The plugin itself does not add new features to the frontend. It provides a reliable queue that other plugins or your custom code can use for background work.' => 'Сам плагин не добавляет новых функций на фронтенд. Он предоставляет надежную очередь, которую другие плагины или ваш пользовательский код могут использовать для фоновой работы.', 'The worker picks up the job and executes it. If it succeeds, it is marked as "Completed". If it fails, it can be retried.' => 'Работник берет задание и выполняет его. Если оно выполняется успешно, оно помечается как «Завершено». Если оно не выполняется, его можно повторить.', 'This section is under development.' => 'Этот раздел находится в разработке.', 'Time' => 'Время', 'Timeout' => 'Тайм-аут', 'Timezone' => 'Часовой пояс', 'To add your own background jobs, use the WP Queue PHP API from your plugin or theme. You can dispatch jobs to different queues, set delays and retries. Full code examples are available in the README on GitHub.' => 'Чтобы добавить собственные фоновые задачи, используйте PHP API WP Queue из вашего плагина или темы. Вы можете отправлять задачи в разные очереди, устанавливать задержки и повторные попытки. Полные примеры кода доступны в файле README на GitHub .', 'to get a list of available commands.' => 'чтобы получить список доступных команд.', 'To process the queue, WordPress needs a trigger. There are two ways to do this:' => 'Для обработки очереди WordPress необходим триггер. Это можно сделать двумя способами:', 'Tools' => 'Инструменты', 'Total' => 'Всего', 'Total errors' => 'Общее количество ошибок', 'Total Events' => 'Всего событий', 'Total Jobs' => 'Общее количество рабочих мест', 'Total number of events, overdue, grouped by source (WordPress, WooCommerce, WP Queue, plugins).' => 'Общее количество просроченных событий, сгруппированных по источнику (WordPress, WooCommerce, WP Queue, плагины).', 'Unavailable' => 'Недоступно', 'Unexpected response code: %d' => 'Неожиданный код ответа: %d', 'Unknown' => 'Неизвестно', 'Unknown driver' => 'Неизвестный драйвер', 'Upcoming Events' => 'Предстоящие события', 'Usage' => 'Использование', 'Use a daemon worker on VPS, Docker or dedicated servers where you can keep a process running. It polls the queue continuously and starts jobs immediately. Without a daemon, WP Queue relies on WP-Cron and/or loopback, which can delay jobs by up to a minute.' => 'Запускайте демон-воркер на VPS, Docker или выделенном сервере, где можно держать процесс запущенным. Он постоянно опрашивает очередь и сразу запускает задания. Без демона WP Queue полагается на WP-Cron и/или loopback, что может задерживать задания до минуты.', 'Use system cron' => 'Используйте системный cron', 'Use the script from step 2 (Without WP-CLI) inside screen, tmux or a simple cron-based restart loop. Remember that the script must stay alive to act as a daemon.' => 'Используйте скрипт из шага 2 (Без WP-CLI) внутри screen, tmux или простого цикла перезапуска через cron. Помните, что скрипт должен оставаться запущенным, чтобы работать как демон.', 'Use this tab for quick checks of queue performance and identifying stuck processes.' => 'Используйте эту вкладку для быстрой проверки производительности очереди и выявления зависших процессов.', 'Used' => 'Использовал', 'Useful for testing jobs and forcing synchronizations.' => 'Полезно для тестирования заданий и принудительной синхронизации.', 'Useful Links' => 'Полезные ссылки', 'Uses wp_options table' => 'Использует таблицу wp_options', 'Version' => 'Версия', 'Versions' => 'Версии', 'Warning' => 'Предупреждение', 'What you can use it for' => 'Для чего его можно использовать', 'When to use a daemon' => 'Когда использовать демон', 'Why is it needed?' => 'Зачем это нужно?', 'With WP-CLI' => 'С WP-CLI', 'Without WP-CLI' => 'Без WP-CLI', 'WooCommerce' => 'WooCommerce', 'WordPress' => 'WordPress', 'WordPress checks for scheduled tasks on every page load. This works out of the box but has downsides: on low-traffic sites, tasks might not run on time; on high-traffic sites, it can cause performance issues. It is "fake" cron.' => 'WordPress проверяет наличие запланированных задач при каждой загрузке страницы. Это работает «из коробки», но имеет свои недостатки: на сайтах с низкой посещаемостью задачи могут не выполняться вовремя; на сайтах с высокой посещаемостью это может вызывать проблемы с производительностью. Это «поддельный» cron.', 'WordPress Time' => 'Время WordPress', 'WordPress Version' => 'Версия WordPress', 'Worker' => 'Воркер', 'WP Queue' => 'WP Queue', 'WP Queue allows executing tasks asynchronously in the background without blocking the main WordPress execution flow.' => 'WP Queue позволяет выполнять задачи асинхронно в фоновом режиме, не блокируя основной поток выполнения WordPress.', 'WP Queue helps your site run heavy or regular tasks in the background (emails, synchronizations, cleanups) so that pages load faster for visitors.' => 'WP Queue помогает вашему сайту выполнять ресурсоемкие или регулярно выполняемые задачи в фоновом режиме (отправка электронной почты, синхронизация, очистка), благодаря чему страницы загружаются быстрее для посетителей.', 'WP Queue is a robust background processing library for WordPress. It allows you to offload time-consuming tasks (like sending emails, syncing data, or generating reports) to be processed asynchronously, ensuring your site remains fast and responsive for visitors.' => 'WP Queue — это мощная библиотека для фоновой обработки данных в WordPress. Она позволяет переносить трудоемкие задачи (например, отправку электронных писем, синхронизацию данных или создание отчетов) на асинхронную обработку, обеспечивая быструю и отзывчивую работу вашего сайта для посетителей.', 'WP Queue solves this by pushing these tasks to a "Queue" and processing them later in the background. The user gets an instant response, and the heavy work happens behind the scenes.' => 'WP Queue решает эту проблему, отправляя эти задачи в "очередь" и обрабатывая их позже в фоновом режиме. Пользователь получает мгновенный ответ, а основная работа происходит за кулисами.', 'WP Queue — Queue System for WordPress' => 'WP Queue — система очередей для WordPress', 'WP-CLI' => 'WP-CLI', 'WP-CLI Commands' => 'Команды WP-CLI', 'WP-CLI команды' => 'Команда WP-CLI', 'WP-Cron' => 'WP-Cron', 'WP-Cron (Default)' => 'WP-Cron (по умолчанию)', 'WP-Cron + Loopback' => 'WP-Cron + Loopback', 'WP-Cron checks the queue every minute as a fallback.' => 'WP-Cron раз в минуту проверяет очередь как подстраховку.', 'WP-Cron Disabled' => 'WP-Cron отключен', 'WP-Cron is disabled. Background tasks may not run automatically.' => 'WP-Cron отключен. Фоновые задачи могут не выполняться автоматически.', 'WP-Cron only' => 'Только WP-Cron', 'WP-Cron Status' => 'Статус WP-Cron', 'WP-Cron status' => 'статус WP-Cron', 'WP-Cron vs System Cron' => 'WP-Cron против System Cron', 'WP-Cron – list of cron events with the ability to run, pause or delete them.' => 'WP-Cron – список событий cron с возможностью их запуска, приостановки или удаления.', 'WP-Cron:' => 'WP-Cron:', '⚠️ Warning:' => '⚠️ Предупреждение:']];