first commit

This commit is contained in:
User A0264400 committed 2026-05-02 17:03:28 +03:00
commit aa4e5a549c
3303 files changed
+1464321

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
<?php
// Silence is golden.
@@ -0,0 +1,2 @@
<?php
return ['x-generator'=>'GlotPress/4.0.1','translation-revision-date'=>'2025-06-10 14:24:54+0000','plural-forms'=>'nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);','project-id-version'=>'WordPress - 6.8.x - Development - Administration - Network Admin','language'=>'ru','messages'=>['<a href="https://developer.wordpress.org/advanced-administration/multisite/admin/#network-admin-updates-screen">Documentation on Upgrade Network</a>'=>'<a href="https://developer.wordpress.org/advanced-administration/multisite/admin/#network-admin-updates-screen">Документация по обновлению сети</a>','Deleting a site is a permanent action that cannot be undone. This will delete the entire site and its uploads directory.'=>'Удаление сайта - необратимое действие, которое нельзя отменить. Оно удалит весь сайт, включая его папку загрузок','Delete this site permanently'=>'Удалить этот сайт навсегда','Visit to go to the front-end of the live site.'=>'Перейти, для открытия внешней части сайта для посетителей.','<a href="https://developer.wordpress.org/advanced-administration/multisite/admin/settings/">Documentation on Network Settings</a>'=>'<a href="https://developer.wordpress.org/advanced-administration/multisite/admin/settings/">Документация по настройкам сети</a>','<a href="https://developer.wordpress.org/advanced-administration/multisite/admin/">Documentation on the Network Admin</a>'=>'<a href="https://developer.wordpress.org/advanced-administration/multisite/admin/">Документация по администрированию сети</a>','<a href="https://developer.wordpress.org/advanced-administration/multisite/create-network/">Documentation on Creating a Network</a>'=>'<a href="https://developer.wordpress.org/advanced-administration/multisite/create-network/">Документация по созданию сети</a>','https://developer.wordpress.org/advanced-administration/server/web-server/nginx/'=>'https://ru.wordpress.org/support/article/nginx/','siteActivate'=>'Активировать','Missing site title.'=>'Название сайта отсутствует.','Table ordered by User Registered Date.'=>'Таблица упорядочена по дате регистрации пользователя.','Table ordered by Theme Name.'=>'Таблица упорядочена по названию темы.','Table ordered by Site Registered Date.'=>'Таблица упорядочена по дате регистрации сайта.','Table ordered by Last Updated.'=>'Таблица упорядочена по последнему обновлению.','Table ordered by Site Path.'=>'Таблица упорядочена по пути к сайту.','Table ordered by Site Domain Name.'=>'Таблица упорядочена по имени домена сайта.','Network configuration authentication keys'=>'Ключи аутентификации конфигурации сети','Network configuration rules for %s'=>'Правила конфигурации сети для %s','WordPress has been updated! Next and final step is to individually upgrade the sites in your network.'=>'WordPress был обновлён! Следующим (и последним шагом) будет обновление каждого сайта в сети.','Cannot create an empty site.'=>'Нельзя создать пустой сайт.','You should back up your existing %s file.'=>'Вам следует создать резервную копию имеющегося файла %s.','You should back up your existing %1$s and %2$s files.'=>'Вам следует создать резервные копии имеющихся файлов %1$s и %2$s.','Visit theme site for %s'=>'Посетите сайт темы %s','Child theme of %s'=>'Дочерняя тема от %s','sitePublic'=>'Общедоступный','siteNot spam'=>'Не спам','%s theme will no longer be auto-updated.'=>'%s тема больше не будет обновляться автоматически.' . "\0" . '%s темы больше не будут обновляться автоматически.' . "\0" . '%s тем больше не будут обновляться автоматически.','%s theme will be auto-updated.'=>'%s тема будет обновляться автоматически.' . "\0" . '%s темы будут обновляться автоматически.' . "\0" . '%s тем будут обновляться автоматически.','Sorry, you are not allowed to change themes automatic update settings.'=>'К сожалению, вам не разрешено менять настройки автоLine truncated
Binary file not shown.
File diff suppressed because it is too large. Load diff
+176
View File
@@ -0,0 +1,176 @@
<?php
return ['x-generator'=>'GlotPress/4.0.1','translation-revision-date'=>'2025-08-05 20:51:52+0000','plural-forms'=>'nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);','project-id-version'=>'WordPress - 6.8.x - Development - Administration','language'=>'ru','messages'=>['start of week1'=>'1','default GMT offset or timezone string0'=>'3','Speculative loading speeds up navigation by preloading links before users navigate to them, bcrypt hashing strengthens password security automatically, and database optimizations improve performance.'=>'Спекулятивная загрузка ускоряет навигацию путем предварительной загрузки ссылок, прежде чем пользователи перемещаются по ним, хеширование паролей методом Bcrypt автоматически усиливает их безопасность, а оптимизация базы данных улучшает производительность.','You cannot upgrade because <a href="%1$s">WordPress %2$s</a> requires the %3$s PHP extension.'=>'Обновление не может быть продолжено, так как<a href="%1$s">WordPress %2$s</a> требует расширения PHP %3$s.','An error occurred while deleting the theme.'=>'Произошла ошибка при удалении темы.','Add Theme'=>'Добавить тему','WordPress.org takes privacy and transparency very seriously. To learn more about what data is collected, and how it is used, please visit <a href="%s">the WordPress.org Privacy Policy</a>.'=>'Мы серьезно относимся к приватности и прозрачности сбора данных. Чтобы узнать больше о собираемых нами данных и как мы их используем, посетите <a href="%s">политику конфиденциальности WordPress.org</a>.','WordPress.org takes privacy and transparency very seriously'=>'WordPress.org очень серьёзно относится к конфиденциальности и прозрачности','File: %s'=>'Файл: %s','Add User'=>'Добавить пользователя','Add Plugin'=>'Добавить плагин','design menu itemDesign'=>'Оформление','Collapse Main Menu'=>'Свернуть главное меню','Invalid item ID. You can view all media items in the <a href="upload.php">Media Library</a>.'=>'Неверный идентификатор элемента. Вы можете просмотреть все элементы мультимедиа в <a href="upload.php">Медиатеке</a>.','An error occurred during the upload process.'=>'Во время загрузки произошла ошибка.','You cannot install because <a href="%1$s">WordPress %2$s</a> requires the %3$s PHP extension.'=>'Установка не может быть продолжена, так как<a href="%1$s">WordPress %2$s</a> требует расширения PHP %3$s.','Add Custom Field:'=>'Добавить произвольное поле:','An error occurred while loading the comparison. Please refresh the page and try again.'=>'Произошла ошибка при загрузке сравнения. Пожалуйста, обновите страницу и попробуйте еще раз.','+ Add Category'=>'+ Добавить рубрику','Does not exist'=>'Не существует','robots.txt'=>'robots.txt','WordPress cannot dynamically serve a %s file due to a lack of rewrite rule support'=>'WordPress не может динамически отдавать файл %s ввиду отсутствия поддержки правил перезаписи URL','Your site is using the dynamic %s file which is generated by WordPress.'=>'Ваш сайт использует динамический файл %s, который генерируется WordPress.','There is a static %s file in your installation folder. WordPress cannot dynamically serve one.'=>'WordPress не может динамически отдавать файл %s, так как статический файл с тем же именем имеется в папке установки.','The active theme does not support uploading a custom header image. Please ensure your theme supports custom headers and try again.'=>'Активная тема не поддерживает загрузку пользовательского изображения заголовка. Убедитесь что используете тему, которая поддерживает пользовательские заголовки и попробуйте снова.','An error occurred while processing your header image.'=>'При обработке изображения заголовка вознLine truncated
A site administrator (###USERNAME###) recently requested to have the
administration email address changed on this site:
###SITEURL###
To confirm this change, please click on the following link:
###ADMIN_URL###
You can safely ignore and delete this email if you do not want to
take this action.
This email has been sent to ###EMAIL###
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет,
Администратор ###USERNAME### недавно запросил смену адреса Email администратора сайта
###SITEURL###
Если это так, перейдите по следующей ссылке, чтобы изменить его:
###ADMIN_URL###
Если вы не хотите этого делать, просто проигнорируйте
и удалите это письмо.
Это письмо было отправлено на ###EMAIL###
Успехов,
Команда сайта «###SITENAME###»
###SITEURL###','Where your data is sent'=>'Куда отправляются ваши данные','Copy &#8220;%s&#8221; URL to clipboard'=>'Копировать URL «%s» в буфер','Some data that describes the error your site encountered has been put together.'=>'Некоторые данные, описывающие ошибку, с которой столкнулся ваш сайт, были объединены.','An attempt was made, but your site could not be updated automatically.'=>'Была предпринята попытка, но ваш сайт не может быть обновлен автоматически.','The update cannot be installed because some files could not be copied. This is usually due to inconsistent file permissions.'=>'Обновление не может быть установлено, потому что не удастся скопировать некоторые файлы. Обычно это связано с неверными правами на файлы.','<strong>Media</strong> &mdash; A list of URLs for media files the user uploads.'=>'<strong>Медиафайлы</strong> &mdash; список URL медиафайлов загруженных пользователем.','<strong>Community Events Location</strong> &mdash; The IP Address of the user, which populates the Upcoming Community Events dashboard widget with relevant information.'=>'<strong>Локальные мероприятия сообщества</strong> &mdash; IP адрес пользователя используемый виджетом локальных мероприятий сообщества в консоли WordPress.','WordPress collects (but <em>never</em> publishes) a limited amount of data from registered users who have logged in to the site. Generally, these users are people who contribute to the site in some way -- content, store management, and so on. With rare exceptions, these users do not include occasional visitors who might have registered to comment on articles or buy products. The data WordPress retains can include:'=>'WordPress собирает (но <em>никогда</em> не публикует) ограниченный объем данных от зарегистрированных пользователей, вошедших на сайт. Как правило, эти пользователи — это люди, которые каким-то образом вносят свой вклад в работу сайта — содержание, управление магазином и т. д. За редким исключением, в число этих пользователей не входят случайные посетители, которые могли зарегистрироваться, чтобы комментировать статьи или покупать товары. Данные, которые WordPress сохраняет, могут включать:','Note: Since this tool only gathers data from WordPress and participating plugins, you may need to do more to comply with export requests. For example, you should also send the requester some of the data collected from or stored with the 3rd party services your organization uses.'=>'Заметка: Этот инструмент только собирает данные от WordPress и соответствующих плагинов, так что возможно вам потребуется сделать большее для обеспечения запросов экспорта данных. Вам также потребуется обеспечить экспорт данных собираемых или хранимых третьей стороной, если вы используете их сервисы в вашем бизнесе или на сайте.','Privacy Laws around the world require businesses and online services to provide an export of some of the data they collect about an individual, and to deliver that export on request. The rights those laws enshrine are sometimes called the "Right of Data Portability". It allows individuals to obtain and reuse their personal data for their own purposes across different services. It allows them to move, copy or transfer personal data easily from one IT environment to another.'=>'Законы о конфиденциальности во всем мире требуют, чтобы компании и онлайн-сервисы обеспечивали экспорт некоторых данных, которые они собирают о человеке, и предоставляли этот экспорт по запросу. Права, закрепленные в этих законах, иногда называют «правом на переносимость данных». Это позволяет людям получать и повторно использовать свои личн Line truncated
dynamically generated, and should only be modified via WordPress filters.
Any changes to the directives between these markers will be overwritten.'=>'Директивы (строки) между `BEGIN %1$s` и `END %1$s`
созданы автоматически и подлежат изменению только через фильтры WordPress.
Сделанные вручную изменения между этими маркерами будут перезаписаны.','All automatic updates are disabled.'=>'Автоматические обновления отключены.','Database collation'=>'Сопоставление БД','Database charset'=>'Кодировка БД','Inactive Themes'=>'Неактивные темы','Parent Theme'=>'Родительская тема','Drop-ins are single files, found in the %s directory, that replace or enhance WordPress features in ways that are not possible for traditional plugins.'=>'Вкрапления - одиночные файлы, при помещении в папку %s, заменяющие или расширяющие возможности WordPress способами, не доступными для обычных плагинов.','personal data group descriptionOverview of export report.'=>'Обзор отчёта об экспорте.','<a href="https://wordpress.org/documentation/article/settings-writing-screen/">Documentation on Writing Settings</a>'=>'<a href="https://ru.wordpress.org/support/article/settings-writing-screen/">Документация о настройках написания</a>','<a href="https://wordpress.org/documentation/article/posts-tags-screen/">Documentation on Tags</a>'=>'<a href="https://wordpress.org/documentation/article/posts-tags-screen/">Документация по меткам</a>','<a href="https://wordpress.org/documentation/article/posts-categories-screen/">Documentation on Categories</a>'=>'<a href="https://wordpress.org/documentation/article/posts-categories-screen/">Документация по рубрикам</a>','Your theme determines how content is displayed in browsers. <a href="%s">Learn more about feeds</a>.'=>'Тема оформления определяет то, как содержимое отображается в браузере. <a href="%s">Узнайте больше про RSS-ленты</a>.','For each post in a feed, include'=>'Для каждой статьи в RSS-ленте отображать','<strong>Warning:</strong> these pages should not be the same as your Privacy Policy page!'=>'<strong>Предупреждение:</strong> эти страницы не должны совпадать со страницей политики конфиденциальности!','<a href="https://wordpress.org/documentation/article/settings-reading-screen/">Documentation on Reading Settings</a>'=>'<a href="https://wordpress.org/documentation/article/settings-reading-screen/">Документация по настройкам чтения</a>','[%s] Delete My Site'=>'[%s] Удаление сайта','Allow people to submit comments on new posts'=>'Разрешить оставлять комментарии к новым записям','Default post settings'=>'Настройки записей по умолчанию','<a href="%s">You can change your profile picture on Gravatar</a>.'=>'<a href="%s">Вы можете изменить изображение профиля на сервисе Gravatar</a>.','Plugin resumed.'=>'Исполнение кода плагина продолжено.','Selected plugins deactivated.'=>'Выбранные плагины деактивированы.','Plugin deactivated.'=>'Плагин деактивирован.','Selected plugins activated.'=>'Выбранные плагины активированы.','Plugin activated.'=>'Плагин активирован.','The selected plugins have been deleted.'=>'Выбранные плагины удалены.','The selected plugin has been deleted.'=>'Выбранный плагин удален.','The plugin %1$s has been deactivated due to an error: %2$s'=>'Плагин %1$s был деактивирован из-за ошибки: %2$s','If you need to tweak more than your theme&#8217;s CSS, you might want to try <a href="%s">making a child theme</a>.'=>'Если вам потребуется изменить больше, чем только CSS темы, то вы можете попробовать создать <a href="%s">дочернюю тему</a>.','You appear to be making direct edits to your theme in the WordPress dashboard. It is not recommended! Editing your theme directly could break your site and your changes may be lost in future updates.'=>'Похоже вы пытаетесь напрямую внести изменения в тему из консоли WordPress. Мы не рекомендуем делать этого! Это может внести несовместимости ломающие ваш сайт, а также изменения могут не сохраниться при будущих обновлениях.','draft_length10'=>'10','File does not exist! Please double check the name and try again.'=>'Файл не существует! Перепроверьте его Line truncated
Your request for an export of personal data has been completed. You may
download your personal data by clicking on the link below. For privacy
and security, we will automatically delete the file on ###EXPIRATION###,
so please download it before then.
###LINK###
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет,
Ваш запрос на экспорт персональных данных завершен.
Вы можете скачать ваши данные нажав на ссылку ниже.
В целях безопасности и конфиденциальности данные будут удалены после ###EXPIRATION###,
пожалуйста, успейте скачать их до этого времени.
###LINK###
С наилучшими пожеланиями,
Команда сайта ###SITENAME###
###SITEURL###','Email sent.'=>'Email сообщение отправлено.','Sending email...'=>'Отсылка Email...','Download personal data again'=>'Скачать персональные данные еще раз','Unable to send personal data export email.'=>'Невозможно отослать email сообщение экспорта персональных данных.','[%s] Personal Data Export'=>'[%s] Экспорт персональных данных','Invalid request ID when sending personal data export email.'=>'Неверный ID запроса при отсылке email с экспортом персональных данных.','Personal Data Export'=>'Экспорт персональных данных','Personal Data Export for %s'=>'Экспорт персональных данных для %s','A valid email address must be given.'=>'Требуется указать правильный адрес email.','Force erase personal data'=>'Принудительное удаление персональных данных','Remove request'=>'Удалить запрос','Waiting for confirmation'=>'Ожидание подтверждения','Retry'=>'Повтор','Downloading data...'=>'Скачивание данных...','Download personal data'=>'Скачать персональные данные','Requested'=>'Запрошено','Requester'=>'Запросивший','Send Request'=>'Послать запрос','Username or email address'=>'Имя пользователя или адрес email','Add Data Export Request'=>'Добавить запрос на экспорт данных','Confirmation request initiated successfully.'=>'Запрос на подтверждение успешно создан.','Unable to add this request. A valid email address or username must be supplied.'=>'Невозможно добавить этот запрос. Требуется указать верное имя пользователя или адрес email.','Confirmation request sent again successfully.'=>'Запрос на подтверждение был успешно отправлен ещё раз.','Unable to initiate confirmation request.'=>'Невозможно инициализировать запрос на подтверждение.','Invalid request ID.'=>'Неверный ID запроса.','Expected done flag in response array from %1$s eraser (index %2$d).'=>'Ожидается статус исполнения в ответном массиве от функции-стирателя %1$s (индекс %2$d).','Expected messages key to reference an array in response array from %1$s eraser (index %2$d).'=>'Ожидается ключ сообщений со ссылкой на массив в ответном массиве от функции-стирателя %1$s (индекс %2$d). ','Expected messages key in response array from %1$s eraser (index %2$d).'=>'Ожидается ключ сообщений в ответном массиве от функции-стирателя %1$s (индекс %2$d). ','Expected items_retained key in response array from %1$s eraser (index %2$d).'=>'Ожидается ключ items_retained в ответном массиве от функции-стирателя %1$s (индекс %2$d). ','Expected items_removed key in response array from %1$s eraser (index %2$d).'=>'Ожидается ключ items_removed в ответном массиве от функции-стирателя %1$s (индекс %2$d).','Did not receive array from %1$s eraser (index %2$d).'=>'Не получен массив от функции-стирателя %1$s (индекс %2$d).','Eraser array at index %d does not include a friendly name.'=>'Массив функции-стирателя по индексу %d не включает пользовательского имени.','Expected an array describing the eraser at index %d.'=>'Ожидается массив описания функции-стирателя по индексу %d.','Page index cannot be less than one.'=>'Индекс страницы не может быть меньше единицы.','Eraser index cannot be less than one.'=>'Индекс стирателя не может быть меньше единицы.','Invalid email address in request.'=>'Неверный адрес email в запросе.','Requires PHP Version:'=>'Требуемая версия PHP:','This data is used to provide general enhancements to WordPress, which includes helping to protect your site by finding and automatically installing new updates. It is also used to calculate statistics, such as those shown on the <a href="%s">WordPress.org stats page</a>.'=>'Эти данные используются для общих улучшений WordPress, которые включают защиту вашего сайта поиском и автоматической у Line truncated
To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
Commenter avatars come from <a href="%s">Gravatar</a>.'=>'Привет! Это комментарий.
Чтобы начать модерировать, редактировать и удалять комментарии, перейдите на экран «Комментарии» в консоли.
Аватары авторов комментариев загружаются с сервиса <a href="%s">Gravatar</a>.','theme%s was successfully deleted.'=>'%s успешно удалена.','<a href="%1$s">WordPress %2$s</a> is available! Please notify the site administrator.'=>'Доступен <a href="%1$s">WordPress %2$s</a>! Пожалуйста, сообщите администратору сайта.','Please update WordPress now'=>'Пожалуйста, обновите WordPress сейчас','<a href="%1$s">WordPress %2$s</a> is available! <a href="%3$s" aria-label="%4$s">Please update now</a>.'=>'Доступен <a href="%1$s">WordPress %2$s</a>! <a href="%3$s" aria-label="%4$s">Пожалуйста, обновитесь</a>.','Portfolio'=>'Портфолио','Photography'=>'Фотография','News'=>'Новости','Food & Drink'=>'Еда и напитки','Entertainment'=>'Развлечения','Education'=>'Образование','E-Commerce'=>'Магазин','Blog'=>'Блог','Footer Widgets'=>'Виджеты в подвале','Grid Layout'=>'Разметка в виде сетки','This will replace the current editor content with the last backup version. You can use undo and redo in the editor to get the old content back or to return to the restored version.'=>'Текущее содержимое в редакторе будет заменено последней сохранённой версией. С помощью кнопок «Отменить» и «Повторить» в редакторе можно будет вернуть старое содержимое или оставить восстановленную версию.','Close media attachment panel'=>'Закрыть окно привязки файла','Info'=>'Информация','Need help? Use the Help tab above the screen title.'=>'Нужна помощь? Используйте вкладку &laquo;Помощь&raquo; над заголовком экрана.','Sorry, you are not allowed to access this page.'=>'Извините, вам не разрешено просматривать эту страницу.','Embed Footer Template'=>'Шаблон подвала объекта','Embed Header Template'=>'Шаблон заголовка объекта','Embed Content Template'=>'Шаблон содержимого объекта','Embed 404 Template'=>'Шаблон ошибки 404 для объекта','Embed Template'=>'Шаблон объекта','pluginActive'=>'Активен','(Private post)'=>'(Личная запись)','Sorry, you are not allowed to edit the links for this site.'=>'Извините, вам не разрешено редактировать ссылки на этом сайте.','Sorry, you are not allowed to manage privacy options on this site.'=>'Извините, вам не разрешено управлять настройками приватности на этом сайте.','Plugin could not be deleted.'=>'Не удалось удалить плагин.','Sorry, you are not allowed to update plugins for this site.'=>'Извините, вам не разрешено обновлять плагины на этом сайте.','Sorry, you are not allowed to activate plugins on this site.'=>'Извините, вам не разрешено активировать плагины на этом сайте.','Theme could not be deleted.'=>'Не удалось удалить тему.','Sorry, you are not allowed to delete themes on this site.'=>'Извините, вам не разрешено удалять темы на этом сайте.','Sorry, you are not allowed to install themes on this site.'=>'Извините, вам не разрешено устанавливать темы на этот сайт.','No theme specified.'=>'Не указана тема.','Sorry, you are not allowed to import content into this site.'=>'Извините, вам не разрешено импортировать содержимое на этот сайт.','Sorry, you are not allowed to export the content of this site.'=>'Извините, вам не разрешено экспортировать содержимое этого сайта.','You can filter the list of posts by post status using the text links above the posts list to only show posts with that status. The default view is to show all posts.'=>'Можно фильтровать записи по статусу, используя текстовые ссылки над списком, чтобы посмотреть записи с выбранным статусом. По умолчанию отображаются все записи.','Close the Customizer and go back to the previous page'=>'Закрыть интерфейс настройки и вернуться к предыдущей странице','Sorry, you are not allowed to customize headers.'=>'Извините, вам не Line truncated
You recently clicked the \'Delete Site\' link on your site and filled in a
form on that page.
If you really want to delete your site, click the link below. You will not
be asked to confirm again so only click this link if you are absolutely certain:
###URL_DELETE###
If you delete your site, please consider opening a new site here some time in
the future! (But remember that your current site and username are gone forever.)
Thank you for using the site,
All at ###SITENAME###
###SITEURL###'=>'Привет, ###USERNAME###!
Недавно вы нажали ссылку «Удалить сайт» на вашем сайте
и заполнили соответствующую форму.
Если вы действительно хотите удалить сайт, нажмите на ссылку ниже.
Другого запроса на подтверждение не будет, поэтому вы должны быть
абсолютно уверены в своём решении:
###URL_DELETE###
Если вы удалите сайт, пожалуйста, подумайте о том, чтобы открыть новый
когда-нибудь в будущем! (Но помните, что ваш нынешний сайт и имя пользователя
будут навсегда утрачены.)
Спасибо за использование этого сайта,
Вебмастер
###SITENAME###
###SITEURL###','Close details dialog'=>'Закрыть окно с информацией','You are currently editing the page that shows your latest posts.'=>'Вы редактируете страницу, на которой отображаются свежие записи.','Number of items per page:'=>'Количество элементов на странице:','revision date short formatj M @ H:i'=>'j M в H:i','Size in megabytes'=>'Размер в мегабайтах','Site Upload Space Quota'=>'Пространство для файлов','UPDATE LOG
=========='=>'ЖУРНАЛ ОБНОВЛЕНИЯ
=================','BETA TESTING?
=============
This debugging email is sent when you are using a development version of WordPress.
If you think these failures might be due to a bug in WordPress, could you report it?
* Open a thread in the support forums: https://wordpress.org/support/forum/alphabeta
* Or, if you\'re comfortable writing a bug report: https://core.trac.wordpress.org/
Thanks! -- The WordPress Team'=>'ТЕСТИРУЕТЕ БЕТА-ВЕРСИЮ?
=======================
Это сообщение приходит тем, кто использует версию WordPress в разработке.
Если вы считаете, что эти проблемы могут быть вызваны ошибкой в WordPress --
пожалуйста, сообщите о ней.
* Создайте тему на форуме поддержки: https://ru.wordpress.org/support/forum/alphabeta/
* Или напишите в багтрекер: https://core.trac.wordpress.org/
Спасибо! -- Команда WordPress','M j, Y @ H:i'=>'d.m.Y H:i','Submitted on'=>'Отправлен','In response to'=>'В ответ на','%1$s %2$s, %3$s at %4$s:%5$s'=>'%1$s %2$s, %3$s в %4$s:%5$s','You are only logged in at this location.'=>'Вы авторизованы только в текущем браузере.','These suggestions are based on the plugins you and other users have installed.'=>'Рекомендации основаны на плагинах, установленных у вас и у других пользователей.','You can enable distraction-free writing mode using the icon to the right. This feature is not available for old browsers or devices with small screens, and requires that the full-height editor be enabled in Screen Options.'=>'Можно включить полноэкранный режим, нажав на иконку справа. Эта функция недоступна для старых браузеров и устройств с маленьким экраном. Функция также требует, чтобы в настройках экрана было включено растягивание редактора по высоте.','Log Out Everywhere'=>'Завершить все сессии','Plugin InstallerRecommended'=>'Рекомендуемые','Your new WordPress site has been successfully set up at:
%1$s
You can log in to the administrator account with the following information:
Username: %2$s
Password: %3$s
Log in here: %4$s
We hope you enjoy your new site. Thanks!
--The WordPress Team
https://wordpress.org/
'=>'Ваш новый сайт на WordPress успешно создан по адресу:
%1$s
Вы можете войти в панель управления со следующими координатами:
Имя пользователя: %2$s
Пароль: %3$s
Адрес для входа: %4$s
Мы надеемся, что вам понравится новый сайт. Спасибо!
--Команда WordPress
https://wordpress.org/
','You cannot delete a theme while it has an active child theme.'=>'Нельзя удалить тему, пока её дочерняя тема активна.','Mystery Person'=>'Человек-загадка','Usernames can have only alphanumeric characters, spaces, underscores, hyphens, periods, and the @ symbol.'=>'Имя пользователя может содержать только латинские буквы, пробелы, подчёркивания, дефисы, точки и символ @.','Enable full-height editor and distraction-free functionality.'=>'Включить растягивание редактора по высоте и полноэкранный режим.','https://planet.wordpress.org/feed/'=>'https://planet.wordpress.org/feed/','https://planet.wordpress.org/'=>'https://planet.wordpress.org/','Untested with your version of WordPress'=>'Не тестировался с вашей версией WordPress.','All categories'=>'Все рубрики','Filter by comment type'=>'Фильтр по типу комментариев','%s has been logged out.'=>'Сессии пользователя %s завершены.','You are now logged out everywhere else.'=>'Вы вышли из других сессий.','Could not log out user sessions. Please try again.'=>'Не удалось выйти из сессий пользователя. Пожалуйста, попробуйте ещё раз.','This preview is unavailable in the editor.'=>'Предпросмотр в редакторе недоступен.','You can insert media files by clicking the button above the post editor and following the directions. You can align or edit images using the inline formatting toolbar available in Visual mode.'=>'Можно загружать медиафайлы, нажимая на иконки над редактором и следуя указаниям. Можно выравнивать или редактировать изображения с помощью всплывающей панели, доступной в визуальном режиме.','<strong>Post editor</strong> &mdash; Enter the text for your post. There are two modes of editing: Visual and Code. Choose the mode by clicking on the appropriate tab.'=>'<strong>Редактор записи</strong> &#8212; введите текст вашей записи. Есть два режима редактирования: визуальный и текстовый. Переключаться между ними можно нажатием на соответствующую вкладку.','You can now manage and live-preview Custom Header in the <a href="%s">Customizer</a>.'=>'Управлять произвольным заголовком и просматривать изменения теперь можно на <a href="%s">экране настройки темы</a>.','You can now manage and live-preview Custom Backgrounds in the <a href="%s">Customizer</a>.'=>'Управлять произвольным фоном и просматривать изменения теперь можно на <a href="%s">экране настройки темы</a>.','Welcome panelWelcome'=>'Добро пожаловать','usersAll <span class="count">(%s)</span>'=>'Все <span class="count">(%s)</span>' . "\0" . 'Все <span class="count">(%s)</span>' . "\0" . 'Все <span class="count">(%s)</span>','link nameName'=>'Название','If you like, you may enter custom structures for your category and tag URLs here. For example, using <code>topics</code> as your category base would make your category links like <code>%s/topics/uncategorized/</code>. If you leave these blank the defaults will be used.'=>'Если хотите, можно добавить произвольные префиксы для URL-адресов рубрик и меток. Например, <code>/topics/</code> сделает ссылки на рубрики такими: <code>%s/topics/uncategorized/</code>. Если оставить поля пустыми, будут использованы значения по умолчанию.','Release Lead'=>'Руководитель релиза','Use the arrow buttons at the top of the dialog, or the left and right arrow keys on your keyboard, to navigate between media items quickly.'=>'Используйте стрелки в верхней части окна или клавиши влево/вправо, чтобы быстро перемещаться между файлами.','You can also delete individual items and access the extended edit screen from the details dialog.'=>'В окне параметров также можно удалить отдельный элемент или перейти к расширенному редактированию.','Clicking an item will display an Attachment Details dialog, which allows you to preview media and make quick edits. Any chang Line truncated
Click \'Cancel\' to go back, \'OK\' to confirm the delete.'=>'Вы уверены, что хотите удалить эту тему?
«Отмена» — вернуться, «OK» — удалить.','Unable to submit this form, please refresh and try again.'=>'Не удалось отправить форму, обновите страницу и попробуйте ещё раз.','<strong>Quick Draft</strong> &mdash; Allows you to create a new post and save it as a draft. Also displays links to the 3 most recent draft posts you\'ve started.'=>'<strong>Быстрый черновик</strong> &#8212; позволяет создать новую запись и сохранить её как черновик. Также выводит 3 последних черновика, созданных вами.','<strong>Activity</strong> &mdash; Shows the upcoming scheduled posts, recently published posts, and the most recent comments on your posts and allows you to moderate them.'=>'<strong>Активность</strong> &#8212; показывает запланированные и недавно опубликованные записи, а также самые свежие комментарии с возможностью их модерировать.','<strong>Screen Options</strong> &mdash; Use the Screen Options tab to choose which Dashboard boxes to show.'=>'<strong>Настройки экрана</strong> &#8212; используйте вкладку &laquo;Настройки экрана&raquo;, чтобы выбрать нужные блоки.','Manage Uploads'=>'Управление файлами','Popular Plugin'=>'Популярный плагин','Tomorrow'=>'Завтра','No activity yet!'=>'Активности пока не было.','Recently Published'=>'Недавно опубликованы','Publishing Soon'=>'Ожидают публикации','What&#8217;s on your mind?'=>'О чём хотите написать?','WordPress %1$s running %2$s theme.'=>'WordPress %1$s с темой оформления %2$s.','Quick Draft'=>'Быстрый черновик','Activity'=>'Активность','FAILED: %s'=>'ОШИБКА: %s','SUCCESS: %s'=>'УСПЕХ: %s','FAILED: WordPress failed to update to %s'=>'ОШИБКА: Не удалось обновить WordPress до версии %s','SUCCESS: WordPress was successfully updated to %s'=>'УСПЕХ: WordPress успешно обновлён до версии %s','WordPress site: %s'=>'Сайт на WordPress: %s','Your site was running version %s.'=>'На вашем сайте была установлена версия %s.','Your site at %1$s experienced a critical failure while trying to update WordPress to version %2$s.'=>'На вашем сайте %1$s произошла критическая ошибка при попытке обновления WordPress до версии %2$s.','WordPress %s is also now available.'=>'Также доступен WordPress %s.','The update cannot be installed because your site is unable to copy some files. This is usually due to inconsistent file permissions.'=>'Обновление не может быть установлено, потому что нам не удастся скопировать некоторые файлы. Обычно это связано с неверными правами на файлы.','Your translations are all up to date.'=>'Ваши переводы не требуют обновления.','Translations'=>'Переводы','Error code: %s'=>'Код ошибки: %s','Your hosting company, support forum volunteers, or a friendly developer may be able to use this information to help you:'=>'Эта информация позволит вашему хостинг-провайдеру, волонтёрам на форуме поддержки или знакомому разработчику помочь вам:','The WordPress Team'=>'Команда WordPress','You also have some plugins or themes with updates available. Update them now:'=>'Также доступны обновления нескольких плагинов или тем. Обновите их:','If you experience any issues or need support, the volunteers in the WordPress.org support forums may be able to help.'=>'Если вы столкнётесь с проблемами и вам понадобится поддержка, вам помогут волонтёры на форумах WordPress.org.','Keeping your site updated is important for security. It also makes the internet a safer place for you and your readers.'=>'Своевременно обновлять сайт важно из соображений безопасности. Это также делает Интернет более безопасным местом для вас и ваших читателей.','Please check out your site now. It\'s possible that everything is working. If it says you need to update, you should do so:'=>'Проверьте сейчас свой сайт. Вполне возможно, что всё работаеLine truncated
You\'ve been invited to join \'%1$s\' at
%2$s with the role of %3$s.
Please click the following link to confirm the invite:
%4$s'=>'Привет,
Вас пригласили присоединиться к сайту «%1$s»
в сети «%2$s» с ролью %3$s.
Перейдите по ссылке, чтобы принять приглашение:
%4$s','Core Developer'=>'Разработчик ядра','No valid plugins were found.'=>'Корректных плагинов не найдено.','The plugin contains no files.'=>'Плагин не содержит файлов.','The package could not be installed.'=>'Архив не удалось установить.','Attachment Post URL'=>'Ссылка на страницу вложения','admin menuAll Links'=>'Все ссылки','%s plugins'=>'Плагинов: %s','%s plugin'=>'%s плагин','Failed to optimize the %1$s table. Error: %2$s'=>'Не удалось оптимизировать таблицу %1$s. Ошибка: %2$s','Successfully optimized the %s table.'=>'Таблица %s успешно оптимизирована.','The %s table is already optimized.'=>'Таблица %s уже оптимизирована.','Successfully repaired the %s table.'=>'Таблица %s успешно восстановлена.','The %s table is okay.'=>'Таблица %s в порядке.','View version %s details.'=>'Посмотреть информацию о версии %s.','Tumblr'=>'Tumblr','<a href="%1$s" class="update-browser-link">Update %2$s</a> or learn how to <a href="%3$s" class="browse-happy-link">browse happy</a>'=>'<a href="%1$s" class="update-browser-link">Обновите %2$s</a> или узнайте о <a href="%3$s" class="browse-happy-link">других возможностях</a>','Scale images to match the large size selected in %1$simage options%2$s (%3$d &times; %4$d).'=>'Масштабировать изображения в соответствии с крупным размером, указанным в %1$sнастройках медиафайлов%2$s (%3$d &times; %4$d).','Audio, Video, or Other File'=>'Аудио, видео или другой файл','Insert media from another website'=>'Вставить медиафайл с другого сайта','<strong>Error:</strong> Could not connect to the server. Please verify the settings are correct.'=>'<strong>Ошибка:</strong> Не удалось подключиться к серверу. Пожалуйста, проверьте правильность настроек.','<strong>Drag and Drop</strong> &mdash; To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box.'=>'<strong>Перетаскивание</strong> &#8212; чтобы перегруппировать блоки, сделайте щелчок на заголовке выбранного блока, начните перетаскивать его и отпустите, когда увидите прямоугольник с пунктирной рамкой на том месте, куда вы хотите поместить блок.','You can use the following controls to arrange your Dashboard screen to suit your workflow. This is true on most other administration screens as well.'=>'Вы можете использовать следующие элементы управления, чтобы настроить консоль согласно своим предпочтениям. Это относится и ко многим другим экранам панели управления.','The left-hand navigation menu provides links to all of the WordPress administration screens, with submenu items displayed on hover. You can minimize this menu to a narrow icon strip by clicking on the Collapse Menu arrow at the bottom.'=>'В меню навигации слева расположены ссылки на все экраны управления WordPress, а при наведении курсора появляются подменю. Можно свернуть меню в узкую полоску иконок, нажав на ссылку &laquo;Свернуть меню&raquo; внизу.','Updates %s'=>'Обновления %s','Installed Plugins'=>'Установленные','Plugins %s'=>'Плагины %s','All Users'=>'Все пользователи','Confirm Deletion'=>'Подтвердить удаление','Role'=>'Роль','Add Existing User'=>'Добавить существующего пользователя','Search Users'=>'Поиск пользователей','User removed from this site.'=>'Пользователь удалён с этого сайта.','Changed roles.'=>'Роли изменены.','Caution:'=>'Внимание:','User added.'=>'Пользователь добавлен.','Super Admin'=>'Администратор','Version %s'=>'Версия %s','Update Available <span class="count">(%s)</span>'=>'Доступны обновления <span class="count">(%s)</span>' . "\0" . 'Доступны обновления <span class="count">(%s)</span>' . "\0" . 'Доступны обновления <span class="count">(%s)</span>','Deactiv Line truncated
You\'ve been invited to join \'%1$s\' at
%2$s with the role of %3$s.
If you do not want to join this site please ignore
this email. This invitation will expire in a few days.
Please click the following link to activate your user account:
%%s'=>'Привет,
Вас пригласили присоединиться к сайту «%1$s»
в сети «%2$s» с ролью %3$s.
Если вы не хотите присоединяться к этому сайту, проигнорируйте
это письмо. Приглашение действительно в течение нескольких дней.
Перейдите по ссылке, чтобы активировать вашу учётную запись:
%%s','Post Formats'=>'Форматы записей','Full Width Template'=>'Одноколоночный шаблон','Featured Images'=>'Изображения записей','Featured Image Header'=>'Изображения записей в заголовке','It looks like you\'re using an old version of %s. For the best WordPress experience, please update your browser.'=>'Похоже, вы используете устаревшую версию браузера %s. Пожалуйста, обновите свой браузер, чтобы получить более полное впечатление о работе с WordPress.','It looks like you\'re using an insecure version of %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser.'=>'Похоже, вы используете небезопасную версию браузера %s. Использование устаревшего браузера повышает риск взлома вашего компьютера. Пожалуйста, обновите свой браузер, чтобы получить более полное впечатление о работе с WordPress.','There are some invalid menu items. Please check or delete them.'=>'Некоторые элементы меню некорректны. Проверьте или удалите их.','term nameName'=>'Название','meta nameName'=>'Имя','theme nameName'=>'Название','You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the <a href="%s">WordPress Theme Directory</a>. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses.'=>'На этом экране вы можете найти дополнительные темы для вашего сайта с помощью скрипта просмотра/установки тем, который отобразит темы из <a href="%s">каталога WordPress</a>. Эти темы создаются третьими лицами, распространяются бесплатно и совместимы с лицензией WordPress.','If you would like to see more plugins to choose from, click on the &#8220;Add Plugin&#8221; button and you will be able to browse or search for additional plugins from the <a href="%s">WordPress Plugin Directory</a>. Plugins in the WordPress Plugin Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they are free!'=>'Если вы хотели бы расширить выбор плагинов, нажмите на кнопку &#8220;Добавить новый&#8221;, и вы сможете посмотреть или найти дополнительные плагины в <a href="%s">каталоге WordPress</a>. Плагины в каталоге WordPress создаются третьими лицами и совместимы с лицензией WordPress. Да, и они бесплатны!','The uploaded file exceeds the %s directive that was specified in the HTML form.'=>'Размер загруженного файла превышает значение MAX_FILE_SIZE, указанное в HTML-форме.','External Libraries'=>'Внешние библиотеки','Network Setup'=>'Установка сети','Available Tools'=>'Доступные инструменты','Translate this to be the equivalent of English Translators in your language for the credits page Translators sectionTranslators'=>'Команда локализации','Every plugin and theme in WordPress.org&#8217;s directory is 100%% GPL or a similarly free and compatible license, so you can feel safe finding <a href="%1$s">plugins</a> and <a href="%2$s">themes</a> there. If you get a plugin or theme from another source, make sure to <a href="%3$s">ask them if it&#8217;s GPL</a> first. If they do not respect the WordPress license, it is not recommended to use them.'=>'Каждый плагин и тема в каталоге WordPress.org на 100%% соответствуют GPL или аналогичной свободной лицензии, поэтому <a href="%1$s">плагины</a> и <a href="%2$s">темы</a> оттуда можно использовать без опасений. Если вы получили плагин или тему из другого источника, первым делом <a href="%3$s">поинтересуйтесь, соответствуют ли они лицензии GPL</a>. Если они несовместимы с лицензией WordPress, мы не рекомендуем их использовать.','WordPress grows when people like you tell their friends about it, and the thousands of businesses and services thLine truncated
\'Cancel\' to stop, \'OK\' to delete.'=>'Вы собираетесь удалить тему «%s»
«Отмена» — оставить, «OK» — удалить.','Theme deleted.'=>'Тема удалена.','Select theme to edit:'=>'Выберите тему для изменения:','Edit Themes'=>'Редактировать темы','Tags:'=>'Метки:','Compare Revisions of &#8220;%s&#8221;'=>'Сравнить редакции &#8220;%s&#8221;','You cannot edit this item because it is in the Trash. Please restore it and try again.'=>'Вы не можете редактировать этот элемент, потому что он в корзине. Пожалуйста, восстановите его и повторите попытку.','Sorry, you are not allowed to edit this item.'=>'Извините, вам не разрешено редактировать этот элемент.','You attempted to edit an item that does not exist. Perhaps it was deleted?'=>'Вы попытались отредактировать несуществующий элемент. Может быть, он удалён?','No plugins found.'=>'Плагинов не найдено.','Inactive <span class="count">(%s)</span>'=>'Неактивные <span class="count">(%s)</span>' . "\0" . 'Неактивные <span class="count">(%s)</span>' . "\0" . 'Неактивные <span class="count">(%s)</span>','Recently Active <span class="count">(%s)</span>'=>'Недавно активные <span class="count">(%s)</span>' . "\0" . 'Недавно активные <span class="count">(%s)</span>' . "\0" . 'Недавно активные <span class="count">(%s)</span>','Active <span class="count">(%s)</span>'=>'Активные <span class="count">(%s)</span>' . "\0" . 'Активные <span class="count">(%s)</span>' . "\0" . 'Активные <span class="count">(%s)</span>','pluginsAll <span class="count">(%s)</span>'=>'Все <span class="count">(%s)</span>' . "\0" . 'Все <span class="count">(%s)</span>' . "\0" . 'Все <span class="count">(%s)</span>','Clear List'=>'Очистить список','Visit plugin site'=>'Перейти на страницу плагина','Plugin could not be deleted due to an error: %s'=>'Не удалось удалить плагин из-за ошибки: %s','Plugin could not be activated because it triggered a <strong>fatal error</strong>.'=>'Плагин не был активирован, потому что он вызвал <strong>фатальную ошибку</strong>.','If something goes wrong with a plugin and you cannot use WordPress, delete or rename that file in the %s directory and it will be automatically deactivated.'=>'Если с плагином что-то пойдёт не так, и вы не сможете использовать WordPress, удалите или переименуйте этот файл в папке %s, и плагин будет автоматически деактивирован.','Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.'=>'Плагины расширяют и дополняют функциональность WordPress. После установки плагина можно активировать или деактивировать его здесь.','No, return me to the plugin list'=>'Нет, вернуться к списку плагинов','Yes, delete these files'=>'Да, удалить эти файлы','Are you sure you want to delete these files?'=>'Вы уверены, что хотите удалить эти файлы?','Plugin InstallerPopular'=>'Популярные','Plugin InstallerFeatured'=>'Избранные','Update File'=>'Обновить файл','Documentation:'=>'Документация:','Plugin Files'=>'Файлы плагинов','Select plugin to edit:'=>'Выберите плагин для изменения:','File edited successfully.'=>'Файл успешно изменён.','Files of this type are not editable.'=>'Файлы этого типа нельзя редактировать.','Edit Plugins'=>'Изменение плагинов','All Settings'=>'Все настройки','Update Services'=>'Сервисы обновления','Default Mail Category'=>'Рубрика по умолчанию для публикации по почте','Login Name'=>'Логин','Port'=>'Порт','Mail Server'=>'Почтовый сервер','To post to WordPress by email, you must set up a secret email account with POP3 access. Any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret. Here are three random strings you could use: %1$s, %2$s, %3$s.'=>'Чтобы публиковать записи в WordPress при помощи e-mail, вам необходимо создать скрытый e-mail с POP3-доступом. Любое сообщение, пришедшее на этот адрес, будет опублик Line truncated
\'Cancel\' to stop, \'OK\' to delete.'=>'Вы собираетесь удалить ссылку «%s»
«Отмена» — оставить, «OK» — удалить.','Keep this link private'=>'Оставить ссылку личной','Visit Link'=>'Перейти по ссылке','Main Page (no parent)'=>'Главная (нет родительской)','Show comments'=>'Показать комментарии','Separate multiple URLs with spaces'=>'Адреса разделяются пробелами','Send trackbacks to:'=>'Отправить обратные ссылки:','Already pinged:'=>'Отправлены уведомления:','New category name'=>'Название рубрики','Publish <b>immediately</b>'=>'Опубликовать <b>сразу</b>','Stick this post to the front page'=>'Прилепить на главную страницу','Status:'=>'Статус:','Preview Changes'=>'Просмотреть изменения','Link text, e.g. &#8220;Ransom Demands (PDF)&#8221;'=>'Текст ссылки, например &laquo;Требования выкупа (PDF)&raquo;','Link to image'=>'Ссылка на изображение','Link Image To:'=>'Ссылка:','Image Caption'=>'Подпись','Filter &#187;'=>'Найти &#187;','All Types'=>'Все типы','Search Media'=>'Поиск медиафайлов','Update gallery settings'=>'Обновить настройки галереи','Gallery columns:'=>'Столбцы галереи:','Order:'=>'Порядок:','Random'=>'Случайно','Date/Time'=>'Дата и время','Menu order'=>'Порядок меню','Order images by:'=>'Критерий сортировки:','Image File'=>'Файл изображения','Link thumbnails to:'=>'Ссылки с миниатюр:','Descending'=>'Убывающий','Ascending'=>'Возрастающий','Sort Order:'=>'Порядок:','All Tabs:'=>'Все вкладки:','Save all changes'=>'Сохранить все изменения','Add media files from your computer'=>'Добавить медиафайлы с компьютера','Insert into Post'=>'Вставить в запись','Upload date:'=>'Дата загрузки:','Hide'=>'Скрыть','Location of the uploaded file.'=>'Местонахождение загруженного файла.','Alt text for the image, e.g. &#8220;The Mona Lisa&#8221;'=>'Альтернативный текст, например, &laquo;Мона Лиза&raquo;','File URL'=>'Ссылка на файл','WordPress'=>'WordPress','Uploads'=>'Загрузки','Gallery (%s)'=>'Галерея (%s)','From URL'=>'С сайта','From Computer'=>'С компьютера','Image saved'=>'Изображение сохранено.','Unable to save the image.'=>'Не удалось сохранить изображение.','Nothing to save, the image has not changed.'=>'Сохранять нечего, изображение не изменилось.','Error while saving the scaled image. Please reload the page and try again.'=>'Ошибка при сохранении изображения. Пожалуйста, обновите страницу и повторите попытку.','Unable to create new image.'=>'Не удалось создать новое изображение.','Image restored successfully.'=>'Изображение успешно восстановлено.','Image metadata is inconsistent.'=>'Метаданные изображения ошибочны.','Cannot save image metadata.'=>'Не удаётся сохранить метаданные изображения.','Cannot load image metadata.'=>'Не удаётся загрузить метаданные изображения.','All sizes except thumbnail'=>'Все размеры, кроме миниатюры','All image sizes'=>'Все размеры','Apply changes to:'=>'Сейчас редактируются:','Current thumbnail'=>'Текущая миниатюра','Thumbnail Settings'=>'Настройки миниатюры','Selection:'=>'Размер:','Aspect ratio:'=>'Пропорции:','Crop Selection'=>'Размер области','Crop Aspect Ratio'=>'Пропорции области','Restore image'=>'Восстановить изображение','Previously edited copies of the image will not be deleted.'=>'Ранее изменённые копии изображения не будут удалены.','Discard any changes and restore the original image.'=>'Отменить все изменения и восстановить исходное изображение.','Restore Original Image'=>'Восстановить исходное изображение','Original dimensions %s'=>'Исходный размер %s','Scale Image'=>'Масштабировать','Flip horizontal'=>'Отразить по горизонтали','Flip vertical'=>'Отразить по вертикали','Image data does not exist. Please re-upload the image.'=>'Данные об изображении отсутству Line truncated
Binary file not shown.
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,2 @@
<?php
return ['x-generator'=>'GlotPress/4.0.1','translation-revision-date'=>'2022-10-11 20:23:06+0000','plural-forms'=>'nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);','project-id-version'=>'WordPress - 6.8.x - Development - Continents & Cities','language'=>'ru','messages'=>['Kanton'=>'Кантон','Kyiv'=>'Киев','Qostanay'=>'Костанай','Nuuk'=>'Нуук','Saratov'=>'Саратов','Yangon'=>'Янгон','Famagusta'=>'Фамагуста','Atyrau'=>'Атырау','Punta Arenas'=>'Пунта-Аренас','Pohnpei'=>'Понпеи','Chuuk'=>'Трук','Bougainville'=>'Бугенвиль','Ulyanovsk'=>'Ульяновск','Kirov'=>'Киров','Busingen'=>'Бюзинген','Astrakhan'=>'Астрахань','Ust-Nera'=>'Усть-Нера','Tomsk'=>'Томск','Srednekolymsk'=>'Среднеколымск','Novokuznetsk'=>'Новокузнецк','Khandyga'=>'Хандыга','Kathmandu'=>'Катманду','Hebron'=>'Хеврон','Chita'=>'Чита','Barnaul'=>'Барнаул','Troll'=>'Тролль','Macquarie'=>'Маккуори','Sitka'=>'Ситка','Santarem'=>'Сантарен','Santa Isabel'=>'Санта-Исабель','Ojinaga'=>'Охинага','Beulah'=>'Бьюла','Metlakatla'=>'Метлакатла','Matamoros'=>'Матаморос','Lower Princes'=>'Лоуэр-Принсес','Kralendijk'=>'Кралендейк','Fort Nelson'=>'Форт-Нельсон','Creston'=>'Крестон','Bahia Banderas'=>'Баия-де-Бандерас','Salta'=>'Сальта','Juba'=>'Джуба','Yap'=>'Яп','Wallis'=>'Уоллис','Wake'=>'Уэйк','Truk'=>'Трук','Tongatapu'=>'Тонгатапу','Tarawa'=>'Тарава','Tahiti'=>'Таити','Samoa'=>'Самоа','Saipan'=>'Сайпан','Rarotonga'=>'Раротонга','Port Moresby'=>'Порт-Морсби','Ponape'=>'Понапе','Pitcairn'=>'Питкэрн','Palau'=>'Палау','Pago Pago'=>'Паго-Паго','Noumea'=>'Нумеа','Norfolk'=>'Норфолк','Niue'=>'Ниуэ','Nauru'=>'Науру','Midway'=>'Мидуэй','Marquesas'=>'Маркизы','Majuro'=>'Маджуро','Kwajalein'=>'Кваджалейн','Kosrae'=>'Кусаие','Kiritimati'=>'Киритимати','Johnston'=>'Джонстон','Honolulu'=>'Гонолулу','Guam'=>'Гуам','Guadalcanal'=>'Гуадалканал','Gambier'=>'Гамбье','Galapagos'=>'Галапагос','Funafuti'=>'Фунафути','Fiji'=>'Фиджи','Fakaofo'=>'Факаофо','Enderbury'=>'Эндербери','Efate'=>'Эфате','Easter'=>'Остров Пасхи','Chatham'=>'Чатэм','Auckland'=>'Окленд','Apia'=>'Апия','Pacific'=>'Тихий океан','Reunion'=>'Реюньон','Mayotte'=>'Майотта','Mauritius'=>'Маврикий','Maldives'=>'Мальдивы','Mahe'=>'Маэ','Kerguelen'=>'Кергелен','Comoro'=>'Коморские острова','Cocos'=>'Кокосовые острова','Christmas'=>'Остров Рождества','Chagos'=>'Чагос','Antananarivo'=>'Антананариву','Indian'=>'Индийский океан','Zurich'=>'Цюрих','Zaporozhye'=>'Запорожье','Zagreb'=>'Загреб','Warsaw'=>'Варшава','Volgograd'=>'Волгоград','Vilnius'=>'Вильнюс','Vienna'=>'Вена','Vatican'=>'Ватикан','Vaduz'=>'Вадуц','Uzhgorod'=>'Ужгород','Tiraspol'=>'Тирасполь','Tirane'=>'Тирана','Tallinn'=>'Таллин','Stockholm'=>'Стокгольм','Sofia'=>'София','Skopje'=>'Скопье','Simferopol'=>'Симферополь','Sarajevo'=>'Сараево','San Marino'=>'Сан-Марино','Samara'=>'Самара','Rome'=>'Рим','Riga'=>'Рига','Prague'=>'Прага','Podgorica'=>'Подгорица','Paris'=>'Париж','Oslo'=>'Осло','Moscow'=>'Москва','Monaco'=>'Монако','Minsk'=>'Минск','Mariehamn'=>'Мариехамн','Malta'=>'Мальта','Madrid'=>'Мадрид','Luxembourg'=>'Люксембург','London'=>'Лондон','Ljubljana'=>'Любляна','Lisbon'=>'Лиссабон','Kiev'=>'Киев','Kaliningrad'=>'Калининград','Jersey'=>'Джерси','Isle of Man'=>'Остров Мэн','Helsinki'=>'Хельсинки','Guernsey'=>'Гернси','Gibraltar'=>'Гибралтар','Dublin'=>'Дублин','Copenhagen'=>'Копенгаген','Chisinau'=>'Кишинёв','Budapest'=>'Будапешт','Bucharest'=>'Бухарест','Brussels'=>'Брюссель','Bratislava'=>'Братислава','Berlin'=>'Берлин','Belgrade'=>'Белград','Belfast'=>'Белфаст','Athens'=>'Афины','Andorra'=>'Андорра','Amsterdam'=>'Амстердам','Europe'=>'Европа','Zulu'=>'Зулу','UTC'=>'UTC','Universal'=>'Универсальное координированное время','UCT'=>'UCT','Greenwich'=>'Гринвич','GMT0'=>'GMT0','GMT-9'=>'GMT-9','GMT-8'=>'GMT-8','GMT-7'=>'GMT-7','GMT-6'=>'GMT-6','GMT-5'=>'GMT-5',Line truncated
Binary file not shown.
File diff suppressed because it is too large. Load diff
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"The suggested policy text has been copied to your clipboard.":["\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u043a \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430."],"This user&#8217;s personal data export file was downloaded.":["\u0424\u0430\u0439\u043b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u044b\u043b \u0441\u043a\u0430\u0447\u0430\u043d."],"This user&#8217;s personal data export link was sent.":["\u0421\u0441\u044b\u043b\u043a\u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0442\u043e\u0441\u043b\u0430\u043d\u0430."],"An error occurred while attempting to find and erase personal data.":["\u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445."],"Personal data was found for this user but some of the personal data found was not erased.":["\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430\u0439\u0434\u0435\u043d\u044b, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b."],"All of the personal data found for this user was erased.":["\u0412\u0441\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u044b."],"Personal data was found for this user but was not erased.":["\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430\u0439\u0434\u0435\u043d\u044b, \u043d\u043e \u043e\u043d\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b. "],"No personal data was found for this user.":["\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e."],"An error occurred while attempting to export personal data.":["\u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445."],"No personal data export file was generated.":["\u0424\u0430\u0439\u043b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043d."]}},"comment":{"reference":"wp-admin\/js\/privacy-tools.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Editor tips":["\u0421\u043e\u0432\u0435\u0442\u044b \u043f\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e"],"Disable tips":["\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043e\u0432\u0435\u0442\u044b"],"Got it":["\u041f\u043e\u043d\u044f\u0442\u043d\u043e"],"See next tip":["\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043e\u0432\u0435\u0442"]}},"comment":{"reference":"wp-includes\/js\/dist\/nux.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"%1$s is deprecated since version %2$s! Use %3$s instead. Please consider writing more inclusive code.":["%1$s \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0430 \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 %2$s! \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 %3$s. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u043a\u043b\u044e\u0437\u0438\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430."]}},"comment":{"reference":"wp-admin\/js\/password-strength-meter.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"%s applied.":["\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e: %s."],"%s removed.":["%s \u0443\u0434\u0430\u043b\u0451\u043d."]}},"comment":{"reference":"wp-includes\/js\/dist\/rich-text.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"pattern (singular)\u0004Synced":["\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439"],"Sync this pattern across multiple locations.":["\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445."],"Unsynced pattern created: %s":["\u0421\u043e\u0437\u0434\u0430\u043d \u043d\u0435\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d: %s"],"Synced pattern created: %s":["\u0421\u043e\u0437\u0434\u0430\u043d \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d: %s"],"Untitled pattern block":["\u041d\u0435\u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430"],"My pattern":["\u041c\u043e\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d"],"Create pattern":["\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0442\u0442\u0435\u0440\u043d"],"Manage patterns":["\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c\u0438"],"Create":["\u0421\u043e\u0437\u0434\u0430\u0442\u044c"],"Detach":["\u041e\u0442\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c"],"Cancel":["\u041e\u0442\u043c\u0435\u043d\u0430"],"Name":["\u0418\u043c\u044f"]}},"comment":{"reference":"wp-includes\/js\/dist\/reusable-blocks.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"%1$s Block. Row %2$d":["%1$s \u0431\u043b\u043e\u043a. \u0421\u0442\u0440\u043e\u043a\u0430 %2$d"],"Design":["\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435"],"%s Block":["\u0411\u043b\u043e\u043a %s"],"%1$s Block. %2$s":["%1$s \u0411\u043b\u043e\u043a. %2$s"],"%1$s Block. Column %2$d":["%1$s \u0411\u043b\u043e\u043a. \u0421\u0442\u043e\u043b\u0431\u0435\u0446 %2$d"],"%1$s Block. Column %2$d. %3$s":["%1$s \u0411\u043b\u043e\u043a. \u0421\u0442\u043e\u043b\u0431\u0435\u0446 %2$d. %3$s"],"%1$s Block. Row %2$d. %3$s":["%1$s \u0411\u043b\u043e\u043a. \u0421\u0442\u0440\u043e\u043a\u0430 %2$d. %3$s"],"Reusable blocks":["\u041c\u043e\u0438 \u0431\u043b\u043e\u043a\u0438"],"Embeds":["\u0412\u0441\u0442\u0430\u0432\u043a\u0438"],"Text":["\u0422\u0435\u043a\u0441\u0442"],"Widgets":["\u0412\u0438\u0434\u0436\u0435\u0442\u044b"],"Theme":["\u0422\u0435\u043c\u0430"],"Media":["\u041c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b"]}},"comment":{"reference":"wp-includes\/js\/dist\/blocks.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"You are probably offline.":["\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0442\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e."],"Media upload failed. If this is a photo or a large image, please scale it down and try again.":["\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u0438\u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u0435 \u0435\u0433\u043e \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430."],"The response is not a valid JSON response.":["\u041e\u0442\u0432\u0435\u0442 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u043c JSON."],"An unknown error occurred.":["\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430."]}},"comment":{"reference":"wp-includes\/js\/dist\/api-fetch.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Submitted on:":["\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e:"],"%1$s %2$s, %3$s at %4$s:%5$s":["%1$s %2$s, %3$s \u0432 %4$s:%5$s"]}},"comment":{"reference":"wp-admin\/js\/comment.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Selected crop ratio exceeds the boundaries of the image. Try a different ratio.":["\u0412\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0434\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435."],"Could not load the preview image.":["\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430."],"Could not load the preview image. Please reload the page and try again.":["\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443."],"Image updated.":["\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e."]}},"comment":{"reference":"wp-admin\/js\/image-edit.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"pattern\u0004\"%s\" duplicated.":["\"%s\" \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d."],"pattern\u0004%s (Copy)":["%s (\u041a\u043e\u043f\u0438\u044f)"],"These blocks are editable using overrides.":["\u042d\u0442\u0438 \u0431\u043b\u043e\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439."],"This %1$s is editable using the \"%2$s\" override.":["\u0411\u043b\u043e\u043a %1$s \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \"%2$s\"."],"Allow changes to this block throughout instances of this pattern.":["\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0435 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u0432\u043e \u0432\u0441\u0435\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430."],"Overrides currently don't support image captions or links. Remove the caption or link first before enabling overrides.":["\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0438 \u0441\u0441\u044b\u043b\u043a\u0438. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443."],"Disable":["\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c"],"Are you sure you want to disable overrides? Disabling overrides will revert all applied overrides for this block throughout instances of this pattern.":["\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f? \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043e\u0442\u043c\u0435\u043d\u0435 \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0432\u043e \u0432\u0441\u0435\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430."],"Disable overrides":["\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435"],"For example, if you are creating a recipe pattern, you use \"Recipe Title\", \"Recipe Description\", etc.":["\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0440\u0435\u0446\u0435\u043f\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u00ab\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0446\u0435\u043f\u0442\u0430\u00bb, \u00ab\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u0446\u0435\u043f\u0442\u0430\u00bb \u0438 \u0442. \u0434."],"Overrides are changes you make to a block within a synced pattern instance. Use overrides to customize a synced pattern instance to suit its new context. Name this block to specify an override.":["\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\uLine truncated
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Search commands and settings":["\u041f\u043e\u0438\u0441\u043a \u043a\u043e\u043c\u043c\u0430\u043d\u0434 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a"],"Command suggestions":["\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434"],"Command palette":["\u041f\u0430\u043b\u0438\u0442\u0440\u0430 \u043a\u043e\u043c\u0430\u043d\u0434"],"Open the command palette.":["\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0430\u043b\u0438\u0442\u0440\u0443 \u043a\u043e\u043c\u0430\u043d\u0434."],"No results found.":["\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e."]}},"comment":{"reference":"wp-includes\/js\/dist\/commands.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Pattern imported successfully!":["\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d!"],"Invalid pattern JSON file":["\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b JSON \u0434\u043b\u044f \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430"],"button label\u0004Import":["\u0418\u043c\u043f\u043e\u0440\u0442"],"Unknown error":["\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430"],"Invalid JSON file":["\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 JSON-\u0444\u0430\u0439\u043b"],"Import from JSON":["\u0418\u043c\u043f\u043e\u0440\u0442 \u0438\u0437 JSON"],"File":["\u0424\u0430\u0439\u043b"]}},"comment":{"reference":"wp-includes\/js\/dist\/list-reusable-blocks.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"An error occurred during the update process. Please try again.":["\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430."],"Dependencies check failed: %s":["\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c: %s"],"plugin\/plugins\u0004%s item":["%s \u044d\u043b\u0435\u043c\u0435\u043d\u0442","%s \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430","%s \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432"],"plugin\u0004%s activation failed":["\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f %s \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c"],"Activation failed.":["\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c."],"Activation completed successfully.":["\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u0430."],"plugin\u0004Activated!":["\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d!"],"plugin\u0004Activating %s":["\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f %s"],"Activating...":["\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f..."],"Activating... please wait.":["\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435..."],"Activation failed: %s":["\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c: %s"],"plugin\u0004Cannot activate %1$s. %2$s":["\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c %1$s. %2$s"],"Plugin dependencies check completed successfully.":["\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430."],"Checking plugin dependencies... please wait.":["\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u0430... \u041f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435."],"plugin\u0004Activate":["\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c"],"plugin\u0004Network Activate":["\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0435\u0442\u0438"],"plugin\u0004Install Now":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441"],"Search Results":["\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430"],"Search results for: %s":["\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f: %s"],"The request could not be completed.":["\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441"],"Disabling...":["\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435..."],"Enabling...":["\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u2026"],"Number of plugins found: %d":["\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432: %d"],"Caution: These themes may be active on other sites in the network. Are you sure you want to proceed?":["\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u042d\u0442\u0438 \u0442\u0435\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0430\u0439\u0442\u0430\u0445 \u0441\u0435\u0442\u0438. \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?"],"Are you sure you want to delete the selected plugins and their data?":["\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\Line truncated
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Annotation":["\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435"]}},"comment":{"reference":"wp-includes\/js\/dist\/annotations.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Notifications":["\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f"]}},"comment":{"reference":"wp-includes\/js\/dist\/a11y.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Add non breaking space.":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b."],"https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/":["https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/"],"Convert the current paragraph or heading to a heading of level 1 to 6.":["\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0430\u0431\u0437\u0430\u0446\u0430 \u0438\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u0442 1 \u0434\u043e 6."],"Convert the current heading to a paragraph.":["\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0432 \u0430\u0431\u0437\u0430\u0446."],"Make the selected text inline code.":["\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c."],"Strikethrough the selected text.":["\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442."],"Insert a link to a post or page.":["\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443."],"https:\/\/wordpress.org\/documentation\/article\/block-based-widgets-editor\/":["https:\/\/wordpress.org\/documentation\/article\/block-based-widgets-editor\/"],"New to the block editor?":["\u041d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0431\u043b\u043e\u043a\u043e\u0432?"],"Get the Classic Widgets plugin.":["\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432."],"https:\/\/wordpress.org\/plugins\/classic-widgets\/":["https:\/\/ru.wordpress.org\/plugins\/classic-widgets\/"],"Want to stick with the old widgets?":["\u0425\u043e\u0442\u0438\u0442\u0435 \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u0430\u043c\u0438?"],"You can now add any block to your site\u2019s widget areas. Don\u2019t worry, all of your favorite widgets still work flawlessly.":["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0431\u043b\u043e\u043a \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0441\u0430\u0439\u0442\u0430. \u041d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0439\u0442\u0435\u0441\u044c, \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0431\u0435\u0437\u0443\u043f\u0440\u0435\u0447\u043d\u043e."],"Your theme provides different \u201cblock\u201d areas for you to add and edit content.\u00a0Try adding a search bar, social icons, or other types of blocks here and see how they\u2019ll look on your site.":["\u0412\u0430\u0448\u0430 \u0442\u0435\u043c\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0431\u043b\u043e\u043a\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u044e\u0434\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e\u0438\u0441\u043a\u0430, \u0437\u043d\u0430\u0447\u043a\u0438 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0438\u043f\u044b \u0431\u043b\u043e\u043a\u043e\u0432, \u0447\u0442\u043Line truncated
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Global Styles":["\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438"],"Widget types":["\u0422\u0438\u043f\u044b \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432"],"Menu Item":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0435\u043d\u044e"],"Comment":["\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439"],"Widget areas":["\u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432"],"Site":["\u0421\u0430\u0439\u0442"],"Post Type":["\u0422\u0438\u043f \u0437\u0430\u043f\u0438\u0441\u0438"],"Taxonomy":["\u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f"],"Menu Location":["\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u043b\u044f \u043c\u0435\u043d\u044e","\u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u043b\u044f \u043c\u0435\u043d\u044e","\u041e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043c\u0435\u043d\u044e"],"Status":["\u0421\u0442\u0430\u0442\u0443\u0441"],"Menu":["\u041c\u0435\u043d\u044e"],"User":["\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c"],"Base":["\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433"],"Widgets":["\u0412\u0438\u0434\u0436\u0435\u0442\u044b"],"Themes":["\u0422\u0435\u043c\u044b"],"(no title)":["(\u0431\u0435\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f)"],"Media":["\u041c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b"],"Plugins":["\u041f\u043b\u0430\u0433\u0438\u043d\u044b"]}},"comment":{"reference":"wp-includes\/js\/dist\/core-data.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Running additional tests... please wait.":["\u041f\u0440\u043e\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b... \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435."],"All site health tests have finished running. There are items that should be addressed.":["\u0412\u0441\u0435 \u0442\u0435\u0441\u0442\u044b \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f \u0441\u0430\u0439\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u044b. \u0415\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u0442 \u0440\u0435\u0448\u0438\u0442\u044c."],"All site health tests have finished running. Your site is looking good.":["\u0412\u0441\u0435 \u0442\u0435\u0441\u0442\u044b \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f \u0441\u0430\u0439\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u044b. \u0412\u0441\u0451 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e."],"Unavailable":["\u041d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e"],"No details available":["\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b"],"A test is unavailable":["\u0422\u0435\u0441\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d"],"Should be improved":["\u0422\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f"],"Good":["\u0425\u043e\u0440\u043e\u0448\u043e"],"%s critical issue":["%s \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430","%s \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b","%s \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c"],"%s item with no issues detected":["%s \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0435\u0437 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c","%s \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0431\u0435\u0437 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c","%s \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0435\u0437 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c"],"%s recommended improvement":["%s \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435","%s \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0445 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f","%s \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0445 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439"],"Site information has been copied to your clipboard.":["\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0441\u0430\u0439\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430."]}},"comment":{"reference":"wp-admin\/js\/site-health.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Use as featured image":["\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438"],"Saving\u2026":["\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u2026"],"Could not set that as the thumbnail image. Try a different attachment.":["\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0434\u0430\u0442\u044c \u044d\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u044b. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435."],"Done":["\u0413\u043e\u0442\u043e\u0432\u043e"]}},"comment":{"reference":"wp-admin\/js\/set-post-thumbnail.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Screen Options updated.":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b."],"Drag boxes here":["\u041f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u043e\u043a\u043d\u0430 \u0441\u044e\u0434\u0430"],"Add boxes from the Screen Options menu":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u043a\u043d\u0430 \u0438\u0437 \u043c\u0435\u043d\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u044d\u043a\u0440\u0430\u043d\u0430"],"The boxes order has been saved.":["\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u043a\u043e\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d."],"The box is on the last position":["\u041e\u043a\u043d\u043e \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438"],"The box is on the first position":["\u041e\u043a\u043d\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438"]}},"comment":{"reference":"wp-admin\/js\/postbox.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Widget has been added to the selected sidebar":["\u0412\u0438\u0434\u0436\u0435\u0442 \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432"],"Saved":["\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e"],"The changes you made will be lost if you navigate away from this page.":["\u0421\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0439\u0434\u0451\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."],"Save":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c"]}},"comment":{"reference":"wp-admin\/js\/widgets.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"All application passwords revoked.":["\u0412\u0441\u0435 \u043f\u0430\u0440\u043e\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043e\u0442\u043e\u0437\u0432\u0430\u043d\u044b."],"Are you sure you want to revoke all passwords? This action cannot be undone.":["\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0437\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u043e\u043b\u0438? \u042d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c."],"Application password revoked.":["\u041f\u0430\u0440\u043e\u043b\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u043e\u0437\u0432\u0430\u043d."],"Are you sure you want to revoke this password? This action cannot be undone.":["\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u043e\u043b\u044c? \u042d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c."],"Dismiss this notice.":["\u0421\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435."]}},"comment":{"reference":"wp-admin\/js\/application-passwords.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"URL Slug":["\u042f\u0440\u043b\u044b\u043a URL"],"Permalink saved":["\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430"],"Published on:":["\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e:"],"Publish on:":["\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c:"],"Schedule for:":["\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c:"],"Saving Draft\u2026":["\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430..."],"No more comments found.":["\u0411\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e."],"Show more comments":["\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0449\u0451 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438"],"post action\/button label\u0004Schedule":["\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c"],"%1$s %2$s, %3$s at %4$s:%5$s":["%1$s %2$s, %3$s \u0432 %4$s:%5$s"],"Public, Sticky":["\u041e\u0442\u043a\u0440\u044b\u0442\u043e, \u043f\u0440\u0438\u043b\u0435\u043f\u043b\u0435\u043d\u043e"],"Privately Published":["\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u043a\u0430\u043a \u043b\u0438\u0447\u043d\u043e\u0435"],"Save as Pending":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f"],"Password Protected":["\u0417\u0430\u0449\u0438\u0449\u0435\u043d\u043e \u043f\u0430\u0440\u043e\u043b\u0435\u043c"],"The file URL has been copied to your clipboard":["\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430"],"Could not set that as the thumbnail image. Try a different attachment.":["\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0434\u0430\u0442\u044c \u044d\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u044b. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435."],"The changes you made will be lost if you navigate away from this page.":["\u0421\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0439\u0434\u0451\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."],"Update":["\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c"],"Public":["\u041e\u0442\u043a\u0440\u044b\u0442\u043e"],"Private":["\u041b\u0438\u0447\u043d\u043e\u0435"],"OK":["OK"],"Save Draft":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c"],"Cancel":["\u041e\u0442\u043c\u0435\u043d\u0430"],"Publish":["\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c"],"Published":["\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e"]}},"comment":{"reference":"wp-admin\/js\/post.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Are you sure you want to do this?\nThe comment changes you made will be lost.":["\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e?\n\u0412\u0441\u0435 \u043d\u0435\u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b."],"Are you sure you want to edit this comment?\nThe changes you made will be lost.":["\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439?\n\u0412\u0430\u0448\u0438 \u043d\u0435\u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b."],"Approve and Reply":["\u041e\u0434\u043e\u0431\u0440\u0438\u0442\u044c \u0438 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c"],"Comments (%s)":["\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 (%s)"],"Reply":["\u041e\u0442\u0432\u0435\u0442\u0438\u0442\u044c"],"Comments":["\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438"]}},"comment":{"reference":"wp-admin\/js\/edit-comments.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Preference activated - %s":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0430 - %s"],"Preference deactivated - %s":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0430 - %s"],"Preferences":["\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f"],"Back":["\u041d\u0430\u0437\u0430\u0434"]}},"comment":{"reference":"wp-includes\/js\/dist\/preferences.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Non breaking space":["\u041d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b"],"https:\/\/www.w3.org\/WAI\/tutorials\/images\/decision-tree\/":["https:\/\/www.w3.org\/WAI\/tutorials\/images\/decision-tree\/"],"Mark as nofollow":["\u041e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0430\u043a nofollow"],"Text direction":["\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0438\u0441\u044c\u043c\u0430"],"A valid language attribute, like \"en\" or \"fr\".":["\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u044f\u0437\u044b\u043a\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \"en\" \u0438\u043b\u0438 \"fr\"."],"Leave empty if decorative.":["\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0434\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u044f."],"Clear Unknown Formatting":["\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f"],"Create page: <mark>%s<\/mark>":["\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443: <mark>%s<\/mark>"],"Highlight":["\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435"],"Keyboard input":["\u0412\u0432\u043e\u0434 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b"],"Inline code":["\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434"],"Describe the purpose of the image.":["\u041e\u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f."],"Link edited.":["\u0421\u0441\u044b\u043b\u043a\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430."],"Link removed.":["\u0421\u0441\u044b\u043b\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0430."],"Inline image":["\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435"],"media":["\u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b"],"photo":["\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f"],"Warning: the link has been inserted but may have errors. Please test it.":["\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0441\u0441\u044b\u043b\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0435\u0451."],"Link inserted.":["\u0421\u0441\u044b\u043b\u043a\u0430 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430."],"Left to right":["\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e"],"Right to left":["\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e"],"Link":["\u0421\u0441\u044b\u043b\u043a\u0430"],"Background":["\u0424\u043e\u043d"],"Superscript":["\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441"],"Subscript":["\u041d\u0438\u0436\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441"],"Strikethrough":["\u041f\u0435\u0440\u0435\u0447\u0451\u0440\u043a\u043d\u0443\u0442\u044b\u0439"],"Underline":["\u041f\u043e\u0434\u0447\u0451\u0440\u043a\u043d\u0443\u0442\u044b\u0439"],"Italic":["\u041a\u0443\u0440\u0441\u0438\u0432"],"Bold":["\u0416\u0438\u0440\u043d\u044b\u0439"],"Language":["\u042f\u0437\u044b\u043a"],"Text":["\u0422\u0435\u043a\u0441\u0442"],"Width":["\u0428\u0438\u0440\u0438\u043d\u0430"],"Alternative text":["\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442"],"Apply":["\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c"]}},"comment":{"reference":"wp-includes\/js\/dist\/format-library.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Legacy widget":["\u0423\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0432\u0438\u0434\u0436\u0435\u0442"],"Create a classic widget layout with a title that\u2019s styled by your theme for your widget areas.":["\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0430\u043a\u0435\u0442 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c, \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0434 \u0432\u0430\u0448\u0443 \u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432."],"Widget Group":["\u0413\u0440\u0443\u043f\u043f\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432"],"The \"%s\" block was affected by errors and may not function properly. Check the developer tools for more details.":["\u0412 \u0431\u043b\u043e\u043a\u0435 \"%s\" \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u043e. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0434\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438."],"Move to widget area":["\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432"],"Widget is missing.":["\u0412\u0438\u0434\u0436\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442."],"No preview available.":["\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d."],"Legacy Widget Preview":["\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430"],"Select widget":["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0436\u0435\u0442"],"Convert to blocks":["\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u043b\u043e\u043a\u0438"],"Move to":["\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c"],"Legacy Widget":["\u0423\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0432\u0438\u0434\u0436\u0435\u0442"],"There are no widgets available.":["\u041d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432."],"Save":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c"],"Title":["\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a"]}},"comment":{"reference":"wp-includes\/js\/dist\/widgets.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"The file URL has been copied to your clipboard":["\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430"],"An error has occurred. Please reload the page and try again.":["\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443."]}},"comment":{"reference":"wp-admin\/js\/media.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Plugin details":["\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0435"],"Plugin: %s":["\u041f\u043b\u0430\u0433\u0438\u043d: %s"]}},"comment":{"reference":"wp-admin\/js\/plugin-install.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Screen Options updated.":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b."],"%1$s is deprecated since version %2$s with no alternative available.":["%1$s \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 %2$s \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439, \u0431\u0435\u0437 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b."],"%1$s is deprecated since version %2$s! Use %3$s instead.":["%1$s \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 %2$s \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439! \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 %3$s."],"Please select at least one item to perform this action on.":["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f."],"Expand Main menu":["\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e"],"Dismiss this notice.":["\u0421\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435."],"You are about to permanently delete these items from your site.\nThis action cannot be undone.\n'Cancel' to stop, 'OK' to delete.":["\u0412\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441 \u0441\u0430\u0439\u0442\u0430.\n\u042d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e.\n '\u041e\u0442\u043c\u0435\u043d\u0430' \u0434\u043b\u044f \u043e\u0442\u043c\u0435\u043d\u044b, 'OK' \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f."],"Collapse Main menu":["\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e"]}},"comment":{"reference":"wp-admin\/js\/common.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"An error occurred while processing your request. Please try again later.":["\u041f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437."],"Sorry, you are not allowed to do that.":["\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u0432\u0430\u043c \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435."]}},"comment":{"reference":"wp-admin\/js\/tags.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Hide":["\u0421\u043a\u0440\u044b\u0442\u044c"],"Hide password":["\u0421\u043a\u0440\u044b\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c"],"Show password":["\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c"],"Show":["\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c"]}},"comment":{"reference":"wp-admin\/js\/password-toggle.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"%d result found. Use up and down arrow keys to navigate.":["\u041d\u0430\u0439\u0434\u0435\u043d %d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0432\u0432\u0435\u0440\u0445\/\u0432\u043d\u0438\u0437.","\u041d\u0430\u0439\u0434\u0435\u043d\u043e %d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0432\u0432\u0435\u0440\u0445\/\u0432\u043d\u0438\u0437.","\u041d\u0430\u0439\u0434\u0435\u043d\u043e %d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0432\u0432\u0435\u0440\u0445\/\u0432\u043d\u0438\u0437."],"Term selected.":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u044b\u0431\u0440\u0430\u043d."],"tag delimiter\u0004,":[","],"No results found.":["\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e."]}},"comment":{"reference":"wp-admin\/js\/tags-suggest.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"December":["\u0414\u0435\u043a\u0430\u0431\u0440\u044c"],"November":["\u041d\u043e\u044f\u0431\u0440\u044c"],"October":["\u041e\u043a\u0442\u044f\u0431\u0440\u044c"],"September":["\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c"],"August":["\u0410\u0432\u0433\u0443\u0441\u0442"],"July":["\u0418\u044e\u043b\u044c"],"June":["\u0418\u044e\u043d\u044c"],"May":["\u041c\u0430\u0439"],"April":["\u0410\u043f\u0440\u0435\u043b\u044c"],"March":["\u041c\u0430\u0440\u0442"],"February":["\u0424\u0435\u0432\u0440\u0430\u043b\u044c"],"January":["\u042f\u043d\u0432\u0430\u0440\u044c"],"input control\u0004Show %s":["\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c %s"],"Border color picker. The currently selected color has a value of \"%s\".":["\u0412\u044b\u0431\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab%s\u00bb."],"Border color picker. The currently selected color is called \"%1$s\" and has a value of \"%2$s\".":["\u0412\u044b\u0431\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab%1$s\u00bb \u0438 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab%2$s\u00bb."],"Border color and style picker. The currently selected color has a value of \"%s\".":["\u0412\u044b\u0431\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 \u0438 \u0441\u0442\u0438\u043b\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u044b. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab%s\u00bb."],"Border color and style picker. The currently selected color has a value of \"%1$s\". The currently selected style is \"%2$s\".":["\u0412\u044b\u0431\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 \u0438 \u0441\u0442\u0438\u043b\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u044b. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab%1$s\u00bb. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c \u2014 \u00ab%2$s\u00bb."],"Border color and style picker. The currently selected color is called \"%1$s\" and has a value of \"%2$s\".":["\u0412\u044b\u0431\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 \u0438 \u0441\u0442\u0438\u043b\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u044b. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab%1$s\u00bb \u0438 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab%2$s\u00bb."],"Border color and style picker. The currently selected color is called \"%1$s\" and has a value of \"%2$s\". The currently selected style is \"%3$s\".":["\u0412\u044b\u0431\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 \u0438 \u0441\u0442\u0438\u043b\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u044b. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab%1$s\u00bb \u0438 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab%2$s\u00bb. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c \u2014 \u00ab%3$s\u00bb."],"%s items selected":["%s \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432"],"Select AM or PM":["\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f: \u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f"],"Select an item":["\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442"],"No items found":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e"],"Remove color: %s":["\u0423\u0434\u0430\u043b\u0438\u0442\u0Line truncated
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Uncategorized":["\u0411\u0435\u0437 \u0440\u0443\u0431\u0440\u0438\u043a\u0438"],"Enlarge on click":["\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u0449\u0435\u043b\u0447\u043a\u0443"],"Tools provide different sets of interactions for blocks. Choose between simplified content tools (Write) and advanced visual editing tools (Design).":["\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0431\u043b\u043e\u043a\u043e\u0432. \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u043c (\u00ab\u0422\u0435\u043a\u0441\u0442\u00bb) \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u00ab\u0414\u0438\u0437\u0430\u0439\u043d\u00bb)."],"Edit layout and styles.":["\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u043a\u0435\u0442 \u0438 \u0441\u0442\u0438\u043b\u0438."],"Focus on content.":["\u0421\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u044c\u0442\u0435\u0441\u044c \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435."],"Choose whether to use the same value for all screen sizes or a unique value for each screen size.":["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0430\u0445 \u043b\u044e\u0431\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u044d\u043a\u0440\u0430\u043d\u0430."],"Drag and drop a video, upload, or choose from your library.":["\u041f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0439\u0442\u0435 \u0432\u0438\u0434\u0435\u043e, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0439\u0442\u0435 \u0438\u0445 \u0438\u043b\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432."],"Drag and drop an image, upload, or choose from your library.":["\u041f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0439\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0439\u0442\u0435 \u0438\u0445 \u0438\u043b\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432."],"Drag and drop an audio file, upload, or choose from your library.":["\u041f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0439\u0442\u0435 \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u044b, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0439\u0442\u0435 \u0438\u0445 \u0438\u043b\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432."],"Drag and drop an image or video, upload, or choose from your library.":["\u041f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0439\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0439\u0442\u0435 \u0438\u0445 \u0438\u043b\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432."],"%d%%":["%d%%"],"Image cropped and rotated.":["\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0435\u0437\u0430Line truncated
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Showing %1$s of %2$s media items":["\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 %1$s \u0438\u0437 %2$s \u043c\u0435\u0434\u0438\u0430\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432"],"Jump to first loaded item":["\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443"],"Load more":["\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0449\u0451"],"Number of media items displayed: %d. Click load more for more results.":["\u0427\u0438\u0441\u043b\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u043c\u0435\u0434\u0438\u0430\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432: %d, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \"\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\" \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432."],"The file URL has been copied to your clipboard":["\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430"],"%s item selected":["\u0412\u044b\u0431\u0440\u0430\u043d %s \u044d\u043b\u0435\u043c\u0435\u043d\u0442","\u0412\u044b\u0431\u0440\u0430\u043d\u044b %s \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430","\u0412\u044b\u0431\u0440\u0430\u043d\u044b %s \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432"],"Number of media items displayed: %d. Scroll the page for more results.":["\u0427\u0438\u0441\u043b\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u043c\u0435\u0434\u0438\u0430\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432: %d, \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432."]}},"comment":{"reference":"wp-includes\/js\/media-views.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Application password has been copied to your clipboard.":["\u041f\u0430\u0440\u043e\u043b\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430."],"Your new password has not been saved.":["\u0412\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0431\u044b\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d."],"Hide":["\u0421\u043a\u0440\u044b\u0442\u044c"],"Confirm use of weak password":["\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0430\u0431\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f."],"Hide password":["\u0421\u043a\u0440\u044b\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c"],"Show password":["\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c"],"Show":["\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c"],"The changes you made will be lost if you navigate away from this page.":["\u0421\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0439\u0434\u0451\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."]}},"comment":{"reference":"wp-admin\/js\/user-profile.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"An error occurred while saving your changes. Please try again. If the problem persists, you may need to manually update the file via FTP.":["\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f, \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0435\u0437 FTP."],"There is %s error which must be fixed before you can update this file.":["\u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0430 %s \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b.","\u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0438 %s \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b.","\u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0438 %s \u043e\u0448\u0438\u0431\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b."],"The changes you made will be lost if you navigate away from this page.":["\u0421\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0439\u0434\u0451\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."]}},"comment":{"reference":"wp-admin\/js\/theme-plugin-editor.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Explore all blocks":["\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438"],"Customize each block":["\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u043b\u043e\u043a"],"Welcome to the editor":["\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440"],"Enable or disable fullscreen mode.":["\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c."],"Use up and down arrow keys to resize the meta box panel.":["\u041f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u043c\u0438 \u00ab\u0412\u0432\u0435\u0440\u0445\u00bb \u0438 \u00ab\u0412\u043d\u0438\u0437\u00bb, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043d\u0435\u043b\u0438 \u043e\u043a\u043d\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445."],"Meta Boxes":["\u041c\u0435\u0442\u0430-\u0431\u043e\u043a\u0441\u044b"],"New to the block editor? Want to learn more about using it? <a>Here's a detailed guide.<\/a>":["\u0412\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0431\u043b\u043e\u043a\u043e\u0432? \u0425\u043e\u0442\u0438\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438? <a>\u0412\u043e\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e.<\/a>"],"pattern (singular)\u0004Synced":["\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439"],"Sync this pattern across multiple locations.":["\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445."],"Fullscreen on.":["\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c."],"Fullscreen off.":["\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c."],"Show and hide the admin user interface":["\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430"],"Enter fullscreen":["\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c"],"My pattern":["\u041c\u043e\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d"],"Create pattern":["\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0442\u0442\u0435\u0440\u043d"],"Hide & Reload Page":["\u0421\u043a\u0440\u044b\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443"],"Show & Reload Page":["\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443"],"Manage patterns":["\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c\u0438"],"https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/":["https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/"],"\"%s\" successfully created.":["%s \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d."],"The \"%s\" plugin has encountered an error and cannot be rendered.":["\u041f\u043b\u0430\u0433\u0438\u043d \"%s\" \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d."],"Drag to resize":["\u041f\u0435\u0440\u0435\u0442\Line truncated
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Your session has expired. You can log in again from this page or go to the login page.":["\u0412\u0430\u0448\u0430 \u0441\u0435\u0441\u0441\u0438\u044f \u0438\u0441\u0442\u0435\u043a\u043b\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0439\u0442\u0438 \u0441\u043d\u043e\u0432\u0430 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0445\u043e\u0434\u0430."]}},"comment":{"reference":"wp-includes\/js\/wp-auth-check.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Get started here":["\u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c"],"Interested in creating your own block?":["\u0425\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a?"],"Select a block to install and add it to your post.":["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0431\u043b\u043e\u043a \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0435\u0433\u043e \u0432 \u0441\u0432\u043e\u044e \u0437\u0430\u043f\u0438\u0441\u044c."],"Available to install":["\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438"],"No results available from your installed blocks.":["\u041d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u0430\u043c."],"%d additional block is available to install.":["\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d %d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a.","\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b %d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u0430.","\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b %d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432."],"Blocks available for install":["\u0411\u043b\u043e\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438"],"Install block":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u043b\u043e\u043a"],"%1$s <span>by %2$s<\/span>":["%1$s <span>\u043e\u0442 %2$s<\/span>"],"Installing\u2026":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\u2026"],"Install %1$s. %2$s stars with %3$s review.":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c %1$s. \u0420\u0435\u0439\u0442\u0438\u043d\u0433: %2$s, \u043e\u0442\u0437\u044b\u0432\u043e\u0432: %3$s.","\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c %1$s. \u0420\u0435\u0439\u0442\u0438\u043d\u0433: %2$s, \u043e\u0442\u0437\u044b\u0432\u043e\u0432: %3$s.","\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c %1$s. \u0420\u0435\u0439\u0442\u0438\u043d\u0433: %2$s, \u043e\u0442\u0437\u044b\u0432\u043e\u0432: %3$s."],"Try reloading the page.":["\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443."],"Block %s installed and added.":["\u0411\u043b\u043e\u043a %s \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d."],"Your site doesn\u2019t include support for the %s block. You can try installing the block, convert it to a Custom HTML block, or remove it entirely.":["\u0412\u0430\u0448 \u0441\u0430\u0439\u0442 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 %s \u0431\u043b\u043e\u043a\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u043b\u043e\u043a, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 HTML-\u0431\u043b\u043e\u043a \u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u0430\u043b\u0438\u0442\u044c."],"Your site doesn\u2019t include support for the %s block. You can try installing the block or remove it entirely.":["\u0412\u0430\u0448 \u0441\u0430\u0439\u0442 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0431\u043b\u043e\u043a %s. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0Line truncated
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Some selected posts have this category":["\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u044d\u0442\u043e\u0439 \u0440\u0443\u0431\u0440\u0438\u043a\u0435"],"All selected items have been removed. Select new items to use Bulk Actions.":["\u0412\u0441\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439."],"Remove &#8220;%s&#8221; from Bulk Edit":["\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u00ab%s\u00bb \u0438\u0437 \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f"],"Error while saving the changes.":["\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439."],"Changes saved.":["\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b."],"Item removed.":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u0434\u0430\u043b\u0435\u043d."],"tag delimiter\u0004,":[","],"(no title)":["(\u0431\u0435\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f)"]}},"comment":{"reference":"wp-admin\/js\/inline-edit-post.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Clear color":["\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0446\u0432\u0435\u0442"],"Select default color":["\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0446\u0432\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Color value":["\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430"],"Select Color":["\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0446\u0432\u0435\u0442"],"Clear":["\u0421\u0431\u0440\u043e\u0441"],"Default":["\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"]}},"comment":{"reference":"wp-admin\/js\/color-picker.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Term added.":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d."],"Term removed.":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u0434\u0430\u043b\u0435\u043d."],"Remove term:":["\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442:"],"tag delimiter\u0004,":[","]}},"comment":{"reference":"wp-admin\/js\/tags-box.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Tilde":["\u0422\u0438\u043b\u044c\u0434\u0430"],"Backtick":["\u041a\u0430\u0432\u044b\u0447\u043a\u0430"],"Period":["\u0422\u043e\u0447\u043a\u0430"],"Comma":["\u0417\u0430\u043f\u044f\u0442\u0430\u044f"]}},"comment":{"reference":"wp-includes\/js\/dist\/keycodes.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"App icon preview: The current image has no alternative text. The file name is: %s":["\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0437\u043d\u0430\u0447\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430: %s"],"App icon preview: Current image: %s":["\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0437\u043d\u0430\u0447\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: \u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435: %s"],"Browser icon preview: The current image has no alternative text. The file name is: %s":["\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0437\u043d\u0430\u0447\u043a\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430: \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430: %s"],"Browser icon preview: Current image: %s":["\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0437\u043d\u0430\u0447\u043a\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430: \u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435: %s"]}},"comment":{"reference":"wp-admin\/js\/site-icon.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"part of a total number of menu items\u0004%1$s of %2$s":["%1$s \u0438\u0437 %2$s"],"menu item without a parent in navigation menu\u0004No Parent":["\u041d\u0435\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f"],"You are about to permanently delete this menu.\n'Cancel' to stop, 'OK' to delete.":["\u0412\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u043c\u0435\u043d\u044e. \n \u00ab\u041e\u0442\u043c\u0435\u043d\u0430\u00bb \u2014 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u00ab\u041e\u041a\u00bb \u2014 \u0443\u0434\u0430\u043b\u0438\u0442\u044c."],"missing menu item navigation label\u0004(no label)":["(\u043d\u0435\u0442 \u044f\u0440\u043b\u044b\u043a\u0430)"],"The changes you made will be lost if you navigate away from this page.":["\u0421\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0439\u0434\u0451\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."],"No results found.":["\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e."]}},"comment":{"reference":"wp-admin\/js\/nav-menu.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Your new password for %s is:":["\u0412\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f %s:"],"Be sure to save this in a safe location. You will not be able to retrieve it.":["\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435. \u0412\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e."]}},"comment":{"reference":"wp-admin\/js\/auth-app.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"text direction\u0004ltr":["ltr"]}},"comment":{"reference":"wp-includes\/js\/dist\/i18n.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Word count type. Do not translate!\u0004words":["words"],"Keeps the text cursor within blocks while navigating with arrow keys, preventing it from moving to other blocks and enhancing accessibility for keyboard users.":["\u0423\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u0443\u0440\u0441\u043e\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u043e\u0432 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0432\u0438\u0448 \u0441\u043e \u0441\u0442\u0440\u0435\u043b\u043a\u0430\u043c\u0438, \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u044f \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0431\u043b\u043e\u043a\u0438 \u0438 \u0434\u0435\u043b\u0430\u044f \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b."],"panel button label\u0004Settings":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438"],"noun, panel\u0004Document":["\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442"],"Changes will be applied to all selected %s.":["\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u043a\u043e \u0432\u0441\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c %s."],"%i %s":["%i %s"],"Set as posts page":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0437\u0430\u043f\u0438\u0441\u0435\u0439"],"Set posts page":["\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0437\u0430\u043f\u0438\u0441\u0435\u0439"],"Set \"%1$s\" as the posts page? %2$s":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u00ab%1$s\u00bb \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0437\u0430\u043f\u0438\u0441\u0435\u0439? %2$s"],"This page will show the latest posts.":["\u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438."],"This will replace the current posts page: \"%s\"":["\u041e\u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u043d\u044b\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0437\u0430\u043f\u0438\u0441\u0435\u0439: \u00ab%s\u00bb"],"An error occurred while setting the posts page.":["\u041f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430."],"Posts page updated.":["\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430."],"Set as homepage":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b"],"Set homepage":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443"],"Set \"%1$s\" as the site homepage? %2$s":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u00ab%1$s\u00bb \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0430\u0439\u0442\u0430? %2$s"],"This will replace the current homepage: \"%s\"":["\u041e\u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u043d\u044b\u043d\u0435\u0448\u043d\u044e\u044e \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443: \u00ab%s\u00bb"],"This will replace the current homepage which is set to display latest posts.":["\u041e\u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u043d\u044b\u043d\u0435\u0448\u043d\u044e\u044e \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0433\u0434\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0Line truncated
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Dismiss":["\u0417\u0430\u043a\u0440\u044b\u0442\u044c"]}},"comment":{"reference":"wp-includes\/js\/wp-pointer.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Uncategorized":["\u0411\u0435\u0437 \u0440\u0443\u0431\u0440\u0438\u043a\u0438"],"The requested page could not be found. Please check the URL.":["\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441."],"Preview your website's visual identity: colors, typography, and blocks.":["\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0430\u0448 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442: \u0446\u0432\u0435\u0442\u0430, \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0438 \u0431\u043b\u043e\u043a\u0438."],"Status & Visibility":["\u0421\u0442\u0430\u0442\u0443\u0441 \u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c"],"This field can't be moved down":["\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0438\u0436\u0435"],"This field can't be moved up":["\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u044b\u0448\u0435"],"Density option for DataView layout\u0004Compact":["\u041a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e"],"Density option for DataView layout\u0004Balanced":["\u0423\u0440\u0430\u0432\u043d\u043e\u0432\u0435\u0448\u0435\u043d\u043d\u044b\u0439"],"Density option for DataView layout\u0004Comfortable":["\u041a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u044b\u0439"],"Density":["\u041f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c"],"Navigate to item":["\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443"],"verb\u0004Filter":["\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f"],"Global Styles pagination":["\u041f\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0438\u043b\u0435\u0439"],"Apply the selected revision to your site.":["\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044e \u0441\u0430\u0439\u0442\u0430."],"Indicates these doutone filters are created by the user.\u0004Custom":["\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e"],"Indicates these duotone filters come from WordPress.\u0004Default":["\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Indicates these duotone filters come from the theme.\u0004Theme":["\u0422\u0435\u043c\u0430 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f"],"Additionally, paragraphs help structure the flow of information and provide logical breaks between different concepts or pieces of information. In terms of formatting, paragraphs in websites are commonly denoted by a vertical gap or indentation between each block of text. This visual separation helps visually distinguish one paragraph from another, creating a clear and organized layout that guides the reader through the content smoothly.":["\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0430\u0431\u0437\u0430\u0446\u044b \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0438 \u0434\u0430\u043d\u043d\u044b\u0435. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0431\u0437\u0430\u0446\u044b \u043d\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c \u0438\u043b\u0438 \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u043c \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0436\u0434\u044b\u043cLine truncated
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Error while saving the changes.":["\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439."],"Changes saved.":["\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b."]}},"comment":{"reference":"wp-admin\/js\/inline-edit-tax.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Error while sideloading file %s to the server.":["\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 %s \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435."],"Only one file can be used here.":["\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b."],"%s: Sorry, you are not allowed to upload this file type.":["%s: \u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u0432\u0430\u043c \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430."],"Select or Upload Media":["\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c"],"Error while uploading file %s to the media library.":["\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 %s \u0432 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443."],"%s: This file is empty.":["%s: \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043f\u0443\u0441\u0442."],"%s: Sorry, this file type is not supported here.":["%s: \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f."],"%s: This file exceeds the maximum upload size for this site.":["%s: \u0420\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430."]}},"comment":{"reference":"wp-includes\/js\/dist\/media-utils.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Block rendered as empty.":["\u0411\u043b\u043e\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0443\u0441\u0442\u043e\u0439."],"Error loading block: %s":["\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u043b\u043e\u043a\u0430: %s"]}},"comment":{"reference":"wp-includes\/js\/dist\/server-side-render.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-08-05 20:51:52+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Screen Options updated.":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b."],"Attend an upcoming event near you.":["\u0423\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u0449\u0435\u043c \u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u0438 \u0440\u044f\u0434\u043e\u043c \u0441 \u0432\u0430\u043c\u0438."],"Events widget offset prefix\u0004GMT":["GMT"],"%1$s %2$d \u2013 %3$s %4$d, %5$d":["%1$s %2$d \u2013 %3$s %4$d, %5$d"],"upcoming events year format\u0004Y":["Y"],"upcoming events day format\u0004j":["j"],"%1$s %2$d\u2013%3$d, %4$d":["%1$s %2$d\u2013%3$d, %4$d"],"upcoming events month format\u0004F":["F"],"City updated. Listing events near %s.":["\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0433\u043e\u0440\u043e\u0434\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430. \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0440\u044f\u0434\u043e\u043c \u0441 %s."],"We couldn\u2019t locate %s. Please try another nearby city. For example: Kansas City; Springfield; Portland.":["\u041c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0439\u0442\u0438 %s. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0433\u043e\u0440\u043e\u0434. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u041a\u0440\u0430\u0441\u043d\u043e\u0433\u043e\u0440\u0441\u043a; \u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u041e\u0431\u043b\u0430\u0441\u0442\u044c; \u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0430\u044f \u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f."],"An error occurred. Please try again.":["\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430."],"Enter your closest city to find nearby events.":["\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0433\u043e\u0440\u043e\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c\u044b\u0435 \u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u044f."],"l, M j, Y":["l, M j, Y"]}},"comment":{"reference":"wp-admin\/js\/dashboard.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Explore all blocks":["\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438"],"Customize each block":["\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u043b\u043e\u043a"],"settings landmark area\u0004Settings":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438"],"New to the block editor? Want to learn more about using it? <a>Here's a detailed guide.<\/a>":["\u0412\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0431\u043b\u043e\u043a\u043e\u0432? \u0425\u043e\u0442\u0438\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438? <a>\u0412\u043e\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e.<\/a>"],"List View shortcuts":["\u042f\u0440\u043b\u044b\u043a\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u043f\u0438\u0441\u043a\u0430"],"Add non breaking space.":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b."],"header landmark area\u0004Header":["\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a"],"https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/":["https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/"],"Convert the current paragraph or heading to a heading of level 1 to 6.":["\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0430\u0431\u0437\u0430\u0446\u0430 \u0438\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u0442 1 \u0434\u043e 6."],"Convert the current heading to a paragraph.":["\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0432 \u0430\u0431\u0437\u0430\u0446."],"Make the selected text inline code.":["\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c."],"Strikethrough the selected text.":["\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442."],"The \"%s\" plugin has encountered an error and cannot be rendered.":["\u041f\u043b\u0430\u0433\u0438\u043d \"%s\" \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d."],"Insert a link to a post or page.":["\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443."],"https:\/\/wordpress.org\/documentation\/article\/block-based-widgets-editor\/":["https:\/\/wordpress.org\/documentation\/article\/block-based-widgets-editor\/"],"Your theme provides %s \u201cblock\u201d area for you to add and edit content.\u00a0Try adding a search bar, social icons, or other types of blocks here and see how they\u2019ll look on your site.":["\u0412\u0430\u0448\u0430 \u0442\u0435\u043c\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 %s \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0431\u043b\u043e\u043a\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u044e\u0434\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e\u0438\u0441\u043a\u0430, \u0437\u043d\u0430\u0447\u043a\u0438 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0438\u043f\u044b \u0431\u043b\u043e\u043a\u043e\u0432, \u0447\u0442Line truncated
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Could not set that as the thumbnail image. Try a different attachment.":["\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0434\u0430\u0442\u044c \u044d\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u044b. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435."]}},"comment":{"reference":"wp-includes\/js\/media-editor.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Add new post":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c"],"Template parts":["\u0427\u0430\u0441\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430"],"Templates":["\u0428\u0430\u0431\u043b\u043e\u043d\u044b"],"Patterns":["\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b"],"Navigation":["\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f"],"Styles":["\u0421\u0442\u0438\u043b\u0438"],"Add new page":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443"],"An error occurred while creating the item.":["\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430."],"(no title)":["(\u0431\u0435\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f)"],"Pages":["\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b"]}},"comment":{"reference":"wp-includes\/js\/dist\/core-commands.js"}}
@@ -0,0 +1 @@
{"translation-revision-date":"2025-09-30 19:16:19+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"Word count type. Do not translate!\u0004words":["words"],"Cannot inherit the current template query when placed inside the singular content (e.g., post, page, 404, blank).":["\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u043f\u0438\u0441\u044c, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, 404, \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430)."],"Write summary. Press Enter to expand or collapse the details.":["\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0438\u043b\u0438 \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438."],"Muted because of Autoplay.":["\u0417\u0432\u0443\u043a \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d \u0438\u0437-\u0437\u0430 \u0430\u0432\u0442\u043e\u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f."],"Subheading":["\u041f\u043e\u0434\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a"],"Include headings from all pages (if the post is paginated).":["\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (\u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0440\u0430\u0437\u0431\u0438\u0442\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b)."],"Provide a text label or use the default.":["\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u044f\u0440\u043b\u044b\u043a \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e."],"Default (<hr>)":["\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (<hr>)."],"Show search label":["\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u044f\u0440\u043b\u044b\u043a \u043f\u043e\u0438\u0441\u043a\u0430"],"Displaying 1 \u2013 10 of 12":["\u041f\u043e\u043a\u0430\u0437\u0430\u043d\u044b 1 \u2014 10 \u0438\u0437 12"],"12 results found":["\u041d\u0430\u0439\u0434\u0435\u043d\u043e 12 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432"],"Change display type":["\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0438\u043f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f"],"Range display":["\u0423\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435"],"Total results":["\u0412\u0441\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432"],"Pagination arrow":["\u0421\u0442\u0440\u0435\u043b\u043a\u0430 \u043f\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438"],"Make label text visible, e.g. \"Next Page\".":["\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u044f\u0440\u043b\u044b\u043a\u0430 \u0432\u0438\u0434\u0438\u043c\u044b\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u00ab\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u00bb."],"No posts were found.":["\u0417\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b."],"Descending by order":["\u041f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e"],"Ascending by order":["\u041f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e"],"This post type (%s) does not support the author.":["\u0412 \u044d\u0442\u043e\u043c \u0442\u0438\u043f\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 (%s) \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431 \u0430\u0432\u0442\u043e\u0440\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f."],"Show a large initial letter.":["\u041e\u0442\u043Line truncated
+373
View File
@@ -0,0 +1,373 @@
<?php
return ['x-generator'=>'GlotPress/4.0.1','translation-revision-date'=>'2025-09-30 19:16:19+0000','plural-forms'=>'nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);','project-id-version'=>'WordPress - 6.8.x - Development','language'=>'ru','messages'=>['Google Font Name and VariantsNoto Serif:400,400i,700,700i'=>'Noto Serif:400,400i,700,700i','Comment number declension: on or offoff'=>'on','html_lang_attribute'=>'ru-RU','decline months names: on or offoff'=>'on','Word count type. Do not translate!words'=>'words','https://wordpress.org/'=>'https://ru.wordpress.org/','Open Sans font: on or offon'=>'on','F j, Y g:i a'=>'d.m.Y H:i','F j, Y'=>'d.m.Y','text directionltr'=>'ltr','closing curly single quote&#8217;'=>'&#8217;','opening curly single quote&#8216;'=>'&#8216;','closing curly double quote&#8221;'=>'&#187;','opening curly double quote&#8220;'=>'&#171;','number_format_thousands_sep'=>' ','number_format_decimal_point'=>',','Saturday'=>'Суббота','Friday'=>'Пятница','Thursday'=>'Четверг','Wednesday'=>'Среда','Tuesday'=>'Вторник','Monday'=>'Понедельник','Sunday'=>'Воскресенье','December'=>'Декабрь','November'=>'Ноябрь','October'=>'Октябрь','September'=>'Сентябрь','August'=>'Август','July'=>'Июль','June'=>'Июнь','May'=>'Май','April'=>'Апрель','March'=>'Март','February'=>'Февраль','January'=>'Январь','Uncategorized'=>'Без рубрики','Sorry, you are not allowed to edit users.'=>'Извините, вам не разрешено редактировать пользователей.','block keywordcustom post types'=>'произвольные типы записей','block keywordblogs'=>'блоги','block keywordblog'=>'блог','block descriptionDisplay the total number of results in a query.'=>'Показать общее количество результатов в запросе.','block titleQuery Total'=>'Итог запроса','nounUpload'=>'Отправить','verbUpload'=>'Загрузить','Email checks are rate limited to once every %s.'=>'Проверка email ограничена по частоте, не чаще чем один раз в %s.','This function should not be called before the theme directory is registered.'=>'Эта функция не может быть вызвана до регистрации папки темы.','Add Link Category'=>'Добавить рубрику ссылок','This file cannot be processed by the web server.'=>'Этот файл не может быть обработан веб-сервером.','An error occurred while processing your request. Please try again later.'=>'При обработке вашего запроса произошла ошибка. Пожалуйста, попробуйте еще раз.','A list of allowed area values for template parts.'=>'Список допустимых значений областей для частей шаблона.','A list of default template types.'=>'Список типов шаблонов по умолчанию.','Templates based on theme files can\'t have revisions.'=>'Шаблоны, основанные на файлах тем, не могут иметь редакции.','Whether to ignore sticky posts or not.'=>'Игнорировать ли прикрепленные записи.','The web server cannot generate responsive image sizes for this image. Convert it to JPEG or PNG before uploading.'=>'Веб -сервер не может генерировать адаптивные размеры изображений для этого изображения. Конвертируйте его в JPEG или PNG перед загрузкой.','The REST route parameter must be a string.'=>'Параметр маршрута REST должен быть строкой.','Add Template Part'=>'Добавить часть шаблона','Add Template'=>'Добавить шаблон','Add Changeset'=>'Добавить набор изменений','Add Media File'=>'Добавить медиафайл','Invalid password.'=>'Неверный пароль.','Unsupported hashing algorithm: %1$s. Supported algorithms are: %2$s'=>'Неподдерживаемый алгоритм хеширования: %1$s. Поддерживаемые алгоритмы: %2$s','Cannot set bookmarks on tokens that do no appear in the original HTML text.'=>'Не могу установить закладки на токенах, которые не появляются в оригинальном тексте HTML.','The context element "%s" is not supported.'=>'Элемент контекста «%s» не поддерживается.','The context element cannot be a void element, found "%s".'=>'Элемент контекста не может быть пустым элементоLine truncated
Address: %2$s
Name: %3$s'=>'Пользователем %1$s создан новый сайт
Адрес: %2$s
Название: %3$s','[%s] New Site Created'=>'[%s] Создан новый сайт','%s failed while writing image to stream.'=>'Запись изображения в поток функцией %s не удался.','The provided password is an invalid application password.'=>'Указанный пароль не является верным паролем приложения.','Could not delete application passwords.'=>'Невозможно удалить пароли приложения.','Could not delete application password.'=>'Невозможно удалить пароль приложения.','Could not find an application password with that id.'=>'Невозможно найти пароль приложения с данным id.','Could not save application password.'=>'Невозможно сохранить пароль приложения.','An application name is required to create an application password.'=>'Для создания пароля приложения требуется указать название приложения.','Copy URL to clipboard'=>'Скопировать URL в буфер','Used as:'=>'Используется как:','%1$s must be a multiple of %2$s.'=>'%1$s должно быть множеством %2$s.','%1$s must contain at most %2$s property.'=>'%1$s должен содержать не более %2$s свойство.' . "\0" . '%1$s должен содержать не более %2$s свойства.' . "\0" . '%1$s должен содержать не более %2$s свойств.','%1$s must contain at least %2$s property.'=>'%1$s должен содержать как минимум %2$s свойство.' . "\0" . '%1$s должен содержать как минимум %2$s свойства.' . "\0" . '%1$s должен содержать как минимум %2$s свойств.','%s matches more than one of the expected formats.'=>'%s соответствует более чем одному из ожидаемых форматов.','%1$s matches %2$l, but should match only one.'=>'%1$s соответствует %2$l, но должен соответствовать только одной схеме.','%s does not match any of the expected formats.'=>'%s не соответствует любому из ожидаемых форматов.','%1$s is not a valid %2$l.'=>'%1$s не является верным для %2$l.','%1$s does not match the expected format. Reason: %2$s'=>'%1$s не соответствует ожидаемому формату. Причина: %2$s','%1$s is not a valid %2$s. Reason: %3$s'=>'%1$s не является верным для %2$s. Причина: %3$s','The IP address the application password was last used by.'=>'IP-адрес, с которого последний раз использовался пароль приложения.','The GMT date the application password was last used.'=>'Дата и время (GMT) последнего использования пароля приложения.','The GMT date the application password was created.'=>'Дата и время (GMT) создания пароля приложения.','The generated password. Only available after adding an application.'=>'Создаваемый пароль. Доступен после добавления приложения.','The name of the application password.'=>'Название пароля приложения.','A UUID provided by the application to uniquely identify it. It is recommended to use an UUID v5 with the URL or DNS namespace.'=>'UUID предоставляемый приложением для уникальной идентификации. Рекомендуется использовать UUID v5 с пространством имен URL или DNS.','The unique identifier for the application password.'=>'Уникальный идентификатор для пароля приложения.','Application password not found.'=>'Пароль приложения не найден.','Application passwords are not available for your account. Please contact the site administrator for assistance.'=>'Пароли приложений недоступны для вашей учётной записи. Обратитесь к администратору сайта за помощью.','Application passwords are not available.'=>'Пароли приложений недоступны.','Sorry, you are not allowed to manage application passwords for this user.'=>'Извините, вам не разрешено управлять паролями приложений для этого пользователя.','HTML containing an action to direct the user to where they can resolve the issue.'=>'HTML-код с действием для направления пользователя туда, где они могут решить проблему.','A more descriptive explLine truncated
WordPress has a built-in feature that detects when a plugin or theme causes a fatal error on your site, and notifies you with this automated email.
###CAUSE###
First, visit your website (###SITEURL###) and check for any visible issues. Next, visit the page where the error was caught (###PAGEURL###) and check for any visible issues.
###SUPPORT###
If your site appears broken and you can\'t access your dashboard normally, WordPress now has a special "recovery mode". This lets you safely login to your dashboard and investigate further.
###LINK###
To keep your site safe, this link will expire in ###EXPIRES###. Don\'t worry about that, though: a new link will be emailed to you if the error occurs again after it expires.
When seeking help with this issue, you may be asked for some of the following information:
###DEBUG###
###DETAILS###'=>'Привет!
Начиная с версии 5.2 WordPress может определять возникающие ошибки с плагинами или темой на сайте и присылать вам подобные сообщения автоматически.
###CAUSE###
Сначала зайдите на ваш сайт (###SITEURL###) и проверьте все видимые проблемы. Далее, зайдите на страницу, на которой возникла ошибка (###PAGEURL###) и проверьте видимые проблемы на ней.
###SUPPORT###
Если ваш сайт сломан и вы не сможете нормально войти в консоль, теперь можно использовать специальный "режим восстановления", который позволит безопасно войти в консоль для дальнейших действий.
###LINK###
В целях безопасности действие этой ссылки истекает через ###EXPIRES###. Но не беспокойтесь, если ошибка возникнет снова по истечении этого времени, то вам будет выслана новая ссылка.
Для решения проблемы вам потребуется следующая информация:
###DEBUG###
###DETAILS###','Please contact your host for assistance with investigating this issue further.'=>'Пожалуйста, обратитесь в техническую поддержку хостинга для дальнейшей диагностики этой проблемы.','Error occurred on a non-protected endpoint.'=>'Возникла ошибка на не защищенной точке подключения.','Recovery Mode &#8212; %s'=>'Режим восстановления &#8212; %s','[%s] Login Details'=>'[%s] Данные для входа на сайт','Move to Trash'=>'Удалить','Restore from Trash'=>'Восстановить из корзины','https://wordpress.org/support/forums/'=>'https://ru.wordpress.org/support/forums/','Support'=>'Поддержка','[%s] Network Admin Email Changed'=>'[%s] Email адрес администратора сети изменен','[%s] Network Admin Email Change Request'=>'[%s] Запрос на смену Email адреса администратора сети','[%s] Admin Email Changed'=>'[%s] Email адрес администратора изменен','[%s] Email Change Request'=>'[%s] Запрос на изменение адреса Email','[%s] Email Changed'=>'[%s] Адрес Email изменен','A calendar of your site’s posts.'=>'Календарь записей сайта.','Edit gallery'=>'Редактировать галерею','Custom Colors'=>'Собственные цвета','Failed to exit recovery mode. Please try again later.'=>'Ошибка выхода из режима восстановления. Попробуйте снова чуть позже.','Exit recovery mode link expired.'=>'Ссылка для выхода из режима восстановления истекла.','Failed to store the error.'=>'Сохранение текста ошибки не удалось.','Error not caused by a plugin or theme.'=>'Ошибка не вызвана плагином или темой.','[%s] Your Site is Experiencing a Technical Issue'=>'[%s] На сайте возникли технические проблемы','Error Details'=>'Подробности ошибки','A recovery link was already sent %1$s ago. Please wait another %2$s before requesting a new email.'=>'Ссылка восстановления уже отослана %1$s назад. Пожалуйста, подождите еще %2$s перед тем, как запрашивать новую.','The email could not be sent. Possible reason: your host may have disabled the %s function.'=>'Сообщение email не может быть отослано. Возможная причина: ваш хостинг отключил функцию %s.','Could not update the email last sent time.'=>'Не удалось обновить время последней отправки письма.','Recovery key expired.'=>'Ключ восстановления истек.','Invalid recovery key.'=>'Неверный ключ восстановления.','Invalid recovery key format.'=>'Неверный формат ключа восстановления.','Recovery Mode not initialized.'=>'Режим восстановления не инициализирован.','User roleSubscriber'=>'Подписчик','User roleContributor'=>'Участник','User roleAuthor'=>'Автор','User roleEditor'=>'Редактор','User roleAdministrator'=>'Администратор','Select Site Icon'=>'Выберите значок сайта','An incomplete personal data request for this email address already exists.'=>'Для этого email-адреса уже существует незавершенный запрос.','Keep widget settings and move it to the inactive widgets'=>'Сохранение настроек виджетов и перемещение его в неактивные виджеты','Invalid cookie.'=>'Неверные куки.','Cookie expired.'=>'Куки истекли.','Invalid cookie format.'=>'Неверный формат куки.','No cookie present.'=>'Нет куки.','An error of type %1$s was caused in line %2$s of the file %3$s. Error message: %4$s'=>'Ошибка с типом %1$s возникла на строке %2$s файла %3$s. Сообщение об ошибке: %4$s','https://developer.wordpress.org/themes/advanced-topics/child-themes/'=>'https://ru.wordpress.org/support/article/child-themes/','Additional images added to this gallery: %s'=>'Дополнительные изображения добавлены к этой галерее: %s','The current image has no alternative text. The file name is: %s'=>'Текущее изображение не имеет альтернативного текста. Имя файла: %s','Exit Recovery Mode'=>'Выйти из режима восстановления','%s Comment in moderation'=>'%s комментарий ждет од Line truncated
Your request to erase your personal data on ###SITENAME### has been completed.
If you have any follow-up questions or concerns, please contact the site administrator.
For more information, you can also read our privacy policy: ###PRIVACY_POLICY_URL###
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет,
Ваш запрос на удаление персональных данных на ###SITENAME### был выполнен.
Если у вас есть какие-либо последующие вопросы или проблемы, свяжитесь с администрацией сайта.
Для подробной информации вы также можете прочитать нашу политику конфиденциальности: ###PRIVACY_POLICY_URL###
С наилучшими пожеланиями,
Команда сайта ###SITENAME###
###SITEURL###','Howdy,
Your request to erase your personal data on ###SITENAME### has been completed.
If you have any follow-up questions or concerns, please contact the site administrator.
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет,
Ваш запрос на удаление персональных данных на ###SITENAME### был выполнен.
Если у вас есть какие-либо последующие вопросы или проблемы, свяжитесь с администрацией сайта.
С наилучшими пожеланиями,
Команда сайта ###SITENAME###
###SITEURL###','[%s] Erasure Request Fulfilled'=>'[%s] Запрос на удаление данных выполнен','Howdy,
A user data privacy request has been confirmed on ###SITENAME###:
User: ###USER_EMAIL###
Request: ###DESCRIPTION###
You can view and manage these data privacy requests here:
###MANAGE_URL###
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет,
Запрос на действие с персональными данными был подтвержден на ###SITENAME###:
Пользователь: ###USER_EMAIL###
Запрос: ###DESCRIPTION###
Вы можете посмотреть и управлять запросами на этой странице:
###MANAGE_URL###
С наилучшими пожеланиями,
Команда сайта ###SITENAME###
###SITEURL###','[%1$s] Confirm Action: %2$s'=>'[%1$s] Подтвердите действие: %2$s','Erase Personal Data'=>'Удаление персональных данных','Save my name, email, and website in this browser for the next time I comment.'=>'Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев.','User Description'=>'Информация о пользователе','User Last Name'=>'Фамилия пользователя','User First Name'=>'Имя пользователя','User Nickname'=>'Ник пользователя','User Display Name'=>'Отображаемое имя пользователя','User Registration Date'=>'Дата регистрации пользователя','User URL'=>'URL пользователя','User Email'=>'Адрес email пользователя','User Nice Name'=>'Псевдоним пользователя','User Login Name'=>'Имя входа пользователя','User ID'=>'ID пользователя','WordPress User'=>'Пользователь WordPress','WordPress Media'=>'Медиаданные WordPress','Privacy Policy'=>'Политика конфиденциальности','User action confirmed.'=>'Действие пользователя подтверждено.','Confirm the "%s" action'=>'Подтверждение действия "%s" ','Export Personal Data'=>'Экспорт персональных данных','Invalid action name.'=>'Неверное имя действия.','The site administrator has been notified and will fulfill your request as soon as possible.'=>'Администратору сайта было отослано уведомление, ваш запрос будет выполнен так скоро, насколько это возможно.','User Request'=>'Запрос пользователя','User Requests'=>'Запросы пользователя','This content was deleted by the author.'=>'Содержимое было удалено автором.','[deleted]'=>'[удалено]','Comment %d contains personal data but could not be anonymized.'=>'Комментарий %d содержит персональные данные, но не может быть анонимизирован.','Action has been confirmed.'=>'Действие подтверждено.','Howdy,
A request has been made to perform the following action on your account:
###DESCRIPTION###
To confirm this, please click on the following link:
###CONFIRM_URL###
You can safely ignore and delete this email if you do not want to
take this action.
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет,
Был получен запрос на следующее действие для вашей учетной записи:
###DESCRIPTION###
Для подтверждения этого запроса нажмите на следующую ссылку:
###CONFIRM_URL###
Вы можете проигнорировать и удалить это сообщение,
если вы не хотите совершать это действие.
С наилучшими пожеланиями,
Команда сайта ###SITENAME###
###SITEURL###','Pending'=>'В ожидании','request statusCompleted'=>'Выполнен','request statusFailed'=>'Неудачно','request statusConfirmed'=>'Подтвержден','request statusPending'=>'В ожидании','Comment URL'=>'URL комментария','Comment Content'=>'Содержимое комментария','Comment Date'=>'Дата комментария','Comment Author User Agent'=>'User Agent автора комментария','Comment Author IP'=>'IP автора комментария','Comment Author URL'=>'URL автора комментария','Comment Author Email'=>'Адрес email автора комментария','Comment Author'=>'Автор комментария','WordPress Comments'=>'Комментарии WordPress','Limit result set to users who are considered authors.'=>'Ограничить выборку пользователями-авторами.','Sorry, you are not allowed to query users by this parameter.'=>'Извините, вам не разрешено делать запрос пользователей по этому параметру.','media itemsMine'=>'Моё','Whether or not the post type can be viewed.'=>'Может ли тип записи быть доступным для просмотра.','The link you followed has expired.'=>'Ссылка, по которой вы перешли, устарела.','You need a higher level of permission.'=>'Вам требуется более высокий уровень доступа.','%s is already customizing this changeset. Do you want to take over?'=>'%s уже редактирует этот набор изменений. Хотите перехватить?','%s is already customizing this changeset. Please wait until they are done to try customizing. Your latest changes have been autosaved.'=>'%s уже редактирует этот набор изменений. Пожалуйста, подождите завершения редактирования. Ваши последние изменения были автоматически сохранены.','Update anyway, even though it might break your site?'=>'Всё равно обновить, даже если это может поломать ваш сайт?','The query only expected one placeholder, but an array of multiple placeholders was sent.'=>'В запросе ожидался только один описатель преобразований, но обнаружен массив из множества описателей.','customizer changeset statusScheduled'=>'Запланировано','themeInstalled'=>'Установлена','%1$s is not a valid property of Object.'=>'%1$s не является правильным свойством объекта.','You will not be able to install new themes from here yet since your install requires SFTP credentials. For now, please <a href="%s">add themes in the admin</a>.'=>'Вы не сможете устанавливать новые темы отсюда, так как ваша установка требует ввода данных для SFTP входа. Вы можете <a href="%s">добавить тему через консоль</a>.','categoriesMost Used'=>'Часто используемые','tagsMost Used'=>'Часто используемые','Click &#8220;Next&#8221; to start adding links to your new menu.'=>'Нажмите &#8220;Далее&#8221;, чтобы начать добавлять ссылки в ваше новое меню.','customizer changeset action/button labelSchedule'=>'Запланировать','+ Create New Menu'=>'+ Создать новое меню','Create a menu for this location'=>'Создать меню для этого места','Could not open handle for %1$s to %2$s.'=>'Не удалось открыть дескриптор для %1$s к %2$s.','Add a navigation menu to your sidebar.'=>'Добавить меню навигации на боковую панель.','%s has taken over and is currently customizing.'=>'Пользователь %s перехватил и сейчас производит настройку.','Looks like something&#8217;s gone wrong. Wait a couple seconds, and then try again.'=>'Похоже что-то пошло не так. Подождите пару секунд и попробуйте снова.','Take over'=>'Перехватить','Go back'=>'Назад','%s is already customizing this site. Please wait until they are done to try customizing. Your latest changes have been autosaved.'=>'Пользователь %s уже настраивает этот сайт. Пожалуйста, подождите пока он закончит. Ваши последние изменения были автоматически сохранены.','%s is already customizing this site. Do you want to take over?'=>'Пользователь %s уже на Line truncated
You recently requested to have the email address on your account changed.
If this is correct, please click on the following link to change it:
###ADMIN_URL###
You can safely ignore and delete this email if you do not want to
take this action.
This email has been sent to ###EMAIL###
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет ###USERNAME###,
Вы недавно запросили смену адреса электронной почты вашей учетной записи.
Если это на самом деле вы, то подтвердите замену нажав на ссылку ниже:
###ADMIN_URL###
Вы можете проигнорировать и удалить сообщение, для того
чтобы не предпринимать никаких действий.
Это сообщение было отправлено на ###EMAIL###
Успехов,
Команда сайта ###SITENAME###
###SITEURL###','<strong>Error:</strong> The email address is already used.'=>'<strong>Ошибка</strong>: Этот email адрес уже используется.','&larr; Go to Categories'=>'&larr; Перейти к рубрикам','&larr; Go to Link Categories'=>'&larr; Перейти к категориям ссылок','Sorry, you cannot preview new themes when you have changes scheduled or saved as a draft. Please publish your changes, or wait until they publish to preview new themes.'=>'Извините, вы не можете сделать предпросмотр новых тем, пока у вас имеются запланированные или сохраненные как черновик изменения. Опубликуйте ваши изменения или дождитесь их публикации для предпросмотра новых тем.','Schedule your customization changes to publish ("go live") at a future date.'=>'Запланируйте ваши изменения для публикации на будущую дату.','Homepage and posts page must be different.'=>'Главная страница и страница записей не должны быть одинаковы.','There is %d error which must be fixed before you can save.'=>'Возникла %d ошибка, которая должна быть исправлена перед тем, как вы сможете сохранить.' . "\0" . 'Возникли %d ошибки, которые должны быть исправлены перед тем, как вы сможете сохранить.' . "\0" . 'Возникло %d ошибок, которые должны быть исправлены перед тем, как вы сможете сохранить.','There is a more recent autosave of your changes than the one you are previewing. <a href="%s">Restore the autosave</a>'=>'Имеется более свежая автоматически сохраненная версия ваших изменений чем та, которую вы просматриваете. <a href="%s">Восстановить автоматически сохраненную версию</a>','Are you sure you want to discard your unpublished changes?'=>'Вы точно хотите отменить ваши неопубликованные изменения?','Reverting unpublished changes&hellip;'=>'Откатываем неопубликованные изменения&hellip;','Setting up your live preview. This may take a bit.'=>'Настраиваем живой предпросмотр. Это займет какое-то время.','Downloading your new theme&hellip;'=>'Скачивается ваша новая тема&hellip;','Discard changes'=>'Отменить изменения','Please save your changes in order to share the preview.'=>'Пожалуйста, сохраните ваши изменения для того, чтобы иметь возможность поделиться предпросмотром.','Updating'=>'Обновляем','Draft Saved'=>'Черновик сохранен','Activate &amp; Publish'=>'Активировать и опубликовать','Yiddish'=>'Идиш','Welsh'=>'Валлийский','Vietnamese'=>'Вьетнамский','Ukrainian'=>'Украинский','Turkish'=>'Турецкий','Thai'=>'Тайский','Tagalog'=>'Тагалог','Swedish'=>'Шведский','Swahili'=>'Суахили','Spanish'=>'Испанский','Slovenian'=>'Словенский','Slovak'=>'Словацкий','Serbian'=>'Сербский','Russian'=>'Русский','Romanian'=>'Румынский','Portuguese'=>'Португальский','Polish'=>'Польский','Persian'=>'Персидский','Norwegian'=>'Норвежский','Maltese'=>'Мальтийский','Malay'=>'Малайский','Macedonian'=>'Македонский','Lithuanian'=>'Литовский','Latvian'=>'Латышский','Korean'=>'Корейский','Japanese'=>'Японский','Italian'=>'Итальянский','Irish'=>'Ирландский','Indonesian'=>'Индонезийский','Icelandic'=>'Исландский','Hungarian'=>'Венгерский','Hindi'=>'Хинди','Hebrew'=>'Иврит','Haitian Creole'=>'Гаитянский креольский','Greek'=>'Греческий','German'=>'Немецкий','Galician'=>'Галисийский','French'=>'Французский','Filipino'=>'Филиппинский','Estonian'=>'Эстонский','English'=>'Английский','Dutch'=>'Нидерландский (голландский)','Danish'=>'Датский','Czech'=>'Чешский','Croatian'=>'Хорватский','Chinese (Traditional)'=>'Китайский (традиционный)','Chinese (Simplified)'=>'Китайский (упрощенный)','Chinese'=>'Китайский','Catalan'=>'Каталонский','Bulgarian Line truncated
This notice confirms that the network admin email address was changed on ###SITENAME###.
The new network admin email address is ###NEW_EMAIL###.
This email has been sent to ###OLD_EMAIL###
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет,
Это уведомление подтверждает что email адрес администратора сети был изменен на
###SITENAME###.
Новый email адрес администратора сети - ###NEW_EMAIL###.
Это сообщение было отправлено на ###OLD_EMAIL###
Успехов,
Команда сайта ###SITENAME###
###SITEURL###','Howdy ###USERNAME###,
You recently requested to have the network admin email address on
your network changed.
If this is correct, please click on the following link to change it:
###ADMIN_URL###
You can safely ignore and delete this email if you do not want to
take this action.
This email has been sent to ###EMAIL###
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет ###USERNAME###,
Вы недавно запросили смену адреса электронной почты
администратора сети.
Если это на самом деле так, пожалуйста, нажмите на ссылку ниже, чтобы изменить его:
###ADMIN_URL###
Вы можете проигнорировать и удалить это сообщение, чтобы
не предпринимать никаких действий.
Это сообщение было отправлено на ###EMAIL###
Успехов,
Команда сайта ###SITENAME###
###SITEURL###','User cannot be added to this site.'=>'Пользователь не может быть добавлен на этот сайт.','Scrape key check failed. Please try again.'=>'Ошибка проверки ключа очистки. Пожалуйста, попробуйте ещё раз.','Hi,
This notice confirms that the admin email address was changed on ###SITENAME###.
The new admin email address is ###NEW_EMAIL###.
This email has been sent to ###OLD_EMAIL###
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет,
Это уведомление подтверждает смену адреса электронной почты администратора на
###SITENAME###.
Новый адрес администратора - ###NEW_EMAIL###.
Это сообщение было отправлено на ###OLD_EMAIL###
Успехов,
Команда сайта ###SITENAME###
###SITEURL###','Only UUID V4 is supported at this time.'=>'В настоящее время поддерживаются только UUID V4.','The Press This plugin is required.'=>'Требуется плагин Press This.','%s themes'=>'%s тем','Filter themes (%s)'=>'Фильтр тем (%s)','Go to theme sources'=>'Перейти к источникам тем','Search WordPress.org themes'=>'Поиск тем на WordPress.org','Install &amp; Preview'=>'Установка и предпросмотр','Invalid URL.'=>'Неверный URL.','Time to add some links! Click &#8220;%s&#8221; to start putting pages, categories, and custom links in your menu. Add as many things as you would like.'=>'Время добавить пару ссылок! , Нажмите &#8220;%s&#8221;, чтобы начать добавлять страницы, рубрики и произвольные ссылки в меню, добавляйте столько, сколько вам нравится.','Choose image'=>'Выбор изображения','Choose audio'=>'Выберите аудио','Change audio'=>'Изменить аудио','Select audio'=>'Выбор аудио','Click &#8220;Add Image&#8221; to upload an image file from your computer. Your theme works best with an image with a header height of %s pixels &#8212; you&#8217;ll be able to crop your image once you upload it for a perfect fit.'=>'Нажмите &#8220;Добавить медиафайл&#8221; для загрузки файла изображения с компьютера. Ваша тема лучше всего смотрится с изображением заголовка высотой %s пикселей. После загрузки изображение можно обрезать, чтобы оно идеально поместилось.','Click &#8220;Add Image&#8221; to upload an image file from your computer. Your theme works best with an image with a header width of %s pixels &#8212; you&#8217;ll be able to crop your image once you upload it for a perfect fit.'=>'Нажмите &#8220;Добавить медиафайл&#8221; для загрузки файла изображения с компьютера. Ваша тема лучше всего смотрится с изображением заголовка шириной %s пикселей. После загрузки изображение можно обрезать, чтобы оно идеально поместилось.','Click &#8220;Add Image&#8221; to upload an image file from your computer. Your theme works best with an image with a header size of %s pixels &#8212; you&#8217;ll be able to crop your image once you upload it for a perfect fit.'=>'Нажмите &#8220;Добавить медиафайл&#8221; для загрузки файла изображения с компьютера. Ваша тема лучше всего смотрится с изображением заголовка размером %s пикселей. После загрузки изображение можно обрезать, чтобы оно идеально поместилось.','Click &#8220;Add Image&#8221; to upload an image file from your computer. Your theme works best with an image that matches the size of your video &#8212; you&#8217;ll be able to crop your image once you upload it for a perfect fit.'=>'Нажмите &#8220;Добавить медиафайл&#8221; для загрузки файла изображения с вашего компьютера. Ваша тема лучше всего смотрится с изображением соответствующим размеру видео. &#8212; Вы сможете обрезать изображение после загрузки, чтобы оно идеально поместилось.','%1$s-%2$s'=>'%1$s-%2$s','Meridian'=>'Меридиан','Minute'=>'Минута','Hour'=>'Час','Time'=>'Время','Day'=>'День','Month'=>'Месяц','Date'=>'Дата','Usage of user levels is deprecated. Use capabilities instead.'=>'Использование уровней для пользователей устарело. Используйте возможности.','The theme defines itself as its parent theme. Please check the %s header.'=>'Тема определяет себя как родительскую для себя же. Пожалуйста, проверьте заголовок %s.','Name for the Visual editor tabVisual'=>'Визуально','Create New Menu'=>'Создать новое меню','New Menu'=>'Новое меню','If your theme has widget areas, you can also add menus there. Visit the <a href="%s">Widgets panel</a> and add a &#8220;Navigation Menu widget&#8221; to display a menu in a sidebar or footer.'=>'Если используемая тема имеет области виджетов, то вы можете также добавить туда Line truncated
This action cannot be undone.
\'Cancel\' to stop, \'OK\' to delete.'=>'Вы собираетесь навсегда удалить эти элементы с сайта.
Это действие не может быть отменено.
\'Отмена\' для отмены, \'OK\' для удаления.','You are about to permanently delete this item from your site.
This action cannot be undone.
\'Cancel\' to stop, \'OK\' to delete.'=>'Вы собираетесь навсегда удалить этот элемент с сайта.
Это действие не может быть отменено.
\'Отмена\' для отмены, \'OK\' для удаления.','Suggested image dimensions: %1$s by %2$s pixels.'=>'Предлагаемый размер изображения: %1$s на %2$s пикселей.','Sorry, comments are not allowed for this item.'=>'Извините, комментарии для этого элемента не разрешены.','Sorry, you are not allowed to make proxied oEmbed requests.'=>'Извините, вам не разрешено делать проксированные запросы oEmbed.','Whether to perform an oEmbed discovery request for unsanctioned providers.'=>'Производить ли поисковый запрос oEmbed для провайдеров не из белого списка.','The maximum height of the embed frame in pixels.'=>'Максимальная высота внедряемого объекта в пикселях.','The maximum width of the embed frame in pixels.'=>'Максимальная ширина внедряемого объекта в пикселях. ','The oEmbed format to use.'=>'Используемый формат oEmbed.','The URL of the resource for which to fetch oEmbed data.'=>'URL ресурса для получения oEmbed данных.','Short for blue in RGBB'=>'B','Short for green in RGBG'=>'G','Short for red in RGBR'=>'R','Insert/edit media'=>'Вставить/Изменить медиа','Insert/edit code sample'=>'Вставить/изменить фрагмент кода','Table of Contents'=>'Оглавление','Date/time'=>'Дата/время','Id for link anchor (TinyMCE)Id'=>'Id','Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.'=>'Id должен начинаться с буквы, и содержать только буквы, цифры, тире, точки, запятые или знак подчеркивания.','You can navigate to other pages on your site while using the Customizer to view and edit the widgets displayed on those pages.'=>'Вы можете переходить на другие страницы вашего сайта используя интерфейс настройки для просмотра и редактирования виджетов на этих страницах.','Your theme has %s widget area, but this particular page does not display it.'=>'Ваша тема имеет %s область для виджетов, но эта страница не показывает ее.' . "\0" . 'Ваша тема имеет %s области для виджетов, но эта страница не показывает их.' . "\0" . 'Ваша тема имеет %s областей для виджетов, но эта страница не показывает их.','Your theme has 1 widget area, but this particular page does not display it.'=>'Ваша тема имеет одну область для виджетов, но эта страница не показывает ее.','Your theme has %s other widget area, but this particular page does not display it.'=>'Ваша тема имеет %s другую область для виджетов, но эта страница не показывает ее.' . "\0" . 'Ваша тема имеет %s других области для виджетов, но эта страница не показывает их.' . "\0" . 'Ваша тема имеет %s других областей для виджетов, но эта страница не показывает их.','Your theme has 1 other widget area, but this particular page does not display it.'=>'Ваша тема имеет одну другую область для виджетов, но эта страница не показывает ее.','This address is used for admin purposes, like new user notification.'=>'Этот адрес используется в целях администрирования. Например, для уведомления о новых пользователях.','Unique identifier for the term.'=>'Уникальный идентификатор элемента.','Required to be true, as terms do not support trashing.'=>'Должно быть истинно, так как элементы не поддерживают перемещение в корзину.','An alphanumeric identifier for the taxonomy.'=>'Буквенно-цифровой идентификатор таксономии.','Required to be true, as revisions do not support trashing.'=>'Должно быть истинно, так как редакции не поддерживают перемещение в корзину. ','REST base route for the post type.'=>'базовый путь REST для типа записи.','An alphanumeric identifier for the post type.'=>'Буквенно-цифровой идентификатор типа записи.','Human-readLine truncated
This notice confirms that your email address on ###SITENAME### was changed to ###NEW_EMAIL###.
If you did not change your email, please contact the Site Administrator at
###ADMIN_EMAIL###
This email has been sent to ###EMAIL###
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет, ###USERNAME###!
Это уведомление подтверждает, что ваш адрес email на сайте «###SITENAME###» успешно изменён на ###NEW_EMAIL###.
Если вы не меняли адрес, пожалуйста, напишите администратору сайта на
###ADMIN_EMAIL###
Это письмо было отправлено на ###EMAIL###
Успехов,
Команда сайта «###SITENAME###»
###SITEURL###','Hi ###USERNAME###,
This notice confirms that your password was changed on ###SITENAME###.
If you did not change your password, please contact the Site Administrator at
###ADMIN_EMAIL###
This email has been sent to ###EMAIL###
Regards,
All at ###SITENAME###
###SITEURL###'=>'Привет, ###USERNAME###!
Это уведомление подтверждает успешную смену вашего пароля на сайте «###SITENAME###».
Если вы не меняли пароль, пожалуйста, напишите администратору сайта на
###ADMIN_EMAIL###
Это письмо было отправлено на ###EMAIL###
Успехов,
Команда сайта «###SITENAME###»
###SITEURL###','No tags'=>'Меток нет','Attempting to parse a shortcode without a valid callback: %s'=>'Попытка вывести шорткод без функции обработки: %s','Close code tag'=>'Закрыть тег кода','Close list item tag'=>'Закрыть тег элемента списка','List item'=>'Элемент списка','Close numbered list tag'=>'Закрыть тег нумерованного списка','Close bulleted list tag'=>'Закрыть тег маркированного списка','Close inserted text tag'=>'Закрыть тег вставленного текста','Inserted text'=>'Вставленный текст','Close deleted text tag'=>'Закрыть тег удалённого текста','Deleted text (strikethrough)'=>'Удаленный (перечёркнутый) текст','Close blockquote tag'=>'Закрыть тег цитаты','Close italic tag'=>'Закрыть тег курсива','Close bold tag'=>'Закрыть тег жирного шрифта','mediaRemove video track'=>'Удалить дорожку видео','Remove poster image'=>'Удалить постер','Remove video source'=>'Удалить источник видео','Remove audio source'=>'Удалить источник аудио','Comma-separated list of replacement words in your language&#8217;tain&#8217;t,&#8217;twere,&#8217;twas,&#8217;tis,&#8217;twill,&#8217;til,&#8217;bout,&#8217;nuff,&#8217;round,&#8217;cause,&#8217;em'=>'&#8217;tain&#8217;t,&#8217;twere,&#8217;twas,&#8217;tis,&#8217;twill,&#8217;til,&#8217;bout,&#8217;nuff,&#8217;round,&#8217;cause,&#8217;em','Comma-separated list of words to texturize in your language\'tain\'t,\'twere,\'twas,\'tis,\'twill,\'til,\'bout,\'nuff,\'round,\'cause,\'em'=>'\'tain\'t,\'twere,\'twas,\'tis,\'twill,\'til,\'bout,\'nuff,\'round,\'cause,\'em','Content:'=>'Содержимое:','Allow link notifications from other blogs (pingbacks and trackbacks) on new posts.'=>'Разрешить оповещения с других блогов (уведомления и обратные ссылки) на новые статьи','Ctrl + letter:'=>'Ctrl + буква:','Cmd + letter:'=>'Cmd + буква:','Shift + Alt + letter:'=>'Shift + Alt + буква:','Ctrl + Alt + letter:'=>'Ctrl + Alt + буква:','Inline toolbar (when an image, link or preview is selected)'=>'Всплывающая панель (при выборе изображения, ссылки или объекта)','Additional shortcuts,'=>'Дополнительные комбинации,','Default shortcuts,'=>'Стандартные комбинации,','Customizing'=>'Настройка','Menu Options'=>'Настройки меню','Add to Menu'=>'Добавить в меню','Custom Links'=>'Произвольные ссылки','The search results will be updated as you type.'=>'Результаты поиска обновляются по мере набора.','Search Menu Items'=>'Искать элементы меню','Add Menu Items'=>'Добавить','Customizing &#9656; %s'=>'Настройка &#9656; %s','Move one level down'=>'Переместить на уровень ниже','Move one level up'=>'Переместить на уровень выше','Menu Locations'=>'Области для меню','Your theme can display menus in %s location. Select which menu you would like to use.'=>'Ваша тема поддерживает отображение меню в %s области. Выберите какое меню вы хотите использовать.' . "\0" . 'Ваша тема поддерживает отображение меню в %s областях. Выберите какое меню вы хотите использовать.' . "\0" . 'Ваша тема поддерживает отображение меню в %s областях. Выберите какое меню вы хотите использовать.','This panel is used for managing navigation menus for content you have already published on your site. You can create menus and add items for existing content such as pages, posts, categories, tags, formats, or custom links.'=>'Эта панель используется для управления меню на основе опубликованного содержимого. Можно создавать меню и добавлять ссылки на страницы, записи, рубрики, метки, форматы записей или произвольные ссылки.','Out from under %s'=>'Из-под «%s»','Under %s'=>'Под «%s»','Move out from under %s'=>'Переместить из-под «%s»','Move under %s'=>'Переместить под «%s»','Move to the top'=>'Переместить наверх','Move down one'=>'Переместить ниже','Move up one'=>'Переместить выше','Loading more results... pleas Line truncated
Your new account is set up.
You can log in with the following information:
Username: USERNAME
Password: PASSWORD
LOGINLINK
Thanks!
--The Team @ SITE_NAME'=>'Привет, USERNAME!
Ваша учётная запись настроена.
Вы можете войти, используя эту информацию:
Имя пользователя: USERNAME
Пароль: PASSWORD
LOGINLINK
Спасибо!
--Команда сайта «SITE_NAME»','Howdy USERNAME,
Your new SITE_NAME site has been successfully set up at:
BLOG_URL
You can log in to the administrator account with the following information:
Username: USERNAME
Password: PASSWORD
Log in here: BLOG_URLwp-login.php
We hope you enjoy your new site. Thanks!
--The Team @ SITE_NAME'=>'Привет, USERNAME!
Ваш новый сайт в сети «SITE_NAME» успешно создан по адресу:
BLOG_URL
Вы можете войти в панель управления со следующими координатами:
Имя пользователя: USERNAME
Пароль: PASSWORD
Адрес для входа: BLOG_URLwp-login.php
Мы надеемся, что вам понравится новый сайт. Спасибо!
--Команда сайта «SITE_NAME»','Drag and drop to reorder media files.'=>'Отсортируйте медиафайлы путём перетаскивания.','Detach'=>'Отсоединить','The %1$s option is deprecated for the family of %2$s functions. Use the %3$s function instead.'=>'Параметр %1$s семейства функций %2$s считается устаревшим. Используйте функцию %3$s.','The %1$s option is deprecated for the family of %2$s functions. Use the %3$s option instead.'=>'Параметр %1$s семейства функций %2$s считается устаревшим. Используйте параметр %3$s.','Select Post'=>'Выберите запись','Select Week'=>'Выберите неделю','Select Day'=>'Выберите день','Select Year'=>'Выберите год','Comments Off<span class="screen-reader-text"> on %s</span>'=>'Комментарии<span class="screen-reader-text"> к записи %s</span> отключены','%1$s Comment<span class="screen-reader-text"> on %2$s</span>'=>'%1$s комментарий<span class="screen-reader-text"> к записи %2$s</span>' . "\0" . '%1$s комментария<span class="screen-reader-text"> к записи %2$s</span>' . "\0" . '%1$s комментариев<span class="screen-reader-text"> к записи %2$s</span>','1 Comment<span class="screen-reader-text"> on %s</span>'=>'1 комментарий<span class="screen-reader-text"> к записи %s</span>','No Comments<span class="screen-reader-text"> on %s</span>'=>'Комментариев<span class="screen-reader-text"> к записи %s</span> нет','Link Text'=>'Текст ссылки','Live Preview'=>'Просмотреть','themePreviewing:'=>'Предварительный просмотр:','Theme Details'=>'Информация о теме','No categories found.'=>'Рубрик не найдено.','Distraction-free writing mode'=>'Полноэкранный режим','Theme support for %1$s should be registered before the %2$s hook.'=>'Поддержка функции %1$s в теме дожна быть зарегистрирована раньше действия %2$s.','Widget moved down'=>'Виджет перемещён вниз','Widget moved up'=>'Виджет перемещён вверх','To move focus to other buttons use Tab or the arrow keys. To return focus to the editor press Escape or use one of the buttons.'=>'Чтобы переместить фокус на другие кнопки, используйте Tab или клавиши со стрелками. Чтобы вернуть фокус в редактор, нажмите Escape или одну из кнопок.','Elements path'=>'Пути элементов','Editor toolbar'=>'Панель редактора','Editor menu (when enabled)'=>'Меню редактора (если включено)','Focus shortcuts:'=>'Клавиши фокуса:','Rich Text Area. Press Alt-Shift-H for help.'=>'Область редактирования. Нажмите Alt-Shift-H, чтобы получить больше информации.','The following values do not describe a valid date: month %1$s, day %2$s.'=>'Следующие значения не соответствуют корректной дате: месяц %1$s, день %2$s.','%s must set a database connection for use with escaping.'=>'Класс %s должен указать соединение, используемое для экранирования.','You need to pass an array of types.'=>'Необходимо передать массив типов.','A term with the name provided already exists in this taxonomy.'=>'Элемент с указанным именем и ярлыком уже существует в этой таксономии.','You can see all comments on this post here:'=>'Здесь вы можете посмотреть все комментарии к данной записи:','You can see all pingbacks on this post here:'=>'Здесь вы можете посмотреть все уведомления к записи:','You can see all trackbacks on this post here:'=>'Здесь вы можете посмотреть все обратные ссылки на запись:','Comment: %s'=>'Комментарий: %s','URL: %s'=>'URL: %s','nounTrash'=>'Корзина','Edit Selection'=>'Изменить выбор','verbTrash'=>'Удалить','Previous'=>'Назад','Posts navigation'=>'Навигация по записям','Newer posts'=>'Следующие записи','Older posts'=>'Предыдущие записи','translationsAvailable'=>'Доступные','translationsInstalled'=>'Установленные','post format archive titleChats'=>'Чаты','post format archive titleAudio'=>'Аудио','post format archive titleStatuses'=>'Статусы','post format archive titleLinkLine truncated
\'Cancel\' to stop, \'OK\' to delete.'=>'Вы собираетесь переместить эти элементы в корзину.
«Отмена» — оставить, «OK» — удалить.','Bulk select'=>'Множественный выбор','%s: %l.'=>'%s: %l.','missing menu item navigation label(no label)'=>'(нет ярлыка)','This site is no longer available.'=>'Этот сайт недоступен.','Search media'=>'Поиск медиафайлов','Filter by type'=>'Фильтр по типу','Filter by date'=>'Фильтр по дате','All dates'=>'Все даты','Bitrate Mode'=>'Режим битрейта','Bitrate'=>'Битрейт','Edit more details'=>'Изменить другие детали','View attachment page'=>'Просмотреть страницу вложения','Uploaded to:'=>'Загружено в:','Uploaded by:'=>'Загружено:','Bitrate:'=>'Битрейт:','Dimensions:'=>'Размеры:','File size:'=>'Размер файла:','Uploaded on:'=>'Загружен:','File type:'=>'Тип файла:','File name:'=>'Имя файла:','Edit next media item'=>'Редактировать следующий файл','Edit previous media item'=>'Редактировать предыдущий файл','Maximum upload file size: %s.'=>'Максимальный размер загружаемого файла: %s.','Close uploader'=>'Закрыть окно загрузчика','Search or use up and down arrow keys to select an item.'=>'Воспользуйтесь поиском или клавишами вверх/вниз, чтобы выбрать элемент.','Read more...'=>'Тег &laquo;Далее&raquo;','Your browser does not support direct access to the clipboard. Please use keyboard shortcuts or your browser&#8217;s edit menu instead.'=>'Ваш браузер не поддерживает прямой доступ к буферу обмена. Используйте горячие клавиши или меню «Правка» вашего браузера.','Widgets are independent sections of content that can be placed into widgetized areas provided by your theme (commonly called sidebars).'=>'Виджеты &#8212; это независимые блоки содержимого, которые можно размещать в областях, предусмотренных вашей темой (обычно их называют боковыми панелями).','You are customizing %s'=>'Вы настраиваете %s','<strong>Error:</strong> The comment could not be saved. Please try again later.'=>'<strong>Ошибка</strong>: Не удалось сохранить комментарий. Пожалуйста, повторите попытку позже.','(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)'=>'(Не удалось установить защищённое соединение с WordPress.org. Пожалуйста, свяжитесь с администратором сервера.)','Shift-click to edit this widget.'=>'Щёлкните, удерживая Shift, чтобы изменить виджет.','HTML tagAddress'=>'Адрес','If you are looking to paste rich content from Microsoft Word, try turning this option off. The editor will clean up text pasted from Word automatically.'=>'Если вы хотите вставить текст с форматированием из Microsoft Word, попробуйте отключить этот режим. Редактор автоматически очистит текст, скопированный из Word.','Keyboard Shortcuts'=>'Горячие клавиши','<strong>Error:</strong> Cookies are blocked or not supported by your browser. You must <a href="%s">enable cookies</a> to use WordPress.'=>'<strong>Ошибка</strong>: Cookies либо заблокированы, либо не поддерживаются вашим браузером. Чтобы использовать WordPress, нужно <a href="%s">разрешить cookies</a>.','<strong>Error:</strong> Cookies are blocked due to unexpected output. For help, please see <a href="%1$s">this documentation</a> or try the <a href="%2$s">support forums</a>.'=>'<strong>Ошибка</strong>: Cookies заблокированы из-за неожиданного вывода на экран. Посмотрите <a href="%1$s">документацию</a> или обратитесь за помощью на <a href="%2$s">форумы поддержки</a>.','Add to Audio Playlist'=>'Добавить в плей-лист','Add to audio playlist'=>'Добавить в плей-лист аудио','Update audio playlist'=>'Обновить плей-лист аудио','Insert audio playlist'=>'Вставить плей-лист аудио','&#8592; Cancel audio playlist'=>'&#8592; Отменить создание плей-листа','Edit audio playlist'=>'Изменить плей-лист','There has been an error cropping your image.'=>' Line truncated
%s
After you activate, you will receive *another email* with your login.'=>'Чтобы активировать вашу учётную запись, перейдите по ссылке:
%s
После активации вы получите *ещё одно письмо* с вашим именем пользователя.','New User: %1$s
Remote IP address: %2$s
Disable these notifications: %3$s'=>'Новый пользователь: %1$s
IP: %2$s
Отключить эти уведомления: %3$s','New Site: %1$s
URL: %2$s
Remote IP address: %3$s
Disable these notifications: %4$s'=>'Новый сайт: %1$s
URL: %2$s
IP: %3$s
Отключить эти уведомления: %4$s','Media File'=>'Медиафайл','Attachment Page'=>'Страница вложения','Link To'=>'Ссылка','Update gallery'=>'Обновить галерею','<strong>Error:</strong> This username is already registered. Please choose another one.'=>'<strong>Ошибка</strong>: Это имя пользователя уже зарегистрировано. Пожалуйста, выберите другое.','Please enter a valid email address.'=>'Пожалуйста, введите корректный адрес email.','The requested user does not exist.'=>'Запрошенный пользователь не найден.','Image Editor Save Failed'=>'Не удалось сохранить изображение','Image flip failed.'=>'Не удалось отразить изображение.','Image rotate failed.'=>'Не удалось повернуть изображение.','Image crop failed.'=>'Не удалось обрезать изображение.','Image resize failed.'=>'Не удалось изменить размер изображения.','Could not read image size.'=>'Не удалось прочитать размер изображения.','File is not an image.'=>'Файл не является изображением.','Display name based on first name and last name%1$s %2$s'=>'%1$s %2$s','Could not insert term relationship into the database.'=>'Не удалось вставить связь элемента в базу данных','Clear'=>'Сброс','Add to gallery'=>'Добавить в галерею','Insert into post'=>'Вставить в запись','Create a new gallery'=>'Создать новую галерею','View Attachment Page'=>'Просмотреть страницу вложения','Select Files'=>'Выберите файлы','Uploader: Drop files here - or - Select Filesor'=>'или','Alternative Text'=>'Атрибут alt','%1$s %2$s %3$s Feed'=>'%1$s %2$s Лента записей типа &laquo;%3$s&raquo;','Display post date?'=>'Отображать дату записи?','Sorry, you are not allowed to create pages as this user.'=>'Извините, вам не разрешено создавать страницы от лица этого пользователя.','Sorry, revisions are disabled.'=>'Извините, редакции отключены.','Sorry, you are not allowed to edit posts.'=>'Извините, вам не разрешено редактировать записи.','Sorry, the user could not be updated.'=>'Извините, этот пользователь не может быть изменён.','There is a revision of this post that is more recent.'=>'Найдена более свежая редакция записи.','Incorrect username or password.'=>'Неверное имя пользователя или пароль.','XML-RPC services are disabled on this site.'=>'Сервисы XML-RPC на этом сайте отключены.','Skip to toolbar'=>'Перейти к верхней панели','Header Text Color'=>'Цвет текста заголовка','Colors'=>'Цвета','Saved'=>'Сохранено','Save &amp; Publish'=>'Сохранить и опубликовать','Select file'=>'Выбрать файл','Customize'=>'Настроить','Insufficient arguments passed to this XML-RPC method.'=>'Методу XML-RPC передано недостаточно аргументов.','Sorry, you cannot stick a private post.'=>'Извините, личную запись прилепить нельзя.','Sorry, you are not allowed to publish this page.'=>'Извините, вам не разрешено публиковать эту страницу.','Header Image'=>'Изображение заголовка','Post Thumbnail'=>'Миниатюра записи','Toggle Editor Text Direction'=>'Переключить направление текста в редакторе','text direction'=>'направление текста','Please enter a site title.'=>'Пожалуйста, введите заголовок сайта.','Site name must be at least %s character.'=>'Название сайта должно быть не короче %s символа.' . "\0" . 'Название сайта должно быть не короче %s символов.' . "\0" . 'Название сайта должно быть не короче %s символов.','That name is not allowed.'=>'Это название недопустимо.','Please enter a site name.'=>'Введите название сайта.','Username must be at least 4 characters.'=>'Имя пользователя должно быть не короче 4 символов.','Please enter a username.'=>'Пожалуйста, введите имя пользователя.','A static page'=>'Статическую страницу','Background ImaLine truncated
%1$s
After you activate, you will receive *another email* with your login.
After you activate, you can visit your site here:
%2$s'=>'Чтобы активировать ваш сайт, перейдите по следующей ссылке:
%1$s
После активации вы получите *ещё одно письмо* с вашим именем пользователя для входа.
После активации вы сможете увидеть ваш сайт здесь:
%2$s','That site is currently reserved but may be available in a couple days.'=>'Этот сайт в настоящее время зарезервирован, но может стать доступным через несколько дней.','Sorry, that site is reserved!'=>'Извините, этот сайт зарезервирован!','Sorry, that site already exists!'=>'Извините, такой сайт уже существует!','Sorry, site names must have letters too!'=>'Извините, имя сайта должно содержать также и буквы!','Sorry, you may not use that site name.'=>'Извините, это имя сайта нельзя использовать.','This site has been archived or suspended.'=>'Этот сайт заархивирован или заморожен.','The site you have requested is not installed properly. Please contact the system administrator.'=>'Запрошенный вами сайт установлен неверно. Пожалуйста, свяжитесь с администратором сервера.','The given object ID is not that of a menu item.'=>'Указанный ID объекта не принадлежит элементу меню.','The Site address you entered did not appear to be a valid URL. Please enter a valid URL.'=>'Введённый адрес сайта не является корректным URL. Пожалуйста, введите корректный URL.','The WordPress address you entered did not appear to be a valid URL. Please enter a valid URL.'=>'Введённый адрес WordPress не является корректным URL. Пожалуйста, введите корректный URL.','The email address entered did not appear to be a valid email address. Please enter a valid email address.'=>'Введённый адрес email не является корректным. Пожалуйста, введите корректный адрес email.','A term with the name provided already exists with this parent.'=>'Элемент с указанным именем уже существует у родительского элемента.','An error occurred adding you to this site. Go to the <a href="%s">homepage</a>.'=>'При добавлении вас к этому сайту произошла ошибка. Перейти на <a href="%s">главную страницу</a>.','Your email address will not be published.'=>'Ваш адрес email не будет опубликован.','A valid URL was not provided.'=>'Предоставлен неверный URL.','Could not calculate resized image dimensions'=>'Не удалось вычислить новый размер изображения','Completed <span class="count">(%s)</span>'=>'Завершенные <span class="count">(%s)</span>' . "\0" . 'Завершенные <span class="count">(%s)</span>' . "\0" . 'Завершенные <span class="count">(%s)</span>','You are logged in already. No need to register again!'=>'Вы уже вошли на сайт. Нет нужды регистрироваться снова!','You must first <a href="%s">log in</a>, and then you can create a new site.'=>'Вам необходимо <a href="%s">авторизоваться</a>, чтобы создать новый сайт.','Welcome back, %s. By filling out the form below, you can <strong>add another site to your account</strong>. There is no limit to the number of sites you can have, so create to your heart&#8217;s content, but write responsibly!'=>'Добро пожаловать, %s. Заполнив форму ниже, вы сможете <strong>добавить к вашей учётной записи ещё один сайт</strong>. На количество сайтов нет ограничений, но к написанию материалов подходите ответственно!','Must be at least 4 characters, letters and numbers only. It cannot be changed, so choose carefully!'=>'Не менее 4 символов, только буквы и цифры. Значение нельзя изменить позже, будьте внимательны!','This action has been disabled by the administrator.'=>'Это действие запрещено администратором.','Page %s'=>'Страница %s','Briefly unavailable for scheduled maintenance. Check back in a minute.'=>'Сайт ненадолго закрыт на техническое обслуживание. Зайдите через минуту.','Maintenance'=>'Обслуживание','Navigation Menus'=>'Меню навигации','Navigation Menu Item'=>'Элемент меню навигации','Navigation Menu Items'=>'Элементы меню навигации','Links for %s'=>'Ссылки сайта «%s»','No menus have been created yet. <a href="%s">Create some</a>.'=>'Ни одного м Line truncated
Binary file not shown.
File diff suppressed because it is too large. Load diff
+34
View File
@@ -0,0 +1,34 @@
# Only allow direct access to specific Web-available files.
# Apache 2.2
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from all
</IfModule>
# Apache 2.4
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
# Akismet CSS and JS
<FilesMatch "^(form\.js|akismet(-frontend|-admin)?\.js|akismet(-admin)?(-rtl)?\.css|inter\.css)$">
<IfModule !mod_authz_core.c>
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</FilesMatch>
# Akismet images
<FilesMatch "^(logo-a-2x\.png|akismet-refresh-logo\.svg|akismet-refresh-logo@2x\.png|arrow-left\.svg|akismet-activation-banner-elements\.png)$">
<IfModule !mod_authz_core.c>
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</FilesMatch>
+339
View File
@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
@@ -0,0 +1,578 @@
body {
--akismet-color-charcoal: #272635;
--akismet-color-light-grey: #f6f7f7;
--akismet-color-mid-grey: #a7aaad;
--akismet-color-dark-grey: #646970;
--akismet-color-grey-80: #2c3338;
--akismet-color-grey-100: #101517;
--akismet-color-white: #fff;
--akismet-color-mid-green: #357b49;
--akismet-color-light-green: #4eb26a;
--akismet-color-mid-red: #e82c3f;
--akismet-color-light-blue: #256eff;
--akismet-color-notice-light-green: #dbf0e1;
--akismet-color-notice-dark-green: #69bf82;
--akismet-color-notice-light-red: #ffdbde;
--akismet-color-notice-dark-red: #ff6676;
--akismet-color-notice-yellow: #e5c133;
}
/* UI components */
.akismet-new-feature {
background-color: var(--akismet-color-mid-green);
border-radius: 4px;
color: var(--akismet-color-white);
font-size: 10px;
padding: 4px 6px;
text-transform: uppercase;
vertical-align: top;
}
#akismet-plugin-container {
background-color: var(--akismet-color-light-grey);
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif;
}
#akismet-plugin-container a {
color: var(--akismet-color-mid-green);
}
#akismet-plugin-container a.akismet-button {
background-color: var(--akismet-color-mid-green);
color: var(--akismet-color-white);
}
#akismet-plugin-container button:focus-visible,
#akismet-plugin-container input:focus-visible,
#akismet-plugin-container a:focus-visible {
border: 0;
box-shadow: none;
outline: 2px solid var(--akismet-color-light-blue);
}
.akismet-masthead {
box-shadow: none;
}
.akismet-masthead__logo {
margin: 20px 0;
}
.akismet-section-header {
box-shadow: none;
margin-bottom: 0;
}
.akismet-section-header__label {
color: var(--akismet-color-charcoal);
font-weight: 600;
padding-left: 0.2em;
}
.akismet-button, .akismet-button:hover {
background-color: var(--akismet-color-mid-green);
border: 0;
color: #fff;
}
/* Need this specificity to override the existing header rule */
.akismet-new-snapshot h3.akismet-new-snapshot__header {
background: none;
font-size: 13px;
color: var(--akismet-color-charcoal);
text-align: left;
text-transform: none;
}
.akismet-new-snapshot .akismet-new-snapshot__number {
color: var(--akismet-color-charcoal);
letter-spacing: -1px;
text-align: left;
}
.akismet-new-snapshot li.akismet-new-snapshot__item {
color: var(--akismet-color-dark-grey);
font-size: 13px;
text-align: left;
text-transform: none;
}
.akismet-masthead__logo-link {
min-height: 50px;
}
.akismet-masthead__back-link-container {
margin-top: 16px;
margin-bottom: 2px;
}
/* Need this specificity to override the existing link rule */
#akismet-plugin-container a.akismet-masthead__back-link {
background-image: url(img/arrow-left.svg);
background-position: left;
background-repeat: no-repeat;
background-size: 16px;
color: var(--akismet-color-charcoal);
font-weight: 400;
padding-left: 20px;
text-decoration: none;
}
#akismet-plugin-container a.akismet-masthead__back-link:hover {
text-decoration: underline;
}
.akismet-new-snapshot__item {
border-top: 1px solid var(--akismet-color-light-grey);
border-left: 1px solid var(--akismet-color-light-grey);
padding: 1em;
}
.akismet-new-snapshot li:first-child {
border-left: none;
}
.akismet-new-snapshot__list {
display: flex;
margin-bottom: 0;
}
.akismet-new-snapshot__item {
flex: 1 0 33.33%;
margin-bottom: 0;
padding-left: 1.5em;
padding-right: 1.5em;
}
.akismet-new-snapshot__chart {
padding: 1em;
}
.akismet-box {
border: 0;
}
.akismet-box,
.akismet-card {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.16);
border-radius: 8px;
overflow: hidden;
}
.akismet-card {
margin: 32px auto 0 auto;
}
.akismet-lower {
padding-top: 0;
}
.akismet-lower .inside {
padding: 0;
}
.akismet-section-header__label {
margin: 0;
}
.akismet-settings__row {
border-bottom: 1px solid var(--akismet-color-light-grey);
display: block;
padding: 1em 1.5em;
}
.akismet-settings__row-input {
margin-left: auto;
}
.akismet-settings__row-title {
font-weight: 500;
font-size: 1em;
margin: 0;
margin-bottom: 1em;
}
.akismet-settings__row-description {
margin-top: 0.5em;
}
.akismet-card-actions {
display: flex;
justify-content: flex-end;
padding: 1em;
}
.akismet-card-actions__secondary-action {
align-self: center;
margin-right: auto;
}
.akismet-settings__row label {
padding-bottom: 1em;
}
.akismet-settings__row-note {
font-size: 0.9em;
margin-top: 0.4em;
}
.akismet-settings__row input[type="checkbox"],
.akismet-settings__row input[type="radio"] {
accent-color: var(--akismet-color-mid-green);
box-shadow: none;
flex-shrink: 0;
margin: 2px 0 0 0;
}
.akismet-settings__row input[type="checkbox"] {
margin-top: 1px;
vertical-align: top;
-webkit-appearance: checkbox;
}
.akismet-settings__row input[type="radio"] {
-webkit-appearance: radio;
}
/* Fix up misbehaving wp-admin styles in Chrome (from forms and colors stylesheets) */
.akismet-settings__row input[type="checkbox"]:checked:before {
content: '';
}
.akismet-settings__row input[type="radio"]:checked:before {
background: none;
}
.akismet-settings__row input[type="checkbox"]:checked:hover,
.akismet-settings__row input[type="radio"]:checked:hover {
accent-color: var(--akismet-color-mid-green);
}
.akismet-button:disabled {
background-color: var(--akismet-color-mid-grey);
color: var(--akismet-color-white);
cursor: arrow;
}
.akismet-awaiting-stats,
.akismet-account {
padding: 0 1rem 1rem 1rem;
margin: 0;
}
.akismet-account {
padding-bottom: 0;
}
.akismet-account th {
font-weight: 500;
padding-right: 1em;
}
.akismet-account th, .akismet-account td {
padding-bottom: 1em;
}
.akismet-settings__row-input-label {
align-items: center;
display: flex;
}
.akismet-settings__row-label-text {
padding-left: 0.5em;
margin-top: 2px;
}
.akismet-alert {
border-left: 8px solid;
border-radius: 8px;
margin: 20px 0;
padding: 0.2em 1em;
}
.akismet-alert__heading {
font-size: 1em;
}
.akismet-alert.is-good {
background-color: var(--akismet-color-notice-light-green);
border-left-color: var(--akismet-color-notice-dark-green);
}
.akismet-alert.is-neutral {
background-color: var(--akismet-color-white);
border-left-color: var(--akismet-color-dark-grey);
}
.akismet-alert.is-bad {
background-color: var(--akismet-color-notice-light-red);
border-left-color: var(--akismet-color-notice-dark-red);
}
.akismet-alert.is-commercial {
background-color: var(--akismet-color-white);
border-color: var(--akismet-color-mid-grey);
border-bottom-width: 1px;
border-left-color: var(--akismet-color-notice-yellow);
display: flex;
padding-bottom: 1em;
}
#akismet-plugin-container .akismet-alert.is-good a,
#akismet-plugin-container .akismet-alert.is-bad a {
/* For better contrast - green isn't great */
color: var(--akismet-color-grey-80);
}
.akismet-alert-header {
font-size: 16px;
margin-bottom: 0.5em;
}
.akismet-alert-button-wrapper {
align-self: center;
margin-left: 2em;
min-width: 120px;
}
.akismet-alert-info {
text-wrap: pretty;
margin: 0.5em 0;
}
/* Setup - API key input */
.akismet-enter-api-key-box {
margin: 1.5rem 0;
}
.akismet-enter-api-key-box__reveal {
background: none;
border: 0;
color: var(--akismet-color-mid-green);
cursor: pointer;
text-decoration: underline;
}
.akismet-enter-api-key-box__form-wrapper {
display: none;
margin-top: 1.5rem;
}
.akismet-enter-api-key-box__input-wrapper {
box-sizing: border-box;
display: flex;
flex-wrap: nowrap;
padding: 0 1.5rem;
width: 100%;
}
.akismet-enter-api-key-box__key-input {
flex-grow: 1;
margin-right: 1rem;
}
h3.akismet-enter-api-key-box__header {
padding-top: 0;
padding-bottom: 1em;
text-align: left;
}
/* Notices > Activation (shown on edit-comments.php) */
#akismet-setup-prompt {
background: none;
border: none;
margin: 0;
padding: 0;
width: 100%;
}
.akismet-activate {
align-items: center;
/* background-image is defined via an inline style in class.akismet-admin.php */
background-color: var(--akismet-color-light-grey);
background-position: calc(100% - 1em) center;
background-repeat: no-repeat;
background-size: 140px;
border: 1px solid var(--akismet-color-mid-green);
border-left-width: 4px;
display: flex;
justify-content: space-between;
margin: 15px 0;
min-height: 60px;
overflow: hidden;
padding: 5px 160px 5px 5px;
position: relative;
}
.akismet-activate__button,
.akismet-activate__button:hover,
.akismet-activate__button:visited {
margin: 0 1em;
}
.akismet-activate__description {
color: var(--akismet-color-charcoal);
flex-grow: 1;
font-size: 16px;
font-weight: 600;
margin: 0 auto;
text-align: center;
text-wrap: pretty;
}
/* Compatible plugins section */
.akismet-compatible-plugins__content {
padding: 0 1.5em 1.5em 1.5em;
}
.akismet-compatible-plugins__intro {
margin: 0;
}
.akismet-compatible-plugins__section-header-label {
display: block;
}
.akismet-compatible-plugins__section-header-label-text {
padding-right: 0.5em;
}
.akismet-compatible-plugins__list {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(245px, 1fr));
gap: 20px;
margin: 1.5em 0 1em 0;
padding: 0;
}
.akismet-compatible-plugins__card {
border: 1px solid var(--akismet-color-light-grey);
border-radius: 4px;
flex: 1 1 calc(50% - 5px);
padding: 1em;
display: flex;
}
.akismet-compatible-plugins__card-logo {
padding: 0 1.5em 0 0;
object-fit: contain;
}
.akismet-compatible-plugins__card-title {
font-size: 1.2em;
margin-top: 0;
}
.akismet-compatible-plugins__docs {
margin-top: 1em;
}
.akismet-settings__external-link::after {
content: "↗";
display: inline-block;
padding-left: 2px;
text-decoration: none;
vertical-align: text-top;
}
.akismet-compatible-plugins__external-link::after {
content: "↗";
display: inline-block;
padding-left: 2px;
text-decoration: none;
vertical-align: text-top;
}
.akismet-compatible-plugins__show-more {
all: unset;
cursor: pointer;
display: flex;
justify-content: space-between;
position: relative;
width: 100%;
}
/* Generates the show/hide chevron */
.akismet-compatible-plugins__show-more::after {
align-self: center;
border-bottom: 2px solid black;
border-right: 2px solid black;
content: "";
height: 8px;
transform: rotate(45deg);
transition: transform 0.2s ease;
width: 8px;
}
.akismet-compatible-plugins__list.is-expanded + .akismet-compatible-plugins__show-more::after {
align-self: end;
transform: rotate(225deg);
}
/* Gutenberg medium breakpoint */
@media screen and (max-width: 782px) {
.akismet-new-snapshot__list {
display: block;
}
.akismet-new-snapshot__number {
float: right;
font-size: 20px;
font-weight: 500;
margin-top: -16px;
}
.akismet-new-snapshot__header {
font-size: 14px;
font-weight: 500;
}
.akismet-new-snapshot__text {
font-size: 12px;
}
.akismet-settings__row input[type="checkbox"],
.akismet-settings__row input[type="radio"] {
height: 24px;
width: 24px;
}
.akismet-settings__row-label-text {
padding-left: 0.8em;
}
.akismet-settings__row input[type="checkbox"],
.akismet-settings__row input[type="radio"] {
margin-top: 0;
}
.akismet-activate {
background-size: 120px;
padding-right: 134px;
}
.akismet-activate__button {
white-space: normal;
}
.akismet-activate__description {
font-size: 14px;
margin-right: 1em;
}
}
/* Gutenberg small breakpoint */
@media screen and (max-width: 600px) {
.akismet-compatible-plugins__list {
gap: 10px;
}
.akismet-activate__button,
.akismet-activate__button:hover {
font-size: 13px;
}
.akismet-activate__description {
display: none;
}
}
@@ -0,0 +1,37 @@
document.addEventListener( 'DOMContentLoaded', function() {
// Prevent aggressive iframe caching in Firefox
var statsIframe = document.getElementById( 'stats-iframe' );
if ( statsIframe ) {
statsIframe.contentWindow.location.href = statsIframe.src;
}
initCompatiblePluginsShowMoreToggle();
} );
function initCompatiblePluginsShowMoreToggle() {
const section = document.querySelector( '.akismet-compatible-plugins' );
const list = document.querySelector( '.akismet-compatible-plugins__list' );
const button = document.querySelector( '.akismet-compatible-plugins__show-more' );
if ( ! section || ! list || ! button ) {
return;
}
function isElementInViewport( element ) {
const rect = element.getBoundingClientRect();
return rect.top >= 0 && rect.bottom <= window.innerHeight;
}
function toggleCards() {
list.classList.toggle( 'is-expanded' );
const isExpanded = list.classList.contains( 'is-expanded' );
button.textContent = isExpanded ? button.dataset.labelOpen : button.dataset.labelClosed;
button.setAttribute( 'aria-expanded', isExpanded.toString() );
if ( ! isExpanded && ! isElementInViewport( section ) ) {
section.scrollIntoView( { block: 'start' } );
}
}
button.addEventListener( 'click', toggleCards );
}
@@ -0,0 +1,376 @@
/**
* Observe how the user enters content into the comment form in order to determine whether it's a bot or not.
*
* Note that no actual input is being saved here, only counts and timings between events.
*/
( function() {
// Passive event listeners are guaranteed to never call e.preventDefault(),
// but they're not supported in all browsers. Use this feature detection
// to determine whether they're available for use.
var supportsPassive = false;
try {
var opts = Object.defineProperty( {}, 'passive', {
get : function() {
supportsPassive = true;
}
} );
window.addEventListener( 'testPassive', null, opts );
window.removeEventListener( 'testPassive', null, opts );
} catch ( e ) {}
function init() {
var input_begin = '';
var keydowns = {};
var lastKeyup = null;
var lastKeydown = null;
var keypresses = [];
var modifierKeys = [];
var correctionKeys = [];
var lastMouseup = null;
var lastMousedown = null;
var mouseclicks = [];
var mousemoveTimer = null;
var lastMousemoveX = null;
var lastMousemoveY = null;
var mousemoveStart = null;
var mousemoves = [];
var touchmoveCountTimer = null;
var touchmoveCount = 0;
var lastTouchEnd = null;
var lastTouchStart = null;
var touchEvents = [];
var scrollCountTimer = null;
var scrollCount = 0;
var correctionKeyCodes = [ 'Backspace', 'Delete', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End', 'PageUp', 'PageDown' ];
var modifierKeyCodes = [ 'Shift', 'CapsLock' ];
var forms = document.querySelectorAll( 'form[method=post]' );
for ( var i = 0; i < forms.length; i++ ) {
var form = forms[i];
var formAction = form.getAttribute( 'action' );
// Ignore forms that POST directly to other domains; these could be things like payment forms.
if ( formAction ) {
// Check that the form is posting to an external URL, not a path.
if ( formAction.indexOf( 'http://' ) == 0 || formAction.indexOf( 'https://' ) == 0 ) {
if ( formAction.indexOf( 'http://' + window.location.hostname + '/' ) != 0 && formAction.indexOf( 'https://' + window.location.hostname + '/' ) != 0 ) {
continue;
}
}
}
form.addEventListener( 'submit', function () {
var ak_bkp = prepare_timestamp_array_for_request( keypresses );
var ak_bmc = prepare_timestamp_array_for_request( mouseclicks );
var ak_bte = prepare_timestamp_array_for_request( touchEvents );
var ak_bmm = prepare_timestamp_array_for_request( mousemoves );
var input_fields = {
// When did the user begin entering any input?
'bib': input_begin,
// When was the form submitted?
'bfs': Date.now(),
// How many keypresses did they make?
'bkpc': keypresses.length,
// How quickly did they press a sample of keys, and how long between them?
'bkp': ak_bkp,
// How quickly did they click the mouse, and how long between clicks?
'bmc': ak_bmc,
// How many mouseclicks did they make?
'bmcc': mouseclicks.length,
// When did they press modifier keys (like Shift or Capslock)?
'bmk': modifierKeys.join( ';' ),
// When did they correct themselves? e.g., press Backspace, or use the arrow keys to move the cursor back
'bck': correctionKeys.join( ';' ),
// How many times did they move the mouse?
'bmmc': mousemoves.length,
// How many times did they move around using a touchscreen?
'btmc': touchmoveCount,
// How many times did they scroll?
'bsc': scrollCount,
// How quickly did they perform touch events, and how long between them?
'bte': ak_bte,
// How many touch events were there?
'btec' : touchEvents.length,
// How quickly did they move the mouse, and how long between moves?
'bmm' : ak_bmm
};
var akismet_field_prefix = 'ak_';
if ( this.getElementsByClassName ) {
// Check to see if we've used an alternate field name prefix. We store this as an attribute of the container around some of the Akismet fields.
var possible_akismet_containers = this.getElementsByClassName( 'akismet-fields-container' );
for ( var containerIndex = 0; containerIndex < possible_akismet_containers.length; containerIndex++ ) {
var container = possible_akismet_containers.item( containerIndex );
if ( container.getAttribute( 'data-prefix' ) ) {
akismet_field_prefix = container.getAttribute( 'data-prefix' );
break;
}
}
}
for ( var field_name in input_fields ) {
var field = document.createElement( 'input' );
field.setAttribute( 'type', 'hidden' );
field.setAttribute( 'name', akismet_field_prefix + field_name );
field.setAttribute( 'value', input_fields[ field_name ] );
this.appendChild( field );
}
}, supportsPassive ? { passive: true } : false );
form.addEventListener( 'keydown', function ( e ) {
// If you hold a key down, some browsers send multiple keydown events in a row.
// Ignore any keydown events for a key that hasn't come back up yet.
if ( e.key in keydowns ) {
return;
}
var keydownTime = ( new Date() ).getTime();
keydowns[ e.key ] = [ keydownTime ];
if ( ! input_begin ) {
input_begin = keydownTime;
}
// In some situations, we don't want to record an interval since the last keypress -- for example,
// on the first keypress, or on a keypress after focus has changed to another element. Normally,
// we want to record the time between the last keyup and this keydown. But if they press a
// key while already pressing a key, we want to record the time between the two keydowns.
var lastKeyEvent = Math.max( lastKeydown, lastKeyup );
if ( lastKeyEvent ) {
keydowns[ e.key ].push( keydownTime - lastKeyEvent );
}
lastKeydown = keydownTime;
}, supportsPassive ? { passive: true } : false );
form.addEventListener( 'keyup', function ( e ) {
if ( ! ( e.key in keydowns ) ) {
// This key was pressed before this script was loaded, or a mouseclick happened during the keypress, or...
return;
}
var keyupTime = ( new Date() ).getTime();
if ( 'TEXTAREA' === e.target.nodeName || 'INPUT' === e.target.nodeName ) {
if ( -1 !== modifierKeyCodes.indexOf( e.key ) ) {
modifierKeys.push( keypresses.length - 1 );
} else if ( -1 !== correctionKeyCodes.indexOf( e.key ) ) {
correctionKeys.push( keypresses.length - 1 );
} else {
// ^ Don't record timings for keys like Shift or backspace, since they
// typically get held down for longer than regular typing.
var keydownTime = keydowns[ e.key ][0];
var keypress = [];
// Keypress duration.
keypress.push( keyupTime - keydownTime );
// Amount of time between this keypress and the previous keypress.
if ( keydowns[ e.key ].length > 1 ) {
keypress.push( keydowns[ e.key ][1] );
}
keypresses.push( keypress );
}
}
delete keydowns[ e.key ];
lastKeyup = keyupTime;
}, supportsPassive ? { passive: true } : false );
form.addEventListener( "focusin", function ( e ) {
lastKeydown = null;
lastKeyup = null;
keydowns = {};
}, supportsPassive ? { passive: true } : false );
form.addEventListener( "focusout", function ( e ) {
lastKeydown = null;
lastKeyup = null;
keydowns = {};
}, supportsPassive ? { passive: true } : false );
}
document.addEventListener( 'mousedown', function ( e ) {
lastMousedown = ( new Date() ).getTime();
}, supportsPassive ? { passive: true } : false );
document.addEventListener( 'mouseup', function ( e ) {
if ( ! lastMousedown ) {
// If the mousedown happened before this script was loaded, but the mouseup happened after...
return;
}
var now = ( new Date() ).getTime();
var mouseclick = [];
mouseclick.push( now - lastMousedown );
if ( lastMouseup ) {
mouseclick.push( lastMousedown - lastMouseup );
}
mouseclicks.push( mouseclick );
lastMouseup = now;
// If the mouse has been clicked, don't record this time as an interval between keypresses.
lastKeydown = null;
lastKeyup = null;
keydowns = {};
}, supportsPassive ? { passive: true } : false );
document.addEventListener( 'mousemove', function ( e ) {
if ( mousemoveTimer ) {
clearTimeout( mousemoveTimer );
mousemoveTimer = null;
}
else {
mousemoveStart = ( new Date() ).getTime();
lastMousemoveX = e.offsetX;
lastMousemoveY = e.offsetY;
}
mousemoveTimer = setTimeout( function ( theEvent, originalMousemoveStart ) {
var now = ( new Date() ).getTime() - 500; // To account for the timer delay.
var mousemove = [];
mousemove.push( now - originalMousemoveStart );
mousemove.push(
Math.round(
Math.sqrt(
Math.pow( theEvent.offsetX - lastMousemoveX, 2 ) +
Math.pow( theEvent.offsetY - lastMousemoveY, 2 )
)
)
);
if ( mousemove[1] > 0 ) {
// If there was no measurable distance, then it wasn't really a move.
mousemoves.push( mousemove );
}
mousemoveStart = null;
mousemoveTimer = null;
}, 500, e, mousemoveStart );
}, supportsPassive ? { passive: true } : false );
document.addEventListener( 'touchmove', function ( e ) {
if ( touchmoveCountTimer ) {
clearTimeout( touchmoveCountTimer );
}
touchmoveCountTimer = setTimeout( function () {
touchmoveCount++;
}, 500 );
}, supportsPassive ? { passive: true } : false );
document.addEventListener( 'touchstart', function ( e ) {
lastTouchStart = ( new Date() ).getTime();
}, supportsPassive ? { passive: true } : false );
document.addEventListener( 'touchend', function ( e ) {
if ( ! lastTouchStart ) {
// If the touchstart happened before this script was loaded, but the touchend happened after...
return;
}
var now = ( new Date() ).getTime();
var touchEvent = [];
touchEvent.push( now - lastTouchStart );
if ( lastTouchEnd ) {
touchEvent.push( lastTouchStart - lastTouchEnd );
}
touchEvents.push( touchEvent );
lastTouchEnd = now;
// Don't record this time as an interval between keypresses.
lastKeydown = null;
lastKeyup = null;
keydowns = {};
}, supportsPassive ? { passive: true } : false );
document.addEventListener( 'scroll', function ( e ) {
if ( scrollCountTimer ) {
clearTimeout( scrollCountTimer );
}
scrollCountTimer = setTimeout( function () {
scrollCount++;
}, 500 );
}, supportsPassive ? { passive: true } : false );
}
/**
* For the timestamp data that is collected, don't send more than `limit` data points in the request.
* Choose a random slice and send those.
*/
function prepare_timestamp_array_for_request( a, limit ) {
if ( ! limit ) {
limit = 100;
}
var rv = '';
if ( a.length > 0 ) {
var random_starting_point = Math.max( 0, Math.floor( Math.random() * a.length - limit ) );
for ( var i = 0; i < limit && i < a.length; i++ ) {
rv += a[ random_starting_point + i ][0];
if ( a[ random_starting_point + i ].length >= 2 ) {
rv += "," + a[ random_starting_point + i ][1];
}
rv += ";";
}
}
return rv;
}
if ( document.readyState !== 'loading' ) {
init();
} else {
document.addEventListener( 'DOMContentLoaded', init );
}
})();
+506
View File
@@ -0,0 +1,506 @@
.wp-admin.jetpack_page_akismet-key-config, .wp-admin.settings_page_akismet-key-config {
background-color:#f3f6f8;
}
#submitted-on {
position: relative;
}
#the-comment-list .author .akismet-user-comment-count {
display: inline;
}
#the-comment-list .author a span {
text-decoration: none;
color: #999;
}
#the-comment-list .author a span.akismet-span-link {
text-decoration: inherit;
color: inherit;
}
#the-comment-list .akismet_remove_url {
margin-left: 3px;
color: #999;
padding: 2px 3px 2px 0;
}
#the-comment-list .akismet_remove_url:hover {
color: #A7301F;
font-weight: bold;
padding: 2px 2px 2px 0;
}
#dashboard_recent_comments .akismet-status {
display: none;
}
.akismet-status {
float: right;
}
.akismet-status a {
color: #AAA;
font-style: italic;
}
table.comments td.comment p a {
text-decoration: underline;
}
table.comments td.comment p a:after {
content: attr(href);
color: #aaa;
display: inline-block; /* Show the URL without the link's underline extending under it. */
padding: 0 1ex; /* Because it's inline block, we can't just use spaces in the content: attribute to separate it from the link text. */
}
.mshot-arrow {
width: 0;
height: 0;
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
border-right: 10px solid #5C5C5C;
position: absolute;
left: -6px;
top: 91px;
}
.mshot-container {
background: #5C5C5C;
position: absolute;
top: -94px;
padding: 7px;
width: 450px;
height: 338px;
z-index: 20000;
border-radius: 6px;
}
.akismet-mshot {
position: absolute;
z-index: 100;
}
.akismet-mshot .mshot-image {
margin: 0;
height: 338px;
width: 450px;
}
.checkforspam {
display: inline-block !important;
}
.checkforspam-spinner {
display: inline-block;
margin-top: 7px;
}
.akismet-right {
float: right;
}
.akismet-card .akismet-right {
margin: 1em 0;
}
.akismet-alert-text {
color: #dd3d36;
font-weight: bold;
font-size: 120%;
margin-top: .5rem;
}
.akismet-new-snapshot {
margin-top: 1em;
text-align: center;
background: #fff;
}
.akismet-new-snapshot h3 {
background: #f5f5f5;
color: #888;
font-size: 11px;
margin: 0;
}
.akismet-new-snapshot ul li {
color: #999;
font-size: 11px;
text-transform: uppercase;
box-sizing: border-box;
}
.akismet-new-snapshot__number {
display: block;
font-size: 32px;
font-weight: lighter;
line-height: 1.5em;
}
.akismet-settings th:first-child {
vertical-align: top;
padding-top: 15px;
}
.akismet-settings th.akismet-api-key {
vertical-align: middle;
padding-top: 0;
}
.akismet-settings span.akismet-note {
float: left;
padding-left: 23px;
font-size: 75%;
margin-top: -10px;
}
.jetpack_page_akismet-key-config #wpcontent, .settings_page_akismet-key-config #wpcontent {
padding-left: 0;
}
.akismet-masthead {
background-color:#fff;
text-align:center;
box-shadow:0 1px 0 rgba(200,215,225,0.5),0 1px 2px #e9eff3
}
@media (max-width: 45rem) {
.akismet-masthead {
padding:0 1.25rem
}
}
.akismet-masthead__inside-container {
padding:.375rem 0;
margin:0 auto;
width:100%;
max-width:45rem;
text-align: left;
}
.akismet-masthead__logo-container {
padding:.3125rem 0 0
}
.akismet-masthead__logo-link {
display:inline-block;
outline:none;
vertical-align:middle
}
.akismet-masthead__logo-link:focus {
line-height:0;
box-shadow:0 0 0 2px #78dcfa
}
.akismet-masthead__logo-link+code {
margin:0 10px;
padding:5px 9px;
border-radius:2px;
background:#e6ecf1;
color:#647a88
}
.akismet-masthead__links {
display:flex;
flex-flow:row wrap;
flex:2 50%;
justify-content:flex-end;
margin:0
}
@media (max-width: 480px) {
.akismet-masthead__links {
padding-right:.625rem
}
}
.akismet-masthead__link-li {
margin:0;
padding:0
}
.akismet-masthead__link {
font-style:normal;
color:#0087be;
padding:.625rem;
display:inline-block
}
.akismet-masthead__link:visited {
color:#0087be
}
.akismet-masthead__link:active,.akismet-masthead__link:hover {
color:#00aadc
}
.akismet-masthead__link:hover {
text-decoration:underline
}
.akismet-masthead__link .dashicons {
display:none
}
@media (max-width: 480px) {
.akismet-masthead__link:hover,.akismet-masthead__link:active {
text-decoration:none
}
.akismet-masthead__link .dashicons {
display:block;
font-size:1.75rem
}
.akismet-masthead__link span+span {
display:none
}
}
.akismet-masthead__link-li:last-of-type .akismet-masthead__link {
padding-right:0
}
.akismet-lower {
margin: 0 auto;
text-align: left;
max-width: 45rem;
padding: 1.5rem;
}
.akismet-lower .notice {
margin-bottom: 2rem;
}
.akismet-card {
margin-top: 1rem;
margin-bottom: 0;
position: relative;
box-sizing: border-box;
background: white;
}
.akismet-card:after, .akismet-card .inside:after, .akismet-masthead__logo-container:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.akismet-card .inside {
padding: 1.5rem;
padding-top: 1rem;
}
.akismet-card .akismet-card-actions {
margin-top: 1rem;
}
.jetpack_page_akismet-key-config .update-nag, .settings_page_akismet-key-config .update-nag {
display: none;
}
.akismet-masthead .akismet-right {
line-height: 2.125rem;
font-size: 0.9rem;
}
.akismet-box {
box-sizing: border-box;
background: white;
border: 1px solid rgba(200, 215, 225, 0.5);
}
.akismet-box h2, .akismet-box h3 {
padding: 1.5rem 1.5rem .5rem 1.5rem;
margin: 0;
}
.akismet-box p {
padding: 0 1.5rem 1.5rem 1.5rem;
margin: 0;
}
.akismet-jetpack-email {
font-style: oblique;
}
.akismet-jetpack-gravatar {
padding: 0 0 0 1.5rem;
float: left;
margin-right: 1rem;
width: 54px;
height: 54px;
}
.akismet-box p:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.akismet-box .akismet-right {
padding-right: 1.5rem;
}
.akismet-boxes .akismet-box {
margin-bottom: 0;
padding: 0;
margin-top: -1px;
}
.akismet-boxes .akismet-box:last-child {
margin-bottom: 1.5rem;
}
.akismet-boxes .akismet-box:first-child {
margin-top: 1.5rem;
}
.akismet-box-header {
max-width: 700px;
margin: 0 auto 40px auto;
line-height: 1.5;
}
.akismet-box-header h2 {
margin: 1.5rem 10% 0;
font-size: 1.375rem;
font-weight: 700;
color: #000;
}
.akismet-box .centered {
text-align: center;
}
.akismet-box .akismet-toggles {
margin: 3rem 0;
}
.akismet-box .akismet-ak-connect, .akismet-box .toggle-jp-connect {
display: none;
}
.akismet-button, .akismet-button:hover, .akismet-button:visited {
background: white;
border-color: #c8d7e1;
border-style: solid;
border-width: 1px 1px 2px;
color: #2e4453;
cursor: pointer;
display: inline-block;
margin: 0;
outline: 0;
overflow: hidden;
font-size: 14px;
font-weight: 500;
text-overflow: ellipsis;
text-decoration: none;
vertical-align: top;
box-sizing: border-box;
line-height: 21px;
border-radius: 4px;
padding: 7px 14px 9px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.akismet-button:hover {
border-color: #a8bece;
}
.akismet-button:active {
border-width: 2px 1px 1px;
}
.akismet-is-primary, .akismet-is-primary:hover, .akismet-is-primary:visited {
background: #00aadc;
border-color: #0087be;
color: white;
}
.akismet-is-primary:hover, .akismet-is-primary:focus {
border-color: #005082;
}
.akismet-is-primary:hover {
border-color: #005082;
}
.akismet-section-header {
position: relative;
margin: 0 auto 0.625rem auto;
padding: 1rem;
box-sizing: border-box;
box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3;
background: #ffffff;
width: 100%;
padding-top: 0.6875rem;
padding-bottom: 0.6875rem;
display: flex;
}
.akismet-section-header__label {
display: flex;
align-items: center;
flex-grow: 1;
line-height: 1.75rem;
position: relative;
font-size: 0.875rem;
color: #4f748e;
}
.akismet-section-header__actions {
line-height: 1.75rem;
}
.akismet-setup-instructions {
text-align: center;
}
.akismet-setup-instructions form {
padding-bottom: 1.5rem;
}
div.error.akismet-usage-limit-alert {
padding: 25px 45px 25px 15px;
display: flex;
align-items: center;
}
#akismet-plugin-container .akismet-usage-limit-alert {
margin: 0 auto 0.625rem auto;
box-sizing: border-box;
box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3;
border: none;
border-left: 4px solid #d63638;
}
.akismet-usage-limit-alert .akismet-usage-limit-logo {
width: 38px;
min-width: 38px;
height: 38px;
border-radius: 20px;
margin-right: 18px;
background: black;
position: relative;
}
.akismet-usage-limit-alert .akismet-usage-limit-logo img {
position: absolute;
width: 22px;
left: 8px;
top: 10px;
}
.akismet-usage-limit-alert .akismet-usage-limit-text {
flex-grow: 1;
margin-right: 18px;
}
.akismet-usage-limit-alert h3 {
margin: 0;
}
.akismet-usage-limit-alert .akismet-usage-limit-cta {
border-color: none;
text-align: right;
}
#akismet-plugin-container .akismet-usage-limit-cta a {
color: #d63638;
background: #fafafa;
}
@media (max-width: 550px) {
div.error.akismet-usage-limit-alert {
display: block;
}
.akismet-usage-limit-alert .akismet-usage-limit-logo,
.akismet-usage-limit-alert .akismet-usage-limit-text {
margin-bottom: 15px;
}
.akismet-usage-limit-alert .akismet-usage-limit-cta {
text-align: left;
}
}
+421
View File
@@ -0,0 +1,421 @@
jQuery( function ( $ ) {
var mshotRemovalTimer = null;
var mshotRetryTimer = null;
var mshotTries = 0;
var mshotRetryInterval = 1000;
var mshotEnabledLinkSelector = 'a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type, td.comment p a';
var preloadedMshotURLs = [];
$('.akismet-status').each(function () {
var thisId = $(this).attr('commentid');
$(this).prependTo('#comment-' + thisId + ' .column-comment');
});
$('.akismet-user-comment-count').each(function () {
var thisId = $(this).attr('commentid');
$(this).insertAfter('#comment-' + thisId + ' .author strong:first').show();
});
akismet_enable_comment_author_url_removal();
$( '#the-comment-list' ).on( 'click', '.akismet_remove_url', function () {
var thisId = $(this).attr('commentid');
var data = {
action: 'comment_author_deurl',
_wpnonce: WPAkismet.comment_author_url_nonce,
id: thisId
};
$.ajax({
url: ajaxurl,
type: 'POST',
data: data,
beforeSend: function () {
// Removes "x" link
$("a[commentid='"+ thisId +"']").hide();
// Show temp status
$("#author_comment_url_"+ thisId).html( $( '<span/>' ).text( WPAkismet.strings['Removing...'] ) );
},
success: function (response) {
if (response) {
// Show status/undo link
$("#author_comment_url_"+ thisId)
.attr('cid', thisId)
.addClass('akismet_undo_link_removal')
.html(
$( '<span/>' ).text( WPAkismet.strings['URL removed'] )
)
.append( ' ' )
.append(
$( '<span/>' )
.text( WPAkismet.strings['(undo)'] )
.addClass( 'akismet-span-link' )
);
}
}
});
return false;
}).on( 'click', '.akismet_undo_link_removal', function () {
var thisId = $(this).attr('cid');
var thisUrl = $(this).attr('href');
var data = {
action: 'comment_author_reurl',
_wpnonce: WPAkismet.comment_author_url_nonce,
id: thisId,
url: thisUrl
};
$.ajax({
url: ajaxurl,
type: 'POST',
data: data,
beforeSend: function () {
// Show temp status
$("#author_comment_url_"+ thisId).html( $( '<span/>' ).text( WPAkismet.strings['Re-adding...'] ) );
},
success: function (response) {
if (response) {
// Add "x" link
$("a[commentid='"+ thisId +"']").show();
// Show link. Core strips leading http://, so let's do that too.
$("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').text( thisUrl.replace( /^http:\/\/(www\.)?/ig, '' ) );
}
}
});
return false;
});
// Show a preview image of the hovered URL. Applies to author URLs and URLs inside the comments.
if ( "enable_mshots" in WPAkismet && WPAkismet.enable_mshots ) {
$( '#the-comment-list' ).on( 'mouseover', mshotEnabledLinkSelector, function () {
clearTimeout( mshotRemovalTimer );
if ( $( '.akismet-mshot' ).length > 0 ) {
if ( $( '.akismet-mshot:first' ).data( 'link' ) == this ) {
// The preview is already showing for this link.
return;
}
else {
// A new link is being hovered, so remove the old preview.
$( '.akismet-mshot' ).remove();
}
}
clearTimeout( mshotRetryTimer );
var linkUrl = $( this ).attr( 'href' );
if ( preloadedMshotURLs.indexOf( linkUrl ) !== -1 ) {
// This preview image was already preloaded, so begin with a retry URL so the user doesn't see the placeholder image for the first second.
mshotTries = 2;
}
else {
mshotTries = 1;
}
var mShot = $( '<div class="akismet-mshot mshot-container"><div class="mshot-arrow"></div><img src="' + akismet_mshot_url( linkUrl, mshotTries ) + '" width="450" height="338" class="mshot-image" /></div>' );
mShot.data( 'link', this );
mShot.data( 'url', linkUrl );
mShot.find( 'img' ).on( 'load', function () {
$( '.akismet-mshot' ).data( 'pending-request', false );
} );
var offset = $( this ).offset();
mShot.offset( {
left : Math.min( $( window ).width() - 475, offset.left + $( this ).width() + 10 ), // Keep it on the screen if the link is near the edge of the window.
top: offset.top + ( $( this ).height() / 2 ) - 101 // 101 = top offset of the arrow plus the top border thickness
} );
$( 'body' ).append( mShot );
mshotRetryTimer = setTimeout( retryMshotUntilLoaded, mshotRetryInterval );
} ).on( 'mouseout', 'a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type, td.comment p a', function () {
mshotRemovalTimer = setTimeout( function () {
clearTimeout( mshotRetryTimer );
$( '.akismet-mshot' ).remove();
}, 200 );
} );
var preloadDelayTimer = null;
$( window ).on( 'scroll resize', function () {
clearTimeout( preloadDelayTimer );
preloadDelayTimer = setTimeout( preloadMshotsInViewport, 500 );
} );
preloadMshotsInViewport();
}
/**
* The way mShots works is if there was no screenshot already recently generated for the URL,
* it returns a "loading..." image for the first request. Then, some subsequent request will
* receive the actual screenshot, but it's unknown how long it will take. So, what we do here
* is continually re-request the mShot, waiting a second after every response until we get the
* actual screenshot.
*/
function retryMshotUntilLoaded() {
clearTimeout( mshotRetryTimer );
var imageWidth = $( '.akismet-mshot img' ).get(0).naturalWidth;
if ( imageWidth == 0 ) {
// It hasn't finished loading yet the first time. Check again shortly.
setTimeout( retryMshotUntilLoaded, mshotRetryInterval );
}
else if ( imageWidth == 400 ) {
// It loaded the preview image.
if ( mshotTries == 20 ) {
// Give up if we've requested the mShot 20 times already.
return;
}
if ( ! $( '.akismet-mshot' ).data( 'pending-request' ) ) {
$( '.akismet-mshot' ).data( 'pending-request', true );
mshotTries++;
$( '.akismet-mshot .mshot-image' ).attr( 'src', akismet_mshot_url( $( '.akismet-mshot' ).data( 'url' ), mshotTries ) );
}
mshotRetryTimer = setTimeout( retryMshotUntilLoaded, mshotRetryInterval );
}
else {
// All done.
}
}
function preloadMshotsInViewport() {
var windowWidth = $( window ).width();
var windowHeight = $( window ).height();
$( '#the-comment-list' ).find( mshotEnabledLinkSelector ).each( function ( index, element ) {
var linkUrl = $( this ).attr( 'href' );
// Don't attempt to preload an mshot for a single link twice.
if ( preloadedMshotURLs.indexOf( linkUrl ) !== -1 ) {
// The URL is already preloaded.
return true;
}
if ( typeof element.getBoundingClientRect !== 'function' ) {
// The browser is too old. Return false to stop this preloading entirely.
return false;
}
var rect = element.getBoundingClientRect();
if ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= windowHeight && rect.right <= windowWidth ) {
akismet_preload_mshot( linkUrl );
$( this ).data( 'akismet-mshot-preloaded', true );
}
} );
}
$( '.checkforspam.enable-on-load' ).on( 'click', function( e ) {
if ( $( this ).hasClass( 'ajax-disabled' ) ) {
// Akismet hasn't been configured yet. Allow the user to proceed to the button's link.
return;
}
e.preventDefault();
if ( $( this ).hasClass( 'button-disabled' ) ) {
window.location.href = $( this ).data( 'success-url' ).replace( '__recheck_count__', 0 ).replace( '__spam_count__', 0 );
return;
}
$('.checkforspam').addClass('button-disabled').addClass( 'checking' );
$('.checkforspam-spinner').addClass( 'spinner' ).addClass( 'is-active' );
akismet_check_for_spam(0, 100);
}).removeClass( 'button-disabled' );
var spam_count = 0;
var recheck_count = 0;
function akismet_check_for_spam(offset, limit) {
var check_for_spam_buttons = $( '.checkforspam' );
var nonce = check_for_spam_buttons.data( 'nonce' );
// We show the percentage complete down to one decimal point so even queues with 100k
// pending comments will show some progress pretty quickly.
var percentage_complete = Math.round( ( recheck_count / check_for_spam_buttons.data( 'pending-comment-count' ) ) * 1000 ) / 10;
// Update the progress counter on the "Check for Spam" button.
$( '.checkforspam' ).text( check_for_spam_buttons.data( 'progress-label' ).replace( '%1$s', percentage_complete ) );
$.post(
ajaxurl,
{
'action': 'akismet_recheck_queue',
'offset': offset,
'limit': limit,
'nonce': nonce
},
function(result) {
if ( 'error' in result ) {
// An error is only returned in the case of a missing nonce, so we don't need the actual error message.
window.location.href = check_for_spam_buttons.data( 'failure-url' );
return;
}
recheck_count += result.counts.processed;
spam_count += result.counts.spam;
if (result.counts.processed < limit) {
window.location.href = check_for_spam_buttons.data( 'success-url' ).replace( '__recheck_count__', recheck_count ).replace( '__spam_count__', spam_count );
}
else {
// Account for comments that were caught as spam and moved out of the queue.
akismet_check_for_spam(offset + limit - result.counts.spam, limit);
}
}
);
}
if ( "start_recheck" in WPAkismet && WPAkismet.start_recheck ) {
$( '.checkforspam:first' ).click();
}
if ( typeof MutationObserver !== 'undefined' ) {
// Dynamically add the "X" next the the author URL links when a comment is quick-edited.
var comment_list_container = document.getElementById( 'the-comment-list' );
if ( comment_list_container ) {
var observer = new MutationObserver( function ( mutations ) {
for ( var i = 0, _len = mutations.length; i < _len; i++ ) {
if ( mutations[i].addedNodes.length > 0 ) {
akismet_enable_comment_author_url_removal();
// Once we know that we'll have to check for new author links, skip the rest of the mutations.
break;
}
}
} );
observer.observe( comment_list_container, { attributes: true, childList: true, characterData: true } );
}
}
function akismet_enable_comment_author_url_removal() {
$( '#the-comment-list' )
.find( 'tr.comment, tr[id ^= "comment-"]' )
.find( '.column-author a[href^="http"]:first' ) // Ignore mailto: links, which would be the comment author's email.
.each(function () {
if ( $( this ).parent().find( '.akismet_remove_url' ).length > 0 ) {
return;
}
var linkHref = $(this).attr( 'href' );
// Ignore any links to the current domain, which are diagnostic tools, like the IP address link
// or any other links another plugin might add.
var currentHostParts = document.location.href.split( '/' );
var currentHost = currentHostParts[0] + '//' + currentHostParts[2] + '/';
if ( linkHref.indexOf( currentHost ) != 0 ) {
var thisCommentId = $(this).parents('tr:first').attr('id').split("-");
$(this)
.attr("id", "author_comment_url_"+ thisCommentId[1])
.after(
$( '<a href="#" class="akismet_remove_url">x</a>' )
.attr( 'commentid', thisCommentId[1] )
.attr( 'title', WPAkismet.strings['Remove this URL'] )
);
}
});
}
/**
* Generate an mShot URL if given a link URL.
*
* @param string linkUrl
* @param int retry If retrying a request, the number of the retry.
* @return string The mShot URL;
*/
function akismet_mshot_url( linkUrl, retry ) {
var mshotUrl = '//s0.wp.com/mshots/v1/' + encodeURIComponent( linkUrl ) + '?w=900';
if ( retry > 1 ) {
mshotUrl += '&r=' + encodeURIComponent( retry );
}
mshotUrl += '&source=akismet';
return mshotUrl;
}
/**
* Begin loading an mShot preview of a link.
*
* @param string linkUrl
*/
function akismet_preload_mshot( linkUrl ) {
var img = new Image();
img.src = akismet_mshot_url( linkUrl );
preloadedMshotURLs.push( linkUrl );
}
$( '.akismet-could-be-primary' ).each( function () {
var form = $( this ).closest( 'form' );
form.data( 'initial-state', form.serialize() );
form.on( 'change keyup', function () {
var self = $( this );
var submit_button = self.find( '.akismet-could-be-primary' );
if ( self.serialize() != self.data( 'initial-state' ) ) {
submit_button.addClass( 'akismet-is-primary' );
}
else {
submit_button.removeClass( 'akismet-is-primary' );
}
} );
} );
/**
* Shows the Enter API key form
*/
$( '.akismet-enter-api-key-box__reveal' ).on( 'click', function ( e ) {
e.preventDefault();
var div = $( '.akismet-enter-api-key-box__form-wrapper' );
div.show( 500 );
div.find( 'input[name=key]' ).focus();
$( this ).hide();
} );
/**
* Hides the Connect with Jetpack form | Shows the Activate Akismet Account form
*/
$( 'a.toggle-ak-connect' ).on( 'click', function ( e ) {
e.preventDefault();
$( '.akismet-ak-connect' ).slideToggle('slow');
$( 'a.toggle-ak-connect' ).hide();
$( '.akismet-jp-connect' ).hide();
$( 'a.toggle-jp-connect' ).show();
} );
/**
* Shows the Connect with Jetpack form | Hides the Activate Akismet Account form
*/
$( 'a.toggle-jp-connect' ).on( 'click', function ( e ) {
e.preventDefault();
$( '.akismet-jp-connect' ).slideToggle('slow');
$( 'a.toggle-jp-connect' ).hide();
$( '.akismet-ak-connect' ).hide();
$( 'a.toggle-ak-connect' ).show();
} );
});
@@ -0,0 +1,67 @@
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("https://s0.wp.com/i/fonts/inter/Inter-Regular.woff2?v=3.19") format("woff2"),
url("https://s0.wp.com/i/fonts/inter/Inter-Regular.woff?v=3.19") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url("https://s0.wp.com/i/fonts/inter/Inter-Italic.woff2?v=3.19") format("woff2"),
url("https://s0.wp.com/i/fonts/inter/Inter-Italic.woff?v=3.19") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("https://s0.wp.com/i/fonts/inter/Inter-Medium.woff2?v=3.19") format("woff2"),
url("https://s0.wp.com/i/fonts/inter/Inter-Medium.woff?v=3.19") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 500;
font-display: swap;
src: url("https://s0.wp.com/i/fonts/inter/Inter-MediumItalic.woff2?v=3.19") format("woff2"),
url("https://s0.wp.com/i/fonts/inter/Inter-MediumItalic.woff?v=3.19") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("https://s0.wp.com/i/fonts/inter/Inter-SemiBold.woff2?v=3.19") format("woff2"),
url("https://s0.wp.com/i/fonts/inter/Inter-SemiBold.woff?v=3.19") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 600;
font-display: swap;
src: url("https://s0.wp.com/i/fonts/inter/Inter-SemiBoldItalic.woff2?v=3.19") format("woff2"),
url("https://s0.wp.com/i/fonts/inter/Inter-SemiBoldItalic.woff?v=3.19") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("https://s0.wp.com/i/fonts/inter/Inter-Bold.woff2?v=3.19") format("woff2"),
url("https://s0.wp.com/i/fonts/inter/Inter-Bold.woff?v=3.19") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 700;
font-display: swap;
src: url("https://s0.wp.com/i/fonts/inter/Inter-BoldItalic.woff2?v=3.19") format("woff2"),
url("https://s0.wp.com/i/fonts/inter/Inter-BoldItalic.woff?v=3.19") format("woff");
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="203" height="44" fill="none"><rect width="44" height="44" fill="#357B49" rx="6"/><path fill="#fff" fill-rule="evenodd" d="m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z" clip-rule="evenodd"/><path fill="#000" fill-rule="evenodd" d="M94.37 14.539c0-1.24-1.166-1.633-2.95-1.633a1.225 1.225 0 0 1-.103-.424.674.674 0 0 1 .186-.432.738.738 0 0 1 .432-.22 9.943 9.943 0 0 0 2.984-1.209c.085-.056.166-.114.244-.17.332-.237.63-.45 1.133-.45a.857.857 0 0 1 .436.095c.133.069.243.172.319.297l-.514 14.527c0 .065 0 .098.034.098.02 0 .028-.011.045-.033a.51.51 0 0 1 .058-.065l4.796-4.037.033-.028c.593-.502.824-.698.824-1.082 0-.457-.309-.882-1.509-.882a.456.456 0 0 1-.329-.134.416.416 0 0 1-.117-.323c0-.293.172-.424.48-.424h7.271a.465.465 0 0 1 .34.11.42.42 0 0 1 .141.314.41.41 0 0 1-.017.167.419.419 0 0 1-.225.249.45.45 0 0 1-.17.041c-1.715.229-3.43 1.176-4.664 2.155l-4.574 3.722 4.151 4.08c.162.162.326.329.493.498.641.653 1.317 1.341 2.079 1.885a4.931 4.931 0 0 0 2.915 1.045c.234 0 .423-.02.587-.04.125-.013.235-.025.339-.025.24 0 .24.196.24.294a.56.56 0 0 1-.171.424 3.94 3.94 0 0 1-.755.588c-.7.32-1.469.484-2.246.478a4.728 4.728 0 0 1-2.778-.848 12.042 12.042 0 0 1-2.093-2.024l-5.047-5.583a.515.515 0 0 1-.058-.065c-.017-.022-.025-.033-.045-.033-.034 0-.034.033-.034.098l-.172 4.8c0 1.436.995 2.176 2.504 2.415a.528.528 0 0 1 .319.166c.082.09.127.205.127.324a.406.406 0 0 1-.142.313.45.45 0 0 1-.338.11h-7.677a.477.477 0 0 1-.335-.115.438.438 0 0 1-.145-.308.454.454 0 0 1 .119-.33.5.5 0 0 1 .326-.16c1.715-.229 2.676-.751 2.71-2.22l.543-15.996Zm-19.929-1.894 7.168 17.923c.618 1.534 1.578 2.09 3.19 2.22a.452.452 0 0 1 .31.144.408.408 0 0 1 .102.313.421.421 0 0 1-.123.317.461.461 0 0 1-.323.14H76.91a.489.489 0 0 1-.343-.13.444.444 0 0 1-.138-.327.403.403 0 0 1 .113-.319.442.442 0 0 1 .322-.138c.789 0 1.68-.196 1.68-1.11a2.933 2.933 0 0 0-.24-1.11l-1.714-4.353c-.069-.196-.103-.272-.31-.272h-6.539c-1.029 0-2.286 0-2.88 1.24l-1.578 3.385a2.49 2.49 0 0 0-.286.98c0 1.174 1.612 1.24 2.47 1.24a.462.462 0 0 1 .328.134.417.417 0 0 1 .117.323.426.426 0 0 1-.137.326.47.47 0 0 1-.343.13h-6.951a.489.489 0 0 1-.343-.13.445.445 0 0 1-.137-.326.4.4 0 0 1 .116-.323.442.442 0 0 1 .33-.134c1.68-.098 2.23-.85 2.88-2.22l8.266-17.237c.378-.75 1.2-1.404 1.956-1.404.548 0 .72.294.891.718Zm-6.288 11.698c-.068.131-.068.164-.068.196 0 .033.068.098.206.098h6.802c.48 0 .686-.098.686-.392a.967.967 0 0 0-.103-.424L73.79 18.98l-.21-.514c-.42-1.024-.918-2.244-1.094-3.273 0-.066-.034-.098-.068-.098-.035 0-.069.033-.069.098a14.374 14.374 0 0 1-.995 2.426l-3.2 6.725Zm43.783-3.863c1.784 0 2.675.425 2.675 1.665l-.274 7.215c-.069 1.991-.377 3.101-2.778 3.395a.471.471 0 0 0-.312.164.428.428 0 0 0-.1.326.405.405 0 0 0 .273.396.45.45 0 0 0 .173.028h7.683a.463.463 0 0 0 .347-.112.42.42 0 0 0 .139-.323.453.453 0 0 0-.12-.33.5.5 0 0 0-.326-.16c-2.229-.326-2.435-1.632-2.435-3.428l.406-11.284a.697.697 0 0 0-.301-.335.745.745 0 0 0-.454-.09c-.47 0-.784.227-1.103.457a8.534 8.534 0 0 1-2.978 1.372.73.73 0 0 0-.434.22.667.667 0 0 0-.184.433.753.753 0 0 0 .103.391Zm3.842-6.692c1.269 0 2.023-.686 2.023-1.86 0-.98-.549-1.6-1.84-1.6-1.247 0-2.001.652-2.001 1.86 0 .98.549 1.6 1.818 1.6Zm17.939 6.431c0 .324-.04.887-.07 1.314-.018.262-.033.473-.033.547a.335.335 0 0 1-.105.197.366.366 0 0 1-.437.042.34.34 0 0 1-.144-.174c-.412-2.09-2.229-3.068-3.979-3.068-1.749 0-3.144.816-3.144 2.448 0 1.443 1.824 2.198 3.219 2.774.182.076.357.148.52.218.229.105.459.207.686.309 1.614.716 3.133 1.391 3.704 2.793.17.435.251.896.24 1.36a4.153 4.153 0 0 1-.309 1.6c-.926 2.252-3.715 3.395-6.379 3.395-3.944 0-4.63Line truncated

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false"><path d="M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z"></path></svg>

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 B

@@ -0,0 +1,580 @@
/* This file was automatically generated on Jun 19 2025 22:31:12 */
body {
--akismet-color-charcoal: #272635;
--akismet-color-light-grey: #f6f7f7;
--akismet-color-mid-grey: #a7aaad;
--akismet-color-dark-grey: #646970;
--akismet-color-grey-80: #2c3338;
--akismet-color-grey-100: #101517;
--akismet-color-white: #fff;
--akismet-color-mid-green: #357b49;
--akismet-color-light-green: #4eb26a;
--akismet-color-mid-red: #e82c3f;
--akismet-color-light-blue: #256eff;
--akismet-color-notice-light-green: #dbf0e1;
--akismet-color-notice-dark-green: #69bf82;
--akismet-color-notice-light-red: #ffdbde;
--akismet-color-notice-dark-red: #ff6676;
--akismet-color-notice-yellow: #e5c133;
}
/* UI components */
.akismet-new-feature {
background-color: var(--akismet-color-mid-green);
border-radius: 4px;
color: var(--akismet-color-white);
font-size: 10px;
padding: 4px 6px;
text-transform: uppercase;
vertical-align: top;
}
#akismet-plugin-container {
background-color: var(--akismet-color-light-grey);
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif;
}
#akismet-plugin-container a {
color: var(--akismet-color-mid-green);
}
#akismet-plugin-container a.akismet-button {
background-color: var(--akismet-color-mid-green);
color: var(--akismet-color-white);
}
#akismet-plugin-container button:focus-visible,
#akismet-plugin-container input:focus-visible,
#akismet-plugin-container a:focus-visible {
border: 0;
box-shadow: none;
outline: 2px solid var(--akismet-color-light-blue);
}
.akismet-masthead {
box-shadow: none;
}
.akismet-masthead__logo {
margin: 20px 0;
}
.akismet-section-header {
box-shadow: none;
margin-bottom: 0;
}
.akismet-section-header__label {
color: var(--akismet-color-charcoal);
font-weight: 600;
padding-right: 0.2em;
}
.akismet-button, .akismet-button:hover {
background-color: var(--akismet-color-mid-green);
border: 0;
color: #fff;
}
/* Need this specificity to override the existing header rule */
.akismet-new-snapshot h3.akismet-new-snapshot__header {
background: none;
font-size: 13px;
color: var(--akismet-color-charcoal);
text-align: right;
text-transform: none;
}
.akismet-new-snapshot .akismet-new-snapshot__number {
color: var(--akismet-color-charcoal);
letter-spacing: -1px;
text-align: right;
}
.akismet-new-snapshot li.akismet-new-snapshot__item {
color: var(--akismet-color-dark-grey);
font-size: 13px;
text-align: right;
text-transform: none;
}
.akismet-masthead__logo-link {
min-height: 50px;
}
.akismet-masthead__back-link-container {
margin-top: 16px;
margin-bottom: 2px;
}
/* Need this specificity to override the existing link rule */
#akismet-plugin-container a.akismet-masthead__back-link {
background-image: url(../img/arrow-left.svg);
background-position: right;
background-repeat: no-repeat;
background-size: 16px;
color: var(--akismet-color-charcoal);
font-weight: 400;
padding-right: 20px;
text-decoration: none;
}
#akismet-plugin-container a.akismet-masthead__back-link:hover {
text-decoration: underline;
}
.akismet-new-snapshot__item {
border-top: 1px solid var(--akismet-color-light-grey);
border-right: 1px solid var(--akismet-color-light-grey);
padding: 1em;
}
.akismet-new-snapshot li:first-child {
border-right: none;
}
.akismet-new-snapshot__list {
display: flex;
margin-bottom: 0;
}
.akismet-new-snapshot__item {
flex: 1 0 33.33%;
margin-bottom: 0;
padding-right: 1.5em;
padding-left: 1.5em;
}
.akismet-new-snapshot__chart {
padding: 1em;
}
.akismet-box {
border: 0;
}
.akismet-box,
.akismet-card {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.16);
border-radius: 8px;
overflow: hidden;
}
.akismet-card {
margin: 32px auto 0 auto;
}
.akismet-lower {
padding-top: 0;
}
.akismet-lower .inside {
padding: 0;
}
.akismet-section-header__label {
margin: 0;
}
.akismet-settings__row {
border-bottom: 1px solid var(--akismet-color-light-grey);
display: block;
padding: 1em 1.5em;
}
.akismet-settings__row-input {
margin-right: auto;
}
.akismet-settings__row-title {
font-weight: 500;
font-size: 1em;
margin: 0;
margin-bottom: 1em;
}
.akismet-settings__row-description {
margin-top: 0.5em;
}
.akismet-card-actions {
display: flex;
justify-content: flex-end;
padding: 1em;
}
.akismet-card-actions__secondary-action {
align-self: center;
margin-left: auto;
}
.akismet-settings__row label {
padding-bottom: 1em;
}
.akismet-settings__row-note {
font-size: 0.9em;
margin-top: 0.4em;
}
.akismet-settings__row input[type="checkbox"],
.akismet-settings__row input[type="radio"] {
accent-color: var(--akismet-color-mid-green);
box-shadow: none;
flex-shrink: 0;
margin: 2px 0 0 0;
}
.akismet-settings__row input[type="checkbox"] {
margin-top: 1px;
vertical-align: top;
-webkit-appearance: checkbox;
}
.akismet-settings__row input[type="radio"] {
-webkit-appearance: radio;
}
/* Fix up misbehaving wp-admin styles in Chrome (from forms and colors stylesheets) */
.akismet-settings__row input[type="checkbox"]:checked:before {
content: '';
}
.akismet-settings__row input[type="radio"]:checked:before {
background: none;
}
.akismet-settings__row input[type="checkbox"]:checked:hover,
.akismet-settings__row input[type="radio"]:checked:hover {
accent-color: var(--akismet-color-mid-green);
}
.akismet-button:disabled {
background-color: var(--akismet-color-mid-grey);
color: var(--akismet-color-white);
cursor: arrow;
}
.akismet-awaiting-stats,
.akismet-account {
padding: 0 1rem 1rem 1rem;
margin: 0;
}
.akismet-account {
padding-bottom: 0;
}
.akismet-account th {
font-weight: 500;
padding-left: 1em;
}
.akismet-account th, .akismet-account td {
padding-bottom: 1em;
}
.akismet-settings__row-input-label {
align-items: center;
display: flex;
}
.akismet-settings__row-label-text {
padding-right: 0.5em;
margin-top: 2px;
}
.akismet-alert {
border-right: 8px solid;
border-radius: 8px;
margin: 20px 0;
padding: 0.2em 1em;
}
.akismet-alert__heading {
font-size: 1em;
}
.akismet-alert.is-good {
background-color: var(--akismet-color-notice-light-green);
border-right-color: var(--akismet-color-notice-dark-green);
}
.akismet-alert.is-neutral {
background-color: var(--akismet-color-white);
border-right-color: var(--akismet-color-dark-grey);
}
.akismet-alert.is-bad {
background-color: var(--akismet-color-notice-light-red);
border-right-color: var(--akismet-color-notice-dark-red);
}
.akismet-alert.is-commercial {
background-color: var(--akismet-color-white);
border-color: var(--akismet-color-mid-grey);
border-bottom-width: 1px;
border-right-color: var(--akismet-color-notice-yellow);
display: flex;
padding-bottom: 1em;
}
#akismet-plugin-container .akismet-alert.is-good a,
#akismet-plugin-container .akismet-alert.is-bad a {
/* For better contrast - green isn't great */
color: var(--akismet-color-grey-80);
}
.akismet-alert-header {
font-size: 16px;
margin-bottom: 0.5em;
}
.akismet-alert-button-wrapper {
align-self: center;
margin-right: 2em;
min-width: 120px;
}
.akismet-alert-info {
text-wrap: pretty;
margin: 0.5em 0;
}
/* Setup - API key input */
.akismet-enter-api-key-box {
margin: 1.5rem 0;
}
.akismet-enter-api-key-box__reveal {
background: none;
border: 0;
color: var(--akismet-color-mid-green);
cursor: pointer;
text-decoration: underline;
}
.akismet-enter-api-key-box__form-wrapper {
display: none;
margin-top: 1.5rem;
}
.akismet-enter-api-key-box__input-wrapper {
box-sizing: border-box;
display: flex;
flex-wrap: nowrap;
padding: 0 1.5rem;
width: 100%;
}
.akismet-enter-api-key-box__key-input {
flex-grow: 1;
margin-left: 1rem;
}
h3.akismet-enter-api-key-box__header {
padding-top: 0;
padding-bottom: 1em;
text-align: right;
}
/* Notices > Activation (shown on edit-comments.php) */
#akismet-setup-prompt {
background: none;
border: none;
margin: 0;
padding: 0;
width: 100%;
}
.akismet-activate {
align-items: center;
/* background-image is defined via an inline style in class.akismet-admin.php */
background-color: var(--akismet-color-light-grey);
background-position: calc(100% - (100% - 1em)) center;
background-repeat: no-repeat;
background-size: 140px;
border: 1px solid var(--akismet-color-mid-green);
border-right-width: 4px;
display: flex;
justify-content: space-between;
margin: 15px 0;
min-height: 60px;
overflow: hidden;
padding: 5px 5px 5px 160px;
position: relative;
}
.akismet-activate__button,
.akismet-activate__button:hover,
.akismet-activate__button:visited {
margin: 0 1em;
}
.akismet-activate__description {
color: var(--akismet-color-charcoal);
flex-grow: 1;
font-size: 16px;
font-weight: 600;
margin: 0 auto;
text-align: center;
text-wrap: pretty;
}
/* Compatible plugins section */
.akismet-compatible-plugins__content {
padding: 0 1.5em 1.5em 1.5em;
}
.akismet-compatible-plugins__intro {
margin: 0;
}
.akismet-compatible-plugins__section-header-label {
display: block;
}
.akismet-compatible-plugins__section-header-label-text {
padding-left: 0.5em;
}
.akismet-compatible-plugins__list {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(245px, 1fr));
gap: 20px;
margin: 1.5em 0 1em 0;
padding: 0;
}
.akismet-compatible-plugins__card {
border: 1px solid var(--akismet-color-light-grey);
border-radius: 4px;
flex: 1 1 calc(50% - 5px);
padding: 1em;
display: flex;
}
.akismet-compatible-plugins__card-logo {
padding: 0 0 0 1.5em;
object-fit: contain;
}
.akismet-compatible-plugins__card-title {
font-size: 1.2em;
margin-top: 0;
}
.akismet-compatible-plugins__docs {
margin-top: 1em;
}
.akismet-settings__external-link::after {
content: "↗";
display: inline-block;
padding-right: 2px;
text-decoration: none;
vertical-align: text-top;
}
.akismet-compatible-plugins__external-link::after {
content: "↗";
display: inline-block;
padding-right: 2px;
text-decoration: none;
vertical-align: text-top;
}
.akismet-compatible-plugins__show-more {
all: unset;
cursor: pointer;
display: flex;
justify-content: space-between;
position: relative;
width: 100%;
}
/* Generates the show/hide chevron */
.akismet-compatible-plugins__show-more::after {
align-self: center;
border-bottom: 2px solid black;
border-left: 2px solid black;
content: "";
height: 8px;
transform: rotate(-45deg);
transition: transform 0.2s ease;
width: 8px;
}
.akismet-compatible-plugins__list.is-expanded + .akismet-compatible-plugins__show-more::after {
align-self: end;
transform: rotate(-225deg);
}
/* Gutenberg medium breakpoint */
@media screen and (max-width: 782px) {
.akismet-new-snapshot__list {
display: block;
}
.akismet-new-snapshot__number {
float: left;
font-size: 20px;
font-weight: 500;
margin-top: -16px;
}
.akismet-new-snapshot__header {
font-size: 14px;
font-weight: 500;
}
.akismet-new-snapshot__text {
font-size: 12px;
}
.akismet-settings__row input[type="checkbox"],
.akismet-settings__row input[type="radio"] {
height: 24px;
width: 24px;
}
.akismet-settings__row-label-text {
padding-right: 0.8em;
}
.akismet-settings__row input[type="checkbox"],
.akismet-settings__row input[type="radio"] {
margin-top: 0;
}
.akismet-activate {
background-size: 120px;
padding-left: 134px;
}
.akismet-activate__button {
white-space: normal;
}
.akismet-activate__description {
font-size: 14px;
margin-left: 1em;
}
}
/* Gutenberg small breakpoint */
@media screen and (max-width: 600px) {
.akismet-compatible-plugins__list {
gap: 10px;
}
.akismet-activate__button,
.akismet-activate__button:hover {
font-size: 13px;
}
.akismet-activate__description {
display: none;
}
}
@@ -0,0 +1,508 @@
/* This file was automatically generated on Jun 19 2025 22:00:12 */
.wp-admin.jetpack_page_akismet-key-config, .wp-admin.settings_page_akismet-key-config {
background-color:#f3f6f8;
}
#submitted-on {
position: relative;
}
#the-comment-list .author .akismet-user-comment-count {
display: inline;
}
#the-comment-list .author a span {
text-decoration: none;
color: #999;
}
#the-comment-list .author a span.akismet-span-link {
text-decoration: inherit;
color: inherit;
}
#the-comment-list .akismet_remove_url {
margin-right: 3px;
color: #999;
padding: 2px 0 2px 3px;
}
#the-comment-list .akismet_remove_url:hover {
color: #A7301F;
font-weight: bold;
padding: 2px 0 2px 2px;
}
#dashboard_recent_comments .akismet-status {
display: none;
}
.akismet-status {
float: left;
}
.akismet-status a {
color: #AAA;
font-style: italic;
}
table.comments td.comment p a {
text-decoration: underline;
}
table.comments td.comment p a:after {
content: attr(href);
color: #aaa;
display: inline-block; /* Show the URL without the link's underline extending under it. */
padding: 0 1ex; /* Because it's inline block, we can't just use spaces in the content: attribute to separate it from the link text. */
}
.mshot-arrow {
width: 0;
height: 0;
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
border-left: 10px solid #5C5C5C;
position: absolute;
right: -6px;
top: 91px;
}
.mshot-container {
background: #5C5C5C;
position: absolute;
top: -94px;
padding: 7px;
width: 450px;
height: 338px;
z-index: 20000;
border-radius: 6px;
}
.akismet-mshot {
position: absolute;
z-index: 100;
}
.akismet-mshot .mshot-image {
margin: 0;
height: 338px;
width: 450px;
}
.checkforspam {
display: inline-block !important;
}
.checkforspam-spinner {
display: inline-block;
margin-top: 7px;
}
.akismet-right {
float: left;
}
.akismet-card .akismet-right {
margin: 1em 0;
}
.akismet-alert-text {
color: #dd3d36;
font-weight: bold;
font-size: 120%;
margin-top: .5rem;
}
.akismet-new-snapshot {
margin-top: 1em;
text-align: center;
background: #fff;
}
.akismet-new-snapshot h3 {
background: #f5f5f5;
color: #888;
font-size: 11px;
margin: 0;
}
.akismet-new-snapshot ul li {
color: #999;
font-size: 11px;
text-transform: uppercase;
box-sizing: border-box;
}
.akismet-new-snapshot__number {
display: block;
font-size: 32px;
font-weight: lighter;
line-height: 1.5em;
}
.akismet-settings th:first-child {
vertical-align: top;
padding-top: 15px;
}
.akismet-settings th.akismet-api-key {
vertical-align: middle;
padding-top: 0;
}
.akismet-settings span.akismet-note {
float: right;
padding-right: 23px;
font-size: 75%;
margin-top: -10px;
}
.jetpack_page_akismet-key-config #wpcontent, .settings_page_akismet-key-config #wpcontent {
padding-right: 0;
}
.akismet-masthead {
background-color:#fff;
text-align:center;
box-shadow:0 1px 0 rgba(200,215,225,0.5),0 1px 2px #e9eff3
}
@media (max-width: 45rem) {
.akismet-masthead {
padding:0 1.25rem
}
}
.akismet-masthead__inside-container {
padding:.375rem 0;
margin:0 auto;
width:100%;
max-width:45rem;
text-align: right;
}
.akismet-masthead__logo-container {
padding:.3125rem 0 0
}
.akismet-masthead__logo-link {
display:inline-block;
outline:none;
vertical-align:middle
}
.akismet-masthead__logo-link:focus {
line-height:0;
box-shadow:0 0 0 2px #78dcfa
}
.akismet-masthead__logo-link+code {
margin:0 10px;
padding:5px 9px;
border-radius:2px;
background:#e6ecf1;
color:#647a88
}
.akismet-masthead__links {
display:flex;
flex-flow:row wrap;
flex:2 50%;
justify-content:flex-end;
margin:0
}
@media (max-width: 480px) {
.akismet-masthead__links {
padding-left:.625rem
}
}
.akismet-masthead__link-li {
margin:0;
padding:0
}
.akismet-masthead__link {
font-style:normal;
color:#0087be;
padding:.625rem;
display:inline-block
}
.akismet-masthead__link:visited {
color:#0087be
}
.akismet-masthead__link:active,.akismet-masthead__link:hover {
color:#00aadc
}
.akismet-masthead__link:hover {
text-decoration:underline
}
.akismet-masthead__link .dashicons {
display:none
}
@media (max-width: 480px) {
.akismet-masthead__link:hover,.akismet-masthead__link:active {
text-decoration:none
}
.akismet-masthead__link .dashicons {
display:block;
font-size:1.75rem
}
.akismet-masthead__link span+span {
display:none
}
}
.akismet-masthead__link-li:last-of-type .akismet-masthead__link {
padding-left:0
}
.akismet-lower {
margin: 0 auto;
text-align: right;
max-width: 45rem;
padding: 1.5rem;
}
.akismet-lower .notice {
margin-bottom: 2rem;
}
.akismet-card {
margin-top: 1rem;
margin-bottom: 0;
position: relative;
box-sizing: border-box;
background: white;
}
.akismet-card:after, .akismet-card .inside:after, .akismet-masthead__logo-container:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.akismet-card .inside {
padding: 1.5rem;
padding-top: 1rem;
}
.akismet-card .akismet-card-actions {
margin-top: 1rem;
}
.jetpack_page_akismet-key-config .update-nag, .settings_page_akismet-key-config .update-nag {
display: none;
}
.akismet-masthead .akismet-right {
line-height: 2.125rem;
font-size: 0.9rem;
}
.akismet-box {
box-sizing: border-box;
background: white;
border: 1px solid rgba(200, 215, 225, 0.5);
}
.akismet-box h2, .akismet-box h3 {
padding: 1.5rem 1.5rem .5rem 1.5rem;
margin: 0;
}
.akismet-box p {
padding: 0 1.5rem 1.5rem 1.5rem;
margin: 0;
}
.akismet-jetpack-email {
font-style: oblique;
}
.akismet-jetpack-gravatar {
padding: 0 1.5rem 0 0;
float: right;
margin-left: 1rem;
width: 54px;
height: 54px;
}
.akismet-box p:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.akismet-box .akismet-right {
padding-left: 1.5rem;
}
.akismet-boxes .akismet-box {
margin-bottom: 0;
padding: 0;
margin-top: -1px;
}
.akismet-boxes .akismet-box:last-child {
margin-bottom: 1.5rem;
}
.akismet-boxes .akismet-box:first-child {
margin-top: 1.5rem;
}
.akismet-box-header {
max-width: 700px;
margin: 0 auto 40px auto;
line-height: 1.5;
}
.akismet-box-header h2 {
margin: 1.5rem 10% 0;
font-size: 1.375rem;
font-weight: 700;
color: #000;
}
.akismet-box .centered {
text-align: center;
}
.akismet-box .akismet-toggles {
margin: 3rem 0;
}
.akismet-box .akismet-ak-connect, .akismet-box .toggle-jp-connect {
display: none;
}
.akismet-button, .akismet-button:hover, .akismet-button:visited {
background: white;
border-color: #c8d7e1;
border-style: solid;
border-width: 1px 1px 2px;
color: #2e4453;
cursor: pointer;
display: inline-block;
margin: 0;
outline: 0;
overflow: hidden;
font-size: 14px;
font-weight: 500;
text-overflow: ellipsis;
text-decoration: none;
vertical-align: top;
box-sizing: border-box;
line-height: 21px;
border-radius: 4px;
padding: 7px 14px 9px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.akismet-button:hover {
border-color: #a8bece;
}
.akismet-button:active {
border-width: 2px 1px 1px;
}
.akismet-is-primary, .akismet-is-primary:hover, .akismet-is-primary:visited {
background: #00aadc;
border-color: #0087be;
color: white;
}
.akismet-is-primary:hover, .akismet-is-primary:focus {
border-color: #005082;
}
.akismet-is-primary:hover {
border-color: #005082;
}
.akismet-section-header {
position: relative;
margin: 0 auto 0.625rem auto;
padding: 1rem;
box-sizing: border-box;
box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3;
background: #ffffff;
width: 100%;
padding-top: 0.6875rem;
padding-bottom: 0.6875rem;
display: flex;
}
.akismet-section-header__label {
display: flex;
align-items: center;
flex-grow: 1;
line-height: 1.75rem;
position: relative;
font-size: 0.875rem;
color: #4f748e;
}
.akismet-section-header__actions {
line-height: 1.75rem;
}
.akismet-setup-instructions {
text-align: center;
}
.akismet-setup-instructions form {
padding-bottom: 1.5rem;
}
div.error.akismet-usage-limit-alert {
padding: 25px 15px 25px 45px;
display: flex;
align-items: center;
}
#akismet-plugin-container .akismet-usage-limit-alert {
margin: 0 auto 0.625rem auto;
box-sizing: border-box;
box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3;
border: none;
border-right: 4px solid #d63638;
}
.akismet-usage-limit-alert .akismet-usage-limit-logo {
width: 38px;
min-width: 38px;
height: 38px;
border-radius: 20px;
margin-left: 18px;
background: black;
position: relative;
}
.akismet-usage-limit-alert .akismet-usage-limit-logo img {
position: absolute;
width: 22px;
right: 8px;
top: 10px;
}
.akismet-usage-limit-alert .akismet-usage-limit-text {
flex-grow: 1;
margin-left: 18px;
}
.akismet-usage-limit-alert h3 {
margin: 0;
}
.akismet-usage-limit-alert .akismet-usage-limit-cta {
border-color: none;
text-align: left;
}
#akismet-plugin-container .akismet-usage-limit-cta a {
color: #d63638;
background: #fafafa;
}
@media (max-width: 550px) {
div.error.akismet-usage-limit-alert {
display: block;
}
.akismet-usage-limit-alert .akismet-usage-limit-logo,
.akismet-usage-limit-alert .akismet-usage-limit-text {
margin-bottom: 15px;
}
.akismet-usage-limit-alert .akismet-usage-limit-cta {
text-align: right;
}
}
+71
View File
@@ -0,0 +1,71 @@
<?php
/**
* @package Akismet
*/
/*
Plugin Name: Akismet Anti-spam: Spam Protection
Plugin URI: https://akismet.com/
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. Akismet Anti-spam keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.
Version: 5.5
Requires at least: 5.8
Requires PHP: 7.2
Author: Automattic - Anti-spam Team
Author URI: https://automattic.com/wordpress-plugins/
License: GPLv2 or later
Text Domain: akismet
*/
/*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Copyright 2005-2025 Automattic, Inc.
*/
// Make sure we don't expose any info if called directly
if ( ! function_exists( 'add_action' ) ) {
echo 'Hi there! I\'m just a plugin, not much I can do when called directly.';
exit;
}
define( 'AKISMET_VERSION', '5.5' );
define( 'AKISMET__MINIMUM_WP_VERSION', '5.8' );
define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'AKISMET_DELETE_LIMIT', 10000 );
register_activation_hook( __FILE__, array( 'Akismet', 'plugin_activation' ) );
register_deactivation_hook( __FILE__, array( 'Akismet', 'plugin_deactivation' ) );
require_once AKISMET__PLUGIN_DIR . 'class.akismet.php';
require_once AKISMET__PLUGIN_DIR . 'class.akismet-widget.php';
require_once AKISMET__PLUGIN_DIR . 'class.akismet-rest-api.php';
require_once AKISMET__PLUGIN_DIR . 'class-akismet-compatible-plugins.php';
add_action( 'init', array( 'Akismet', 'init' ) );
add_action( 'rest_api_init', array( 'Akismet_REST_API', 'init' ) );
add_action( 'init', array( 'Akismet_Compatible_Plugins', 'init' ) );
if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
require_once AKISMET__PLUGIN_DIR . 'class.akismet-admin.php';
add_action( 'init', array( 'Akismet_Admin', 'init' ) );
}
// add wrapper class around deprecated akismet functions that are referenced elsewhere
require_once AKISMET__PLUGIN_DIR . 'wrapper.php';
if ( defined( 'WP_CLI' ) && WP_CLI ) {
require_once AKISMET__PLUGIN_DIR . 'class.akismet-cli.php';
}
+550
View File
@@ -0,0 +1,550 @@
=== Akismet Anti-spam ===
== Archived Changelog Entries ==
This file contains older changelog entries, so we can keep the size of the standard WordPress readme.txt file reasonable.
For the latest changes, please see the "Changelog" section of the [readme.txt file](https://plugins.svn.wordpress.org/akismet/trunk/readme.txt).
= 4.2.5 =
*Release Date - 11 July 2022*
* Fixed a bug that added unnecessary comment history entries after comment rechecks.
* Added a notice that displays when WP-Cron is disabled and might be affecting comment rechecks.
= 4.2.4 =
*Release Date - 20 May 2022*
* Improved translator instructions for comment history.
* Bumped the "Tested up to" tag to WP 6.0.
= 4.2.3 =
*Release Date - 25 April 2022*
* Improved compatibility with Fluent Forms
* Fixed missing translation domains
* Updated stats URL.
* Improved accessibility of elements on the config page.
= 4.2.2 =
*Release Date - 24 January 2022*
* Improved compatibility with Formidable Forms
* Fixed a bug that could cause issues when multiple contact forms appear on one page.
* Updated delete_comment and deleted_comment actions to pass two arguments to match WordPress core since 4.9.0.
* Added a filter that allows comment types to be excluded when counting users' approved comments.
= 4.2.1 =
*Release Date - 1 October 2021*
* Fixed a bug causing AMP validation to fail on certain pages with forms.
= 4.2 =
*Release Date - 30 September 2021*
* Added links to additional information on API usage notifications.
* Reduced the number of network requests required for a comment page when running Akismet.
* Improved compatibility with the most popular contact form plugins.
* Improved API usage buttons for clarity on what upgrade is needed.
= 4.1.12 =
*Release Date - 3 September 2021*
* Fixed "Use of undefined constant" notice.
* Improved styling of alert notices.
= 4.1.11 =
*Release Date - 23 August 2021*
* Added support for Akismet API usage notifications on Akismet settings and edit-comments admin pages.
* Added support for the deleted_comment action when bulk-deleting comments from Spam.
= 4.1.10 =
*Release Date - 6 July 2021*
* Simplified the code around checking comments in REST API and XML-RPC requests.
* Updated Plus plan terminology in notices to match current subscription names.
* Added `rel="noopener"` to the widget link to avoid warnings in Google Lighthouse.
* Set the Akismet JavaScript as deferred instead of async to improve responsiveness.
* Improved the preloading of screenshot popups on the edit comments admin page.
= 4.1.9 =
*Release Date - 2 March 2021*
* Improved handling of pingbacks in XML-RPC multicalls
= 4.1.8 =
*Release Date - 6 January 2021*
* Fixed missing fields in submit-spam and submit-ham calls that could lead to reduced accuracy.
* Fixed usage of deprecated jQuery function.
= 4.1.7 =
*Release Date - 22 October 2020*
* Show the "Set up your Akismet account" banner on the comments admin screen, where it's relevant to mention if Akismet hasn't been configured.
* Don't use wp_blacklist_check when the new wp_check_comment_disallowed_list function is available.
= 4.1.6 =
*Release Date - 4 June 2020*
* Disable "Check for Spam" button until the page is loaded to avoid errors with clicking through to queue recheck endpoint directly.
* Added filter "akismet_enable_mshots" to allow disabling screenshot popups on the edit comments admin page.
= 4.1.5 =
*Release Date - 29 April 2020*
* Based on user feedback, we have dropped the in-admin notice explaining the availability of the "privacy notice" option in the AKismet settings screen. The option itself is available, but after displaying the notice for the last 2 years, it is now considered a known fact.
* Updated the "Requires at least" to WP 4.6, based on recommendations from https://wp-info.org/tools/checkplugini18n.php?slug=akismet
* Moved older changelog entries to a separate file to keep the size of this readme reasonable, also based on recommendations from https://wp-info.org/tools/checkplugini18n.php?slug=akismet
= 4.1.4 =
*Release Date - 17 March 2020*
* Only redirect to the Akismet setup screen upon plugin activation if the plugin was activated manually from within the plugin-related screens, to help users with non-standard install workflows, like WP-CLI.
* Update the layout of the initial setup screen to be more readable on small screens.
* If no API key has been entered, don't run code that expects an API key.
* Improve the readability of the comment history entries.
* Don't modify the comment form HTML if no API key has been set.
= 4.1.3 =
*Release Date - 31 October 2019*
* Prevented an attacker from being able to cause a user to unknowingly recheck their Pending comments for spam.
* Improved compatibility with Jetpack 7.7+.
* Updated the plugin activation page to use consistent language and markup.
* Redirecting users to the Akismet connnection/settings screen upon plugin activation, in an effort to make it easier for people to get setup.
= 4.1.2 =
*Release Date - 14 May 2019*
* Fixed a conflict between the Akismet setup banner and other plugin notices.
* Reduced the number of API requests made by the plugin when attempting to verify the API key.
* Include additional data in the pingback pre-check API request to help make the stats more accurate.
* Fixed a bug that was enabling the "Check for Spam" button when no comments were eligible to be checked.
* Improved Akismet's AMP compatibility.
= 4.1.1 =
*Release Date - 31 January 2019*
* Fixed the "Setup Akismet" notice so it resizes responsively.
* Only highlight the "Save Changes" button in the Akismet config when changes have been made.
* The count of comments in your spam queue shown on the dashboard show now always be up-to-date.
= 4.1 =
*Release Date - 12 November 2018*
* Added a WP-CLI method for retrieving stats.
* Hooked into the new "Personal Data Eraser" functionality from WordPress 4.9.6.
* Added functionality to clear outdated alerts from Akismet.com.
= 4.0.8 =
*Release Date - 19 June 2018*
* Improved the grammar and consistency of the in-admin privacy related notes (notice and config).
* Revised in-admin explanation of the comment form privacy notice to make its usage clearer.
* Added `rel="nofollow noopener"` to the comment form privacy notice to improve SEO and security.
= 4.0.7 =
*Release Date - 28 May 2018*
* Based on user feedback, the link on "Learn how your comment data is processed." in the optional privacy notice now has a `target` of `_blank` and opens in a new tab/window.
* Updated the in-admin privacy notice to use the term "comment" instead of "contact" in "Akismet can display a notice to your users under your comment forms."
* Only show in-admin privacy notice if Akismet has an API Key configured
= 4.0.6 =
*Release Date - 26 May 2018*
* Moved away from using `empty( get_option() )` to instantiating a variable to be compatible with older versions of PHP (5.3, 5.4, etc).
= 4.0.5 =
*Release Date - 26 May 2018*
* Corrected version number after tagging. Sorry...
= 4.0.4 =
*Release Date - 26 May 2018*
* Added a hook to provide Akismet-specific privacy information for a site's privacy policy.
* Added tools to control the display of a privacy related notice under comment forms.
* Fixed HTML in activation failure message to close META and HEAD tag properly.
* Fixed a bug that would sometimes prevent Akismet from being correctly auto-configured.
= 4.0.3 =
*Release Date - 19 February 2018*
* Added a scheduled task to remove entries in wp_commentmeta that no longer have corresponding comments in wp_comments.
* Added a new `akismet_batch_delete_count` action to the batch delete methods for people who'd like to keep track of the numbers of records being processed by those methods.
= 4.0.2 =
*Release Date - 18 December 2017*
* Fixed a bug that could cause Akismet to recheck a comment that has already been manually approved or marked as spam.
* Fixed a bug that could cause Akismet to claim that some comments are still waiting to be checked when no comments are waiting to be checked.
= 4.0.1 =
*Release Date - 6 November 2017*
* Fixed a bug that could prevent some users from connecting Akismet via their Jetpack connection.
* Ensured that any pending Akismet-related events are unscheduled if the plugin is deactivated.
* Allow some JavaScript to be run asynchronously to avoid affecting page render speeds.
= 4.0 =
*Release Date - 19 September 2017*
* Added REST API endpoints for configuring Akismet and retrieving stats.
* Increased the minimum supported WordPress version to 4.0.
* Added compatibility with comments submitted via the REST API.
* Improved the progress indicator on the "Check for Spam" button.
= 3.3.4 =
*Release Date - 3 August 2017*
* Disabled Akismet's debug log output by default unless AKISMET_DEBUG is defined.
* URL previews now begin preloading when the mouse moves near them in the comments section of wp-admin.
* When a comment is caught by the Comment Blacklist, Akismet will always allow it to stay in the trash even if it is spam as well.
* Fixed a bug that was preventing an error from being shown when a site can't reach Akismet's servers.
= 3.3.3 =
*Release Date - 13 July 2017*
* Reduced amount of bandwidth used by the URL Preview feature.
* Improved the admin UI when the API key is manually pre-defined for the site.
* Removed a workaround for WordPress installations older than 3.3 that will improve Akismet's compatibility with other plugins.
* The number of spam blocked that is displayed on the WordPress dashboard will now be more accurate and updated more frequently.
* Fixed a bug in the Akismet widget that could cause PHP warnings.
= 3.3.2 =
*Release Date - 10 May 2017*
* Fixed a bug causing JavaScript errors in some browsers.
= 3.3.1 =
*Release Date - 2 May 2017*
* Improve performance by only requesting the akismet_comment_nonce option when absolutely necessary.
* Fixed two bugs that could cause PHP warnings.
* Fixed a bug that was preventing the "Remove author URL" feature from working after a comment was edited using "Quick Edit."
* Fixed a bug that was preventing the URL preview feature from working after a comment was edited using "Quick Edit."
= 3.3 =
*Release Date - 23 February 2017*
* Updated the Akismet admin pages with a new clean design.
* Fixed bugs preventing the `akismet_add_comment_nonce` and `akismet_update_alert` wrapper functions from working properly.
* Fixed bug preventing the loading indicator from appearing when re-checking all comments for spam.
* Added a progress indicator to the "Check for Spam" button.
* Added a success message after manually rechecking the Pending queue for spam.
= 3.2 =
*Release Date - 6 September 2016*
* Added a WP-CLI module. You can now check comments and recheck the moderation queue from the command line.
* Stopped using the deprecated jQuery function `.live()`.
* Fixed a bug in `remove_comment_author_url()` and `add_comment_author_url()` that could generate PHP notices.
* Fixed a bug that could cause an infinite loop for sites with very very very large comment IDs.
* Fixed a bug that could cause the Akismet widget title to be blank.
= 3.1.11 =
*Release Date - 12 May 2016*
* Fixed a bug that could cause the "Check for Spam" button to skip some comments.
* Fixed a bug that could prevent some spam submissions from being sent to Akismet.
* Updated all links to use https:// when possible.
* Disabled Akismet debug logging unless WP_DEBUG and WP_DEBUG_LOG are both enabled.
= 3.1.10 =
*Release Date - 1 April 2016*
* Fixed a bug that could cause comments caught as spam to be placed in the Pending queue.
* Fixed a bug that could have resulted in comments that were caught by the core WordPress comment blacklist not to have a corresponding History entry.
* Fixed a bug that could have caused avoidable PHP warnings in the error log.
= 3.1.9 =
*Release Date - 28 March 2016*
* Add compatibility with Jetpack so that Jetpack can automatically configure Akismet settings when appropriate.
* Fixed a bug preventing some comment data from being sent to Akismet.
= 3.1.8 =
*Release Date - 4 March 2016*
* Fixed a bug preventing Akismet from being used with some plugins that rewrite admin URLs.
* Reduced the amount of bandwidth used on Akismet API calls
* Reduced the amount of space Akismet uses in the database
* Fixed a bug that could cause comments caught as spam to be placed in the Pending queue.
= 3.1.7 =
*Release Date - 4 January 2016*
* Added documentation for the 'akismet_comment_nonce' filter.
* The post-install activation button is now accessible to screen readers and keyboard-only users.
* Fixed a bug that was preventing the "Remove author URL" feature from working in WordPress 4.4
= 3.1.6 =
*Release Date - 14 December 2015*
* Improve the notices shown after activating Akismet.
* Update some strings to allow for the proper plural forms in all languages.
= 3.1.5 =
*Release Date - 13 October 2015*
* Closes a potential XSS vulnerability.
= 3.1.4 =
*Release Date - 24 September 2015*
* Fixed a bug that was preventing some users from automatically connecting using Jetpack if they didn't have a current Akismet subscription.
* Fixed a bug that could cause comments caught as spam to be placed in the Pending queue.
* Error messages and instructions have been simplified to be more understandable.
* Link previews are enabled for all links inside comments, not just the author's website link.
= 3.1.3 =
*Release Date - 6 July 2015*
* Notify users when their account status changes after previously being successfully set up. This should help any users who are seeing blank Akismet settings screens.
= 3.1.2 =
*Release Date - 7 June 2015*
* Reduced the amount of space Akismet uses in the commentmeta table.
* Fixed a bug where some comments with quotes in the author name weren't getting history entries
* Pre-emptive security improvements to ensure that the Akismet plugin can't be used by attackers to compromise a WordPress installation.
* Better UI for the key entry field: allow whitespace to be included at the beginning or end of the key and strip it out automatically when the form is submitted.
* When deactivating the plugin, notify the Akismet API so the site can be marked as inactive.
* Clearer error messages.
= 3.1.1 =
*Release Date - 17th March, 2015*
* Improvements to the "Remove comment author URL" JavaScript
* Include the pingback pre-check from the 2.6 branch.
= 3.1 =
*Release Date - 11th March, 2015*
* Use HTTPS by default for all requests to Akismet.
* Fix for a situation where Akismet might strip HTML from a comment.
= 3.0.4 =
*Release Date - 11th December, 2014*
* Fix to make .htaccess compatible with Apache 2.4.
* Fix to allow removal of https author URLs.
* Fix to avoid stripping part of the author URL when removing and re-adding.
* Removed the "Check for Spam" button from the "Trash" and "Approved" queues, where it would have no effect.
* Allow automatic API key configuration when Jetpack is installed and connected to a WordPress.com account
= 3.0.3 =
*Release Date - 3rd November, 2014*
* Fix for sending the wrong data to delete_comment action that could have prevented old spam comments from being deleted.
* Added a filter to disable logging of Akismet debugging information.
* Added a filter for the maximum comment age when deleting old spam comments.
* Added a filter for the number per batch when deleting old spam comments.
* Removed the "Check for Spam" button from the Spam folder.
= 3.0.2 =
*Release Date - 18th August, 2014*
* Performance improvements.
* Fixed a bug that could truncate the comment data being sent to Akismet for checking.
= 3.0.1 =
*Release Date - 9th July, 2014*
* Removed dependency on PHP's fsockopen function
* Fix spam/ham reports to work when reported outside of the WP dashboard, e.g., from Notifications or the WP app
* Remove jQuery dependency for comment form JavaScript
* Remove unnecessary data from some Akismet comment meta
* Suspended keys will now result in all comments being put in moderation, not spam.
= 3.0.0 =
*Release Date - 15th April, 2014*
* Move Akismet to Settings menu
* Drop Akismet Stats menu
* Add stats snapshot to Akismet settings
* Add Akismet subscription details and status to Akismet settings
* Add contextual help for each page
* Improve Akismet setup to use Jetpack to automate plugin setup
* Fix "Check for Spam" to use AJAX to avoid page timing out
* Fix Akismet settings page to be responsive
* Drop legacy code
* Tidy up CSS and Javascript
* Replace the old discard setting with a new "discard pervasive spam" feature.
= 2.6.0 =
*Release Date - 18th March, 2014*
* Add ajax paging to the check for spam button to handle large volumes of comments
* Optimize javascript and add localization support
* Fix bug in link to spam comments from right now dashboard widget
* Fix bug with deleting old comments to avoid timeouts dealing with large volumes of comments
* Include X-Pingback-Forwarded-For header in outbound WordPress pingback verifications
* Add pre-check for pingbacks, to stop spam before an outbound verification request is made
= 2.5.9 =
*Release Date - 1st August, 2013*
* Update 'Already have a key' link to redirect page rather than depend on javascript
* Fix some non-translatable strings to be translatable
* Update Activation banner in plugins page to redirect user to Akismet config page
= 2.5.8 =
*Release Date - 20th January, 2013*
* Simplify the activation process for new users
* Remove the reporter_ip parameter
* Minor preventative security improvements
= 2.5.7 =
*Release Date - 13th December, 2012*
* FireFox Stats iframe preview bug
* Fix mshots preview when using https
* Add .htaccess to block direct access to files
* Prevent some PHP notices
* Fix Check For Spam return location when referrer is empty
* Fix Settings links for network admins
* Fix prepare() warnings in WP 3.5
= 2.5.6 =
*Release Date - 26th April, 2012*
* Prevent retry scheduling problems on sites where wp_cron is misbehaving
* Preload mshot previews
* Modernize the widget code
* Fix a bug where comments were not held for moderation during an error condition
* Improve the UX and display when comments are temporarily held due to an error
* Make the Check For Spam button force a retry when comments are held due to an error
* Handle errors caused by an invalid key
* Don't retry comments that are too old
* Improve error messages when verifying an API key
= 2.5.5 =
*Release Date - 11th January, 2012*
* Add nonce check for comment author URL remove action
* Fix the settings link
= 2.5.4 =
*Release Date - 5th January, 2012*
* Limit Akismet CSS and Javascript loading in wp-admin to just the pages that need it
* Added author URL quick removal functionality
* Added mShot preview on Author URL hover
* Added empty index.php to prevent directory listing
* Move wp-admin menu items under Jetpack, if it is installed
* Purge old Akismet comment meta data, default of 15 days
= 2.5.3 =
*Release Date - 8th Febuary, 2011*
* Specify the license is GPL v2 or later
* Fix a bug that could result in orphaned commentmeta entries
* Include hotfix for WordPress 3.0.5 filter issue
= 2.5.2 =
*Release Date - 14th January, 2011*
* Properly format the comment count for author counts
* Look for super admins on multisite installs when looking up user roles
* Increase the HTTP request timeout
* Removed padding for author approved count
* Fix typo in function name
* Set Akismet stats iframe height to fixed 2500px. Better to have one tall scroll bar than two side by side.
= 2.5.1 =
*Release Date - 17th December, 2010*
* Fix a bug that caused the "Auto delete" option to fail to discard comments correctly
* Remove the comment nonce form field from the 'Akismet Configuration' page in favor of using a filter, akismet_comment_nonce
* Fixed padding bug in "author" column of posts screen
* Added margin-top to "cleared by ..." badges on dashboard
* Fix possible error when calling akismet_cron_recheck()
* Fix more PHP warnings
* Clean up XHTML warnings for comment nonce
* Fix for possible condition where scheduled comment re-checks could get stuck
* Clean up the comment meta details after deleting a comment
* Only show the status badge if the comment status has been changed by someone/something other than Akismet
* Show a 'History' link in the row-actions
* Translation fixes
* Reduced font-size on author name
* Moved "flagged by..." notification to top right corner of comment container and removed heavy styling
* Hid "flagged by..." notification while on dashboard
= 2.5.0 =
*Release Date - 7th December, 2010*
* Track comment actions under 'Akismet Status' on the edit comment screen
* Fix a few remaining deprecated function calls ( props Mike Glendinning )
* Use HTTPS for the stats IFRAME when wp-admin is using HTTPS
* Use the WordPress HTTP class if available
* Move the admin UI code to a separate file, only loaded when needed
* Add cron retry feature, to replace the old connectivity check
* Display Akismet status badge beside each comment
* Record history for each comment, and display it on the edit page
* Record the complete comment as originally submitted in comment_meta, to use when reporting spam and ham
* Highlight links in comment content
* New option, "Show the number of comments you've approved beside each comment author."
* New option, "Use a nonce on the comment form."
= 2.4.0 =
*Release Date - 23rd August, 2010*
* Spell out that the license is GPLv2
* Fix PHP warnings
* Fix WordPress deprecated function calls
* Fire the delete_comment action when deleting comments
* Move code specific for older WP versions to legacy.php
* General code clean up
= 2.3.0 =
*Release Date - 5th June, 2010*
* Fix "Are you sure" nonce message on config screen in WPMU
* Fix XHTML compliance issue in sidebar widget
* Change author link; remove some old references to WordPress.com accounts
* Localize the widget title (core ticket #13879)
= 2.2.9 =
*Release Date - 2nd June, 2010*
* Eliminate a potential conflict with some plugins that may cause spurious reports
= 2.2.8 =
*Release Date - 27th May, 2010*
* Fix bug in initial comment check for ipv6 addresses
* Report comments as ham when they are moved from spam to moderation
* Report comments as ham when clicking undo after spam
* Use transition_comment_status action when available instead of older actions for spam/ham submissions
* Better diagnostic messages when PHP network functions are unavailable
* Better handling of comments by logged-in users
= 2.2.7 =
*Release Date - 17th December, 2009*
* Add a new AKISMET_VERSION constant
* Reduce the possibility of over-counting spam when another spam filter plugin is in use
* Disable the connectivity check when the API key is hard-coded for WPMU
= 2.2.6 =
*Release Date - 20th July, 2009*
* Fix a global warning introduced in 2.2.5
* Add changelog and additional readme.txt tags
* Fix an array conversion warning in some versions of PHP
* Support a new WPCOM_API_KEY constant for easier use with WordPress MU
= 2.2.5 =
*Release Date - 13th July, 2009*
* Include a new Server Connectivity diagnostic check, to detect problems caused by firewalls
= 2.2.4 =
*Release Date - 3rd June, 2009*
* Fixed a key problem affecting the stats feature in WordPress MU
* Provide additional blog information in Akismet API calls
@@ -0,0 +1,316 @@
<?php
/**
* Handles compatibility checks for Akismet with other plugins.
*
* @package Akismet
* @since 5.4.0
*/
declare( strict_types = 1 );
// Following existing Akismet convention for file naming.
// phpcs:ignore WordPress.Files.FileName.NotHyphenatedLowercase
/**
* Class for managing compatibility checks for Akismet with other plugins.
*
* This class includes methods for determining whether specific plugins are
* installed and active relative to the ability to work with Akismet.
*/
class Akismet_Compatible_Plugins {
/**
* The endpoint for the compatible plugins API.
*
* @var string
*/
protected const COMPATIBLE_PLUGIN_ENDPOINT = 'https://rest.akismet.com/1.2/compatible-plugins';
/**
* The error key for the compatible plugins API error.
*
* @var string
*/
protected const COMPATIBLE_PLUGIN_API_ERROR = 'akismet_compatible_plugins_api_error';
/**
* The valid fields for a compatible plugin object.
*
* @var array
*/
protected const COMPATIBLE_PLUGIN_FIELDS = array(
'slug',
'name',
'logo',
'help_url',
'path',
);
/**
* The cache key for the compatible plugins.
*
* @var string
*/
protected const CACHE_KEY = 'akismet_compatible_plugin_list';
/**
* The cache group for things cached in this class.
*
* @var string
*/
protected const CACHE_GROUP = 'akismet_compatible_plugins';
/**
* How many plugins should be visible by default?
*
* @var int
*/
public const DEFAULT_VISIBLE_PLUGIN_COUNT = 2;
/**
* Get the list of active, installed compatible plugins.
*
* @return WP_Error|array {
* Array of active, installed compatible plugins with their metadata.
* @type string $name The display name of the plugin
* @type string $help_url URL to the plugin's help documentation
* @type string $logo URL or path to the plugin's logo
* }
*/
public static function get_installed_compatible_plugins() {
// Retrieve and validate the full compatible plugins list.
$compatible_plugins = static::get_compatible_plugins();
if ( empty( $compatible_plugins ) ) {
return new WP_Error(
self::COMPATIBLE_PLUGIN_API_ERROR,
__( 'Error getting compatible plugins.', 'akismet' )
);
}
// Retrieve all installed plugins once.
$all_plugins = get_plugins();
// Build list of compatible plugins that are both installed and active.
$active_compatible_plugins = array();
foreach ( $compatible_plugins as $slug => $data ) {
$path = $data['path'];
// Skip if not installed.
if ( ! isset( $all_plugins[ $path ] ) ) {
continue;
}
// Check activation: per-site or network-wide (multisite).
$site_active = is_plugin_active( $path );
$network_active = is_multisite() && is_plugin_active_for_network( $path );
if ( $site_active || $network_active ) {
$active_compatible_plugins[ $slug ] = $data;
}
}
return $active_compatible_plugins;
}
/**
* Initializes action hooks for the class.
*
* @return void
*/
public static function init(): void {
add_action( 'activated_plugin', array( static::class, 'handle_plugin_change' ), true );
add_action( 'deactivated_plugin', array( static::class, 'handle_plugin_change' ), true );
}
/**
* Handles plugin activation and deactivation events.
*
* @param string $plugin The path to the main plugin file from plugins directory.
* @return void
*/
public static function handle_plugin_change( string $plugin ): void {
$cached_plugins = static::get_cached_plugins();
/**
* Terminate if nothing's cached.
*/
if ( false === $cached_plugins ) {
return;
}
$plugin_change_should_invalidate_cache = in_array( $plugin, array_column( $cached_plugins, 'path' ) );
/**
* Purge the cache if the plugin is activated or deactivated.
*/
if ( $plugin_change_should_invalidate_cache ) {
static::purge_cache();
}
}
/**
* Gets plugins that are compatible with Akismet from the Akismet API.
*
* @return array
*/
private static function get_compatible_plugins(): array {
// Return cached result if present (false => cache miss; empty array is valid).
$cached_plugins = static::get_cached_plugins();
if ( $cached_plugins ) {
return $cached_plugins;
}
$response = wp_remote_get(
self::COMPATIBLE_PLUGIN_ENDPOINT
);
$sanitized = static::validate_compatible_plugin_response( $response );
if ( false === $sanitized ) {
return array();
}
/**
* Sets local static associative array of plugin data keyed by plugin slug.
*/
$compatible_plugins = array();
foreach ( $sanitized as $plugin ) {
$compatible_plugins[ $plugin['slug'] ] = $plugin;
}
static::set_cached_plugins( $compatible_plugins );
return $compatible_plugins;
}
/**
* Validates a response object from the Compatible Plugins API.
*
* @param array|WP_Error $response
* @return array|false
*/
private static function validate_compatible_plugin_response( $response ) {
/**
* Terminates the function if the response is a WP_Error object.
*/
if ( is_wp_error( $response ) ) {
return false;
}
/**
* The response returned is an array of header + body string data.
* This pops off the body string for processing.
*/
$response_body = wp_remote_retrieve_body( $response );
if ( empty( $response_body ) ) {
return false;
}
$plugins = json_decode( $response_body, true );
if ( false === is_array( $plugins ) ) {
return false;
}
foreach ( $plugins as $plugin ) {
if ( ! is_array( $plugin ) ) {
/**
* Skips to the next iteration if for some reason the plugin is not an array.
*/
continue;
}
// Ensure that the plugin config read in from the API has all the required fields.
$plugin_key_count = count(
array_intersect_key( $plugin, array_flip( static::COMPATIBLE_PLUGIN_FIELDS ) )
);
$does_not_have_all_required_fields = ! (
$plugin_key_count === count( static::COMPATIBLE_PLUGIN_FIELDS )
);
if ( $does_not_have_all_required_fields ) {
return false;
}
if ( false === static::has_valid_plugin_path( $plugin['path'] ) ) {
return false;
}
}
return static::sanitize_compatible_plugin_response( $plugins );
}
/**
* Validates a plugin path format.
*
* The path should be in the format of 'plugin-name/plugin-name.php'.
* Allows alphanumeric characters, dashes, underscores, and optional dots in folder names.
*
* @param string $path
* @return bool
*/
private static function has_valid_plugin_path( string $path ): bool {
return preg_match( '/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9_-]+\.php$/', $path ) === 1;
}
/**
* Sanitizes a response object from the Compatible Plugins API.
*
* @param array $plugins
* @return array
*/
private static function sanitize_compatible_plugin_response( array $plugins = array() ): array {
foreach ( $plugins as $key => $plugin ) {
$plugins[ $key ] = array_map( 'sanitize_text_field', $plugin );
$plugins[ $key ]['help_url'] = sanitize_url( $plugins[ $key ]['help_url'] );
$plugins[ $key ]['logo'] = sanitize_url( $plugins[ $key ]['logo'] );
}
return $plugins;
}
/**
* @param array $plugins
* @return bool
*/
private static function set_cached_plugins( array $plugins ): bool {
$_blog_id = (int) get_current_blog_id();
return wp_cache_set(
static::CACHE_KEY . "_$_blog_id",
$plugins,
static::CACHE_GROUP . "_$_blog_id",
DAY_IN_SECONDS
);
}
/**
* Attempts to get cached compatible plugins.
*
* @return mixed|false
*/
private static function get_cached_plugins() {
$_blog_id = (int) get_current_blog_id();
return wp_cache_get(
static::CACHE_KEY . "_$_blog_id",
static::CACHE_GROUP . "_$_blog_id"
);
}
/**
* Purges the cache for the compatible plugins.
*
* @return bool
*/
private static function purge_cache(): bool {
$_blog_id = (int) get_current_blog_id();
return wp_cache_delete(
static::CACHE_KEY . "_$_blog_id",
static::CACHE_GROUP . "_$_blog_id"
);
}
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,186 @@
<?php
WP_CLI::add_command( 'akismet', 'Akismet_CLI' );
/**
* Filter spam comments.
*/
class Akismet_CLI extends WP_CLI_Command {
/**
* Checks one or more comments against the Akismet API.
*
* ## OPTIONS
* <comment_id>...
* : The ID(s) of the comment(s) to check.
*
* [--noaction]
* : Don't change the status of the comment. Just report what Akismet thinks it is.
*
* ## EXAMPLES
*
* wp akismet check 12345
*
* @alias comment-check
*/
public function check( $args, $assoc_args ) {
foreach ( $args as $comment_id ) {
if ( isset( $assoc_args['noaction'] ) ) {
// Check the comment, but don't reclassify it.
$api_response = Akismet::check_db_comment( $comment_id, 'wp-cli' );
} else {
$api_response = Akismet::recheck_comment( $comment_id, 'wp-cli' );
}
if ( 'true' === $api_response ) {
/* translators: %d: Comment ID. */
WP_CLI::line( sprintf( __( 'Comment #%d is spam.', 'akismet' ), $comment_id ) );
} elseif ( 'false' === $api_response ) {
/* translators: %d: Comment ID. */
WP_CLI::line( sprintf( __( 'Comment #%d is not spam.', 'akismet' ), $comment_id ) );
} elseif ( false === $api_response ) {
/* translators: %d: Comment ID. */
WP_CLI::error( __( 'Failed to connect to Akismet.', 'akismet' ) );
} elseif ( is_wp_error( $api_response ) ) {
/* translators: %d: Comment ID. */
WP_CLI::warning( sprintf( __( 'Comment #%d could not be checked.', 'akismet' ), $comment_id ) );
}
}
}
/**
* Recheck all comments in the Pending queue.
*
* ## EXAMPLES
*
* wp akismet recheck_queue
*
* @alias recheck-queue
*/
public function recheck_queue() {
$batch_size = 100;
$start = 0;
$total_counts = array();
do {
$result_counts = Akismet_Admin::recheck_queue_portion( $start, $batch_size );
if ( $result_counts['processed'] > 0 ) {
foreach ( $result_counts as $key => $count ) {
if ( ! isset( $total_counts[ $key ] ) ) {
$total_counts[ $key ] = $count;
} else {
$total_counts[ $key ] += $count;
}
}
$start += $batch_size;
$start -= $result_counts['spam']; // These comments will have been removed from the queue.
}
} while ( $result_counts['processed'] > 0 );
/* translators: %d: Number of comments. */
WP_CLI::line( sprintf( _n( 'Processed %d comment.', 'Processed %d comments.', $total_counts['processed'], 'akismet' ), number_format( $total_counts['processed'] ) ) );
/* translators: %d: Number of comments. */
WP_CLI::line( sprintf( _n( '%d comment moved to Spam.', '%d comments moved to Spam.', $total_counts['spam'], 'akismet' ), number_format( $total_counts['spam'] ) ) );
if ( $total_counts['error'] ) {
/* translators: %d: Number of comments. */
WP_CLI::line( sprintf( _n( '%d comment could not be checked.', '%d comments could not be checked.', $total_counts['error'], 'akismet' ), number_format( $total_counts['error'] ) ) );
}
}
/**
* Fetches stats from the Akismet API.
*
* ## OPTIONS
*
* [<interval>]
* : The time period for which to retrieve stats.
* ---
* default: all
* options:
* - days
* - months
* - all
* ---
*
* [--format=<format>]
* : Allows overriding the output of the command when listing connections.
* ---
* default: table
* options:
* - table
* - json
* - csv
* - yaml
* - count
* ---
*
* [--summary]
* : When set, will display a summary of the stats.
*
* ## EXAMPLES
*
* wp akismet stats
* wp akismet stats all
* wp akismet stats days
* wp akismet stats months
* wp akismet stats all --summary
*/
public function stats( $args, $assoc_args ) {
$api_key = Akismet::get_api_key();
if ( empty( $api_key ) ) {
WP_CLI::error( __( 'API key must be set to fetch stats.', 'akismet' ) );
}
switch ( $args[0] ) {
case 'days':
$interval = '60-days';
break;
case 'months':
$interval = '6-months';
break;
default:
$interval = 'all';
break;
}
$request_args = array(
'blog' => get_option( 'home' ),
'key' => $api_key,
'from' => $interval,
);
$request_args = apply_filters( 'akismet_request_args', $request_args, 'get-stats' );
$response = Akismet::http_post( Akismet::build_query( $request_args ), 'get-stats' );
if ( empty( $response[1] ) ) {
WP_CLI::error( __( 'Currently unable to fetch stats. Please try again.', 'akismet' ) );
}
$response_body = json_decode( $response[1], true );
if ( is_null( $response_body ) ) {
WP_CLI::error( __( 'Stats response could not be decoded.', 'akismet' ) );
}
if ( isset( $assoc_args['summary'] ) ) {
$keys = array(
'spam',
'ham',
'missed_spam',
'false_positives',
'accuracy',
'time_saved',
);
WP_CLI\Utils\format_items( $assoc_args['format'], array( $response_body ), $keys );
} else {
$stats = $response_body['breakdown'];
WP_CLI\Utils\format_items( $assoc_args['format'], $stats, array_keys( end( $stats ) ) );
}
}
}
@@ -0,0 +1,616 @@
<?php
class Akismet_REST_API {
/**
* Register the REST API routes.
*/
public static function init() {
if ( ! function_exists( 'register_rest_route' ) ) {
// The REST API wasn't integrated into core until 4.4, and we support 4.0+ (for now).
return false;
}
register_rest_route(
'akismet/v1',
'/key',
array(
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_key' ),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'set_key' ),
'args' => array(
'key' => array(
'required' => true,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
),
array(
'methods' => WP_REST_Server::DELETABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'delete_key' ),
),
)
);
register_rest_route(
'akismet/v1',
'/settings/',
array(
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_settings' ),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'set_boolean_settings' ),
'args' => array(
'akismet_strictness' => array(
'required' => false,
'type' => 'boolean',
'description' => __( 'If true, Akismet will automatically discard the worst spam automatically rather than putting it in the spam folder.', 'akismet' ),
),
'akismet_show_user_comments_approved' => array(
'required' => false,
'type' => 'boolean',
'description' => __( 'If true, show the number of approved comments beside each comment author in the comments list page.', 'akismet' ),
),
),
),
)
);
register_rest_route(
'akismet/v1',
'/stats',
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_stats' ),
'args' => array(
'interval' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_interval' ),
'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ),
'default' => 'all',
),
),
)
);
register_rest_route(
'akismet/v1',
'/stats/(?P<interval>[\w+])',
array(
'args' => array(
'interval' => array(
'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ),
'type' => 'string',
),
),
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_stats' ),
),
)
);
register_rest_route(
'akismet/v1',
'/alert',
array(
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_alert' ),
'args' => array(
'key' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'set_alert' ),
'args' => array(
'key' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
),
array(
'methods' => WP_REST_Server::DELETABLE,
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'delete_alert' ),
'args' => array(
'key' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
),
)
);
register_rest_route(
'akismet/v1',
'/webhook',
array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array( 'Akismet_REST_API', 'receive_webhook' ),
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
)
);
}
/**
* Get the current Akismet API key.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_key( $request = null ) {
return rest_ensure_response( Akismet::get_api_key() );
}
/**
* Set the API key, if possible.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function set_key( $request ) {
if ( defined( 'WPCOM_API_KEY' ) ) {
return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be changed via the API.', 'akismet' ), array( 'status' => 409 ) ) );
}
$new_api_key = $request->get_param( 'key' );
if ( ! self::key_is_valid( $new_api_key ) ) {
return rest_ensure_response( new WP_Error( 'invalid_key', __( 'The value provided is not a valid and registered API key.', 'akismet' ), array( 'status' => 400 ) ) );
}
update_option( 'wordpress_api_key', $new_api_key );
return self::get_key();
}
/**
* Unset the API key, if possible.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function delete_key( $request ) {
if ( defined( 'WPCOM_API_KEY' ) ) {
return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be deleted.', 'akismet' ), array( 'status' => 409 ) ) );
}
delete_option( 'wordpress_api_key' );
return rest_ensure_response( true );
}
/**
* Get the Akismet settings.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_settings( $request = null ) {
return rest_ensure_response(
array(
'akismet_strictness' => ( get_option( 'akismet_strictness', '1' ) === '1' ),
'akismet_show_user_comments_approved' => ( get_option( 'akismet_show_user_comments_approved', '1' ) === '1' ),
)
);
}
/**
* Update the Akismet settings.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function set_boolean_settings( $request ) {
foreach ( array(
'akismet_strictness',
'akismet_show_user_comments_approved',
) as $setting_key ) {
$setting_value = $request->get_param( $setting_key );
if ( is_null( $setting_value ) ) {
// This setting was not specified.
continue;
}
// From 4.7+, WP core will ensure that these are always boolean
// values because they are registered with 'type' => 'boolean',
// but we need to do this ourselves for prior versions.
$setting_value = self::parse_boolean( $setting_value );
update_option( $setting_key, $setting_value ? '1' : '0' );
}
return self::get_settings();
}
/**
* Parse a numeric or string boolean value into a boolean.
*
* @param mixed $value The value to convert into a boolean.
* @return bool The converted value.
*/
public static function parse_boolean( $value ) {
switch ( $value ) {
case true:
case 'true':
case '1':
case 1:
return true;
case false:
case 'false':
case '0':
case 0:
return false;
default:
return (bool) $value;
}
}
/**
* Get the Akismet stats for a given time period.
*
* Possible `interval` values:
* - all
* - 60-days
* - 6-months
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_stats( $request ) {
$api_key = Akismet::get_api_key();
$interval = $request->get_param( 'interval' );
$stat_totals = array();
$request_args = array(
'blog' => get_option( 'home' ),
'key' => $api_key,
'from' => $interval,
);
$request_args = apply_filters( 'akismet_request_args', $request_args, 'get-stats' );
$response = Akismet::http_post( Akismet::build_query( $request_args ), 'get-stats' );
if ( ! empty( $response[1] ) ) {
$stat_totals[ $interval ] = json_decode( $response[1] );
}
return rest_ensure_response( $stat_totals );
}
/**
* Get the current alert code and message. Alert codes are used to notify the site owner
* if there's a problem, like a connection issue between their site and the Akismet API,
* invalid requests being sent, etc.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_alert( $request ) {
return rest_ensure_response(
array(
'code' => get_option( 'akismet_alert_code' ),
'message' => get_option( 'akismet_alert_msg' ),
)
);
}
/**
* Update the current alert code and message by triggering a call to the Akismet server.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function set_alert( $request ) {
delete_option( 'akismet_alert_code' );
delete_option( 'akismet_alert_msg' );
// Make a request so the most recent alert code and message are retrieved.
Akismet::verify_key( Akismet::get_api_key() );
return self::get_alert( $request );
}
/**
* Clear the current alert code and message.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function delete_alert( $request ) {
delete_option( 'akismet_alert_code' );
delete_option( 'akismet_alert_msg' );
return self::get_alert( $request );
}
private static function key_is_valid( $key ) {
$request_args = array(
'key' => $key,
'blog' => get_option( 'home' ),
);
$request_args = apply_filters( 'akismet_request_args', $request_args, 'verify-key' );
$response = Akismet::http_post( Akismet::build_query( $request_args ), 'verify-key' );
if ( $response[1] == 'valid' ) {
return true;
}
return false;
}
public static function privileged_permission_callback() {
return current_user_can( 'manage_options' );
}
/**
* For calls that Akismet.com makes to the site to clear outdated alert codes, use the API key for authorization.
*/
public static function remote_call_permission_callback( $request ) {
$local_key = Akismet::get_api_key();
return $local_key && ( strtolower( $request->get_param( 'key' ) ) === strtolower( $local_key ) );
}
public static function sanitize_interval( $interval, $request, $param ) {
$interval = trim( $interval );
$valid_intervals = array( '60-days', '6-months', 'all' );
if ( ! in_array( $interval, $valid_intervals ) ) {
$interval = 'all';
}
return $interval;
}
public static function sanitize_key( $key, $request, $param ) {
return trim( $key );
}
/**
* Process a webhook request from the Akismet servers.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function receive_webhook( $request ) {
Akismet::log( array( 'Webhook request received', $request->get_body() ) );
/**
* The request body should look like this:
* array(
* 'key' => '1234567890abcd',
* 'endpoint' => '[comment-check|submit-ham|submit-spam]',
* 'comments' => array(
* array(
* 'guid' => '[...]',
* 'result' => '[true|false]',
* 'comment_author' => '[...]',
* [...]
* ),
* array(
* 'guid' => '[...]',
* [...],
* ),
* [...]
* )
* )
*
* Multiple comments can be included in each request, and the only truly required
* field for each is the guid, although it would be friendly to include also
* comment_post_ID, comment_parent, and comment_author_email, if possible to make
* searching easier.
*/
// The response will include statuses for the result of each comment that was supplied.
$response = array(
'comments' => array(),
);
$endpoint = $request->get_param( 'endpoint' );
switch ( $endpoint ) {
case 'comment-check':
$webhook_comments = $request->get_param( 'comments' );
if ( ! is_array( $webhook_comments ) ) {
return rest_ensure_response( new WP_Error( 'malformed_request', __( 'The \'comments\' parameter must be an array.', 'akismet' ), array( 'status' => 400 ) ) );
}
foreach ( $webhook_comments as $webhook_comment ) {
$guid = $webhook_comment['guid'];
if ( ! $guid ) {
// Without the GUID, we can't be sure that we're matching the right comment.
// We'll make it a rule that any comment without a GUID is ignored intentionally.
continue;
}
// Search on the fields that are indexed in the comments table, plus the GUID.
// The GUID is the only thing we really need to search on, but comment_meta
// is not indexed in a useful way if there are many many comments. This
// should help narrow it down first.
$queryable_fields = array(
'comment_post_ID' => 'post_id',
'comment_parent' => 'parent',
'comment_author_email' => 'author_email',
);
$query_args = array();
$query_args['status'] = 'any';
$query_args['meta_key'] = 'akismet_guid';
$query_args['meta_value'] = $guid;
foreach ( $queryable_fields as $queryable_field => $wp_comment_query_field ) {
if ( isset( $webhook_comment[ $queryable_field ] ) ) {
$query_args[ $wp_comment_query_field ] = $webhook_comment[ $queryable_field ];
}
}
$comments_query = new WP_Comment_Query( $query_args );
$comments = $comments_query->comments;
if ( ! $comments ) {
// Unexpected, although the comment could have been deleted since being submitted.
Akismet::log( 'Webhook failed: no matching comment found.' );
$response['comments'][ $guid ] = array(
'status' => 'error',
'message' => __( 'Could not find matching comment.', 'akismet' ),
);
continue;
} if ( count( $comments ) > 1 ) {
// Two comments shouldn't be able to match the same GUID.
Akismet::log( 'Webhook failed: multiple matching comments found.', $comments );
$response['comments'][ $guid ] = array(
'status' => 'error',
'message' => __( 'Multiple comments matched request.', 'akismet' ),
);
continue;
} else {
// We have one single match, as hoped for.
Akismet::log( 'Found matching comment.', $comments );
$comment = $comments[0];
$current_status = wp_get_comment_status( $comment );
$result = $webhook_comment['result'];
if ( 'true' == $result ) {
Akismet::log( 'Comment should be spam' );
// The comment should be classified as spam.
if ( 'spam' != $current_status ) {
// The comment is not classified as spam. If Akismet was the one to act on it, move it to spam.
if ( Akismet::last_comment_status_change_came_from_akismet( $comment->comment_ID ) ) {
Akismet::log( 'Comment is not spam; marking as spam.' );
wp_spam_comment( $comment );
Akismet::update_comment_history( $comment->comment_ID, '', 'webhook-spam' );
} else {
Akismet::log( 'Comment is not spam, but it has already been manually handled by some other process.' );
Akismet::update_comment_history( $comment->comment_ID, '', 'webhook-spam-noaction' );
}
}
} elseif ( 'false' == $result ) {
Akismet::log( 'Comment should be ham' );
// The comment should be classified as ham.
if ( 'spam' == $current_status ) {
Akismet::log( 'Comment is spam.' );
// The comment is classified as spam. If Akismet was the one to label it as spam, unspam it.
if ( Akismet::last_comment_status_change_came_from_akismet( $comment->comment_ID ) ) {
Akismet::log( 'Akismet marked it as spam; unspamming.' );
wp_unspam_comment( $comment );
akismet::update_comment_history( $comment->comment_ID, '', 'webhook-ham' );
} else {
Akismet::log( 'Comment is not spam, but it has already been manually handled by some other process.' );
Akismet::update_comment_history( $comment->comment_ID, '', 'webhook-ham-noaction' );
}
} else if ( 'unapproved' == $current_status ) {
Akismet::log( 'Comment is pending.' );
// The comment is in Pending. If Akismet was the one to put it there, approve it (but only if the site
// settings dictate that).
if ( Akismet::last_comment_status_change_came_from_akismet( $comment->comment_ID ) ) {
Akismet::log( 'Akismet marked it as Pending; approving.' );
if ( check_comment( $comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent, $comment->comment_type ) ) {
wp_set_comment_status( $comment->comment_ID, 1 );
}
akismet::update_comment_history( $comment->comment_ID, '', 'webhook-ham' );
} else {
Akismet::log( 'Comment is not spam, but it has already been manually handled by some other process.' );
Akismet::update_comment_history( $comment->comment_ID, '', 'webhook-ham-noaction' );
}
}
$moderation_email_was_delayed = get_comment_meta( $comment->comment_ID, 'akismet_delayed_moderation_email', true );
if ( $moderation_email_was_delayed ) {
Akismet::log( 'Moderation email was delayed for comment #' . $comment->comment_ID . '; sending now.' );
delete_comment_meta( $comment->comment_ID, 'akismet_delayed_moderation_email' );
wp_new_comment_notify_moderator( $comment->comment_ID );
wp_new_comment_notify_postauthor( $comment->comment_ID );
}
delete_comment_meta( $comment->comment_ID, 'akismet_delay_moderation_email' );
}
$response['comments'][ $guid ] = array( 'status' => 'success' );
}
}
break;
case 'submit-ham':
case 'submit-spam':
// Nothing to do for submit-ham or submit-spam.
break;
default:
// Unsupported endpoint.
break;
}
/**
* Allow plugins to do things with a successfully processed webhook request, like logging.
*
* @since 5.3.2
*
* @param WP_REST_Request $request The REST request object.
*/
do_action( 'akismet_webhook_received', $request );
Akismet::log( 'Done processing webhook.' );
return rest_ensure_response( $response );
}
}
@@ -0,0 +1,177 @@
<?php
/**
* @package Akismet
*/
// We plan to gradually remove all of the disabled lint rules below.
// phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
/**
* Akismet Widget Class
*/
class Akismet_Widget extends WP_Widget {
/**
* Constructor
*/
function __construct() {
parent::__construct(
'akismet_widget',
__( 'Akismet Widget', 'akismet' ),
array( 'description' => __( 'Display the number of spam comments Akismet has caught', 'akismet' ) )
);
}
/**
* Outputs the widget settings form
*
* @param array $instance The widget options
*/
public function form( $instance ) {
if ( $instance && isset( $instance['title'] ) ) {
$title = $instance['title'];
} else {
$title = __( 'Spam Blocked', 'akismet' );
}
?>
<p>
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php esc_html_e( 'Title:', 'akismet' ); ?></label>
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
</p>
<?php
}
/**
* Updates the widget settings
*
* @param array $new_instance New widget instance
* @param array $old_instance Old widget instance
* @return array Updated widget instance
*/
public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title'] = sanitize_text_field( $new_instance['title'] );
return $instance;
}
/**
* Outputs the widget content
*
* @param array $args Widget arguments
* @param array $instance Widget instance
*/
public function widget( $args, $instance ) {
$count = get_option( 'akismet_spam_count' );
if ( ! isset( $instance['title'] ) ) {
$instance['title'] = __( 'Spam Blocked', 'akismet' );
}
echo $args['before_widget'];
if ( ! empty( $instance['title'] ) ) {
echo $args['before_title'];
echo esc_html( $instance['title'] );
echo $args['after_title'];
}
?>
<style>
.a-stats {
--akismet-color-mid-green: #357b49;
--akismet-color-white: #fff;
--akismet-color-light-grey: #f6f7f7;
max-width: 350px;
width: auto;
}
.a-stats * {
all: unset;
box-sizing: border-box;
}
.a-stats strong {
font-weight: 600;
}
.a-stats a.a-stats__link,
.a-stats a.a-stats__link:visited,
.a-stats a.a-stats__link:active {
background: var(--akismet-color-mid-green);
border: none;
box-shadow: none;
border-radius: 8px;
color: var(--akismet-color-white);
cursor: pointer;
display: block;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif;
font-weight: 500;
padding: 12px;
text-align: center;
text-decoration: none;
transition: all 0.2s ease;
}
/* Extra specificity to deal with TwentyTwentyOne focus style */
.widget .a-stats a.a-stats__link:focus {
background: var(--akismet-color-mid-green);
color: var(--akismet-color-white);
text-decoration: none;
}
.a-stats a.a-stats__link:hover {
filter: brightness(110%);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.16);
}
.a-stats .count {
color: var(--akismet-color-white);
display: block;
font-size: 1.5em;
line-height: 1.4;
padding: 0 13px;
white-space: nowrap;
}
</style>
<div class="a-stats">
<a href="https://akismet.com" class="a-stats__link" target="_blank" rel="noopener" style="background-color: var(--akismet-color-mid-green); color: var(--akismet-color-white);">
<?php
echo wp_kses(
sprintf(
/* translators: The placeholder is the number of pieces of spam blocked by Akismet. */
_n(
'<strong class="count">%1$s spam</strong> blocked by <strong>Akismet</strong>',
'<strong class="count">%1$s spam</strong> blocked by <strong>Akismet</strong>',
$count,
'akismet'
),
number_format_i18n( $count )
),
array(
'strong' => array(
'class' => true,
),
)
);
?>
</a>
</div>
<?php
echo $args['after_widget'];
}
}
/**
* Register the Akismet widget
*/
function akismet_register_widgets() {
register_widget( 'Akismet_Widget' );
}
add_action( 'widgets_init', 'akismet_register_widgets' );
File diff suppressed because it is too large. Load diff
+4
View File
@@ -0,0 +1,4 @@
<?php
declare( strict_types = 1 );
// Silence is golden.
+140
View File
@@ -0,0 +1,140 @@
=== Akismet Anti-spam: Spam Protection ===
Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, eoigal, cfinke, automattic, jgs, procifer, stephdau, kbrownkd, bluefuton, derekspringer, lschuyler, andyperdomo, akismetantispam
Tags: comments, spam, antispam, anti-spam, contact form
Requires at least: 5.8
Tested up to: 6.8.1
Stable tag: 5.5
License: GPLv2 or later
The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.
== Description ==
The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.
Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog's "Comments" admin screen.
Major features in Akismet include:
* Automatically checks all comments and filters out the ones that look like spam.
* Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
* URLs are shown in the comment body to reveal hidden or misleading links.
* Moderators can see the number of approved comments for each user.
* A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
PS: You'll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.
== Installation ==
Upload the Akismet plugin to your blog, activate it, and then enter your Akismet.com API key.
1, 2, 3: You're done!
== Changelog ==
= 5.5 =
*Release Date - 15 July 2025*
* Enable webhooks so that Akismet can process comments asynchronously to detect more types of spam.
* Only include the Akismet widget CSS when the Akismet widget is present
* Improve contrast/readability for certain UI elements
= 5.4 =
*Release Date - 7 May 2025*
* The stats pages now use the user's locale instead of the site's locale if they're different.
* Adds a 'Compatible plugins' section that will show installed and active plugins that are compatible with Akismet.
* Akismet now requires PHP version 7.2 or above.
= 5.3.7 =
*Release Date - 14 February 2025*
* Simplify the logic used during a comment-check request to compare comments.
= 5.3.6 =
*Release Date - 4 February 2025*
* Improve the utility of submit-spam and submit-ham requests.
* Modernize styles for the Akismet classic widget.
= 5.3.5 =
*Release Date - 18 November 2024*
* Address compatibility issues with < PHP 7.3 in v5.3.4 release.
= 5.3.4 =
*Release Date - 18 November 2024*
* Improve activation notice on Comments for users who haven't set up their API key yet.
* Improve notice about commercial site status.
= 5.3.3 =
*Release Date - 10 July 2024*
* Make setup step clearer for new users.
* Remove the stats section from the configuration page if the site has been revoked from the key.
* Skip the Akismet comment check when the comment matches something in the disallowed list.
* Prompt users on legacy plans to contact Akismet support for upgrades.
= 5.3.2 =
*Release Date - 21 March 2024*
* Improve the empty state shown to new users when no spam has been caught yet.
* Update the message shown to users without a current subscription.
* Add foundations for future webhook support.
= 5.3.1 =
*Release Date - 17 January 2024*
* Make the plugin more resilient when asset files are missing (as seen in WordPress Playground).
* Add a link to the 'Account overview' page on akismet.com.
* Fix a minor error that occurs when another plugin removes all comment actions from the dashboard.
* Add the akismet_request_args filter to allow request args in Akismet API requests to be filtered.
* Fix a bug that causes some contact forms to include unnecessary data in the comment_content parameter.
= 5.3 =
*Release Date - 14 September 2023*
* Improve display of user notices.
* Add stylesheets for RTL languages.
* Remove initial disabled state from 'Save changes' button.
* Improve accessibility of API key entry form.
* Add new filter hooks for Fluent Forms.
* Fix issue with PHP 8.1 compatibility.
= 5.2 =
*Release Date - 21 June 2023*
* Visual refresh of Akismet stats.
* Improve PHP 8.1 compatibility.
* Improve appearance of plugin to match updated stats.
* Change minimum supported PHP version to 5.6 to match WordPress.
* Drop IE11 support and update minimum WordPress version to 5.8 (where IE11 support was removed from WP Core).
= 5.1 =
*Release Date - 20 March 2023*
* Removed unnecessary limit notices from admin page.
* Improved spam detection by including post taxonomies in the comment-check call.
* Removed API keys from stats iframes to avoid possible inadvertent exposure.
= 5.0.2 =
*Release Date - 1 December 2022*
* Improved compatibility with themes that hide or show UI elements based on mouse movements.
* Increased security of API keys by sending them in request bodies instead of subdomains.
= 5.0.1 =
*Release Date - 28 September 2022*
* Added an empty state for the Statistics section on the admin page.
* Fixed a bug that broke some admin page links when Jetpack plugins are active.
* Marked some event listeners as passive to improve performance in newer browsers.
* Disabled interaction observation on forms that post to other domains.
= 5.0 =
*Release Date - 26 July 2022*
* Added a new feature to catch spammers by observing how they interact with the page.
For older changelog entries, please see the [additional changelog.txt file](https://plugins.svn.wordpress.org/akismet/trunk/changelog.txt) delivered with the plugin.
@@ -0,0 +1,8 @@
<div class="akismet-box">
<?php Akismet::view( 'title' ); ?>
<?php Akismet::view( 'setup' ); ?>
</div>
<br/>
<div class="akismet-box">
<?php Akismet::view( 'enter' ); ?>
</div>
@@ -0,0 +1,125 @@
<?php
/** @var array|WP_Error $compatible_plugins */
$compatible_plugins = Akismet_Compatible_Plugins::get_installed_compatible_plugins();
if ( is_array( $compatible_plugins ) ) :
$compatible_plugin_count = count( $compatible_plugins );
?>
<div class="akismet-card akismet-compatible-plugins">
<div class="akismet-section-header">
<h2 class="akismet-section-header__label akismet-compatible-plugins__section-header-label" aria-label="<?php esc_attr_e( 'Compatible plugins (new feature)', 'akismet' ); ?>">
<span class="akismet-compatible-plugins__section-header-label-text"><?php esc_html_e( 'Compatible plugins', 'akismet' ); ?></span>
<span class="akismet-new-feature"><?php esc_html_e( 'New', 'akismet' ); ?></span>
</h2>
</div>
<div class="akismet-compatible-plugins__content">
<?php
echo '<p>';
echo esc_html( __( 'Akismet works with other plugins to keep spam away.', 'akismet' ) );
echo '</p>';
echo '<p>';
if ( 0 === $compatible_plugin_count ) {
echo '<a class="akismet-settings__external-link" href="https://akismet.com/developers/plugins-and-libraries/">';
echo esc_html( __( 'See supported integrations', 'akismet' ) );
echo '</a>';
} else {
echo esc_html(
_n(
"The plugin you've installed is compatible. Follow the documentation link to get started.",
"The plugins you've installed are compatible. Follow the documentation links to get started.",
$compatible_plugin_count,
'akismet'
)
);
}
echo '</p>';
?>
<?php if ( ! empty( $compatible_plugins ) ) : ?>
<ul class="akismet-compatible-plugins__list" id="akismet-compatible-plugins__list">
<?php
foreach ( $compatible_plugins as $compatible_plugin ) :
if ( empty( $compatible_plugin['help_url'] ) ) {
continue;
}
?>
<li class="akismet-compatible-plugins__card">
<?php if ( strlen( $compatible_plugin['logo'] ) > 0 ) : ?>
<?php
$logo_alt = sprintf(
/* translators: The placeholder is the name of a plugin, like "Jetpack" . */
__( '%s logo', 'akismet' ),
$compatible_plugin['name']
);
?>
<img
src="<?php echo esc_url( $compatible_plugin['logo'] ); ?>"
alt="<?php echo esc_attr( $logo_alt ); ?>"
class="akismet-compatible-plugins__card-logo"
width="55"
height="55"
/>
<?php endif ?>
<div class="akismet-compatible-plugins__card-detail">
<h3 class="akismet-compatible-plugins__card-title"><?php echo esc_html( $compatible_plugin['name'] ); ?></h3>
<div class="akismet-compatible-plugins__docs">
<a
class="akismet-settings__external-link"
href="<?php echo esc_url( $compatible_plugin['help_url'] ); ?>"
aria-label="
<?php
echo esc_attr(
sprintf(
/* translators: The placeholder is the name of a plugin, like "Jetpack" . */
__( 'Documentation for %s', 'akismet' ),
$compatible_plugin['name']
)
);
?>
"><?php esc_html_e( 'View documentation', 'akismet' ); ?></a>
</div>
</div>
</li>
<?php endforeach; ?>
</ul>
<?php if ( $compatible_plugin_count > Akismet_Compatible_Plugins::DEFAULT_VISIBLE_PLUGIN_COUNT ) : ?>
<button class="akismet-compatible-plugins__show-more"
aria-expanded="false"
aria-controls="akismet-compatible-plugins__list"
data-label-closed="
<?php
/* translators: %d: number of compatible plugins, which is guaranteed to be more than 1. */
echo esc_attr( sprintf( __( 'Show all %d plugins', 'akismet' ), $compatible_plugin_count ) );
?>
"
data-label-open="<?php echo esc_attr( __( 'Show less', 'akismet' ) ); ?>">
<?php
/* translators: %d: number of compatible plugins, which is guaranteed to be more than 1. */
echo esc_html( sprintf( __( 'Show all %d plugins', 'akismet' ), $compatible_plugin_count ) );
?>
</button>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
<?php
endif;
Loaded 100 of 3303 files, more files were not shown because too many files have changed in this diff. Show more