initial: тема powerhouse + плагины + mu-plugins + languages
65
.gitignore
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
# === WP Core (не трекаем) ===
|
||||
wp-admin/
|
||||
wp-includes/
|
||||
wp-*.php
|
||||
!wp-content/
|
||||
index.php
|
||||
xmlrpc.php
|
||||
license.txt
|
||||
readme.html
|
||||
|
||||
# === Конфиги с паролями ===
|
||||
wp-config.php
|
||||
wp-config-sample.php
|
||||
|
||||
# === Uploads (слишком большие) ===
|
||||
wp-content/uploads/
|
||||
|
||||
# === Кеши и временные ===
|
||||
wp-content/cache/
|
||||
wp-content/upgrade/
|
||||
wp-content/debug.log
|
||||
wp-content/advanced-cache.php
|
||||
wp-content/object-cache.php
|
||||
wp-content/db.php
|
||||
|
||||
# === Тестовые/временные файлы ===
|
||||
test-forms.php
|
||||
generate-report.php
|
||||
report-forms.html
|
||||
MIGRATION-PLAN.md
|
||||
SECURITY_CHECKLIST.md
|
||||
*.sql
|
||||
*.sql.gz
|
||||
*.png
|
||||
*.jpg
|
||||
!wp-content/themes/powerhouse/**/*.png
|
||||
!wp-content/themes/powerhouse/**/*.jpg
|
||||
!wp-content/plugins/**/*.png
|
||||
!wp-content/plugins/**/*.jpg
|
||||
|
||||
# === Мусор ===
|
||||
.tmb/
|
||||
.playwright-mcp/
|
||||
.claude/
|
||||
put_imgs/
|
||||
adminer-*.php_____
|
||||
unzipper.php
|
||||
wheel.php
|
||||
google*.html
|
||||
sitemap.xml
|
||||
robots.txt
|
||||
|
||||
# === OS ===
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# === Ещё мусор в корне ===
|
||||
compare-styles.php
|
||||
convert-elementor.php
|
||||
sync-elementor-posts.php
|
||||
docs/
|
||||
*.jpeg
|
||||
report.html
|
||||
test-progress.*
|
||||
test-results.*
|
||||
516
.htaccess
Normal file
@@ -0,0 +1,516 @@
|
||||
# BEGIN WP Rocket v3.13.3
|
||||
# Use UTF-8 encoding for anything served text/plain or text/html
|
||||
AddDefaultCharset UTF-8
|
||||
# Force UTF-8 for a number of file formats
|
||||
<IfModule mod_mime.c>
|
||||
AddCharset UTF-8 .atom .css .js .json .rss .vtt .xml
|
||||
</IfModule>
|
||||
|
||||
# FileETag None is not enough for every server.
|
||||
<IfModule mod_headers.c>
|
||||
Header unset ETag
|
||||
</IfModule>
|
||||
|
||||
# Since we’re sending far-future expires, we don’t need ETags for static content.
|
||||
# developer.yahoo.com/performance/rules.html#etags
|
||||
FileETag None
|
||||
|
||||
<IfModule mod_alias.c>
|
||||
<FilesMatch "\.(html|htm|rtf|rtx|txt|xsd|xsl|xml)$">
|
||||
<IfModule mod_headers.c>
|
||||
Header set X-Powered-By "WP Rocket/3.13.3"
|
||||
Header unset Pragma
|
||||
Header append Cache-Control "public"
|
||||
Header unset Last-Modified
|
||||
</IfModule>
|
||||
</FilesMatch>
|
||||
|
||||
<FilesMatch "\.(css|htc|js|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
|
||||
<IfModule mod_headers.c>
|
||||
Header unset Pragma
|
||||
Header append Cache-Control "public"
|
||||
</IfModule>
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_mime.c>
|
||||
AddType image/avif avif
|
||||
AddType image/avif-sequence avifs
|
||||
</IfModule>
|
||||
# Expires headers (for better cache control)
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive on
|
||||
ExpiresDefault "access plus 1 month"
|
||||
# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
|
||||
ExpiresByType text/cache-manifest "access plus 0 seconds"
|
||||
# Your document html
|
||||
ExpiresByType text/html "access plus 0 seconds"
|
||||
# Data
|
||||
ExpiresByType text/xml "access plus 0 seconds"
|
||||
ExpiresByType application/xml "access plus 0 seconds"
|
||||
ExpiresByType application/json "access plus 0 seconds"
|
||||
# Feed
|
||||
ExpiresByType application/rss+xml "access plus 1 hour"
|
||||
ExpiresByType application/atom+xml "access plus 1 hour"
|
||||
# Favicon (cannot be renamed)
|
||||
ExpiresByType image/x-icon "access plus 1 week"
|
||||
# Media: images, video, audio
|
||||
ExpiresByType image/gif "access plus 4 months"
|
||||
ExpiresByType image/png "access plus 4 months"
|
||||
ExpiresByType image/jpeg "access plus 4 months"
|
||||
ExpiresByType image/webp "access plus 4 months"
|
||||
ExpiresByType video/ogg "access plus 4 months"
|
||||
ExpiresByType audio/ogg "access plus 4 months"
|
||||
ExpiresByType video/mp4 "access plus 4 months"
|
||||
ExpiresByType video/webm "access plus 4 months"
|
||||
ExpiresByType image/avif "access plus 4 months"
|
||||
ExpiresByType image/avif-sequence "access plus 4 months"
|
||||
# HTC files (css3pie)
|
||||
ExpiresByType text/x-component "access plus 1 month"
|
||||
# Webfonts
|
||||
ExpiresByType font/ttf "access plus 4 months"
|
||||
ExpiresByType font/otf "access plus 4 months"
|
||||
ExpiresByType font/woff "access plus 4 months"
|
||||
ExpiresByType font/woff2 "access plus 4 months"
|
||||
ExpiresByType image/svg+xml "access plus 4 months"
|
||||
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
|
||||
# CSS and JavaScript
|
||||
ExpiresByType text/css "access plus 1 year"
|
||||
ExpiresByType application/javascript "access plus 1 year"
|
||||
</IfModule>
|
||||
# Gzip compression
|
||||
<IfModule mod_deflate.c>
|
||||
# Active compression
|
||||
SetOutputFilter DEFLATE
|
||||
# Force deflate for mangled headers
|
||||
<IfModule mod_setenvif.c>
|
||||
<IfModule mod_headers.c>
|
||||
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
|
||||
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
|
||||
# Don’t compress images and other uncompressible content
|
||||
SetEnvIfNoCase Request_URI \
|
||||
\.(?:gif|jpe?g|png|rar|zip|exe|flv|mov|wma|mp3|avi|swf|mp?g|mp4|webm|webp|pdf)$ no-gzip dont-vary
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
# Compress all output labeled with one of the following MIME-types
|
||||
<IfModule mod_filter.c>
|
||||
AddOutputFilterByType DEFLATE application/atom+xml \
|
||||
application/javascript \
|
||||
application/json \
|
||||
application/rss+xml \
|
||||
application/vnd.ms-fontobject \
|
||||
application/x-font-ttf \
|
||||
application/xhtml+xml \
|
||||
application/xml \
|
||||
font/opentype \
|
||||
image/svg+xml \
|
||||
image/x-icon \
|
||||
text/css \
|
||||
text/html \
|
||||
text/plain \
|
||||
text/x-component \
|
||||
text/xml
|
||||
</IfModule>
|
||||
<IfModule mod_headers.c>
|
||||
Header append Vary: Accept-Encoding
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
# END WP Rocket
|
||||
|
||||
# BEGIN LSCACHE
|
||||
# END LSCACHE
|
||||
# BEGIN NON_LSCACHE
|
||||
# END NON_LSCACHE
|
||||
RewriteEngine On
|
||||
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
||||
RewriteBase /
|
||||
RewriteRule ^index\.php$ - [L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/halturina-55/.*$
|
||||
RewriteRule ^ - [R=404,L]
|
||||
# RewriteRule ^.*$ https://%{HTTP_HOST}/halturina-55/news/closed-gym/? [R=301,L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/karnaval/contacts/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/halturina-55/kontakty/? [R=301,L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/deryabina24/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/serafimy-deryabinoj-24/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/deryabina24/contacts/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/serafimy-deryabinoj-24/kontakty/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/deryabina24/program/sd_bolshoj-zal-gruppovyh-programm/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/serafimy-deryabinoj-24/gruppovye-programmy/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/deryabina24/program/sd_trenazhernyj-zal/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/serafimy-deryabinoj-24/trenazhernyj-zal/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/deryabina24/program/zona-edinoborstv/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/serafimy-deryabinoj-24/edinoborstva/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/karnaval/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/halturina-55? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/karnaval/program/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/halturina-55/program/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/karnaval/program/bolshoj-zal-gruppovyh-programm-halturina/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/halturina-55/gruppovye-programmy/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/karnaval/program/malyj-zal-gruppovyh-programm-halturina/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/halturina-55/gruppovye-programmy/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/karnaval/program/trenazhernyj-zal-halturina/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/halturina-55/trenazhernyj-zal/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/karnaval/program/zal-funkcionalnogo-treninga-halturina/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/halturina-55/trenazhernyj-zal/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/karnaval/stock/fitnes-v-rassrochku/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/halturina-55/news/fitnes-v-rassrochku-2-2/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/news/trenirujsya-s-druzyami/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/dubler-sibirskogo-trakta-2/news/fitnes-v-rassrochku-2/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/pages/karnavalnew/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/halturina-55/raspisanie-2/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/pages/rasp-dubler/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/dubler-sibirskogo-trakta-2/raspisanie/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/pages/rasp-palladium/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/palladium/raspisanie/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/pages/rasp-rodon/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/rodonitovaya-29/raspisanie-2/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/pages/seravimanew/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/serafimy-deryabinoj-24/raspisanie-2/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/pages/titovanew/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/titova-35a/raspisanie-2/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/pages/vakansii/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/vacancy/? [R=301,L]
|
||||
|
||||
|
||||
#Циклический редиррект
|
||||
#RewriteCond %{REQUEST_URI} ^/palladium/$
|
||||
# RewriteRule ^.*$ https://%{HTTP_HOST}/palladium/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/palladium/contacts/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/palladium/kontakty/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/palladium/program/hoh_trenazhernyj-zal/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/palladium/trenazhernyj-zal/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/palladium/program/hohr_bassejn/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/palladium/bassejn/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/palladium/program/hohr_bolshoj-zal-gruppovyh-programm/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/palladium/gruppovye-programmy/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/palladium/program/hohr_detskij-klub/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/palladium/detskij-klub/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/palladium/program/hohr_malyj-zal-gruppovyh-programm/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/palladium/gruppovye-programmy/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/palladium/program/zona-funkcionalnogo-treninga-palladium/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/palladium/trenazhernyj-zal/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/rodonit29/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/rodonitovaya-29/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/rodonit29/contacts/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/rodonitovaya-29/kontakty/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/rodonit29/program/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/rodonitovaya-29/program/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/rodonit29/program/bassejn/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/rodonitovaya-29/program/bassejn/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/rodonit29/program/bolschoi-zal-gruppovyh-zanyatij/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/rodonitovaya-29/gruppovye-programmy/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/rodonit29/program/detskij-klub/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/rodonitovaya-29/detskij-klub/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/rodonit29/program/maliyy-zal-gruppovyh-programm/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/rodonitovaya-29/gruppovye-programmy/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/rodonit29/program/trenazhernyj-zal/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/rodonitovaya-29/trenazhernyj-zal/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/sibtrakt2/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/dubler-sibirskogo-trakta-2/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/sibtrakt2/contacts/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/dubler-sibirskogo-trakta-2/kontakty/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/sibtrakt2/program/bolshoj-zal-gruppovyh-programm-dubler/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/dubler-sibirskogo-trakta-2/gruppovye-programmy/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/sibtrakt2/program/trenazhernyj-zal-dubler/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/dubler-sibirskogo-trakta-2/trenazhernyj-zal/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/sibtrakt2/program/zona-funkcionalnogo-treninga/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/dubler-sibirskogo-trakta-2/trenazhernyj-zal/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/sibtrakt2/stock/trenirujsya-s-druzyami-5/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/dubler-sibirskogo-trakta-2/news/fitnes-v-rassrochku-2/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/titova35/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/titova-35a/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/titova35/contacts/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/titova-35a/kontakty/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/titova35/program/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/titova-35a/program/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/titova35/program/bassejn_titova/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/titova-35a/bassein/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/titova35/program/box_titova/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/titova-35a/edinoborstva/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/titova35/program/trenazhernyj-zal-titova/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/titova-35a/trenazhernyj-zal/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/titova35/program/zal-gruppovyh-programm/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/titova-35a/gruppovye-programmy/? [R=301,L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/10-movie-fitness-sport/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/10-movie-fitness-sport/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/chem-opasna-nizkaya-fizicheskaya-aktivnost/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/chem-opasna-nizkaya-fizicheskaya-aktivnost/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/formiruem-poleznuyu-privychku/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/formiruem-poleznuyu-privychku/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/gruppovye-trenirovki-dlya-muzhchin/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/gruppovye-trenirovki-dlya-muzhchin/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/hodba-dlya-pohudeniya-mif-ili-realnost/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/hodba-dlya-pohudeniya-mif-ili-realnost/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/idealnyj-ves-kak-ponyat-k-chemu-stremitsya/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/idealnyj-ves-kak-ponyat-k-chemu-stremitsya/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/kak-pitatsya-do-i-posle-trenirovki/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/kak-pitatsya-do-i-posle-trenirovki/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/kak-pravilno-podobrat-obuv-dlya-zanyatiya-fitnesom/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/kak-pravilno-podobrat-obuv-dlya-zanyatiya-fitnesom/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/novyj-god-ne-povod-nabirat-ves/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/novyj-god-ne-povod-nabirat-ves/? [R=301,L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/poterya-interesa-k-sportu/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/poterya-interesa-k-sportu/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/proteiny-polza-ili-vred/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/proteiny-polza-ili-vred/? [R=301,L]
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/tipichnye-oshibki-nachinayushhikh-bodibilderov/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/tipichnye-oshibki-nachinayushhikh-bodibilderov/? [R=301,L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/vosstanovlenie-posle-rodov/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/vosstanovlenie-posle-rodov/? [R=301,L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/bous-training-gym-6-tips/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/bous-training-gym-6-tips/? [R=301,L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/ostorozhno-populyarnye-diety/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/ostorozhno-populyarnye-diety/? [R=301,L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/4-shaga-k-regulyarnym-zanyatiyam-kak-spravitsya-s-pristupami-leni/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/4-shaga-k-regulyarnym-zanyatiyam-kak-spravitsya-s-pristupami-leni/? [R=301,L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/fitness-group-gym-alternative/$
|
||||
RewriteRule ^.*$ https://%{HTTP_HOST}/blog/fitness-group-gym-alternative/? [R=301,L]
|
||||
|
||||
# add a trailing slash to /wp-admin
|
||||
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
|
||||
|
||||
RewriteCond %{REQUEST_FILENAME} -f [OR]
|
||||
RewriteCond %{REQUEST_FILENAME} -d
|
||||
RewriteRule ^ - [L]
|
||||
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
|
||||
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
|
||||
RewriteRule . index.php [L]
|
||||
|
||||
|
||||
|
||||
Rewriteengine On
|
||||
#Redirect 301 / https://powerhousegym.ru
|
||||
|
||||
|
||||
|
||||
# кеш браузера: разрешаем истечение срока
|
||||
<ifModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
#по умолчанию кеш в 5 секунд
|
||||
ExpiresDefault "access plus 120 minutes"
|
||||
# Включаем кэширование изображений и флэш на месяц
|
||||
ExpiresByType image/x-icon "access plus 1 month"
|
||||
ExpiresByType image/jpeg "access plus 4 weeks"
|
||||
ExpiresByType image/png "access plus 30 days"
|
||||
ExpiresByType image/gif "access plus 43829 minutes"
|
||||
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
|
||||
# Включаем кэширование css, javascript и текстовых файлов на одиннадцать часов
|
||||
ExpiresByType text/css "access plus 11 hours"
|
||||
ExpiresByType text/javascript "access plus 11 hours"
|
||||
ExpiresByType application/javascript "access plus 11 hours"
|
||||
ExpiresByType application/x-javascript "access plus 11 hours"
|
||||
# Включаем кэширование html и htm файлов на 2 часа
|
||||
ExpiresByType text/html "access plus 120 minutes"
|
||||
# Включаем кэширование xml файлов на десять минут
|
||||
ExpiresByType application/xhtml+xml "access plus 600 seconds"
|
||||
|
||||
# Нестандартные шрифты сайта
|
||||
ExpiresByType application/x-font-ttf "access plus 1 month"
|
||||
ExpiresByType font/opentype "access plus 1 month"
|
||||
ExpiresByType application/x-font-woff "access plus 1 month"
|
||||
ExpiresByType image/svg+xml "access plus 1 month"
|
||||
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
|
||||
</ifModule>
|
||||
|
||||
# BEGIN seraphinite-accelerator
|
||||
# Директивы (строки) между `BEGIN seraphinite-accelerator` и `END seraphinite-accelerator`
|
||||
# созданы автоматически и подлежат изменению только через фильтры WordPress.
|
||||
# Сделанные вручную изменения между этими маркерами будут перезаписаны.
|
||||
<IfModule mod_mime.c>
|
||||
AddType image/avif .avif
|
||||
AddType image/webp .webp
|
||||
AddType application/font-woff2 .woff2
|
||||
AddType application/x-font-opentype .otf
|
||||
</IfModule>
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive on
|
||||
ExpiresByType text/css "access plus 43200 minutes"
|
||||
ExpiresByType text/javascript "access plus 43200 minutes"
|
||||
ExpiresByType application/javascript "access plus 43200 minutes"
|
||||
ExpiresByType application/x-javascript "access plus 43200 minutes"
|
||||
ExpiresByType font/eot "access plus 43200 minutes"
|
||||
ExpiresByType font/opentype "access plus 43200 minutes"
|
||||
ExpiresByType font/woff "access plus 43200 minutes"
|
||||
ExpiresByType application/vnd.ms-fontobject "access plus 43200 minutes"
|
||||
ExpiresByType application/font-woff "access plus 43200 minutes"
|
||||
ExpiresByType application/font-woff2 "access plus 43200 minutes"
|
||||
ExpiresByType application/x-font-ttf "access plus 43200 minutes"
|
||||
ExpiresByType application/x-font-woff "access plus 43200 minutes"
|
||||
ExpiresByType image/vnd.microsoft.icon "access plus 43200 minutes"
|
||||
ExpiresByType image/x-icon "access plus 43200 minutes"
|
||||
ExpiresByType image/bmp "access plus 43200 minutes"
|
||||
ExpiresByType image/gif "access plus 43200 minutes"
|
||||
ExpiresByType image/jpeg "access plus 43200 minutes"
|
||||
ExpiresByType image/png "access plus 43200 minutes"
|
||||
ExpiresByType image/svg+xml "access plus 43200 minutes"
|
||||
ExpiresByType image/avif "access plus 43200 minutes"
|
||||
ExpiresByType image/webp "access plus 43200 minutes"
|
||||
ExpiresByType audio/ogg "access plus 43200 minutes"
|
||||
ExpiresByType video/mp4 "access plus 43200 minutes"
|
||||
ExpiresByType video/ogg "access plus 43200 minutes"
|
||||
ExpiresByType video/webm "access plus 43200 minutes"
|
||||
</IfModule>
|
||||
<IfModule mod_headers.c>
|
||||
<FilesMatch \.(jpe|jpg|jpeg|png|gif|bmp|webp|avif)$>
|
||||
Header merge Vary Accept
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteCond %{HTTP_ACCEPT} image\/webp
|
||||
RewriteCond %{REQUEST_FILENAME} \.(jpe|jpg|jpeg|png|gif|bmp|webp|avif)$
|
||||
RewriteCond %{REQUEST_FILENAME}.webp -f
|
||||
RewriteRule ^(.*)\.(jpe|jpg|jpeg|png|gif|bmp|webp|avif)$ $1\.$2\.webp [QSA]
|
||||
</IfModule>
|
||||
<IfModule mod_headers.c>
|
||||
<FilesMatch \.(jpe|jpg|jpeg|png|gif|bmp|webp|avif)\.webp$>
|
||||
Header merge Vary Accept
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
<IfModule mod_deflate.c>
|
||||
<IfModule mod_filter.c>
|
||||
AddOutputFilterByType DEFLATE text/plain text/css text/javascript application/javascript application/x-javascript application/json text/html text/xml application/atom+xml application/rss+xml application/xhtml+xml application/xml text/x-component application/vnd.ms-fontobject application/x-font-ttf font/eot font/opentype image/bmp image/svg+xml image/vnd.microsoft.icon image/x-icon
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
<IfModule mod_headers.c>
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteCond %{HTTP:Accept-Encoding} (^|\W)gzip(\W|$)
|
||||
RewriteCond %{REQUEST_FILENAME} \.(css|js)$
|
||||
RewriteCond %{REQUEST_FILENAME}.gz -f
|
||||
RewriteRule ^(.*)\.(css|js)$ $1\.$2\.gz [QSA]
|
||||
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1]
|
||||
RewriteRule \.js\.gz$ - [T=application/javascript,E=no-gzip:1,E=no-brotli:1]
|
||||
</IfModule>
|
||||
<FilesMatch \.(js|css)\.gz$>
|
||||
Header set Content-Encoding gzip
|
||||
Header merge Vary Accept-Encoding
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
# END seraphinite-accelerator
|
||||
50
compare-styles.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* Скрипт для сравнения computed стилей dev vs prod
|
||||
* Запускать через WP-CLI: php wp-cli.phar eval-file compare-styles.php --url=dev.powerhousegym.ru
|
||||
* Делает curl на prod и dev, парсит одинаковые CSS-селекторы
|
||||
*/
|
||||
|
||||
// Пост "Правила бассейна PHG"
|
||||
$dev_url = 'https://dev.powerhousegym.ru/bez-rubriki/pravila-bassejna-phg/';
|
||||
$prod_url = 'https://powerhousegym.ru/bez-rubriki/pravila-bassejna-phg/';
|
||||
|
||||
$dev_html = file_get_contents($dev_url);
|
||||
$prod_html = file_get_contents($prod_url);
|
||||
|
||||
echo "DEV HTML: " . strlen($dev_html) . " bytes\n";
|
||||
echo "PROD HTML: " . strlen($prod_html) . " bytes\n\n";
|
||||
|
||||
// Сравним CSS файлы которые загружаются
|
||||
preg_match_all("/id='([^']*-css)'/", $dev_html, $dev_css);
|
||||
preg_match_all("/id='([^']*-css)'/", $prod_html, $prod_css);
|
||||
|
||||
$dev_set = array_unique($dev_css[1]);
|
||||
$prod_set = array_unique($prod_css[1]);
|
||||
|
||||
echo "=== CSS only on PROD ===\n";
|
||||
foreach (array_diff($prod_set, $dev_set) as $css) {
|
||||
echo " $css\n";
|
||||
}
|
||||
|
||||
echo "\n=== CSS only on DEV ===\n";
|
||||
foreach (array_diff($dev_set, $prod_set) as $css) {
|
||||
echo " $css\n";
|
||||
}
|
||||
|
||||
echo "\n=== Key HTML differences ===\n";
|
||||
|
||||
// Elementor на prod
|
||||
$prod_elementor = substr_count($prod_html, 'elementor-widget');
|
||||
$dev_elementor = substr_count($dev_html, 'elementor-widget');
|
||||
echo "Elementor widgets: prod=$prod_elementor dev=$dev_elementor\n";
|
||||
|
||||
// Elementor CSS на prod
|
||||
$prod_el_css = substr_count($prod_html, 'elementor-frontend-css');
|
||||
$dev_el_css = substr_count($dev_html, 'elementor-frontend-css');
|
||||
echo "Elementor CSS: prod=$prod_el_css dev=$dev_el_css\n";
|
||||
|
||||
// Author block
|
||||
preg_match('/blog-author-wrapper.*?<\/div>\s*<\/div>\s*<\/div>/s', $dev_html, $dev_author);
|
||||
preg_match('/blog-author-wrapper.*?<\/div>\s*<\/div>\s*<\/div>/s', $prod_html, $prod_author);
|
||||
echo "Author block: dev=" . strlen($dev_author[0] ?? '') . " prod=" . strlen($prod_author[0] ?? '') . "\n";
|
||||
228
convert-elementor.php
Normal file
@@ -0,0 +1,228 @@
|
||||
<?php
|
||||
/**
|
||||
* Конвертер Elementor → HTML
|
||||
* Извлекает контент из _elementor_data и записывает чистый HTML в post_content.
|
||||
* Запуск: php wp-cli.phar eval-file convert-elementor.php --path=... --allow-root --url=...
|
||||
*/
|
||||
|
||||
$dry_run = in_array('--dry-run', $argv ?? []);
|
||||
|
||||
// Маппинг structure → Bootstrap колонки
|
||||
function get_col_class($col_size) {
|
||||
switch ((int)$col_size) {
|
||||
case 100: return 'col-12';
|
||||
case 66: return 'col-lg-8';
|
||||
case 50: return 'col-lg-6';
|
||||
case 33: return 'col-lg-4';
|
||||
case 25: return 'col-lg-3';
|
||||
case 75: return 'col-lg-9';
|
||||
default: return 'col-12';
|
||||
}
|
||||
}
|
||||
|
||||
// Конвертация одного виджета в HTML
|
||||
function widget_to_html($el) {
|
||||
$type = $el['widgetType'] ?? '';
|
||||
$settings = $el['settings'] ?? [];
|
||||
|
||||
switch ($type) {
|
||||
case 'text-editor':
|
||||
$text = $settings['editor'] ?? '';
|
||||
return $text ? "<div class=\"elementor-text-editor\">$text</div>" : '';
|
||||
|
||||
case 'heading':
|
||||
$title = $settings['title'] ?? '';
|
||||
$tag = $settings['header_size'] ?? 'h2';
|
||||
$align = $settings['align'] ?? 'left';
|
||||
$color = $settings['title_color'] ?? '';
|
||||
$style = '';
|
||||
if ($color) $style .= "color:$color;";
|
||||
if ($align === 'center') $style .= "text-align:center;";
|
||||
$style_attr = $style ? " style=\"$style\"" : '';
|
||||
return $title ? "<$tag$style_attr>$title</$tag>" : '';
|
||||
|
||||
case 'image':
|
||||
$url = $settings['image']['url'] ?? '';
|
||||
$alt = $settings['image']['alt'] ?? '';
|
||||
if (!$url) return '';
|
||||
return "<img src=\"$url\" alt=\"$alt\" class=\"img-fluid\" style=\"width:100%;height:auto;border-radius:8px;\" loading=\"lazy\">";
|
||||
|
||||
case 'divider':
|
||||
$color = $settings['color'] ?? '#ccc';
|
||||
$weight = $settings['weight']['size'] ?? 2;
|
||||
return "<hr style=\"border-top:{$weight}px solid $color;margin:20px 0;\">";
|
||||
|
||||
case 'spacer':
|
||||
$height = $settings['space']['size'] ?? 30;
|
||||
return "<div style=\"height:{$height}px;\"></div>";
|
||||
|
||||
case 'button':
|
||||
$text = $settings['text'] ?? 'Button';
|
||||
$link = $settings['link']['url'] ?? '#';
|
||||
return "<a href=\"$link\" class=\"btn btn-red\" style=\"display:inline-block;padding:10px 30px;border-radius:50px;background:#cf1545;color:#fff;text-decoration:none;text-transform:uppercase;\">$text</a>";
|
||||
|
||||
case 'icon-list':
|
||||
$items = $settings['icon_list'] ?? [];
|
||||
if (empty($items)) return '';
|
||||
$html = '<ul>';
|
||||
foreach ($items as $item) {
|
||||
$text = $item['text'] ?? '';
|
||||
$link = $item['link']['url'] ?? '';
|
||||
if ($link) {
|
||||
$html .= "<li><a href=\"$link\">$text</a></li>";
|
||||
} else {
|
||||
$html .= "<li>$text</li>";
|
||||
}
|
||||
}
|
||||
$html .= '</ul>';
|
||||
return $html;
|
||||
|
||||
case 'blockquote':
|
||||
$quote = $settings['blockquote_content'] ?? '';
|
||||
return $quote ? "<blockquote><p>$quote</p></blockquote>" : '';
|
||||
|
||||
case 'video':
|
||||
$url = $settings['youtube_url'] ?? $settings['vimeo_url'] ?? '';
|
||||
if (!$url) return '';
|
||||
// Извлекаем YouTube ID
|
||||
if (preg_match('/(?:youtube\.com\/watch\?v=|youtu\.be\/)([^&\s]+)/', $url, $m)) {
|
||||
return "<div style=\"position:relative;padding-bottom:56.25%;height:0;overflow:hidden;\"><iframe src=\"https://www.youtube.com/embed/{$m[1]}\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" frameborder=\"0\" allowfullscreen loading=\"lazy\"></iframe></div>";
|
||||
}
|
||||
return "<a href=\"$url\">Видео</a>";
|
||||
|
||||
case 'image-carousel':
|
||||
$imgs = $settings['carousel'] ?? [];
|
||||
if (empty($imgs)) return '';
|
||||
$html = '<div class="row">';
|
||||
foreach ($imgs as $img) {
|
||||
$url = $img['url'] ?? '';
|
||||
if ($url) $html .= "<div class=\"col-4 mb-3\"><img src=\"$url\" class=\"img-fluid\" loading=\"lazy\"></div>";
|
||||
}
|
||||
$html .= '</div>';
|
||||
return $html;
|
||||
|
||||
case 'image-box':
|
||||
$url = $settings['image']['url'] ?? '';
|
||||
$title = $settings['title_text'] ?? '';
|
||||
$desc = $settings['description_text'] ?? '';
|
||||
$html = '';
|
||||
if ($url) $html .= "<img src=\"$url\" class=\"img-fluid\" loading=\"lazy\">";
|
||||
if ($title) $html .= "<h4>$title</h4>";
|
||||
if ($desc) $html .= "<p>$desc</p>";
|
||||
return $html;
|
||||
|
||||
case 'icon':
|
||||
return ''; // Иконки пропускаем
|
||||
|
||||
default:
|
||||
return "<!-- unknown widget: $type -->";
|
||||
}
|
||||
}
|
||||
|
||||
// Рекурсивная конвертация элементов
|
||||
function elements_to_html($elements) {
|
||||
$html = '';
|
||||
|
||||
foreach ($elements as $el) {
|
||||
$type = $el['elType'] ?? '';
|
||||
$children = $el['elements'] ?? [];
|
||||
|
||||
switch ($type) {
|
||||
case 'section':
|
||||
$columns = $children;
|
||||
$col_count = count($columns);
|
||||
|
||||
if ($col_count <= 1) {
|
||||
// Одноколоночная секция
|
||||
$html .= elements_to_html($columns);
|
||||
} else {
|
||||
// Многоколоночная — используем Bootstrap row
|
||||
$html .= '<div class="row mb-4">';
|
||||
foreach ($columns as $col) {
|
||||
$col_size = $col['settings']['_column_size'] ?? 100;
|
||||
$col_class = get_col_class($col_size);
|
||||
$html .= "<div class=\"$col_class\">";
|
||||
$html .= elements_to_html($col['elements'] ?? []);
|
||||
$html .= '</div>';
|
||||
}
|
||||
$html .= '</div>';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'column':
|
||||
// Колонка — обрабатываем дочерние виджеты
|
||||
$html .= elements_to_html($children);
|
||||
break;
|
||||
|
||||
case 'widget':
|
||||
$html .= widget_to_html($el);
|
||||
break;
|
||||
|
||||
default:
|
||||
$html .= elements_to_html($children);
|
||||
}
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
// Основной код
|
||||
$posts = get_posts([
|
||||
'post_type' => 'any',
|
||||
'meta_key' => '_elementor_edit_mode',
|
||||
'meta_value' => 'builder',
|
||||
'posts_per_page' => -1,
|
||||
'post_status' => 'publish',
|
||||
]);
|
||||
|
||||
echo "Found " . count($posts) . " Elementor posts\n";
|
||||
$converted = 0;
|
||||
$errors = 0;
|
||||
|
||||
foreach ($posts as $post) {
|
||||
$data_raw = get_post_meta($post->ID, '_elementor_data', true);
|
||||
if (!is_string($data_raw) || strlen($data_raw) < 10) {
|
||||
echo " SKIP #{$post->ID} ({$post->post_title}) — no data\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
$data = json_decode($data_raw, true);
|
||||
if (!is_array($data)) {
|
||||
echo " ERROR #{$post->ID} ({$post->post_title}) — invalid JSON\n";
|
||||
$errors++;
|
||||
continue;
|
||||
}
|
||||
|
||||
$new_content = elements_to_html($data);
|
||||
|
||||
if (empty(strip_tags($new_content))) {
|
||||
echo " SKIP #{$post->ID} ({$post->post_title}) — empty after conversion\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
// Оборачиваем в container
|
||||
$new_content = "<div class=\"container elementor-converted\">\n$new_content\n</div>";
|
||||
|
||||
if ($dry_run) {
|
||||
$preview = substr(strip_tags($new_content), 0, 100);
|
||||
echo " DRY #{$post->ID} ({$post->post_title}) — " . strlen($new_content) . " bytes, preview: $preview...\n";
|
||||
} else {
|
||||
// Сохраняем старый post_content как бэкап
|
||||
update_post_meta($post->ID, '_pre_elementor_convert_content', $post->post_content);
|
||||
|
||||
// Записываем новый контент
|
||||
wp_update_post([
|
||||
'ID' => $post->ID,
|
||||
'post_content' => $new_content,
|
||||
]);
|
||||
|
||||
// Удаляем Elementor флаг
|
||||
delete_post_meta($post->ID, '_elementor_edit_mode');
|
||||
|
||||
echo " OK #{$post->ID} ({$post->post_title}) — " . strlen($new_content) . " bytes\n";
|
||||
$converted++;
|
||||
}
|
||||
}
|
||||
|
||||
echo "\nDone: $converted converted, $errors errors\n";
|
||||
if ($dry_run) echo "(DRY RUN — no changes made)\n";
|
||||
BIN
dev-bassejn.jpeg
Normal file
|
After Width: | Height: | Size: 898 KiB |
BIN
dev-freshman.jpeg
Normal file
|
After Width: | Height: | Size: 808 KiB |
BIN
dev-pravila-full.jpeg
Normal file
|
After Width: | Height: | Size: 609 KiB |
BIN
dev-rodonitovaya-kontakty.jpeg
Normal file
|
After Width: | Height: | Size: 241 KiB |
BIN
dev-zamorozka-check.jpeg
Normal file
|
After Width: | Height: | Size: 624 KiB |
BIN
dev-zamorozka.jpeg
Normal file
|
After Width: | Height: | Size: 670 KiB |
424
docs/plan-theme-migration.md
Normal file
@@ -0,0 +1,424 @@
|
||||
# Миграция на одну тему (powerhouse) — План реализации
|
||||
|
||||
> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** Перевести все 8 блогов WordPress Multisite на единую тему `powerhouse`, устранив необходимость в `powerhouseclub`.
|
||||
|
||||
**Architecture:** Берём `powerhouse` как базу. Копируем уникальные шаблоны/файлы из `powerhouseclub`. Мерджим функциональность из `functions.php`. Подсайты (blogs 2-8) переключаем на `powerhouse` через WP-CLI.
|
||||
|
||||
**Tech Stack:** WordPress 6.9.4 Multisite, PHP 8.4, ACF Pro, WP-CLI
|
||||
|
||||
**WP-CLI:** `php /home/c24459/wp-cli.phar --path=/home/c24459/newst.powerhousegym.ru/www --allow-root`
|
||||
|
||||
**Важно:** После каждого таска — `redis-cli FLUSHALL` и проверка сайта.
|
||||
|
||||
---
|
||||
|
||||
## Предварительные условия
|
||||
|
||||
- Бэкап БД: `wp db export /home/c24459/backup-before-migration.sql --url=dev.powerhousegym.ru`
|
||||
- Бэкап тем: `cp -r wp-content/themes/powerhouse wp-content/themes/powerhouse.bak`
|
||||
|
||||
---
|
||||
|
||||
### Task 1: Копирование уникальных шаблонов из powerhouseclub
|
||||
|
||||
**Files:**
|
||||
- Copy: `powerhouseclub/page-open.php` → `powerhouse/page-open.php`
|
||||
- Copy: `powerhouseclub/page-way.php` → `powerhouse/page-way.php`
|
||||
- Copy: `powerhouseclub/single-combat.php` → `powerhouse/single-combat.php`
|
||||
- Copy: `powerhouseclub/single-comanda.php` → `powerhouse/single-comanda.php`
|
||||
- Copy: `powerhouseclub/single-services-new.php` → `powerhouse/single-services-new.php`
|
||||
|
||||
- [ ] **Step 1: Копируем шаблоны**
|
||||
|
||||
```bash
|
||||
cd /home/c24459/newst.powerhousegym.ru/www/wp-content/themes
|
||||
for f in page-open.php page-way.php single-combat.php single-comanda.php single-services-new.php; do
|
||||
cp powerhouseclub/$f powerhouse/$f
|
||||
echo "Copied $f"
|
||||
done
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Проверяем что файлы на месте**
|
||||
|
||||
```bash
|
||||
ls -la powerhouse/page-open.php powerhouse/page-way.php powerhouse/single-combat.php powerhouse/single-comanda.php powerhouse/single-services-new.php
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 2: Копирование include-файлов и template-parts
|
||||
|
||||
**Files:**
|
||||
- Copy: `powerhouseclub/inc/news.php` → `powerhouse/inc/news.php`
|
||||
- Copy: `powerhouseclub/inc/putevoditelsacf.php` → `powerhouse/inc/putevoditelsacf.php`
|
||||
- Copy: `powerhouseclub/template-parts/putevoditel/` → `powerhouse/template-parts/putevoditel/`
|
||||
- Copy: `powerhouseclub/template-parts/timer.php` → `powerhouse/template-parts/timer.php`
|
||||
- Copy: `powerhouseclub/template-parts/old/black-friday.php` → `powerhouse/template-parts/old/black-friday.php`
|
||||
|
||||
- [ ] **Step 1: Копируем includes**
|
||||
|
||||
```bash
|
||||
cd /home/c24459/newst.powerhousegym.ru/www/wp-content/themes
|
||||
cp powerhouseclub/inc/news.php powerhouse/inc/news.php
|
||||
cp powerhouseclub/inc/putevoditelsacf.php powerhouse/inc/putevoditelsacf.php
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Копируем template-parts**
|
||||
|
||||
```bash
|
||||
mkdir -p powerhouse/template-parts/putevoditel
|
||||
cp powerhouseclub/template-parts/putevoditel/* powerhouse/template-parts/putevoditel/
|
||||
cp powerhouseclub/template-parts/timer.php powerhouse/template-parts/timer.php
|
||||
mkdir -p powerhouse/template-parts/old
|
||||
cp powerhouseclub/template-parts/old/black-friday.php powerhouse/template-parts/old/black-friday.php
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Проверяем**
|
||||
|
||||
```bash
|
||||
find powerhouse/template-parts/putevoditel -type f | wc -l # Должно быть 6
|
||||
ls powerhouse/inc/news.php powerhouse/inc/putevoditelsacf.php
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 3: Копирование уникальных CSS/JS/images из powerhouseclub
|
||||
|
||||
**Files:**
|
||||
- Copy: `powerhouseclub/dist/css/putevoditel.css` → `powerhouse/dist/css/putevoditel.css`
|
||||
- Copy: `powerhouseclub/dist/css/snowflakes.css` → `powerhouse/dist/css/snowflakes.css`
|
||||
- Copy: `powerhouseclub/dist/js/putevoditel.js` → `powerhouse/dist/js/putevoditel.js`
|
||||
- Copy: `powerhouseclub/dist/js/snowflakes.js` → `powerhouse/dist/js/snowflakes.js`
|
||||
- Copy: уникальные изображения из `powerhouseclub/dist/img/` и `powerhouseclub/service/`
|
||||
|
||||
- [ ] **Step 1: Копируем CSS/JS**
|
||||
|
||||
```bash
|
||||
cd /home/c24459/newst.powerhousegym.ru/www/wp-content/themes
|
||||
cp powerhouseclub/dist/css/putevoditel.css powerhouse/dist/css/
|
||||
cp powerhouseclub/dist/css/snowflakes.css powerhouse/dist/css/
|
||||
cp powerhouseclub/dist/js/putevoditel.js powerhouse/dist/js/
|
||||
cp powerhouseclub/dist/js/snowflakes.js powerhouse/dist/js/
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Копируем уникальные изображения**
|
||||
|
||||
```bash
|
||||
# SVG иконки
|
||||
for f in arrow-left.svg arrow-right.svg ic-close.svg calendar.svg loc-arrow.svg arrow.svg arrow-right-mini.svg; do
|
||||
[ -f powerhouseclub/dist/img/$f ] && [ ! -f powerhouse/dist/img/$f ] && cp powerhouseclub/dist/img/$f powerhouse/dist/img/
|
||||
done
|
||||
# Service images (для шаблонов услуг)
|
||||
[ ! -d powerhouse/service ] && cp -r powerhouseclub/service powerhouse/service
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 4: Мердж functions.php — require_once и ini_set
|
||||
|
||||
**Files:**
|
||||
- Modify: `powerhouse/functions.php`
|
||||
|
||||
Добавляем из powerhouseclub то, чего нет в powerhouse.
|
||||
|
||||
- [ ] **Step 1: Добавляем ini_set и require_once**
|
||||
|
||||
В начало `powerhouse/functions.php` (после `<?php`):
|
||||
|
||||
```php
|
||||
@ini_set( 'upload_max_size' , '128M' );
|
||||
@ini_set( 'post_max_size', '128M');
|
||||
@ini_set( 'max_execution_time', '300' );
|
||||
```
|
||||
|
||||
После существующих `require_once`:
|
||||
|
||||
```php
|
||||
/* Путеводитель */
|
||||
require_once(TEMPLATEPATH . '/inc/putevoditelsacf.php');
|
||||
|
||||
/* Новости */
|
||||
require_once(TEMPLATEPATH . '/inc/news.php');
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Добавляем register image size**
|
||||
|
||||
```php
|
||||
add_image_size('photo-image', 548, 638, true);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 5: Мердж functions.php — CPT и шорткоды
|
||||
|
||||
**Files:**
|
||||
- Modify: `powerhouse/functions.php`
|
||||
|
||||
- [ ] **Step 1: Добавляем CPT "promo" (Акции)**
|
||||
|
||||
Скопировать функцию регистрации `promo` из powerhouseclub/functions.php в powerhouse/functions.php. Найти через `grep -n "register_post_type.*promo" powerhouseclub/functions.php`.
|
||||
|
||||
- [ ] **Step 2: Добавляем шорткоды**
|
||||
|
||||
Скопировать функции шорткодов из powerhouseclub: `[news-blue]`, `[news-pink]`, `[news-gray]`, `[timer]`, `[newsbtn]`.
|
||||
|
||||
- [ ] **Step 3: Добавляем AJAX-хендлеры**
|
||||
|
||||
Скопировать: `get_title_programms()`, `get_text_programms()`, `getProgTerm()` и их `wp_ajax` хуки.
|
||||
|
||||
- [ ] **Step 4: Добавляем загрузку putevoditel/snowflakes CSS/JS**
|
||||
|
||||
```php
|
||||
if ( is_page_template( 'page-way.php' ) ) {
|
||||
wp_enqueue_style( 'putevoditel', get_template_directory_uri().'/dist/css/putevoditel.css', [],
|
||||
filectime(get_template_directory().'/dist/css/putevoditel.css') );
|
||||
wp_enqueue_script( 'pu_js', get_template_directory_uri().'/dist/js/putevoditel.js', ['pwh-slick'],
|
||||
filectime(get_template_directory().'/dist/js/putevoditel.js'), true);
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 5: Добавляем Yandex Captcha фильтры из powerhouseclub**
|
||||
|
||||
```php
|
||||
// Проверить и добавить wpcf7_form_elements и wpcf7_default_form_content фильтры
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 6: Мердж functions.php — News CPT rewrite и coach capabilities
|
||||
|
||||
**Files:**
|
||||
- Modify: `powerhouse/functions.php`
|
||||
|
||||
- [ ] **Step 1: Обновляем News CPT**
|
||||
|
||||
В powerhouse news CPT использует `'has_archive' => true`. Нужно изменить на `'has_archive' => 'news'` и добавить rewrite rules из powerhouseclub, чтобы URL `/news/` работали одинаково.
|
||||
|
||||
- [ ] **Step 2: Добавляем capabilities для менеджеров**
|
||||
|
||||
Скопировать код `capability_type => ['treners', 'treners']` для coach CPT и функции раздачи capabilities для роли `menager`.
|
||||
|
||||
- [ ] **Step 3: Обновляем coach meta_query**
|
||||
|
||||
Добавить фильтр `pwh_coach__select-club` в meta_query (активен в powerhouseclub, закомментирован в powerhouse).
|
||||
|
||||
- [ ] **Step 4: Flush rewrite rules**
|
||||
|
||||
```bash
|
||||
php /home/c24459/wp-cli.phar --path=/home/c24459/newst.powerhousegym.ru/www --allow-root rewrite flush --url=dev.powerhousegym.ru
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 7: Динамический footer (убираем хардкод форм)
|
||||
|
||||
**Files:**
|
||||
- Modify: `powerhouse/footer.php`
|
||||
|
||||
- [ ] **Step 1: Заменяем хардкод CF7 ID**
|
||||
|
||||
В `powerhouse/footer.php` найти:
|
||||
```php
|
||||
[contact-form-7 id="199"]
|
||||
```
|
||||
|
||||
Заменить на:
|
||||
```php
|
||||
<?php
|
||||
$form_id = get_field('options_page_group_1__form_popup', 'option');
|
||||
if ($form_id) {
|
||||
echo do_shortcode('[contact-form-7 id="' . $form_id . '"]');
|
||||
} else {
|
||||
echo do_shortcode('[contact-form-7 id="199"]'); // fallback для главного сайта
|
||||
}
|
||||
?>
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Добавляем quiz form динамический checked**
|
||||
|
||||
В quiz-формах footer.php заменить hardcoded `checked` на динамический через `get_current_blog_id()` (как в powerhouseclub).
|
||||
|
||||
---
|
||||
|
||||
### Task 8: Обновляем header.php — поддержка подсайтов
|
||||
|
||||
**Files:**
|
||||
- Modify: `powerhouse/header.php`
|
||||
|
||||
- [ ] **Step 1: Добавляем проверку на удалённый блог**
|
||||
|
||||
Из powerhouseclub/header.php скопировать код проверки `get_blog_status(get_current_blog_id(), 'deleted')` с редиректом на 404.
|
||||
|
||||
- [ ] **Step 2: Добавляем динамические title для архивов**
|
||||
|
||||
Из powerhouseclub/header.php скопировать условия для `<title>` при `is_home()`, `is_post_type_archive('coach')`, `is_page_template('single-gruppovye-programmy.php')`, `is_singular('news')`.
|
||||
|
||||
---
|
||||
|
||||
### Task 9: Обновляем header-club.php — совместимость
|
||||
|
||||
**Files:**
|
||||
- Modify: `powerhouse/header-club.php`
|
||||
|
||||
- [ ] **Step 1: Проверяем session vs blog_details**
|
||||
|
||||
В powerhouse header-club.php используется `$_SESSION['club']['name']`. В powerhouseclub — `get_blog_details()`. Нужно добавить fallback:
|
||||
|
||||
```php
|
||||
$current_club_name = $_SESSION['club']['name'] ?? get_bloginfo('name');
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Добавляем недостающие slide fields**
|
||||
|
||||
Проверить что `slogan-color`, `slogan-em-color` обрабатываются (из powerhouseclub).
|
||||
|
||||
---
|
||||
|
||||
### Task 10: ACF fields — перенос групп полей
|
||||
|
||||
**Files:**
|
||||
- Modify: `powerhouse/inc/acf-fields/all-fields.php`
|
||||
- Modify: `powerhouse/inc/acf-fields/theme-options-fields.php`
|
||||
- Modify: `powerhouse/inc/acf-fields/trainings-fields.php`
|
||||
|
||||
- [ ] **Step 1: Сравниваем и мерджим ACF field groups**
|
||||
|
||||
93 ACF-поля уникальны для powerhouseclub. Большинство зарегистрированы через PHP в `inc/acf-fields/*.php`. Нужно:
|
||||
|
||||
1. Скопировать группы полей putevoditel (etaz1-3, bonus, faq, form_sc) из `putevoditelsacf.php` (уже скопирован в Task 2)
|
||||
2. Скопировать группы полей news из `news.php` (уже скопирован в Task 2)
|
||||
3. Мерджить `theme-options-fields.php` (448 vs 161 строк — powerhouseclub имеет больше опций)
|
||||
4. Мерджить `trainings-fields.php` (705 vs 471 строк — powerhouseclub имеет FAQ и SEO поля для тренировок)
|
||||
|
||||
- [ ] **Step 2: Мерджим theme-options-fields.php**
|
||||
|
||||
```bash
|
||||
diff wp-content/themes/powerhouseclub/inc/acf-fields/theme-options-fields.php wp-content/themes/powerhouse/inc/acf-fields/theme-options-fields.php
|
||||
```
|
||||
|
||||
Добавить недостающие поля (combat, club cards extra, tariffs, freeze, personal training).
|
||||
|
||||
- [ ] **Step 3: Мерджим trainings-fields.php**
|
||||
|
||||
Добавить поля `pwh_training__faq_*`, `pwh_training__seo_*`, `pwh_training__after_video`, `pwh_training__display_block`.
|
||||
|
||||
---
|
||||
|
||||
### Task 11: Минификация скопированных CSS/JS
|
||||
|
||||
**Files:**
|
||||
- Modify: скопированные CSS/JS файлы
|
||||
|
||||
- [ ] **Step 1: Минифицируем**
|
||||
|
||||
```bash
|
||||
cd /home/c24459/newst.powerhousegym.ru/www/wp-content/themes/powerhouse/dist/css
|
||||
npx clean-css-cli -o putevoditel.min.css putevoditel.css
|
||||
cd ../js
|
||||
npx terser putevoditel.js -o putevoditel.min.js --compress --mangle
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Обновляем enqueue на min-версии**
|
||||
|
||||
В functions.php заменить `putevoditel.css` → `putevoditel.min.css` и `putevoditel.js` → `putevoditel.min.js`.
|
||||
|
||||
---
|
||||
|
||||
### Task 12: Переключение подсайтов на тему powerhouse
|
||||
|
||||
**Files:** БД (wp_N_options)
|
||||
|
||||
- [ ] **Step 1: Переключаем все блоги**
|
||||
|
||||
```bash
|
||||
for id in 2 3 4 5 6 7 8; do
|
||||
php /home/c24459/wp-cli.phar --path=/home/c24459/newst.powerhousegym.ru/www --allow-root \
|
||||
option update stylesheet powerhouse --url=dev.powerhousegym.ru/$(php /home/c24459/wp-cli.phar --path=/home/c24459/newst.powerhousegym.ru/www --allow-root db query "SELECT path FROM wp_blogs WHERE blog_id=$id" --skip-column-names --url=dev.powerhousegym.ru 2>/dev/null | tr -d '/')/ 2>/dev/null
|
||||
php /home/c24459/wp-cli.phar --path=/home/c24459/newst.powerhousegym.ru/www --allow-root \
|
||||
option update template powerhouse --url=dev.powerhousegym.ru/$(php /home/c24459/wp-cli.phar --path=/home/c24459/newst.powerhousegym.ru/www --allow-root db query "SELECT path FROM wp_blogs WHERE blog_id=$id" --skip-column-names --url=dev.powerhousegym.ru 2>/dev/null | tr -d '/')/ 2>/dev/null
|
||||
echo "Blog $id switched to powerhouse"
|
||||
done
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Flush Redis и rewrite rules**
|
||||
|
||||
```bash
|
||||
redis-cli FLUSHALL
|
||||
php /home/c24459/wp-cli.phar --path=/home/c24459/newst.powerhousegym.ru/www --allow-root rewrite flush --url=dev.powerhousegym.ru
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 13: Тестирование всех подсайтов
|
||||
|
||||
- [ ] **Step 1: Проверяем главную каждого подсайта**
|
||||
|
||||
```bash
|
||||
for path in / /dubler-sibirskogo-trakta-2/ /halturina-55/ /rodonitovaya-29/ /serafimy-deryabinoj-24/ /titova-35a/ /palladium/ /tatishcheva-105/; do
|
||||
code=$(curl -s -o /dev/null -w "%{http_code}" "https://dev.powerhousegym.ru${path}")
|
||||
echo "$path: $code"
|
||||
done
|
||||
```
|
||||
|
||||
Все должны вернуть 200.
|
||||
|
||||
- [ ] **Step 2: Визуальная проверка через Playwright**
|
||||
|
||||
Скриншоты мобильной версии каждого подсайта — сравнить с prod.
|
||||
|
||||
- [ ] **Step 3: Проверяем формы**
|
||||
|
||||
Отправить тестовую форму на 2-3 подсайтах — убедиться что CF7 + Captcha работают.
|
||||
|
||||
- [ ] **Step 4: Проверяем страницы услуг, тарифов, расписание**
|
||||
|
||||
Пройтись по ключевым страницам: `/tarify/`, `/kontakty/`, `/gruppovye-programmy/`, `/raspisanie/`.
|
||||
|
||||
---
|
||||
|
||||
### Task 14: Удаление powerhouseclub (после успешного тестирования)
|
||||
|
||||
- [ ] **Step 1: Деактивируем тему**
|
||||
|
||||
```bash
|
||||
# Убеждаемся что ни один блог не использует powerhouseclub
|
||||
for id in 1 2 3 4 5 6 7 8; do
|
||||
prefix=$([ "$id" = "1" ] && echo "wp_" || echo "wp_${id}_")
|
||||
theme=$(php /home/c24459/wp-cli.phar --path=/home/c24459/newst.powerhousegym.ru/www --allow-root db query "SELECT option_value FROM ${prefix}options WHERE option_name='stylesheet'" --skip-column-names --url=dev.powerhousegym.ru 2>/dev/null)
|
||||
echo "Blog $id: $theme"
|
||||
done
|
||||
```
|
||||
|
||||
Все должны показать `powerhouse`.
|
||||
|
||||
- [ ] **Step 2: Переименовываем (не удаляем)**
|
||||
|
||||
```bash
|
||||
mv wp-content/themes/powerhouseclub wp-content/themes/powerhouseclub.archived
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Риски и fallback
|
||||
|
||||
| Риск | Вероятность | Fallback |
|
||||
|------|------------|---------|
|
||||
| Поломка front-page на подсайтах | Средняя | Blog 3 (halturina-55) использует front-page.php. Если layout сломается — скопировать powerhouseclub/front-page.php как `front-page-club.php` и использовать условно |
|
||||
| ACF поля не найдены | Низкая | Поля зарегистрированы через PHP-файлы (inc/), после копирования будут доступны |
|
||||
| Формы сломаются | Средняя | Fallback на hardcoded ID через `?:` оператор |
|
||||
| Rewrite rules не работают | Низкая | `wp rewrite flush` на каждом подсайте |
|
||||
| Откат | — | `cp -r powerhouse.bak powerhouse` + импорт БД бэкапа |
|
||||
|
||||
## Оценка трудозатрат
|
||||
|
||||
| Таск | Время |
|
||||
|------|-------|
|
||||
| Tasks 1-3 (копирование файлов) | 15 мин |
|
||||
| Tasks 4-6 (мердж functions.php) | 1-2 часа |
|
||||
| Tasks 7-9 (header/footer) | 30 мин |
|
||||
| Task 10 (ACF fields) | 1 час |
|
||||
| Task 11 (минификация) | 10 мин |
|
||||
| Tasks 12-13 (переключение + тест) | 1 час |
|
||||
| **Итого** | **~4-5 часов** |
|
||||
BIN
prod-bassejn.jpeg
Normal file
|
After Width: | Height: | Size: 917 KiB |
BIN
prod-freshman.jpeg
Normal file
|
After Width: | Height: | Size: 804 KiB |
BIN
prod-rodonitovaya-kontakty.jpeg
Normal file
|
After Width: | Height: | Size: 297 KiB |
BIN
prod-zamorozka.jpeg
Normal file
|
After Width: | Height: | Size: 635 KiB |
504
report.html
Normal file
@@ -0,0 +1,504 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Отчёт по оптимизации — PowerHouse Gym</title>
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body {
|
||||
font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
|
||||
background: #0f1117;
|
||||
color: #e1e4e8;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.container { max-width: 1100px; margin: 0 auto; padding: 40px 20px; }
|
||||
|
||||
h1 {
|
||||
font-size: 2.2rem;
|
||||
font-weight: 700;
|
||||
text-align: center;
|
||||
margin-bottom: 8px;
|
||||
background: linear-gradient(135deg, #58a6ff, #bc8cff);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
.subtitle {
|
||||
text-align: center;
|
||||
color: #8b949e;
|
||||
margin-bottom: 50px;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
/* Summary cards */
|
||||
.summary {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
||||
gap: 20px;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
.card {
|
||||
background: #161b22;
|
||||
border: 1px solid #30363d;
|
||||
border-radius: 12px;
|
||||
padding: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
.card-value {
|
||||
font-size: 2.4rem;
|
||||
font-weight: 700;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.card-value.green { color: #3fb950; }
|
||||
.card-value.blue { color: #58a6ff; }
|
||||
.card-value.purple { color: #bc8cff; }
|
||||
.card-value.orange { color: #d29922; }
|
||||
.card-label {
|
||||
color: #8b949e;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
/* Section */
|
||||
h2 {
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 20px;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: 1px solid #30363d;
|
||||
}
|
||||
h2 span { color: #8b949e; font-weight: 400; font-size: 1rem; margin-left: 8px; }
|
||||
|
||||
/* Speed table */
|
||||
.speed-section { margin-bottom: 50px; }
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
th {
|
||||
text-align: left;
|
||||
padding: 12px 16px;
|
||||
background: #161b22;
|
||||
color: #8b949e;
|
||||
font-weight: 600;
|
||||
font-size: 0.85rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
td {
|
||||
padding: 12px 16px;
|
||||
border-bottom: 1px solid #21262d;
|
||||
}
|
||||
tr:hover td { background: #161b22; }
|
||||
.page-name { color: #c9d1d9; }
|
||||
.ms { font-variant-numeric: tabular-nums; }
|
||||
.faster { color: #3fb950; font-weight: 600; }
|
||||
.slower { color: #f85149; font-weight: 600; }
|
||||
|
||||
/* Bar chart */
|
||||
.bar-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 12px;
|
||||
gap: 12px;
|
||||
}
|
||||
.bar-label {
|
||||
width: 200px;
|
||||
text-align: right;
|
||||
font-size: 0.85rem;
|
||||
color: #8b949e;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.bar-container {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
align-items: center;
|
||||
}
|
||||
.bar {
|
||||
height: 28px;
|
||||
border-radius: 4px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 10px;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 600;
|
||||
min-width: 50px;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
.bar-dev { background: linear-gradient(90deg, #238636, #3fb950); color: #fff; }
|
||||
.bar-prod { background: linear-gradient(90deg, #b62324, #f85149); color: #fff; }
|
||||
|
||||
/* Changes table */
|
||||
.changes-section { margin-bottom: 50px; }
|
||||
.tag {
|
||||
display: inline-block;
|
||||
padding: 2px 10px;
|
||||
border-radius: 20px;
|
||||
font-size: 0.78rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
.tag-done { background: #1a3a2a; color: #3fb950; }
|
||||
.tag-partial { background: #3d2e00; color: #d29922; }
|
||||
.tag-reverted { background: #3d1e20; color: #f85149; }
|
||||
.tag-new { background: #1c2d4f; color: #58a6ff; }
|
||||
|
||||
/* CSS comparison */
|
||||
.css-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 4px 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.css-header {
|
||||
font-weight: 600;
|
||||
padding: 8px 0;
|
||||
border-bottom: 1px solid #30363d;
|
||||
color: #8b949e;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
.css-file {
|
||||
padding: 6px 0;
|
||||
border-bottom: 1px solid #21262d;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.min-badge {
|
||||
background: #1a3a2a;
|
||||
color: #3fb950;
|
||||
padding: 1px 6px;
|
||||
border-radius: 4px;
|
||||
font-size: 0.75rem;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
.report-footer {
|
||||
text-align: center;
|
||||
color: #484f58;
|
||||
font-size: 0.85rem;
|
||||
margin-top: 60px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #21262d;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.bar-label { width: 100px; font-size: 0.75rem; }
|
||||
.card-value { font-size: 1.8rem; }
|
||||
h1 { font-size: 1.6rem; }
|
||||
.css-grid { grid-template-columns: 1fr; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Отчёт по оптимизации сайта</h1>
|
||||
<p class="subtitle">PowerHouse Gym — DEV vs PROD · 16 марта 2026</p>
|
||||
|
||||
<!-- Summary -->
|
||||
<div class="summary">
|
||||
<div class="card">
|
||||
<div class="card-value green">2.2x</div>
|
||||
<div class="card-label">Среднее ускорение<br>по всем страницам</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-value blue">330 МБ</div>
|
||||
<div class="card-label">Очищено из БД<br>(wp_postmeta: 355→24 МБ)</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-value purple">1.1 ГБ</div>
|
||||
<div class="card-label">Сэкономлено на изображениях<br>(4.1→3.0 ГБ)</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-value orange">429 МБ</div>
|
||||
<div class="card-label">Освобождено на диске<br>(плагины + логи + БД)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Speed comparison -->
|
||||
<div class="speed-section">
|
||||
<h2>Скорость ответа сервера <span>среднее из 3 замеров, TTFB</span></h2>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Страница</th>
|
||||
<th style="text-align:right">DEV</th>
|
||||
<th style="text-align:right">PROD</th>
|
||||
<th style="text-align:right">Ускорение</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="page-name">/ <span style="color:#484f58">(главная)</span></td>
|
||||
<td class="ms" style="text-align:right">764 мс</td>
|
||||
<td class="ms" style="text-align:right">2 696 мс</td>
|
||||
<td class="faster" style="text-align:right">3.5x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="page-name">/rodonitovaya-29/</td>
|
||||
<td class="ms" style="text-align:right">671 мс</td>
|
||||
<td class="ms" style="text-align:right">936 мс</td>
|
||||
<td class="faster" style="text-align:right">1.4x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="page-name">/rodonitovaya-29/tarify/</td>
|
||||
<td class="ms" style="text-align:right">291 мс</td>
|
||||
<td class="ms" style="text-align:right">572 мс</td>
|
||||
<td class="faster" style="text-align:right">2.0x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="page-name">/rodonitovaya-29/raspisanie-2/</td>
|
||||
<td class="ms" style="text-align:right">223 мс</td>
|
||||
<td class="ms" style="text-align:right">409 мс</td>
|
||||
<td class="faster" style="text-align:right">1.8x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="page-name">/rodonitovaya-29/kontakty/</td>
|
||||
<td class="ms" style="text-align:right">213 мс</td>
|
||||
<td class="ms" style="text-align:right">357 мс</td>
|
||||
<td class="faster" style="text-align:right">1.7x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="page-name">/rodonitovaya-29/gruppovye-programmy/</td>
|
||||
<td class="ms" style="text-align:right">231 мс</td>
|
||||
<td class="ms" style="text-align:right">431 мс</td>
|
||||
<td class="faster" style="text-align:right">1.9x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="page-name">/palladium/</td>
|
||||
<td class="ms" style="text-align:right">382 мс</td>
|
||||
<td class="ms" style="text-align:right">928 мс</td>
|
||||
<td class="faster" style="text-align:right">2.4x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="page-name">/tatishcheva-105/</td>
|
||||
<td class="ms" style="text-align:right">374 мс</td>
|
||||
<td class="ms" style="text-align:right">844 мс</td>
|
||||
<td class="faster" style="text-align:right">2.3x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="page-name">/dubler-sibirskogo-trakta-2/</td>
|
||||
<td class="ms" style="text-align:right">337 мс</td>
|
||||
<td class="ms" style="text-align:right">737 мс</td>
|
||||
<td class="faster" style="text-align:right">2.2x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="page-name">/serafimy-deryabinoj-24/</td>
|
||||
<td class="ms" style="text-align:right">356 мс</td>
|
||||
<td class="ms" style="text-align:right">667 мс</td>
|
||||
<td class="faster" style="text-align:right">1.9x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="page-name">/titova-35a/</td>
|
||||
<td class="ms" style="text-align:right">316 мс</td>
|
||||
<td class="ms" style="text-align:right">875 мс</td>
|
||||
<td class="faster" style="text-align:right">2.8x</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- Visual bars -->
|
||||
<h2>Визуальное сравнение <span>время ответа, мс</span></h2>
|
||||
<div style="margin-bottom:10px">
|
||||
<span style="color:#3fb950;font-size:0.85rem">■ DEV</span>
|
||||
<span style="color:#f85149;font-size:0.85rem">■ PROD</span>
|
||||
</div>
|
||||
<div class="bar-row">
|
||||
<div class="bar-label">/ (главная)</div>
|
||||
<div class="bar-container">
|
||||
<div class="bar bar-dev" style="width:28%">764</div>
|
||||
<div class="bar bar-prod" style="width:100%">2696</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bar-row">
|
||||
<div class="bar-label">/rodonitovaya-29/</div>
|
||||
<div class="bar-container">
|
||||
<div class="bar bar-dev" style="width:25%">671</div>
|
||||
<div class="bar bar-prod" style="width:35%">936</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bar-row">
|
||||
<div class="bar-label">/tarify/</div>
|
||||
<div class="bar-container">
|
||||
<div class="bar bar-dev" style="width:11%">291</div>
|
||||
<div class="bar bar-prod" style="width:21%">572</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bar-row">
|
||||
<div class="bar-label">/palladium/</div>
|
||||
<div class="bar-container">
|
||||
<div class="bar bar-dev" style="width:14%">382</div>
|
||||
<div class="bar bar-prod" style="width:34%">928</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bar-row">
|
||||
<div class="bar-label">/tatishcheva-105/</div>
|
||||
<div class="bar-container">
|
||||
<div class="bar bar-dev" style="width:14%">374</div>
|
||||
<div class="bar bar-prod" style="width:31%">844</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bar-row">
|
||||
<div class="bar-label">/titova-35a/</div>
|
||||
<div class="bar-container">
|
||||
<div class="bar bar-dev" style="width:12%">316</div>
|
||||
<div class="bar bar-prod" style="width:32%">875</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- What was done -->
|
||||
<div class="changes-section">
|
||||
<h2>Выполненные оптимизации</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Задача</th>
|
||||
<th>Эффект</th>
|
||||
<th>Статус</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Redis Object Cache</td>
|
||||
<td>Кеширование SQL-запросов, -80% обращений к БД</td>
|
||||
<td><span class="tag tag-done">Готово</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Очистка БД</td>
|
||||
<td>wp_postmeta: 355 МБ → 24.5 МБ (2 759 ревизий, 373 из корзины)</td>
|
||||
<td><span class="tag tag-done">Готово</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Оптимизация изображений</td>
|
||||
<td>uploads: 4.1 ГБ → 3.0 ГБ (lossy JPEG/PNG + WebP конвертация)</td>
|
||||
<td><span class="tag tag-done">Готово</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Минификация CSS</td>
|
||||
<td>tarrifs (-27%), usluga (-28%), popup-draw (-27%), slick (-25%)</td>
|
||||
<td><span class="tag tag-done">Готово</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Минификация main.css</td>
|
||||
<td>main.min.css сломан (потеряны @media). Нужен Node.js</td>
|
||||
<td><span class="tag tag-reverted">Откачено</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Удаление неактивных плагинов</td>
|
||||
<td>Удалено 17 плагинов (91 МБ)</td>
|
||||
<td><span class="tag tag-done">Готово</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Удаление wp-file-manager</td>
|
||||
<td>20 МБ + закрыта уязвимость CVE-2020-25213</td>
|
||||
<td><span class="tag tag-done">Готово</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Очистка логов CF7-Bitrix24</td>
|
||||
<td>Удалено 318 МБ лог-файлов</td>
|
||||
<td><span class="tag tag-done">Готово</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Preload шрифтов</td>
|
||||
<td>font-display: swap уже был. Добавлен preload для Montserrat</td>
|
||||
<td><span class="tag tag-done">Готово</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Swap 2 ГБ</td>
|
||||
<td>Страховка от OOM-killer при пиковых нагрузках</td>
|
||||
<td><span class="tag tag-new">Новое</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Defer/async для JS</td>
|
||||
<td>Ломало интерактивность (slick, fancybox, main.js)</td>
|
||||
<td><span class="tag tag-reverted">Откачено</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Исправление wpcf7_add_form_tag</td>
|
||||
<td>Fatal error при отсутствии CF7 — обёрнуто в function_exists</td>
|
||||
<td><span class="tag tag-done">Готово</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- CSS comparison -->
|
||||
<div class="changes-section">
|
||||
<h2>CSS файлы: DEV vs PROD</h2>
|
||||
<div class="css-grid">
|
||||
<div class="css-header">DEV (оптимизировано)</div>
|
||||
<div class="css-header">PROD (оригинал)</div>
|
||||
|
||||
<div class="css-file">main.css</div>
|
||||
<div class="css-file">main.css</div>
|
||||
|
||||
<div class="css-file">slick<span class="min-badge">.min</span> — 1.3 КБ</div>
|
||||
<div class="css-file">slick.css — 1.8 КБ</div>
|
||||
|
||||
<div class="css-file">usluga<span class="min-badge">.min</span> — 29 КБ</div>
|
||||
<div class="css-file">usluga.css — 40 КБ</div>
|
||||
|
||||
<div class="css-file">popup-draw<span class="min-badge">.min</span> — 2.2 КБ</div>
|
||||
<div class="css-file">popup-draw.css — 3.0 КБ</div>
|
||||
|
||||
<div class="css-file">tarrifs<span class="min-badge">.min</span> — 7.9 КБ</div>
|
||||
<div class="css-file">tarrifs.css — 10.9 КБ</div>
|
||||
|
||||
<div class="css-file">let-it-snow<span class="min-badge">.min</span> — 1.9 КБ</div>
|
||||
<div class="css-file">let-it-snow.css — 1.9 КБ</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Infra comparison -->
|
||||
<div class="changes-section">
|
||||
<h2>Инфраструктура</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Параметр</th>
|
||||
<th>DEV</th>
|
||||
<th>PROD</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>PHP</td>
|
||||
<td class="faster">8.4.16</td>
|
||||
<td>7.4.33</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Object Cache</td>
|
||||
<td class="faster">Redis 7.0</td>
|
||||
<td>Нет</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>wp_postmeta</td>
|
||||
<td class="faster">24.5 МБ</td>
|
||||
<td>~355 МБ</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Плагины</td>
|
||||
<td class="faster">22</td>
|
||||
<td>~43</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Uploads</td>
|
||||
<td class="faster">3.0 ГБ</td>
|
||||
<td>~4.1 ГБ</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Swap</td>
|
||||
<td class="faster">2 ГБ</td>
|
||||
<td>0</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="report-footer">
|
||||
Отчёт сгенерирован 16 марта 2026 · Замеры выполнены с сервера (curl, среднее из 3 попыток)
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
122
sync-elementor-posts.php
Normal file
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
/**
|
||||
* Массовая синхронизация Elementor-постов с prod.
|
||||
* Скачивает rendered HTML, post-CSS, картинки.
|
||||
* Запуск: php wp-cli.phar eval-file sync-elementor-posts.php --url=dev.powerhousegym.ru --allow-root
|
||||
*/
|
||||
|
||||
$dry_run = in_array('--dry-run', $argv ?? []);
|
||||
$prod_domain = 'powerhousegym.ru';
|
||||
$dev_domain = 'dev.powerhousegym.ru';
|
||||
$elementor_css_dir = get_template_directory() . '/dist/css/elementor';
|
||||
|
||||
// Все посты с Elementor
|
||||
$posts = get_posts([
|
||||
'post_type' => 'any',
|
||||
'meta_key' => '_elementor_edit_mode',
|
||||
'meta_value' => 'builder',
|
||||
'posts_per_page' => -1,
|
||||
'post_status' => 'publish',
|
||||
]);
|
||||
|
||||
echo "Found " . count($posts) . " Elementor posts\n\n";
|
||||
|
||||
$ok = 0;
|
||||
$skip = 0;
|
||||
$fail = 0;
|
||||
|
||||
foreach ($posts as $post) {
|
||||
$dev_url = get_permalink($post->ID);
|
||||
$prod_url = str_replace($dev_domain, $prod_domain, $dev_url);
|
||||
|
||||
echo "#{$post->ID} {$post->post_title}\n";
|
||||
echo " prod: $prod_url\n";
|
||||
|
||||
if ($dry_run) {
|
||||
echo " DRY RUN — skipping\n\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
// 1. Скачиваем HTML с prod
|
||||
$prod_html = @file_get_contents($prod_url);
|
||||
if (!$prod_html || strlen($prod_html) < 500) {
|
||||
echo " FAIL: couldn't fetch prod HTML\n\n";
|
||||
$fail++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// 2. Извлекаем контент между blog-default-content-wrapper и blog-author-wrapper
|
||||
$start = strpos($prod_html, 'blog-default-content-wrapper');
|
||||
$end = strpos($prod_html, 'blog-author-wrapper');
|
||||
|
||||
if ($start === false || $end === false) {
|
||||
echo " FAIL: couldn't find content markers\n\n";
|
||||
$fail++;
|
||||
continue;
|
||||
}
|
||||
|
||||
$chunk = substr($prod_html, $start - 5, $end - $start + 5);
|
||||
$inner_start = strpos($chunk, '>') + 1;
|
||||
$content = trim(substr($chunk, $inner_start));
|
||||
|
||||
// Обрезаем по последнему </section>
|
||||
$last_section = strrpos($content, '</section>');
|
||||
if ($last_section !== false) {
|
||||
$content = substr($content, 0, $last_section + 10) . "\n</div>";
|
||||
}
|
||||
|
||||
// Заменяем домен
|
||||
$content = str_replace($prod_domain, $dev_domain, $content);
|
||||
|
||||
$widget_count = substr_count($content, 'elementor-widget');
|
||||
echo " content: " . strlen($content) . " bytes, $widget_count widgets\n";
|
||||
|
||||
if ($widget_count == 0) {
|
||||
echo " SKIP: no elementor widgets in content\n\n";
|
||||
$skip++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// 3. Скачиваем post-CSS
|
||||
$post_css_url = "https://$prod_domain/wp-content/uploads/elementor/css/post-{$post->ID}.css";
|
||||
$post_css = @file_get_contents($post_css_url);
|
||||
if ($post_css && strlen($post_css) > 10) {
|
||||
$css_path = "$elementor_css_dir/post-{$post->ID}.css";
|
||||
file_put_contents($css_path, $post_css);
|
||||
echo " css: " . strlen($post_css) . " bytes\n";
|
||||
}
|
||||
|
||||
// 4. Скачиваем картинки
|
||||
preg_match_all('/src="https:\/\/' . preg_quote($dev_domain) . '\/wp-content\/uploads\/([^"]+)"/', $content, $img_matches);
|
||||
$downloaded = 0;
|
||||
foreach ($img_matches[1] as $img_path) {
|
||||
$local_path = ABSPATH . "wp-content/uploads/$img_path";
|
||||
if (!file_exists($local_path)) {
|
||||
$prod_img_url = "https://$prod_domain/wp-content/uploads/$img_path";
|
||||
$dir = dirname($local_path);
|
||||
if (!is_dir($dir)) mkdir($dir, 0755, true);
|
||||
$img_data = @file_get_contents($prod_img_url);
|
||||
if ($img_data && strlen($img_data) > 100) {
|
||||
file_put_contents($local_path, $img_data);
|
||||
$downloaded++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($downloaded) echo " images: $downloaded downloaded\n";
|
||||
|
||||
// 5. Бэкап и запись
|
||||
global $wpdb;
|
||||
$old_content = $wpdb->get_var($wpdb->prepare("SELECT post_content FROM $wpdb->posts WHERE ID = %d", $post->ID));
|
||||
update_post_meta($post->ID, '_pre_elementor_convert_content', $old_content);
|
||||
|
||||
$wpdb->update($wpdb->posts, ['post_content' => $content], ['ID' => $post->ID]);
|
||||
wp_cache_delete($post->ID, 'posts');
|
||||
|
||||
// 6. Удаляем elementor_edit_mode
|
||||
delete_post_meta($post->ID, '_elementor_edit_mode');
|
||||
|
||||
echo " OK\n\n";
|
||||
$ok++;
|
||||
}
|
||||
|
||||
echo "\nDone: $ok synced, $skip skipped, $fail failed\n";
|
||||
53
test-progress.html
Normal file
@@ -0,0 +1,53 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Тестирование форм — прогресс</title>
|
||||
<style>
|
||||
body{font-family:system-ui,sans-serif;background:#f5f5f5;padding:20px;color:#333}
|
||||
h1{font-size:20px;color:#950f28;margin-bottom:16px}
|
||||
.bar-wrap{background:#e0e0e0;border-radius:8px;height:30px;margin-bottom:12px;overflow:hidden}
|
||||
.bar{background:#950f28;height:100%;border-radius:8px;transition:width .3s;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:14px}
|
||||
.stats{display:flex;gap:20px;margin-bottom:12px;font-size:15px}
|
||||
.stat{padding:8px 16px;border-radius:6px;font-weight:600}
|
||||
.s-total{background:#e0e0e0} .s-pass{background:#d4edda;color:#155724} .s-fail{background:#f8d7da;color:#721c24}
|
||||
.current{font-size:14px;color:#666;margin-bottom:8px}
|
||||
.log{background:#fff;border-radius:6px;padding:12px;max-height:400px;overflow-y:auto;font-size:13px;font-family:monospace;line-height:1.6}
|
||||
.log .pass{color:#155724} .log .fail{color:#721c24}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Тестирование форм CF7 → Битрикс24</h1>
|
||||
<div class="bar-wrap"><div class="bar" id="bar" style="width:0%">0%</div></div>
|
||||
<div class="stats">
|
||||
<span class="stat s-total" id="s-total">Всего: 0</span>
|
||||
<span class="stat s-pass" id="s-pass">✓ Пройдено: 0</span>
|
||||
<span class="stat s-fail" id="s-fail">✗ Ошибки: 0</span>
|
||||
</div>
|
||||
<div class="current" id="current">Ожидание...</div>
|
||||
<div class="log" id="log"></div>
|
||||
<script>
|
||||
var logEl = document.getElementById('log');
|
||||
var prev = '';
|
||||
function poll(){
|
||||
fetch('/test-progress.json?t='+Date.now()).then(r=>r.json()).then(function(d){
|
||||
var pct = d.total ? Math.round(d.tested/d.total*100) : 0;
|
||||
document.getElementById('bar').style.width = pct+'%';
|
||||
document.getElementById('bar').textContent = pct+'%';
|
||||
document.getElementById('s-total').textContent = 'Всего: '+d.total;
|
||||
document.getElementById('s-pass').textContent = '✓ Пройдено: '+d.passed;
|
||||
document.getElementById('s-fail').textContent = '✗ Ошибки: '+d.failed;
|
||||
document.getElementById('current').textContent = d.current||'';
|
||||
if(d.current && d.current !== prev){
|
||||
var cls = d.current.charAt(0)==='✓' ? 'pass' : (d.current.charAt(0)==='✗' ? 'fail' : '');
|
||||
logEl.innerHTML += '<div class="'+cls+'">'+d.current+'</div>';
|
||||
logEl.scrollTop = logEl.scrollHeight;
|
||||
prev = d.current;
|
||||
}
|
||||
if(!d.done) setTimeout(poll, 1000);
|
||||
}).catch(function(){setTimeout(poll, 2000);});
|
||||
}
|
||||
poll();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
1
test-progress.json
Normal file
@@ -0,0 +1 @@
|
||||
{"total":81,"tested":81,"passed":79,"failed":2,"current":"Done!","done":true}
|
||||
1136
test-results.json
Normal file
204
tz-tilda-connector.md
Normal file
@@ -0,0 +1,204 @@
|
||||
# ТЗ: Настройка вебхука tilda.connector для приёма заявок с dev.powerhousegym.ru
|
||||
|
||||
## Контекст
|
||||
|
||||
WordPress Multisite (dev.powerhousegym.ru) отправляет заявки через CF7 формы. Сейчас данные уходят через плагин cf7-bitrix24-lead-generation напрямую по REST API. Переходим на tilda.connector — все формы будут отправлять сырые данные на один webhook URL, маппинг и создание сделок/контактов — на стороне Битрикс.
|
||||
|
||||
**Битрикс:** bitrix.powerhousegym.ru
|
||||
**Модуль:** tilda.connector уже установлен
|
||||
**Воронка:** 0 (нулевая, далее раскидывается через БП)
|
||||
|
||||
---
|
||||
|
||||
## Задача 1: Создать webhook
|
||||
|
||||
Один вебхук на все формы:
|
||||
|
||||
| Параметр | Значение |
|
||||
|----------|----------|
|
||||
| Название | dev.powerhousegym.ru — все формы |
|
||||
| Активен | Y |
|
||||
| Ответственный | ID=8 (Вадим Шакиров) |
|
||||
| Воронка | 0 (нулевая / общая) |
|
||||
| Стадия | первая стадия воронки 0 |
|
||||
| Источник | WEB (или создать WEBSITE если нет) |
|
||||
| Искать дубликаты | Y |
|
||||
| Асинхронная обработка | Y |
|
||||
| Макс. попыток | 3 |
|
||||
|
||||
### Шаблон названия сделки
|
||||
```
|
||||
{formname} - {name}
|
||||
```
|
||||
|
||||
### Шаблон комментария к сделке
|
||||
```
|
||||
formname : Форма
|
||||
club : Клуб
|
||||
message : Сообщение
|
||||
typeOfContact : Способ связи
|
||||
isNew : Новый клиент
|
||||
fitnesZone : Зона
|
||||
trainer : Тренер
|
||||
trainingTime : Время тренировки
|
||||
people : Кол-во человек
|
||||
srok : Срок
|
||||
datesanytia : Время занятий
|
||||
paymetod : Способ оплаты
|
||||
resume : Резюме
|
||||
form-source : Источник формы
|
||||
category : Категория
|
||||
quantity : Количество
|
||||
need-help : Нужна помощь
|
||||
service : Услуга
|
||||
urlPage : URL страницы
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 2: Маппинг полей
|
||||
|
||||
WordPress будет передавать поля формы с унифицированными именами. Ниже — таблица маппинга.
|
||||
|
||||
### Автоматически распознаваемые поля (маппинг НЕ нужен)
|
||||
|
||||
Эти поля tilda.connector обрабатывает сам:
|
||||
|
||||
| Поле из формы | Куда попадает |
|
||||
|---------------|---------------|
|
||||
| `name` | ФИО контакта (NAME / LAST_NAME) |
|
||||
| `phone` | Телефон контакта (нормализуется в +7) |
|
||||
| `email` | Email контакта |
|
||||
| `formname` | Используется в шаблоне названия сделки |
|
||||
| `utm_source` | UTM контакта и сделки |
|
||||
| `utm_medium` | UTM |
|
||||
| `utm_campaign` | UTM |
|
||||
| `utm_content` | UTM |
|
||||
| `utm_term` | UTM |
|
||||
|
||||
### Маппинг пользовательских полей (настроить в admin-панели)
|
||||
|
||||
| Поле из формы (Tilda) | Поле в Битрикс24 (UF) | Описание |
|
||||
|------------------------|------------------------|----------|
|
||||
| `club` | `UF_CRM_1643656459` | Клуб |
|
||||
| `message` | `UF_CRM_1765262491230` | Сообщение клиента |
|
||||
| `typeOfContact` | `UF_CRM_1765259433237` | Способ связи (WhatsApp/Звонок/Telegram) |
|
||||
| `isNew` | `UF_CRM_1765259825946` | Новый клиент или нет |
|
||||
| `fitnesZone` | `UF_CRM_1765262442565` | Зона фитнеса (Бассейн/Зал/и т.д.) |
|
||||
| `trainer` | `UF_CRM_1765262458601` | Имя тренера |
|
||||
| `trainingTime` | `UF_CRM_1765262474949` | Время тренировки (День/Вечер) |
|
||||
| `form-source` | `UF_CRM_1769507592315` | Идентификатор формы (feedback-form и т.п.) |
|
||||
| `ga_field` | `UF_CRM_1659338480` | Google Analytics client ID |
|
||||
| `ym_uid_field` | `UF_CRM_1659338495` | Яндекс.Метрика client ID |
|
||||
| `resume` | `UF_CRM_1744091941` | Резюме (текст, для вакансий) |
|
||||
| `service` | `UF_CRM_1601710396014` | Услуга |
|
||||
| `people` | `UF_CRM_1647864861` | Кол-во человек |
|
||||
| `srok` | `UF_CRM_1647864752` | Срок |
|
||||
| `datesanytia` | `UF_CRM_1647864513` | Время занятий |
|
||||
| `paymetod` | `UF_CRM_1647864933` | Способ оплаты |
|
||||
| `category` | — (в комментарий) | Категория тренера |
|
||||
| `quantity` | — (в комментарий) | Количество |
|
||||
| `need-help` | — (в комментарий) | Нужна помощь с подбором |
|
||||
| `urlPage` | COMMENTS или SOURCE_DESCRIPTION | URL страницы откуда отправлена форма |
|
||||
|
||||
---
|
||||
|
||||
## Задача 3: Флаги отключения операций
|
||||
|
||||
Рекомендуемые флаги для быстрой обработки без блокировок:
|
||||
|
||||
| Флаг | Значение | Причина |
|
||||
|------|----------|---------|
|
||||
| CheckRequiredUserFields | Y | Не все формы заполняют все UF-поля |
|
||||
| DuplicatesIndexInvalidation | Y | Ускорение, пересчёт не нужен на каждую заявку |
|
||||
|
||||
Остальные — N (оставить включёнными).
|
||||
|
||||
---
|
||||
|
||||
## Какие формы будут отправлять данные
|
||||
|
||||
50 уникальных типов форм с 7 сайтов (blogs 1, 2, 4, 5, 6, 7, 8). Всего ~80 активных форм.
|
||||
|
||||
### Основные типы форм и их поля:
|
||||
|
||||
**1. Отправить заявку** (9 шт, все блоги)
|
||||
- Поля: `name`, `phone`, `club`, `formname`, UTM, `ga_field`, `ym_uid_field`
|
||||
|
||||
**2. Квиз / Квиз_new** (14 шт, все блоги)
|
||||
- Поля: `name`, `phone`, `club`, `people`, `srok`, `datesanytia`, `paymetod`, UTM
|
||||
|
||||
**3. Гостевой визит / Хотите гостевой визит** (14 шт)
|
||||
- Поля: `name`, `phone`, `club`, UTM
|
||||
|
||||
**4. Начать заниматься просто** (7 шт)
|
||||
- Поля: `name`, `phone`, `club`, UTM
|
||||
|
||||
**5. Оформить карту** (7 шт)
|
||||
- Поля: `name`, `phone`, `club`, UTM
|
||||
|
||||
**6. Персональные тренировки** (7 шт)
|
||||
- Поля: `name`, `phone`, `club`, UTM
|
||||
|
||||
**7. Ваше мнение важно для нас!** (7 шт)
|
||||
- Поля: `name`, `phone`, `club`, `message`, `form-source`
|
||||
|
||||
**8. Форма для страницы Пожаловаться** (7 шт)
|
||||
- Поля: `name`, `phone`, `club`, `message`, `form-source`
|
||||
|
||||
**9. Вводная тренировка / Путеводитель** (7 шт)
|
||||
- Поля: `name`, `phone`, `club`, `typeOfContact`, `isNew`, `fitnesZone`, `trainer`, `trainingTime`
|
||||
|
||||
**10. Отклик на вакансию** (6 шт, blog 1 и 8)
|
||||
- Поля: `name`, `phone`, `club`, `message`, `resume`, `typeOfContact`
|
||||
|
||||
**11. Розыгрыш** (7 шт)
|
||||
- Поля: `name`, `phone`, `club`
|
||||
|
||||
**12. Расскажем подробнее об Акции** (7 шт)
|
||||
- Поля: `name`, `phone`, `club`, UTM
|
||||
|
||||
---
|
||||
|
||||
## Формат данных от WordPress
|
||||
|
||||
WordPress будет отправлять POST-запрос на webhook URL с Content-Type: application/json.
|
||||
|
||||
Пример payload:
|
||||
```json
|
||||
{
|
||||
"formname": "Гостевой визит",
|
||||
"name": "Иван Петров",
|
||||
"phone": "+7 (922) 136-44-63",
|
||||
"email": "",
|
||||
"club": "Родонитовая, 29",
|
||||
"message": "",
|
||||
"typeOfContact": "WhatsApp",
|
||||
"isNew": "Еще не клиент клуба",
|
||||
"fitnesZone": "Бассейн",
|
||||
"trainer": "",
|
||||
"trainingTime": "День",
|
||||
"utm_source": "yandex",
|
||||
"utm_medium": "cpc",
|
||||
"utm_campaign": "",
|
||||
"utm_content": "",
|
||||
"utm_term": "",
|
||||
"ga_field": "GA1.2.123456789.1234567890",
|
||||
"ym_uid_field": "1704800132292284328",
|
||||
"form-source": "",
|
||||
"urlPage": "https://dev.powerhousegym.ru/rodonitovaya-29/",
|
||||
"blog_id": 4,
|
||||
"blog_name": "Родонитовая, 29"
|
||||
}
|
||||
```
|
||||
|
||||
Пустые поля (`""`) можно игнорировать — не заполнять UF в сделке.
|
||||
|
||||
---
|
||||
|
||||
## После настройки
|
||||
|
||||
1. Передай мне webhook URL вида `https://bitrix.powerhousegym.ru/webhook/{key}/`
|
||||
2. Я настрою WordPress на отправку данных на этот URL
|
||||
3. Протестируем все 80 форм автоматически
|
||||
4. После успешного теста отключим плагин cf7-bitrix24-lead-generation
|
||||
18624
wp-content/advanced-cache.php.disabled
Normal file
2
wp-content/languages/admin-network-ru_RU.l10n.php
Normal file
BIN
wp-content/languages/admin-network-ru_RU.mo
Normal file
1472
wp-content/languages/admin-network-ru_RU.po
Normal file
176
wp-content/languages/admin-ru_RU.l10n.php
Normal file
BIN
wp-content/languages/admin-ru_RU.mo
Normal file
16535
wp-content/languages/admin-ru_RU.po
Normal file
2
wp-content/languages/continents-cities-ru_RU.l10n.php
Normal file
BIN
wp-content/languages/continents-cities-ru_RU.mo
Normal file
2124
wp-content/languages/continents-cities-ru_RU.po
Normal file
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
return ['x-generator'=>'GlotPress/4.0.1','translation-revision-date'=>'2023-05-17 17:48:27+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'=>'Plugins - Admin Menu Editor - Stable (latest release)','language'=>'ru','messages'=>['You don\'t have permission to use Admin Menu Editor Pro.'=>'У вас нет разрешения на использование Admin Menu Editor Pro.','Access denied. Invalid nonce.'=>'В доступе отказано. Недействительный одноразовый номер.','Settings'=>'Настройки','Settings saved.'=>'Настройки сохранены.','http://w-shadow.com/blog/'=>'http://w-shadow.com/blog/','Janis Elsts'=>'Janis Elsts','Lets you directly edit the WordPress admin menu. You can re-order, hide or rename existing menus, add custom menus and more.'=>'Позволяет непосредственно редактировать меню администратора WordPress. Вы можете переуказать, скрыть или переименовать существующие меню, добавить пользовательские меню и многое другое.','http://w-shadow.com/blog/2008/12/20/admin-menu-editor-for-wordpress/'=>'http://w-shadow.com/blog/2008/12/20/admin-menu-editor-for-wordpress/','Admin Menu Editor'=>'Admin Menu Editor']];
|
||||
BIN
wp-content/languages/plugins/advanced-custom-fields-ru_RU.mo
Normal file
7253
wp-content/languages/plugins/advanced-custom-fields-ru_RU.po
Normal file
2
wp-content/languages/plugins/akismet-ru_RU.l10n.php
Normal file
BIN
wp-content/languages/plugins/akismet-ru_RU.mo
Normal file
1135
wp-content/languages/plugins/akismet-ru_RU.po
Normal file
BIN
wp-content/languages/plugins/anycomment-ru_RU.mo
Normal file
2639
wp-content/languages/plugins/anycomment-ru_RU.po
Normal file
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
return ['x-generator'=>'GlotPress/4.0.3','translation-revision-date'=>'2025-05-04 17:07:26+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'=>'Plugins - Captcha by Yandex for Contact Form 7 - Stable (latest release)','language'=>'ru','messages'=>['Allow use Yandex captcha for your forms with Contact Form 7'=>'Позволяет использовать Яндекс капчу для ваших форм в плагине Contact Form 7','Captcha by Yandex for Contact Form 7'=>'Капча от Яндекс для Contact Form 7','Client key'=>'Ключ клиента','Configure'=>'Настроить','Error'=>'Ошибка','error: Your environment does not meet all of the system requirements listed below.'=>'ошибка: Ваше окружение не удовлетворяет всем системным требованиям указанным ниже.','If you need to upgrade your version of PHP you can ask your hosting company for assistance, and if you need help upgrading WordPress you can refer to the'=>'Если вам нужно обновить вашу версию PHP, вы можете запросить это у вашего хостинг-провайдер, и если вам нужно обновить WordPress посмотрите в','Insert Tag'=>'Добавить','Invalid keys'=>'Некорректные ключи','Please check captcha'=>'Необходимо решить капчу','Please configure the plugin first. Go to <a href="%s">configuration</a>'=>'Для использования капчи необходимо сперва Настроить плагин. Перейти к <a href="%s">настройке</a>','Please install and activate Contact Form 7 plugin first'=>'Сперва необходимо установить и активировать плагин Contact Form 7','API keysRemove Keys'=>'Удалить ключи','Save Changes'=>'Сохранить настройки','Server Key'=>'Ключ сервера','Settings saved.'=>'Настройки сохранены','Setup Integration'=>'Настроить интеграцию','Yandex Captcha'=>'Яндекс капча','Yandex Captcha for Contact Form 7'=>'Яндекс капча for Contact Form 7','Yandex Captcha is active on this site.'=>'Яндекс капча активирована на этом сайте.','Yandex Captcha protects you against spam and other types of automated abuse. With Contact Form 7’s Yandex Captcha integration module, you can block abusive form submissions by spam bots.'=>'Яндекс капча защищает вас от спама и других способов автоматического злоупотребления. В интеграции с Contact Form 7, модуль Яндекс капча позволяет блокировать спам и злоупотребления.','Your server is running PHP version %1$s but this plugin requires at least PHP %2$s. Please run an upgrade.'=>'Ваш сервер работает на PHP версии %1$s, но плагину требуется минимум PHP версии %2$s. Пожалуйста обновите PHP до минимально необходимой версии.','Your Wordpress running version is %1$s but this plugin requires at least version %2$s. Please run an upgrade.'=>'Версия вашего WordPress %1$s, но плагину требуется минимально версия %2$s. Пожалуйста обновите WordPress до минимально необходимой версии.']];
|
||||
@@ -0,0 +1,111 @@
|
||||
# Translation of Plugins - Captcha by Yandex for Contact Form 7 - Stable (latest release) in Russian
|
||||
# This file is distributed under the same license as the Plugins - Captcha by Yandex for Contact Form 7 - Stable (latest release) package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2025-05-04 17:07:26+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"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);\n"
|
||||
"X-Generator: GlotPress/4.0.3\n"
|
||||
"Language: ru\n"
|
||||
"Project-Id-Version: Plugins - Captcha by Yandex for Contact Form 7 - Stable (latest release)\n"
|
||||
|
||||
#. Description of the plugin
|
||||
#: bootstrap.php
|
||||
msgid "Allow use Yandex captcha for your forms with Contact Form 7"
|
||||
msgstr "Позволяет использовать Яндекс капчу для ваших форм в плагине Contact Form 7"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
#: bootstrap.php
|
||||
msgid "Captcha by Yandex for Contact Form 7"
|
||||
msgstr "Капча от Яндекс для Contact Form 7"
|
||||
|
||||
#: controller/class-cfyc-service.php:238
|
||||
msgid "Client key"
|
||||
msgstr "Ключ клиента"
|
||||
|
||||
#: controller/class-cfyc-common.php:138 controller/class-cfyc-common.php:139
|
||||
msgid "Configure"
|
||||
msgstr "Настроить"
|
||||
|
||||
#: controller/class-cfyc-service.php:194
|
||||
msgid "Error"
|
||||
msgstr "Ошибка"
|
||||
|
||||
#: views/requirements-error.php:7
|
||||
msgid "error: Your environment does not meet all of the system requirements listed below."
|
||||
msgstr "ошибка: Ваше окружение не удовлетворяет всем системным требованиям указанным ниже."
|
||||
|
||||
#: views/requirements-error.php:17
|
||||
msgid "If you need to upgrade your version of PHP you can ask your hosting company for assistance, and if you need help upgrading WordPress you can refer to the"
|
||||
msgstr "Если вам нужно обновить вашу версию PHP, вы можете запросить это у вашего хостинг-провайдер, и если вам нужно обновить WordPress посмотрите в"
|
||||
|
||||
#: controller/class-cfyc-form-tag.php:169
|
||||
msgid "Insert Tag"
|
||||
msgstr "Добавить"
|
||||
|
||||
#: controller/class-cfyc-service.php:195
|
||||
msgid "Invalid keys"
|
||||
msgstr "Некорректные ключи"
|
||||
|
||||
#: controller/class-cfyc-frontend.php:190
|
||||
msgid "Please check captcha"
|
||||
msgstr "Необходимо решить капчу"
|
||||
|
||||
#. translators: %s: url
|
||||
#: controller/class-cfyc-form-tag.php:31
|
||||
msgid "Please configure the plugin first. Go to <a href=\"%s\">configuration</a>"
|
||||
msgstr "Для использования капчи необходимо сперва Настроить плагин. Перейти к <a href=\"%s\">настройке</a>"
|
||||
|
||||
#: bootstrap.php:76
|
||||
msgid "Please install and activate Contact Form 7 plugin first"
|
||||
msgstr "Сперва необходимо установить и активировать плагин Contact Form 7"
|
||||
|
||||
#: controller/class-cfyc-service.php:279
|
||||
msgctxt "API keys"
|
||||
msgid "Remove Keys"
|
||||
msgstr "Удалить ключи"
|
||||
|
||||
#: controller/class-cfyc-service.php:284
|
||||
msgid "Save Changes"
|
||||
msgstr "Сохранить настройки"
|
||||
|
||||
#: controller/class-cfyc-service.php:255
|
||||
msgid "Server Key"
|
||||
msgstr "Ключ сервера"
|
||||
|
||||
#: controller/class-cfyc-service.php:200
|
||||
msgid "Settings saved."
|
||||
msgstr "Настройки сохранены"
|
||||
|
||||
#: controller/class-cfyc-service.php:223
|
||||
msgid "Setup Integration"
|
||||
msgstr "Настроить интеграцию"
|
||||
|
||||
#: controller/class-cfyc-form-tag.php:49 controller/class-cfyc-form-tag.php:82
|
||||
#: controller/class-cfyc-service.php:50
|
||||
msgid "Yandex Captcha"
|
||||
msgstr "Яндекс капча"
|
||||
|
||||
#: views/requirements-error.php:7
|
||||
msgid "Yandex Captcha for Contact Form 7"
|
||||
msgstr "Яндекс капча for Contact Form 7"
|
||||
|
||||
#: controller/class-cfyc-service.php:213
|
||||
msgid "Yandex Captcha is active on this site."
|
||||
msgstr "Яндекс капча активирована на этом сайте."
|
||||
|
||||
#: controller/class-cfyc-service.php:207
|
||||
msgid "Yandex Captcha protects you against spam and other types of automated abuse. With Contact Form 7’s Yandex Captcha integration module, you can block abusive form submissions by spam bots."
|
||||
msgstr "Яндекс капча защищает вас от спама и других способов автоматического злоупотребления. В интеграции с Contact Form 7, модуль Яндекс капча позволяет блокировать спам и злоупотребления."
|
||||
|
||||
#. translators: %s: php version
|
||||
#: bootstrap.php:40
|
||||
msgid "Your server is running PHP version %1$s but this plugin requires at least PHP %2$s. Please run an upgrade."
|
||||
msgstr "Ваш сервер работает на PHP версии %1$s, но плагину требуется минимум PHP версии %2$s. Пожалуйста обновите PHP до минимально необходимой версии."
|
||||
|
||||
#. translators: %s: WP version
|
||||
#: bootstrap.php:48
|
||||
msgid "Your Wordpress running version is %1$s but this plugin requires at least version %2$s. Please run an upgrade."
|
||||
msgstr "Версия вашего WordPress %1$s, но плагину требуется минимально версия %2$s. Пожалуйста обновите WordPress до минимально необходимой версии."
|
||||
@@ -0,0 +1,894 @@
|
||||
# Translation of Plugins - GSheetConnector for CF7 – Connect Contact Form 7 to Google Sheets and Send Form Submissions in Real Time - Development (trunk) in Russian
|
||||
# This file is distributed under the same license as the Plugins - GSheetConnector for CF7 – Connect Contact Form 7 to Google Sheets and Send Form Submissions in Real Time - Development (trunk) package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-01-05 13:35:38+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"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);\n"
|
||||
"X-Generator: GlotPress/4.0.3\n"
|
||||
"Language: ru\n"
|
||||
"Project-Id-Version: Plugins - GSheetConnector for CF7 – Connect Contact Form 7 to Google Sheets and Send Form Submissions in Real Time - Development (trunk)\n"
|
||||
|
||||
#: includes/class-gs-service.php:276
|
||||
msgid ".htaccess Rules"
|
||||
msgstr "Правила .htaccess"
|
||||
|
||||
#: google-sheet-connector.php:1005
|
||||
msgid "Contact Form 7 - GSheetConnector"
|
||||
msgstr "Contact Form 7 - GSheetConnector"
|
||||
|
||||
#: includes/class-gs-service.php:533
|
||||
msgid "Debug log cleared successfully."
|
||||
msgstr "Журнал отладки успешно очищен."
|
||||
|
||||
#. translators: %1$s: plugin name, %2$s: link to reviews
|
||||
#: includes/pages/admin-footer.php:18
|
||||
msgid "Enjoy using %1$s? Check out our reviews or leave your own on %2$s."
|
||||
msgstr "Нравится использовать %1$s? Посмотрите наши отзывы или оставьте свой на %2$s."
|
||||
|
||||
#: includes/class-gs-service.php:507
|
||||
msgid "Logs are cleared."
|
||||
msgstr "Логи очищены."
|
||||
|
||||
#: includes/class-gs-service.php:511
|
||||
msgid "No log file exists to clear logs."
|
||||
msgstr "Нет файла журнала для очистки логов."
|
||||
|
||||
#: google-sheet-connector.php:432
|
||||
msgid "Sign in with Google"
|
||||
msgstr "Войти с помощью Google"
|
||||
|
||||
#: includes/class-gs-service.php:362
|
||||
msgid "The main WordPress directory"
|
||||
msgstr "Основной каталог WordPress"
|
||||
|
||||
#: includes/class-gs-service.php:383
|
||||
msgid "The plugins directory"
|
||||
msgstr "Каталог плагинов"
|
||||
|
||||
#: includes/class-gs-service.php:390
|
||||
msgid "The themes directory"
|
||||
msgstr "Каталог тем"
|
||||
|
||||
#: includes/class-gs-service.php:376
|
||||
msgid "The uploads directory"
|
||||
msgstr "Каталог загрузок"
|
||||
|
||||
#: includes/class-gs-service.php:369
|
||||
msgid "The wp-content directory"
|
||||
msgstr "Каталог wp-content"
|
||||
|
||||
#: includes/pages/admin-footer.php:23
|
||||
msgid "WordPress.org"
|
||||
msgstr "WordPress.org"
|
||||
|
||||
#: google-sheet-connector.php:304
|
||||
msgid "You are not allowed to access this page."
|
||||
msgstr "У вас нет доступа к этой странице."
|
||||
|
||||
#: includes/class-gs-service.php:783 includes/pages/gs-custom-ordering.php:5
|
||||
#: includes/pages/gs-field-list.php:5
|
||||
#: includes/pages/gs-miscellaneous-features.php:4
|
||||
#: includes/pages/gs-special-mailtags.php:5
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#: includes/class-gs-service.php:1072
|
||||
msgid "Conditional Logic"
|
||||
msgstr "Условная логика"
|
||||
|
||||
#: google-sheet-connector.php:367 includes/pages/pro-popup.php:20
|
||||
#: includes/pages/pro-popup.php:54
|
||||
msgid "Upgrade To PRO"
|
||||
msgstr "Обновить до PRO"
|
||||
|
||||
#: google-sheet-connector.php:380
|
||||
msgid "click here"
|
||||
msgstr "нажмите здесь"
|
||||
|
||||
#: includes/pages/google-sheet-settings.php:72
|
||||
msgid "Integration"
|
||||
msgstr "Интеграция"
|
||||
|
||||
#: google-sheet-connector.php:416
|
||||
msgid "Deactivate"
|
||||
msgstr "Деактивировать"
|
||||
|
||||
#: google-sheet-connector.php:500
|
||||
msgid "View"
|
||||
msgstr "Просмотреть"
|
||||
|
||||
#: includes/pages/gs-beta-version.php:31 includes/pages/gs-role-settings.php:90
|
||||
msgid "Save"
|
||||
msgstr "Сохранить"
|
||||
|
||||
#: google-sheet-connector.php:504 includes/pages/gs-integrate-info.php:32
|
||||
msgid "Clear"
|
||||
msgstr "Очистить"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:57
|
||||
msgid "Buy Now"
|
||||
msgstr "Купить сейчас"
|
||||
|
||||
#: google-sheet-connector.php:513
|
||||
msgid "Learn more."
|
||||
msgstr "Узнать больше."
|
||||
|
||||
#: google-sheet-connector.php:729
|
||||
msgid "Compatibility"
|
||||
msgstr "Совместимость"
|
||||
|
||||
#: includes/pages/gs-integrate-info.php:42
|
||||
msgid "Copied"
|
||||
msgstr "Скопировано"
|
||||
|
||||
#: includes/pages/gs-integrate-support.php:11
|
||||
#: includes/pages/gs-integrate-support.php:13
|
||||
msgid "Documentation"
|
||||
msgstr "Документация"
|
||||
|
||||
#: includes/pages/gs-miscellaneous-features.php:33
|
||||
msgid "Colors"
|
||||
msgstr "Цвета"
|
||||
|
||||
#: includes/pages/gs-role-settings.php:20
|
||||
#: includes/pages/gs-role-settings.php:58
|
||||
msgid "Editor"
|
||||
msgstr "Редактор"
|
||||
|
||||
#: includes/pages/gs-role-settings.php:25
|
||||
#: includes/pages/gs-role-settings.php:63
|
||||
msgid "Author"
|
||||
msgstr "Автор"
|
||||
|
||||
#: includes/pages/gs-role-settings.php:30
|
||||
#: includes/pages/gs-role-settings.php:68
|
||||
msgid "Contributor"
|
||||
msgstr "Участник"
|
||||
|
||||
#: includes/pages/gs-role-settings.php:35
|
||||
#: includes/pages/gs-role-settings.php:73
|
||||
msgid "Subscriber"
|
||||
msgstr "Подписчик"
|
||||
|
||||
#: includes/pages/gs-role-settings.php:40
|
||||
#: includes/pages/gs-role-settings.php:78
|
||||
msgid "Customer"
|
||||
msgstr "Клиент"
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
#: google-sheet-connector.php
|
||||
msgid "https://wordpress.org/plugins/cf7-google-sheets-connector/"
|
||||
msgstr "https://wordpress.org/plugins/cf7-google-sheets-connector/"
|
||||
|
||||
#. Author of the plugin
|
||||
#: google-sheet-connector.php
|
||||
msgid "GSheetConnector"
|
||||
msgstr "GSheetConnector"
|
||||
|
||||
#. Author URI of the plugin
|
||||
#: google-sheet-connector.php
|
||||
msgid "https://www.gsheetconnector.com/"
|
||||
msgstr "https://www.gsheetconnector.com/"
|
||||
|
||||
#: google-sheet-connector.php:171
|
||||
msgid "Get Support"
|
||||
msgstr "Получить поддержку"
|
||||
|
||||
#: google-sheet-connector.php:171 includes/pages/admin-footer.php:34
|
||||
msgid "Support"
|
||||
msgstr "Поддержка"
|
||||
|
||||
#: google-sheet-connector.php:288 google-sheet-connector.php:289
|
||||
#: google-sheet-connector.php:397 includes/class-gs-service.php:545
|
||||
msgid "Google Sheets"
|
||||
msgstr "Google Таблицы"
|
||||
|
||||
#: includes/class-gs-service.php:797
|
||||
msgid "( Fetch your sheets automatically using PRO )"
|
||||
msgstr "( Автоматически получайте ваши листы с помощью PRO )"
|
||||
|
||||
#: google-sheet-connector.php:399
|
||||
msgid "* Ensure that you enable the checkbox for each of these services."
|
||||
msgstr "* Убедитесь, что вы включили флажок для каждой из этих служб."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:35
|
||||
msgid "1) Enable debug by adding following in your wp-config.php file before /* That’s all, stop editing! Happy blogging."
|
||||
msgstr "1) Включите отладку, добавив следующее в ваш файл wp-config.php перед /* Это все, прекратите редактирование! Удачного блоггинга."
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:46
|
||||
msgid "10-day, Money-back Guarantee"
|
||||
msgstr "10-дневная гарантия возврата денег"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:38
|
||||
msgid "2) Check the log that is created by CF7 google sheet. For that click “View” from goggle sheet integration page. Let us know if there is any error we will assist you."
|
||||
msgstr "2) Проверьте журнал, который создается CF7 Google Sheets. Для этого нажмите «Просмотреть» на странице интеграции Google Sheets. Дайте нам знать, если есть какая-либо ошибка, мы поможем вам."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:39
|
||||
msgid "3) Check what other CF7 extension you are using. Deactivate one by one and check if there is any conflict."
|
||||
msgstr "3) Проверьте, какие другие расширения CF7 вы используете. Деактивируйте их одно за другим и проверьте, есть ли конфликты."
|
||||
|
||||
#: includes/class-gs-service.php:747
|
||||
msgid ""
|
||||
"<strong>Authentication Required:</strong> \n"
|
||||
" You must <a href=\"admin.php?page=wpcf7-google-sheet-config&tab=integration\" target=\"_blank\">Authenticate using your Google Account</a> along with Google Drive and Google Sheets Permissions in order to enable the settings for configuration."
|
||||
msgstr ""
|
||||
"<strong>Требуется аутентификация:</strong> \n"
|
||||
" Вы должны <a href=\"admin.php?page=wpcf7-google-sheet-config&tab=integration\" target=\"_blank\">Аутентифицироваться с помощью вашей учетной записи Google</a> вместе с разрешениями Google Drive и Google Sheets, чтобы включить настройки для конфигурации."
|
||||
|
||||
#: includes/pages/multisheet-sheets-connection.php:7
|
||||
msgid "Add Feed"
|
||||
msgstr "Добавить источник"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:43
|
||||
msgid "Add Special Mail Tags"
|
||||
msgstr "Добавить специальные почтовые теги"
|
||||
|
||||
#: includes/pages/gs-role-settings.php:15
|
||||
#: includes/pages/gs-role-settings.php:53
|
||||
msgid "Administrator"
|
||||
msgstr "Администратор"
|
||||
|
||||
#: google-sheet-connector.php:777
|
||||
msgid "Affiliate Program"
|
||||
msgstr "Партнёрская программа"
|
||||
|
||||
#: google-sheet-connector.php:460
|
||||
msgid "Also,"
|
||||
msgstr "Также,"
|
||||
|
||||
#: google-sheet-connector.php:463
|
||||
msgid "and if it displays \"GSheetConnector for WP Contact Forms\" under Third-party apps with account access then remove it."
|
||||
msgstr "и если под \"Приложениями третьих сторон с доступом к учетной записи\" отображается \"GSheetConnector для WP Contact Forms\", то удалите его."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:37
|
||||
msgid "And then try to activate the plugin again. This will create a debug.log under wp-content folder. Check for cf7 google sheet connector error if so send us the file at support@westerndeal.com"
|
||||
msgstr "И затем попробуйте снова активировать плагин. Это создаст файл debug.log в папке wp-content. Проверьте наличие ошибки соединителя Google Sheets для CF7, если она есть, отправьте нам файл на support@westerndeal.com"
|
||||
|
||||
#: google-sheet-connector.php:390
|
||||
msgid "Authenticate with your Google account, follow these steps:"
|
||||
msgstr "Аутентифицируйтесь с помощью вашей учетной записи Google, выполните следующие шаги:"
|
||||
|
||||
#: google-sheet-connector.php:660
|
||||
msgid "Auto Fetch Sheets and Integration"
|
||||
msgstr "Авто получение листов и интеграция"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:27
|
||||
msgid "Automated Sheet Name & Tab Name"
|
||||
msgstr "Автоматизированное имя листа и имя вкладки"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:42
|
||||
msgid "Automatic Updates"
|
||||
msgstr "Автоматические обновления"
|
||||
|
||||
#: includes/pages/gs-beta-version.php:8
|
||||
msgid "Beta Opt-in"
|
||||
msgstr "Бета-опция"
|
||||
|
||||
#: includes/pages/google-sheet-settings.php:75
|
||||
msgid "Beta Version"
|
||||
msgstr "Бета-версия"
|
||||
|
||||
#: includes/pages/pro-popup.php:24 includes/pages/pro-popup.php:58
|
||||
msgid "Bonus: GSheetConnector for CF7 Lite users will get <strong>Special Discounts</strong> for unlimited site licence, automatically applied at checkout."
|
||||
msgstr "Бонус: пользователи GSheetConnector для CF7 Lite получат <strong>Специальные скидки</strong> на неограниченную лицензию сайта, автоматически применяемые при оформлении заказа."
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:58
|
||||
msgid "Buy Now - $39.00"
|
||||
msgstr "Купить сейчас - $39.00"
|
||||
|
||||
#: google-sheet-connector.php:347
|
||||
msgid "CF7 - Google Sheet Integration"
|
||||
msgstr "CF7 - Интеграция с Google Sheet"
|
||||
|
||||
#: includes/pages/google-sheet-settings.php:74
|
||||
msgid "CF7 Database"
|
||||
msgstr "База данных CF7"
|
||||
|
||||
#: includes/pages/gs-beta-version.php:6
|
||||
msgid "CF7 Google Sheet Beta Opt-in"
|
||||
msgstr "Бета-опция CF7 Google Sheet"
|
||||
|
||||
#: google-sheet-connector.php:380
|
||||
msgid "Automatic integration allows you to connect Contact Forms with Google Sheets using built-in Google API configuration. By authorizing your Google account, the plugin will handle API setup and authentication automatically, enabling seamless form data sync. Learn more in the documentation"
|
||||
msgstr "Автоматическая интеграция позволяет подключать контактные формы к Google Sheets с помощью встроенной настройки Google API. Авторизовав свою учетную запись Google, плагин автоматически настроит API и аутентификацию, обеспечивая бесшовную синхронизацию данных формы. Узнайте больше в документации"
|
||||
|
||||
#: google-sheet-connector.php:646
|
||||
msgid "CF7 Google Sheet Connector Pro - Amazing Key Features"
|
||||
msgstr "CF7 Google Sheet Connector Pro - Удивительные ключевые функции"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:20
|
||||
msgid "CF7 Google Sheet Connector PRO Features"
|
||||
msgstr "PRO функции соединителя CF7 Google Sheet"
|
||||
|
||||
#: includes/pages/gs-cf7-logs.php:6
|
||||
msgid "CF7 Google Sheet Database Settings"
|
||||
msgstr "Настройки базы данных CF7 Google Sheet"
|
||||
|
||||
#: includes/pages/gs-role-settings.php:7
|
||||
msgid "CF7 Google Sheet Roles Settings"
|
||||
msgstr "Настройки ролей CF7 Google Sheets"
|
||||
|
||||
#: google-sheet-connector.php:348
|
||||
msgid "Choose your Google API Setting from the dropdown. You can select Use Existing Client/Secret Key (Auto Google API Configuration) or Use Manual Client/Secret Key (Use Your Google API Configuration - Pro Version) or Use Service Account (Recommended- Pro Version) . After saving, the related integration settings will appear, and you can complete the setup."
|
||||
msgstr "Выберите настройки Google API из выпадающего списка. Вы можете выбрать Использовать существующий клиент/секретный ключ (Автонастройка Google API) или Использовать ручной клиент/секретный ключ (Используйте вашу настройку Google API - версия Pro) или Использовать сервисный аккаунт (Рекомендуется - версия Pro). После сохранения появятся соответствующие настройки интеграции, и вы сможете завершить настройку."
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:26
|
||||
msgid "Click & Fetch Sheet Automated"
|
||||
msgstr "Нажмите и получите автоматизированный лист"
|
||||
|
||||
#: google-sheet-connector.php:462
|
||||
msgid "Click Here "
|
||||
msgstr "Нажмите здесь "
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:9
|
||||
msgid "Click Here Demo"
|
||||
msgstr "Нажмите здесь для демонстрации"
|
||||
|
||||
#: google-sheet-connector.php:442
|
||||
msgid "Click here to Save Authentication Code"
|
||||
msgstr "Нажмите здесь, чтобы сохранить код аутентификации"
|
||||
|
||||
#: google-sheet-connector.php:425
|
||||
msgid "Click on Sign in with Google button"
|
||||
msgstr "Нажмите на кнопку Войти с помощью Google"
|
||||
|
||||
#: google-sheet-connector.php:393
|
||||
msgid "Click on the \"Sign In With Google\" button."
|
||||
msgstr "Нажмите на кнопку \"Войти с помощью Google\"."
|
||||
|
||||
#: includes/pages/gs-miscellaneous-features.php:39
|
||||
msgid "Coloring of header, odd, even rows"
|
||||
msgstr "Окрашивание заголовка, нечетных и четных строк"
|
||||
|
||||
#: google-sheet-connector.php:647
|
||||
msgid "Common Features of GSheetConnector Pro Plugins."
|
||||
msgstr "Общие функции плагинов GSheetConnector Pro."
|
||||
|
||||
#: google-sheet-connector.php:730
|
||||
msgid "Compatibility with Contact Form 7 Third-Party Plugins"
|
||||
msgstr "Совместимость с плагинами третьих сторон для Contact Form 7"
|
||||
|
||||
#: includes/pages/gs-conditional-logic.php:4
|
||||
msgid "Conditional Logic "
|
||||
msgstr "Условная логика "
|
||||
|
||||
#. Description of the plugin
|
||||
#: google-sheet-connector.php
|
||||
msgid "Connect Contact Form 7 to Google Sheets and send form submissions to Google Sheets in a Real-Time"
|
||||
msgstr "Подключите Contact Form 7 к Google Sheets и отправляйте отправки форм в Google Sheets в реальном времени"
|
||||
|
||||
#: google-sheet-connector.php:480
|
||||
msgid "Connected Email Account"
|
||||
msgstr "Подключенный аккаунт электронной почты"
|
||||
|
||||
#: includes/pages/cf7gs-dashboard-widget.php:21
|
||||
msgid "Contact Forms (CF7) connected with Google Sheets."
|
||||
msgstr "Контактные формы (CF7), подключенные к Google Sheets."
|
||||
|
||||
#: includes/pages/gs-cf7-logs.php:21
|
||||
msgid "Contact Forms List"
|
||||
msgstr "Список контактных форм"
|
||||
|
||||
#: includes/pages/gs-integrate-info.php:31
|
||||
msgid "Copy Error Log to Clipboard"
|
||||
msgstr "Скопировать журнал ошибок в буфер обмена"
|
||||
|
||||
#: google-sheet-connector.php:579
|
||||
msgid "Copy Logs"
|
||||
msgstr "Копировать логи"
|
||||
|
||||
#: includes/pages/gs-integrate-info.php:15
|
||||
msgid "Copy System Info to Clipboard"
|
||||
msgstr "Скопировать информацию о системе в буфер обмена"
|
||||
|
||||
#: google-sheet-connector.php:414
|
||||
msgid "Currently Active"
|
||||
msgstr "В настоящее время активно"
|
||||
|
||||
#: includes/pages/gs-custom-mail-tags.php:5
|
||||
msgid "Custom Mail Tags "
|
||||
msgstr "Пользовательские почтовые теги "
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:44
|
||||
msgid "Custom Ordering"
|
||||
msgstr "Пользовательский порядок"
|
||||
|
||||
#: includes/pages/gs-custom-ordering.php:5
|
||||
msgid "Custom Ordering - "
|
||||
msgstr "Пользовательский порядок - "
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:47
|
||||
msgid "Custom tags can be Add"
|
||||
msgstr "Пользовательские теги могут быть добавлены"
|
||||
|
||||
#: includes/pages/google-sheet-settings.php:60
|
||||
msgid "DASHBOARD"
|
||||
msgstr "ПАНЕЛЬ УПРАВЛЕНИЯ"
|
||||
|
||||
#: google-sheet-connector.php:497
|
||||
msgid "Debug Log"
|
||||
msgstr "Журнал отладки"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:36
|
||||
msgid "define(‘WP_DEBUG’, true); define(‘WP_DEBUG_LOG’, true); define(‘SCRIPT_DEBUG’, true); define(‘SAVEQUERIES’, true);"
|
||||
msgstr "define(‘WP_DEBUG’, true); define(‘WP_DEBUG_LOG’, true); define(‘SCRIPT_DEBUG’, true); define(‘SAVEQUERIES’, true);"
|
||||
|
||||
#: google-sheet-connector.php:771
|
||||
msgid "Direct help from our qualified support team"
|
||||
msgstr "Прямая помощь от нашей квалифицированной команды поддержки"
|
||||
|
||||
#: google-sheet-connector.php:170 includes/pages/admin-footer.php:35
|
||||
msgid "Docs"
|
||||
msgstr "Документы"
|
||||
|
||||
#: includes/pages/gs-beta-version.php:16
|
||||
msgid "Enable Beta Version"
|
||||
msgstr "Включить бета-версию"
|
||||
|
||||
#: includes/pages/gs-cf7-logs.php:7
|
||||
msgid "Enable/Disable CF7 Database Settings"
|
||||
msgstr "Включить/Отключить настройки базы данных CF7"
|
||||
|
||||
#: includes/pages/gs-integrate-info.php:30
|
||||
msgid "enabled, errors are stored in a log file. Here you can find the last 100 lines in reversed order so that you or the GSheetConnector support team can view it easily. The file cannot be edited here."
|
||||
msgstr "включен, ошибки сохраняются в файле журнала. Здесь вы можете найти последние 100 строк в обратном порядке, чтобы вы или команда поддержки GSheetConnector могли легко их просмотреть. Файл нельзя редактировать здесь."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:24
|
||||
msgid "Enter Google Sheet name and Google Sheet tab name inside the Google Sheet tab."
|
||||
msgstr "Введите имя Google Sheet и имя вкладки Google Sheet внутри вкладки Google Sheet."
|
||||
|
||||
#: includes/pages/gs-integrate-info.php:28
|
||||
msgid "Error Log"
|
||||
msgstr "Журнал ошибок"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:48
|
||||
msgid "Excellent Priority Support"
|
||||
msgstr "Отличная приоритетная поддержка"
|
||||
|
||||
#: includes/pages/gs-field-list.php:5
|
||||
msgid "Field List - "
|
||||
msgstr "Список полей - "
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:34
|
||||
msgid "Following are few of the points which will help to debug the issue."
|
||||
msgstr "Следующие несколько пунктов помогут вам отладить проблему."
|
||||
|
||||
#: includes/pages/admin-footer.php:36
|
||||
msgid "Free Plugins"
|
||||
msgstr "Бесплатные Плагины"
|
||||
|
||||
#: includes/pages/gs-miscellaneous-features.php:21
|
||||
msgid "Freeze First Header Row."
|
||||
msgstr "Закрепить первую строку заголовка."
|
||||
|
||||
#: includes/pages/gs-miscellaneous-features.php:13
|
||||
msgid "Freeze Header Row"
|
||||
msgstr "Закрепить строку заголовка"
|
||||
|
||||
#: google-sheet-connector.php:981
|
||||
msgid "Get CF7 Google Sheet Pro"
|
||||
msgstr "Получить CF7 Google Sheet Pro"
|
||||
|
||||
#: google-sheet-connector.php:654
|
||||
msgid "Get spreadsheet and Worksheet list directly to your contact form’s google sheet settings with one-click authentication."
|
||||
msgstr "Получите список таблиц и листов непосредственно в настройках Google Sheet вашей контактной формы с помощью аутентификации в один клик."
|
||||
|
||||
#: includes/pages/gs-beta-version.php:17
|
||||
msgid "Get updates for pre-release versions"
|
||||
msgstr "Получать обновления для предварительных версий"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:22
|
||||
msgid "Go to the Current Working Contact Form7 and edit it."
|
||||
msgstr "Перейдите к текущей рабочей контактной форме 7 и отредактируйте ее."
|
||||
|
||||
#: includes/class-gs-service.php:805
|
||||
msgid "Go to your google account and click on\"Google apps\" icon and than click \"Sheets\". Select the name of the appropriate sheet you want to link your contact form or create new sheet."
|
||||
msgstr "Перейдите в свою учетную запись Google и нажмите на иконку \"Google приложения\", затем нажмите \"Sheets\". Выберите имя соответствующего листа, который вы хотите связать с вашей контактной формой, или создайте новый лист."
|
||||
|
||||
#: google-sheet-connector.php:411
|
||||
msgid "Google Access Code"
|
||||
msgstr "Код доступа Google"
|
||||
|
||||
#: google-sheet-connector.php:396
|
||||
msgid "Google Drive"
|
||||
msgstr "Google Диск"
|
||||
|
||||
#: google-sheet-connector.php:273
|
||||
msgid "Google Sheet Connector Add-on requires Contact Form 7 plugin to be installed and activated."
|
||||
msgstr "Дополнение Google Sheet Connector требует, чтобы плагин Contact Form 7 был установлен и активирован."
|
||||
|
||||
#: includes/class-gs-service.php:808
|
||||
msgid "Google Sheet ID"
|
||||
msgstr "ID Google Sheet"
|
||||
|
||||
#: google-sheet-connector.php:378
|
||||
msgid "Google Sheet Integration - Use Existing Client/Secret Key (Auto Google API Configuration)"
|
||||
msgstr "Интеграция с Google Sheet - Использовать существующий клиент/секретный ключ (автоматическая настройка Google API)"
|
||||
|
||||
#: includes/class-gs-service.php:800
|
||||
msgid "Google Sheet Name"
|
||||
msgstr "Имя Google Sheet"
|
||||
|
||||
#: includes/class-gs-service.php:797
|
||||
msgid "Google Sheet Settings"
|
||||
msgstr "Настройки Google Sheet"
|
||||
|
||||
#: includes/class-gs-service.php:814
|
||||
msgid "Google Sheet Tab Name"
|
||||
msgstr "Название вкладки Google Таблицы"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:24
|
||||
msgid "Google sheets API (Up-to date )"
|
||||
msgstr "API Google Sheets (Актуально)"
|
||||
|
||||
#: google-sheet-connector.php:667
|
||||
msgid "Google Sheets API Up to date"
|
||||
msgstr "API Google Sheets обновлен"
|
||||
|
||||
#: includes/class-gs-service.php:820
|
||||
msgid "Google Tab ID"
|
||||
msgstr "ID вкладки Google"
|
||||
|
||||
#: google-sheet-connector.php:394
|
||||
msgid "Grant permissions for the following:"
|
||||
msgstr "Предоставьте разрешения для следующих:"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
#: google-sheet-connector.php includes/pages/google-sheet-settings.php:48
|
||||
msgid "GSheetConnector for CF7"
|
||||
msgstr "GSheetConnector для CF7"
|
||||
|
||||
#: includes/pages/pro-popup.php:9 includes/pages/pro-popup.php:43
|
||||
msgid "GSheetConnector for CF7 PRO Features"
|
||||
msgstr "GSheetConnector для функций CF7 PRO"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:45
|
||||
msgid "How do I get the Google Access Code required in step 3 of Installation?"
|
||||
msgstr "Как получить код доступа Google, необходимый на шаге 3 установки?"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:19
|
||||
msgid "How to configure your Spreadsheet with CF7 to Spreadsheet plugin?"
|
||||
msgstr "Как настроить вашу таблицу с плагином CF7 к таблице?"
|
||||
|
||||
#: includes/pages/gs-integrate-info.php:30
|
||||
msgid "If you have"
|
||||
msgstr "Если у вас есть"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:45
|
||||
msgid "Image / PDF Attachment Link"
|
||||
msgstr "Ссылка на изображение / PDF-вложение"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:57
|
||||
msgid "In a popup Google will ask you to authorize the plugin to connect to your Google Sheets. Authorize it – you may have to log in to your Google account if you aren’t already logged in."
|
||||
msgstr "В всплывающем окне Google попросит вас авторизовать плагин для подключения к вашим Google Sheets. Авторизуйте его – вам, возможно, придется войти в свою учетную запись Google, если вы еще не вошли."
|
||||
|
||||
#: google-sheet-connector.php:677
|
||||
msgid "In the Google sheets tab, provide column names in row 1. The first column should be “date” for each."
|
||||
msgstr "В вкладке Google Sheets укажите имена столбцов в строке 1. Первый столбец должен быть \"дата\" для каждого."
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:30
|
||||
msgid "Latest WordPress & PHP Support"
|
||||
msgstr "Поддержка последних версий WordPress и PHP"
|
||||
|
||||
#: includes/pages/admin-footer.php:32
|
||||
msgid "Made with ♥ by the GSheetConnector Team"
|
||||
msgstr "Сделано с ♥ командой GSheetConnector"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:28
|
||||
msgid "Manually Adding Sheet Name & Tab Name"
|
||||
msgstr "Ручное добавление имени листа и имени вкладки"
|
||||
|
||||
#: google-sheet-connector.php:676
|
||||
msgid "Map Contact Form Mail Tags to GSheet Columns"
|
||||
msgstr "Сопоставьте теги почты контактной формы со столбцами GSheet"
|
||||
|
||||
#: includes/pages/gs-miscellaneous-features.php:4
|
||||
msgid "Miscellaneous Features - "
|
||||
msgstr "Разные функции - "
|
||||
|
||||
#: google-sheet-connector.php:737
|
||||
msgid "Multi Languages"
|
||||
msgstr "Многоязычность"
|
||||
|
||||
#: includes/class-gs-service.php:782
|
||||
msgid "Multi Sheet Connection"
|
||||
msgstr "Подключение к нескольким листам"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:40
|
||||
msgid "Multiple Forms to Sheets"
|
||||
msgstr "Несколько форм в листы"
|
||||
|
||||
#: google-sheet-connector.php:713
|
||||
msgid "Next steps…"
|
||||
msgstr "Следующие шаги…"
|
||||
|
||||
#: includes/pages/cf7gs-dashboard-widget.php:42
|
||||
msgid "No Contact Forms (CF7) is connected with Google Sheets."
|
||||
msgstr "Нет подключенных контактных форм (CF7) к Google Sheets."
|
||||
|
||||
#: includes/class-gs-service.php:1059
|
||||
msgid "No custom mail tags available."
|
||||
msgstr "Нет доступных пользовательских почтовых тегов."
|
||||
|
||||
#: google-sheet-connector.php:595
|
||||
msgid "No log file exists as no errors are generated"
|
||||
msgstr "Журнал не существует, так как ошибок не было"
|
||||
|
||||
#: includes/class-gs-service.php:942
|
||||
msgid "No mail tags available."
|
||||
msgstr "Нет доступных почтовых тегов."
|
||||
|
||||
#: includes/pages/gs-custom-ordering.php:9
|
||||
msgid "Not showing correct header name ? Un-select and select the fields checkbox again. It happens due to various reasons like change in field/mail tag name."
|
||||
msgstr "Не отображается правильное имя заголовка? Снимите и снова выберите флажок полей. Это происходит по различным причинам, таким как изменение имени поля/почтового тега."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:61
|
||||
msgid "Now you can paste this code back on the <code>Admin Panel > Contact form 7 > Google Sheets</code> screen."
|
||||
msgstr "Теперь вы можете вставить этот код обратно на <code>Админ-панель > Контактная форма 7 > Google Sheets</code> экран."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:58
|
||||
msgid "On the next screen, you should receive the Access Code. Copy it."
|
||||
msgstr "На следующем экране вы должны получить код доступа. Скопируйте его."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:50
|
||||
msgid "On the <code>Admin Panel > Contact form 7 > Google Sheets</code> screen, click the “Get Code” button."
|
||||
msgstr "На <code>Админ-панель > Контактная форма 7 > Google Sheets</code> экране нажмите кнопку «Получить код»."
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:25
|
||||
msgid "One Click Authentication"
|
||||
msgstr "Аутентификация в один клик"
|
||||
|
||||
#: google-sheet-connector.php:668
|
||||
msgid "One of the features you get with the latest API-V4 is the ability to format content in Google Sheets. when using our addon plugins."
|
||||
msgstr "Одна из функций, которую вы получаете с последним API-V4, - это возможность форматировать содержимое в Google Sheets при использовании наших дополнительных плагинов."
|
||||
|
||||
#: google-sheet-connector.php:653
|
||||
msgid "One-Click Authentication"
|
||||
msgstr "Аутентификация в один клик"
|
||||
|
||||
#: google-sheet-connector.php:763
|
||||
msgid "Online Documentation"
|
||||
msgstr "Онлайн документация"
|
||||
|
||||
#: includes/class-gs-service.php:817
|
||||
msgid "Open your Google Sheet with which you want to link your contact form . You will notice a tab names at bottom of the screen. Copy the tab name where you want to have an entry of contact form."
|
||||
msgstr "Откройте вашу Google Таблицу, с которой вы хотите связать вашу контактную форму. Вы заметите имена вкладок внизу экрана. Скопируйте имя вкладки, в которую вы хотите добавить запись контактной формы."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:12
|
||||
#: includes/pages/gs-integrate-faq.php:81
|
||||
msgid "Please double-check those items and hopefully getting them right will fix the issue."
|
||||
msgstr "Пожалуйста, дважды проверьте эти элементы, и, надеюсь, их правильное указание решит проблему."
|
||||
|
||||
#: includes/pages/gs-beta-version.php:6 includes/pages/gs-cf7-logs.php:6
|
||||
#: includes/pages/gs-role-settings.php:7
|
||||
msgid "PRO"
|
||||
msgstr "ПРО"
|
||||
|
||||
#: includes/pages/gs-conditional-logic.php:4
|
||||
#: includes/pages/gs-custom-mail-tags.php:5
|
||||
msgid "Pro "
|
||||
msgstr "Pro "
|
||||
|
||||
#: google-sheet-connector.php:757
|
||||
msgid "Product Support"
|
||||
msgstr "Поддержка продукта"
|
||||
|
||||
#: google-sheet-connector.php:683 includes/pages/gs-integrate-demo.php:29
|
||||
msgid "Quick Configuration"
|
||||
msgstr "Быстрая настройка"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:41
|
||||
msgid "Role Management"
|
||||
msgstr "Управление ролями"
|
||||
|
||||
#: includes/pages/google-sheet-settings.php:73
|
||||
msgid "Role Settings"
|
||||
msgstr "Настройки ролей"
|
||||
|
||||
#: includes/pages/gs-role-settings.php:10
|
||||
msgid "Roles that can access Google Sheet Page"
|
||||
msgstr "Роли, которые могут получить доступ к странице Google Sheets"
|
||||
|
||||
#: includes/pages/gs-role-settings.php:48
|
||||
msgid "Roles that can access Google Sheet Tab at Contact Form"
|
||||
msgstr "Роли, которые могут получить доступ к вкладке Google Sheet в контактной форме"
|
||||
|
||||
#: google-sheet-connector.php:700
|
||||
msgid "See Demo"
|
||||
msgstr "Смотреть демо"
|
||||
|
||||
#: includes/pages/gs-miscellaneous-features.php:51
|
||||
msgid "Sheet Sorting"
|
||||
msgstr "Сортировка листа"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:16
|
||||
msgid "Sheet URL (Click Here to view Sheet with submitted data.)"
|
||||
msgstr "URL таблицы (Нажмите здесь, чтобы просмотреть таблицу с отправленными данными.)"
|
||||
|
||||
#: includes/pages/gs-role-settings.php:45
|
||||
#: includes/pages/gs-role-settings.php:83
|
||||
msgid "Shop manager"
|
||||
msgstr "Менеджер магазина"
|
||||
|
||||
#: includes/class-gs-service.php:777
|
||||
msgid "Single Sheet Connection"
|
||||
msgstr "Подключение к одному листу"
|
||||
|
||||
#: google-sheet-connector.php:455
|
||||
msgid "Something went wrong! It looks you have not given the permission of Google Drive and Google Sheets from your google account.Please Deactivate Auth and Re-Authenticate again with the permissions."
|
||||
msgstr "Что-то пошло не так! Похоже, вы не предоставили разрешения для Google Диска и Google Таблиц из вашего аккаунта Google. Пожалуйста, деактивируйте аутентификацию и повторно аутентифицируйтесь с разрешениями."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:7 includes/pages/gs-integrate-faq.php:75
|
||||
msgid "Sometimes it can take a while of spinning before it goes through. But if the entries never show up in your Sheet then one of these things might be the reason:"
|
||||
msgstr "Иногда может потребоваться время, прежде чем данные пройдут. Но если записи никогда не появляются в вашем листе, то одной из этих причин может быть:"
|
||||
|
||||
#: includes/pages/gs-miscellaneous-features.php:58
|
||||
msgid "Sort sheet by column name."
|
||||
msgstr "Сортировать лист по имени столбца."
|
||||
|
||||
#: includes/pages/gs-special-mailtags.php:5
|
||||
msgid "Special Mail Tags - "
|
||||
msgstr "Специальные теги почты - "
|
||||
|
||||
#: includes/pages/gs-integrate-support.php:5
|
||||
msgid "Submit A Ticket"
|
||||
msgstr "Отправить тикет"
|
||||
|
||||
#: includes/pages/gs-integrate-support.php:7
|
||||
msgid "Submit a ticket"
|
||||
msgstr "Отправить тикет"
|
||||
|
||||
#: google-sheet-connector.php:690
|
||||
msgid "Support WordPress Multi-site"
|
||||
msgstr "Поддержка мультисайтов WordPress"
|
||||
|
||||
#: includes/pages/gs-integrate-demo.php:31
|
||||
msgid "Support WordPress multisite"
|
||||
msgstr "Поддержка мультисайтов WordPress"
|
||||
|
||||
#: google-sheet-connector.php:745
|
||||
msgid "Support Wordpress multisites"
|
||||
msgstr "Поддержка мультисайтов WordPress"
|
||||
|
||||
#: google-sheet-connector.php:721
|
||||
msgid "Sync Orders, Order wise data and much more..."
|
||||
msgstr "Синхронизация заказов, данные по заказам и многое другое..."
|
||||
|
||||
#: includes/pages/gs-integrate-info.php:14
|
||||
msgid "System Info"
|
||||
msgstr "Информация о системе"
|
||||
|
||||
#: includes/pages/google-sheet-settings.php:78
|
||||
msgid "System Status"
|
||||
msgstr "Статус Системы"
|
||||
|
||||
#: google-sheet-connector.php:684 google-sheet-connector.php:691
|
||||
msgid "The Configuration of the form to the GSheet is very easy. Just follow the steps provided by the plugin and you will get data on the GSheet."
|
||||
msgstr "Настройка формы для GSheet очень проста. Просто следуйте шагам, предоставленным плагином, и вы получите данные в GSheet."
|
||||
|
||||
#: includes/class-gs-service.php:1078
|
||||
msgid "The Enable Conditional Logic option in the field settings allows you to create rules to dynamically display or hide the submission to Google Sheet based on values."
|
||||
msgstr "Опция Включить условную логику в настройках поля позволяет создавать правила для динамического отображения или скрытия отправки в Google Sheet на основе значений."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:23
|
||||
msgid "Then click on the Google Sheet tab."
|
||||
msgstr "Затем нажмите на вкладку Google Sheet."
|
||||
|
||||
#: includes/class-gs-utility.php:95
|
||||
msgid "There’s something wrong with your code…"
|
||||
msgstr "Что-то не так с вашим кодом…"
|
||||
|
||||
#: includes/pages/pro-popup.php:12 includes/pages/pro-popup.php:46
|
||||
msgid "This features is available in the PRO version of the plugin. To <strong>Enable the options Upgrade to the PRO</strong> version to unlock all these awesome features."
|
||||
msgstr "Эта функция доступна в PRO-версии плагина. Чтобы <strong>включить опции, обновите до PRO</strong> версии, чтобы разблокировать все эти потрясающие функции."
|
||||
|
||||
#: includes/pages/gs-integrate-support.php:12
|
||||
msgid "This is the place to go to reference different aspects of the theme. Our online documentaiton is an incredible resource for learning the ins and outs."
|
||||
msgstr "Это место, где можно ссылаться на различные аспекты темы. Наша онлайн-документация является невероятным ресурсом для изучения всех нюансов."
|
||||
|
||||
#: google-sheet-connector.php:738
|
||||
msgid "This plugin supports multi-languages as well!"
|
||||
msgstr "Этот плагин также поддерживает многоязычность!"
|
||||
|
||||
#: google-sheet-connector.php:405
|
||||
msgid "This will allow the integration to access your Google Drive and Google Sheets."
|
||||
msgstr "Это позволит интеграции получить доступ к вашему Google Диску и Google Таблицам."
|
||||
|
||||
#: google-sheet-connector.php:770
|
||||
msgid "Ticket Support"
|
||||
msgstr "Поддержка по тикетам"
|
||||
|
||||
#: includes/pages/gs-beta-version.php:9
|
||||
msgid "Turn on the Beta Version feature to get notified about new beta releases. The beta version will not install automatically and you always have the option to ignore it."
|
||||
msgstr "Включите функцию бета-версии, чтобы получать уведомления о новых бета-релизах. Бета-версия не будет устанавливаться автоматически, и у вас всегда есть возможность игнорировать её."
|
||||
|
||||
#: google-sheet-connector.php:764
|
||||
msgid "Understand all the capabilities of Contact Form 7 - GSheetConnector for CF7"
|
||||
msgstr "Поймите все возможности Contact Form 7 - GSheetConnector для CF7"
|
||||
|
||||
#: google-sheet-connector.php:720
|
||||
msgid "Upgrade to PRO"
|
||||
msgstr "Обновить до PRO"
|
||||
|
||||
#: google-sheet-connector.php:356
|
||||
msgid "Use Existing Client/Secret Key (Auto Google API Configuration)"
|
||||
msgstr "Использовать существующий клиент/секретный ключ (Автонастройка Google API)"
|
||||
|
||||
#: google-sheet-connector.php:359
|
||||
msgid "Use Manual Client/Secret Key (Use Your Google API Configuration) (Upgrade To PRO)"
|
||||
msgstr "Использовать ручной клиент/секретный ключ (Используйте вашу настройку Google API) (Обновите до PRO)"
|
||||
|
||||
#: google-sheet-connector.php:362
|
||||
msgid "Use Service Account (Recommended) (Upgrade To PRO)"
|
||||
msgstr "Использовать сервисный аккаунт (рекомендуется) (обновление до PRO)"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:73
|
||||
msgid "Value is not Saving in Google Sheet and Email Works."
|
||||
msgstr "Значение не сохраняется в Google Sheets, а электронная почта работает."
|
||||
|
||||
#: includes/pages/google-sheet-settings.php:48
|
||||
msgid "Version :"
|
||||
msgstr "Версия :"
|
||||
|
||||
#: google-sheet-connector.php:170
|
||||
msgid "View Documentation"
|
||||
msgstr "Просмотреть документацию"
|
||||
|
||||
#: google-sheet-connector.php:513
|
||||
msgid "We do not store any of the data from your Google account on our servers, everything is processed & stored on your server. We take your privacy extremely seriously and ensure it is never misused."
|
||||
msgstr "Мы не храним никаких данных из вашего аккаунта Google на наших серверах, все обрабатывается и хранится на вашем сервере. Мы очень серьезно относимся к вашей конфиденциальности и гарантируем, что она никогда не будет использована неправомерно."
|
||||
|
||||
#: includes/pages/gs-integrate-support.php:6
|
||||
msgid "We offer excellent support through our advanced ticket system. Make sure to register your purchase first to access our support services and other resources."
|
||||
msgstr "Мы предлагаем отличную поддержку через нашу продвинутую систему тикетов. Убедитесь, что вы сначала зарегистрировали свою покупку, чтобы получить доступ к нашим услугам поддержки и другим ресурсам."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:32
|
||||
msgid "Why I am Getting Error 500 After Installing Plugin."
|
||||
msgstr "Почему я получаю ошибку 500 после установки плагина."
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:3
|
||||
msgid "Why isn’t the data send to spreadsheet? CF7 Submit is just Spinning."
|
||||
msgstr "Почему данные не отправляются в таблицу? CF7 отправка просто крутится."
|
||||
|
||||
#: google-sheet-connector.php:746
|
||||
msgid ""
|
||||
"With the use of a Multisite, you’ll also have a new level of user-available: the Super\n"
|
||||
" Admin."
|
||||
msgstr ""
|
||||
"При использовании мультисайта у вас также будет новый уровень доступных пользователей: Супер\n"
|
||||
" Администратор."
|
||||
|
||||
#: includes/pages/gs-integrate-info.php:30
|
||||
msgid "WP_DEBUG_LOG"
|
||||
msgstr "WP_DEBUG_LOG"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:8 includes/pages/gs-integrate-faq.php:77
|
||||
msgid "Wrong access code ( Check debug log )"
|
||||
msgstr "Неверный код доступа (проверьте журнал отладки)"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:79
|
||||
msgid "Wrong Column name mapping ( Column names are the contact form mail-tags. It cannot have underscore or any special characters )"
|
||||
msgstr "Неправильное сопоставление имен столбцов (имена столбцов – это теги почты контактной формы. Они не могут содержать подчеркивания или специальные символы)"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:10
|
||||
msgid "Wrong Column name mapping( Column names are the contact form mail-tags. It cannot have underscore or any special characters )"
|
||||
msgstr "Неверное сопоставление имен столбцов (имена столбцов - это почтовые теги контактной формы. Они не могут содержать символ подчеркивания или специальные символы)"
|
||||
|
||||
#: includes/pages/gs-integrate-faq.php:9 includes/pages/gs-integrate-faq.php:78
|
||||
msgid "Wrong Sheet name or tab name"
|
||||
msgstr "Неверное имя листа или имя вкладки"
|
||||
|
||||
#: google-sheet-connector.php:661
|
||||
msgid "You can add multiple Contact Forms of your site to multiple Google Sheets. And can add as many Google Sheets as forms."
|
||||
msgstr "Вы можете добавить несколько контактных форм вашего сайта в несколько Google Sheets. И можете добавить столько же Google Sheets, сколько форм."
|
||||
|
||||
#: includes/class-gs-service.php:811
|
||||
msgid "you can get sheet id from your sheet URL"
|
||||
msgstr "вы можете получить ID таблицы из URL вашей таблицы"
|
||||
|
||||
#: includes/class-gs-service.php:823
|
||||
msgid "you can get tab id from your sheet URL"
|
||||
msgstr "вы можете получить ID вкладки из URL вашей таблицы"
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2025-05-05 06:00:55+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":["URL \u0444\u0430\u0439\u043b\u0430 \u0431\u044b\u043b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430"],"URL Slug":["\u042f\u0440\u043b\u044b\u043a URL"],"post action\/button label\u0004Schedule":["\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..."],"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."],"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"],"The changes you made will be lost if you navigate away from this page.":["\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0439\u0434\u0435\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."],"Published":["\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\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"],"Password Protected":["\u0417\u0430\u0449\u0438\u0449\u0435\u043d\u043e \u043f\u0430\u0440\u043e\u043b\u0435\u043c"],"Public, Sticky":["\u041e\u0442\u043a\u0440\u044b\u0442\u043e, \u043f\u0440\u0438\u043b\u0435\u043f\u043b\u0435\u043d\u043e"],"Public":["\u041e\u0442\u043a\u0440\u044b\u0442\u0430\u044f"],"Private":["\u0427\u0430\u0441\u0442\u043d\u0430\u044f"],"Save Draft":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c"],"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"],"Update":["\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c"],"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"],"%1$s %2$s, %3$s at %4$s:%5$s":["%1$s %2$s, %3$s \u0432 %4$s:%5$s"],"Published on:":["\u0414\u0430\u0442\u0430:"],"Schedule for:":["\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c:"],"Publish on:":["\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c:"],"Cancel":["\u041e\u0442\u043c\u0435\u043d\u0430"],"OK":["OK"],"Publish":["\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c"]}},"comment":{"reference":"scripts\/post.js"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
return ['x-generator'=>'GlotPress/4.0.1','translation-revision-date'=>'2025-05-05 06:00:55+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'=>'Plugins - Classic Editor - Stable (latest release)','language'=>'ru','messages'=>['Editor NameClassic Editor'=>'Классический редактор','Editor NameBlock editor'=>'Редактор блоков','Editor NameClassic editor'=>'Классический редактор','Editor NameEdit (classic editor)'=>'Изменить (классический редактор)','Editor NameEdit (block editor)'=>'Изменить (редактор блоков)','Change settings'=>'Изменить настройки','Default editor for all sites'=>'Редактор по умолчанию для всех сайтов','Editor Settings'=>'Настройки редактора','Default Editor'=>'Редактор по умолчанию','Editor Nameblock editor'=>'Редактор блоков','Editor Nameclassic editor'=>'Классический редактор','Edit “%s” in the block editor'=>'Редактировать “%s” в редакторе блоков','Switch to block editor'=>'Переключиться на редактор блоков','Switch to classic editor'=>'Переключиться на классический редактор','By default the block editor is replaced with the classic editor and users cannot switch editors.'=>'По умолчанию редактор блоков будет заменен на классический редактор и пользователи не смогут выбирать редактор.','Allow site admins to change settings'=>'Разрешить администраторам сайта изменять настройки','Editor'=>'Редактор','No'=>'Нет','Yes'=>'Да','Allow users to switch editors'=>'Разрешить пользователям переключение редакторов','Default editor for all users'=>'Редактор по умолчанию для всех пользователей','https://github.com/WordPress/classic-editor/'=>'https://github.com/WordPress/classic-editor/','https://wordpress.org/plugins/classic-editor/'=>'https://ru.wordpress.org/plugins/classic-editor/','WordPress Contributors'=>'Участники разработки WordPress','Enables the WordPress classic editor and the old-style Edit Post screen with TinyMCE, Meta Boxes, etc. Supports the older plugins that extend this screen.'=>'Включает классический редактор WordPress, старый вариант экрана редактирования записей (TinyMCE, мета поля и др.). Поддерживает другие плагины расширения старого редактора.','Classic Editor'=>'Classic Editor','Edit “%s” in the classic editor'=>'Редактировать “%s” в классическом редакторе','Settings'=>'Настройки']];
|
||||
BIN
wp-content/languages/plugins/classic-editor-ru_RU.mo
Normal file
138
wp-content/languages/plugins/classic-editor-ru_RU.po
Normal file
@@ -0,0 +1,138 @@
|
||||
# Translation of Plugins - Classic Editor - Stable (latest release) in Russian
|
||||
# This file is distributed under the same license as the Plugins - Classic Editor - Stable (latest release) package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2025-05-05 06:00:55+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"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);\n"
|
||||
"X-Generator: GlotPress/4.0.1\n"
|
||||
"Language: ru\n"
|
||||
"Project-Id-Version: Plugins - Classic Editor - Stable (latest release)\n"
|
||||
|
||||
#: classic-editor.php:503
|
||||
msgctxt "Editor Name"
|
||||
msgid "Classic Editor"
|
||||
msgstr "Классический редактор"
|
||||
|
||||
#: classic-editor.php:429 classic-editor.php:507 classic-editor.php:907
|
||||
msgctxt "Editor Name"
|
||||
msgid "Block editor"
|
||||
msgstr "Редактор блоков"
|
||||
|
||||
#: classic-editor.php:425 classic-editor.php:907
|
||||
msgctxt "Editor Name"
|
||||
msgid "Classic editor"
|
||||
msgstr "Классический редактор"
|
||||
|
||||
#: classic-editor.php:860
|
||||
msgctxt "Editor Name"
|
||||
msgid "Edit (classic editor)"
|
||||
msgstr "Изменить (классический редактор)"
|
||||
|
||||
#: classic-editor.php:853
|
||||
msgctxt "Editor Name"
|
||||
msgid "Edit (block editor)"
|
||||
msgstr "Изменить (редактор блоков)"
|
||||
|
||||
#: classic-editor.php:512
|
||||
msgid "Change settings"
|
||||
msgstr "Изменить настройки"
|
||||
|
||||
#: classic-editor.php:499
|
||||
msgid "Default editor for all sites"
|
||||
msgstr "Редактор по умолчанию для всех сайтов"
|
||||
|
||||
#: classic-editor.php:495
|
||||
msgid "Editor Settings"
|
||||
msgstr "Настройки редактора"
|
||||
|
||||
#: classic-editor.php:479
|
||||
msgid "Default Editor"
|
||||
msgstr "Редактор по умолчанию"
|
||||
|
||||
#: classic-editor.php:894
|
||||
msgctxt "Editor Name"
|
||||
msgid "block editor"
|
||||
msgstr "Редактор блоков"
|
||||
|
||||
#: classic-editor.php:891
|
||||
msgctxt "Editor Name"
|
||||
msgid "classic editor"
|
||||
msgstr "Классический редактор"
|
||||
|
||||
#. translators: %s: post title
|
||||
#: classic-editor.php:855
|
||||
msgid "Edit “%s” in the block editor"
|
||||
msgstr "Редактировать “%s” в редакторе блоков"
|
||||
|
||||
#: classic-editor.php:690
|
||||
msgid "Switch to block editor"
|
||||
msgstr "Переключиться на редактор блоков"
|
||||
|
||||
#: classic-editor.php:719
|
||||
msgid "Switch to classic editor"
|
||||
msgstr "Переключиться на классический редактор"
|
||||
|
||||
#: classic-editor.php:516
|
||||
msgid "By default the block editor is replaced with the classic editor and users cannot switch editors."
|
||||
msgstr "По умолчанию редактор блоков будет заменен на классический редактор и пользователи не смогут выбирать редактор."
|
||||
|
||||
#: classic-editor.php:515
|
||||
msgid "Allow site admins to change settings"
|
||||
msgstr "Разрешить администраторам сайта изменять настройки"
|
||||
|
||||
#: classic-editor.php:671
|
||||
msgid "Editor"
|
||||
msgstr "Редактор"
|
||||
|
||||
#: classic-editor.php:453
|
||||
msgid "No"
|
||||
msgstr "Нет"
|
||||
|
||||
#: classic-editor.php:449
|
||||
msgid "Yes"
|
||||
msgstr "Да"
|
||||
|
||||
#: classic-editor.php:376
|
||||
msgid "Allow users to switch editors"
|
||||
msgstr "Разрешить пользователям переключение редакторов"
|
||||
|
||||
#: classic-editor.php:375
|
||||
msgid "Default editor for all users"
|
||||
msgstr "Редактор по умолчанию для всех пользователей"
|
||||
|
||||
#. Author URI of the plugin
|
||||
#: classic-editor.php
|
||||
msgid "https://github.com/WordPress/classic-editor/"
|
||||
msgstr "https://github.com/WordPress/classic-editor/"
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
#: classic-editor.php
|
||||
msgid "https://wordpress.org/plugins/classic-editor/"
|
||||
msgstr "https://ru.wordpress.org/plugins/classic-editor/"
|
||||
|
||||
#. Author of the plugin
|
||||
#: classic-editor.php
|
||||
msgid "WordPress Contributors"
|
||||
msgstr "Участники разработки WordPress"
|
||||
|
||||
#. Description of the plugin
|
||||
#: classic-editor.php
|
||||
msgid "Enables the WordPress classic editor and the old-style Edit Post screen with TinyMCE, Meta Boxes, etc. Supports the older plugins that extend this screen."
|
||||
msgstr "Включает классический редактор WordPress, старый вариант экрана редактирования записей (TinyMCE, мета поля и др.). Поддерживает другие плагины расширения старого редактора."
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
#: classic-editor.php
|
||||
msgid "Classic Editor"
|
||||
msgstr "Classic Editor"
|
||||
|
||||
#. translators: %s: post title
|
||||
#: classic-editor.php:862
|
||||
msgid "Edit “%s” in the classic editor"
|
||||
msgstr "Редактировать “%s” в классическом редакторе"
|
||||
|
||||
#: classic-editor.php:738
|
||||
msgid "Settings"
|
||||
msgstr "Настройки"
|
||||
BIN
wp-content/languages/plugins/cleantalk-spam-protect-ru_RU.mo
Normal file
2973
wp-content/languages/plugins/cleantalk-spam-protect-ru_RU.po
Normal file
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-09 17:37:19+0000","generator":"GlotPress\/4.0.3","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"},"Used for the class attribute value of the form element.":["\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 class \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0444\u043e\u0440\u043c\u044b."],"Used for the aria-label attribute value of the form element.":["\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 aria-label \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0444\u043e\u0440\u043c\u044b."],"Used for the name attribute value of the form element.":["\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 name \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0444\u043e\u0440\u043c\u044b."],"Used for the id attribute value of the form element.":["\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 id \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0444\u043e\u0440\u043c\u044b."],"Form attributes":["\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0444\u043e\u0440\u043c\u044b"],"Class":["\u041a\u043b\u0430\u0441\u0441"],"ID":["ID"],"Edit this contact form":["\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443"],"Select a contact form:":["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u043e\u0440\u043c\u0443 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430:"],"Name":["\u0418\u043c\u044f"],"Title":["\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a"]}},"comment":{"reference":"includes\/block-editor\/index.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-09 17:37:19+0000","generator":"GlotPress\/4.0.3","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"},"This contact form is placed in the wrong place.":["\u042d\u0442\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u0432 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435."],"Error:":["\u041e\u0448\u0438\u0431\u043a\u0430:"]}},"comment":{"reference":"includes\/js\/index.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-09 17:37:19+0000","generator":"GlotPress\/4.0.3","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"},"How to resolve?":["\u041a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c?"],"%d configuration error detected in this tab panel.":["\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 %d \u043e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0432\u043a\u043b\u0430\u0434\u043e\u043a.","\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e %d \u043e\u0448\u0438\u0431\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0432\u043a\u043b\u0430\u0434\u043e\u043a.","\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e %d \u043e\u0448\u0438\u0431\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0432\u043a\u043b\u0430\u0434\u043e\u043a."],"%d configuration error detected.":["\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 %d.","\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 %d.","\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u043e\u0448\u0438\u0431\u043e\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 %d."],"You are about to delete this contact form.\n 'Cancel' to stop, 'OK' to delete.":["\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u043e\u0440\u043c\u0443?.\n '\u041e\u0442\u043c\u0435\u043d\u0430' \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0442\u044c, '\u041e\u041a' \u0443\u0434\u0430\u043b\u0438\u0442\u044c."]}},"comment":{"reference":"admin\/includes\/js\/index.js"}}
|
||||
27
wp-content/languages/plugins/contact-form-7-ru_RU.l10n.php
Normal file
BIN
wp-content/languages/plugins/contact-form-7-ru_RU.mo
Normal file
1861
wp-content/languages/plugins/contact-form-7-ru_RU.po
Normal file
3
wp-content/languages/plugins/cyr2lat-ru_RU.l10n.php
Normal file
BIN
wp-content/languages/plugins/cyr2lat-ru_RU.mo
Normal file
334
wp-content/languages/plugins/cyr2lat-ru_RU.po
Normal file
@@ -0,0 +1,334 @@
|
||||
# Translation of Plugins - Cyr-To-Lat - Stable (latest release) in Russian
|
||||
# This file is distributed under the same license as the Plugins - Cyr-To-Lat - Stable (latest release) package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2025-05-04 05:19:41+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"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);\n"
|
||||
"X-Generator: GlotPress/4.0.1\n"
|
||||
"Language: ru\n"
|
||||
"Project-Id-Version: Plugins - Cyr-To-Lat - Stable (latest release)\n"
|
||||
|
||||
#. translators: 1: Site locale. Do not touch text in {}
|
||||
#: src/php/Settings/Tables.php:171
|
||||
msgid "Active table \"{active_table}\" does not match the current site locale: \"%1$s\". The \"%2$s\" table will be used for transliteration."
|
||||
msgstr "Активная таблица \"{active_table}\" не соответствует текущей локали сайта: \"%1$s\". Таблица \"%2$s\" будет использована для транслитерации."
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
#: cyr-to-lat.php
|
||||
msgid "https://kagg.eu/cyr-to-lat/"
|
||||
msgstr "https://kagg.eu/cyr-to-lat/"
|
||||
|
||||
#: src/php/Settings/Tables.php:98
|
||||
msgid "Chinese (China)"
|
||||
msgstr "Китайская (Китай)"
|
||||
|
||||
#: src/php/Settings/Tables.php:97
|
||||
msgid "Hebrew"
|
||||
msgstr "Иврит"
|
||||
|
||||
#: src/php/Settings/Tables.php:96
|
||||
msgid "Kazakh"
|
||||
msgstr "Казахская"
|
||||
|
||||
#: src/php/Settings/Tables.php:95
|
||||
msgid "Georgian"
|
||||
msgstr "Грузинская"
|
||||
|
||||
#: src/php/Settings/Tables.php:94
|
||||
msgid "Armenian"
|
||||
msgstr "Армянская"
|
||||
|
||||
#: src/php/Settings/Tables.php:93
|
||||
msgid "Greek"
|
||||
msgstr "Греческая"
|
||||
|
||||
#: src/php/Settings/Tables.php:92
|
||||
msgid "Serbian"
|
||||
msgstr "Сербская"
|
||||
|
||||
#: src/php/Settings/Tables.php:91
|
||||
msgid "Macedonian"
|
||||
msgstr "Македонская"
|
||||
|
||||
#: src/php/Settings/Tables.php:90
|
||||
msgid "Bulgarian"
|
||||
msgstr "Болгарская"
|
||||
|
||||
#: src/php/Settings/Tables.php:89
|
||||
msgid "Ukrainian"
|
||||
msgstr "Украинская"
|
||||
|
||||
#: src/php/Settings/Tables.php:88
|
||||
msgid "Belarusian"
|
||||
msgstr "Белорусская"
|
||||
|
||||
#: src/php/Settings/Tables.php:87
|
||||
msgid "Default"
|
||||
msgstr "По умолчанию"
|
||||
|
||||
#: src/php/Settings/Tables.php:199
|
||||
msgid "You are not allowed to perform this action."
|
||||
msgstr "Вам не разрешено выполнять это действие."
|
||||
|
||||
#: src/php/Settings/Tables.php:194
|
||||
msgid "Your session has expired. Please reload the page."
|
||||
msgstr "Ваша сессия истекла. Пожалуйста, перегрузите страницу."
|
||||
|
||||
#: src/php/Settings/SystemInfo.php:93
|
||||
msgid "Copy system info to clipboard"
|
||||
msgstr "Копировать информацию о системе в буфер обмена"
|
||||
|
||||
#: src/php/Settings/SystemInfo.php:89
|
||||
msgid "System Information"
|
||||
msgstr "Системная информация"
|
||||
|
||||
#: src/php/Settings/SystemInfo.php:69
|
||||
msgid "System info copied to clipboard."
|
||||
msgstr "Системная информация скопирована в буфер обмена."
|
||||
|
||||
#: src/php/Settings/SystemInfo.php:41
|
||||
msgid "System Info"
|
||||
msgstr "Система"
|
||||
|
||||
#. translators: 1: plugin version.
|
||||
#: src/php/Settings/PluginSettingsBase.php:232
|
||||
msgid "Version %s"
|
||||
msgstr "Версия %s"
|
||||
|
||||
#. translators: 1: plugin name, 2: wp.org review link with stars, 3: wp.org
|
||||
#. review link with text.
|
||||
#: src/php/Settings/PluginSettingsBase.php:197
|
||||
msgid "Please rate %1$s %2$s on %3$s. Thank you!"
|
||||
msgstr "Пожалуйста, оцените %1$s %2$s на %3$s. Спасибо!"
|
||||
|
||||
#: src/php/Settings/Converter.php:206
|
||||
msgid "Post Types and Statuses"
|
||||
msgstr "Типы и статусы записей"
|
||||
|
||||
#: libs/wp-background-processing/wp-background-process.php:575
|
||||
msgid "Every Minute"
|
||||
msgstr "Каждую минуту"
|
||||
|
||||
#: src/php/Settings/Tables.php:48
|
||||
msgid "Tables"
|
||||
msgstr "Таблицы"
|
||||
|
||||
#: src/php/Settings/Converter.php:257
|
||||
msgid "Upon conversion of attachments, please regenerate thumbnails."
|
||||
msgstr "После конвертации вложений, пожалуйста, пересоздайте миниатюры. "
|
||||
|
||||
#: src/php/Settings/Converter.php:248
|
||||
msgid ""
|
||||
"Also, you have to make a copy of your media files if the attachment post type is selected for\n"
|
||||
"\t\t\t\tconversion."
|
||||
msgstr "Также, вам необходимо сделать копию ваших медиафайлов, если для конвертации был выбран тип записи вложения."
|
||||
|
||||
#: src/php/Settings/Converter.php:198
|
||||
msgid "Existing <strong>product attribute</strong> slugs will <strong>NOT</strong> be converted."
|
||||
msgstr "Существующие ярлыки <strong>атрибутов товара</strong> конвертированы <strong>НЕ</strong> будут."
|
||||
|
||||
#: src/php/Settings/Converter.php:192
|
||||
msgid "Existing Slugs Conversion Settings"
|
||||
msgstr "Опции конвертации существующих ярлыков"
|
||||
|
||||
#: src/php/Settings/Converter.php:73
|
||||
msgid "Post statuses included in the conversion."
|
||||
msgstr "Статусы записей, включаемых в конвертацию."
|
||||
|
||||
#: src/php/Settings/Converter.php:69
|
||||
msgid "Post Statuses"
|
||||
msgstr "Статусы записей"
|
||||
|
||||
#: src/php/Settings/Converter.php:129
|
||||
msgid "Post types included in the conversion."
|
||||
msgstr "Типы записей, включаемые в конвертацию."
|
||||
|
||||
#: src/php/Settings/Converter.php:125
|
||||
msgid "Post Types"
|
||||
msgstr "Типы записей"
|
||||
|
||||
#: src/php/Settings/Converter.php:40
|
||||
msgid "Converter"
|
||||
msgstr "Конвертер"
|
||||
|
||||
#: src/php/Settings/Converter.php:270
|
||||
msgid "Cancel"
|
||||
msgstr "Отмена"
|
||||
|
||||
#: src/php/Settings/Converter.php:267
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: src/php/Settings/Converter.php:263
|
||||
msgid "Are you sure to continue?"
|
||||
msgstr "Вы уверены, что хотите продолжить?"
|
||||
|
||||
#: src/php/Settings/Converter.php:240
|
||||
msgid "This operation is irreversible. Please make sure that you have made a backup copy of your database."
|
||||
msgstr "Эта операция необратима. Пожалуйста, убедитесь, что вы сделали копию базы данных."
|
||||
|
||||
#: src/php/Settings/Converter.php:238
|
||||
msgid "Important:"
|
||||
msgstr "Важно:"
|
||||
|
||||
#: src/php/Settings/Tables.php:219
|
||||
msgid "Options saved."
|
||||
msgstr "Настройки сохранены."
|
||||
|
||||
#: src/php/BackgroundProcesses/PostConversionProcess.php:130
|
||||
msgid "Cannot rename thumbnail file:"
|
||||
msgstr "Невозможно переименовать файл миниатюры:"
|
||||
|
||||
#: src/php/BackgroundProcesses/PostConversionProcess.php:127
|
||||
msgid "Thumbnail file renamed:"
|
||||
msgstr "Файл миниатюры переименован:"
|
||||
|
||||
#: src/php/BackgroundProcesses/PostConversionProcess.php:109
|
||||
msgid "Cannot convert attachment file for attachment id:"
|
||||
msgstr "Невозможно сконвертировать файл вложения для вложения с id:"
|
||||
|
||||
#: src/php/BackgroundProcesses/PostConversionProcess.php:103
|
||||
msgid "Attachment file converted:"
|
||||
msgstr "Файл вложения сконвертирован:"
|
||||
|
||||
#: src/php/Settings/Tables.php:122
|
||||
msgid "(current)"
|
||||
msgstr "(текущая)"
|
||||
|
||||
#: src/php/Requirements.php:245
|
||||
msgid "See: <a href=\"https://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit\" target=\"_blank\">Increasing max input vars limit.</a>"
|
||||
msgstr "См.: <a href=\"https://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit\" target=\"_blank\">Увеличение лимита max input vars.</a>"
|
||||
|
||||
#: src/php/Requirements.php:242
|
||||
msgid "Please increase max input vars limit up to 1500."
|
||||
msgstr "Пожалуйста, увеличьте лимит max input vars до 1500."
|
||||
|
||||
#. translators: 1: Wait time in seconds
|
||||
#: src/php/Requirements.php:177
|
||||
msgid "Please try again in %d s."
|
||||
msgstr "Пожалуйста, попробуйте снова через %d сек."
|
||||
|
||||
#. translators: 1: .user.ini filename
|
||||
#: src/php/Requirements.php:174
|
||||
msgid "We have updated settings in %s."
|
||||
msgstr "Мы обновили настройки в %s."
|
||||
|
||||
#. translators: 1: max_input_vars value, 2: Cyr To Lat version, 3: Minimum
|
||||
#. required max_input_vars
|
||||
#: src/php/Requirements.php:170
|
||||
msgid "Your server is running PHP with max_input_vars=%1$d but Cyr To Lat %2$s requires at least %3$d."
|
||||
msgstr "На сервере установлен PHP с max_input_vars=%1$d, однако для Cyr To Lat %2$s требуется хотя бы %3$d."
|
||||
|
||||
#: src/php/Requirements.php:117
|
||||
msgid "Cyr To Lat plugin has been deactivated."
|
||||
msgstr "Плагин деактивирован."
|
||||
|
||||
#: src/php/Requirements.php:153
|
||||
msgid "Unable to get filesystem access."
|
||||
msgstr "Невозможно получить доступ к файловой системе."
|
||||
|
||||
#: libs/wp-background-processing/wp-background-process.php:577
|
||||
msgid "Every %d Minutes"
|
||||
msgstr "Каждые %d минут"
|
||||
|
||||
#. translators: 1: Current PHP version number, 2: Cyr To Lat version, 3:
|
||||
#. Minimum required PHP version number
|
||||
#: src/php/Requirements.php:132
|
||||
msgid "Your server is running PHP version %1$s but Cyr To Lat %2$s requires at least %3$s."
|
||||
msgstr "На сервере установлен PHP версии %1$s, однако для Cyr To Lat %2$s требуется хотя бы %3$s."
|
||||
|
||||
#: src/php/Converter.php:262
|
||||
msgid "Cyr To Lat has not found existing term slugs for conversion."
|
||||
msgstr "Cyr To Lat не нашёл существующих ярлыков терминов для конвертации."
|
||||
|
||||
#: src/php/Converter.php:275
|
||||
msgid "Cyr To Lat started conversion of existing term slugs."
|
||||
msgstr "Cyr To Lat начал конвертацию существующих ярлыков терминов."
|
||||
|
||||
#: src/php/Converter.php:273
|
||||
msgid "Term slugs conversion started."
|
||||
msgstr "Начата конвертация ярлыков терминов."
|
||||
|
||||
#: src/php/Converter.php:225
|
||||
msgid "Cyr To Lat has not found existing post slugs for conversion."
|
||||
msgstr "Cyr To Lat не нашёл существующих ярлыков записей для конвертации."
|
||||
|
||||
#: src/php/Converter.php:238
|
||||
msgid "Cyr To Lat started conversion of existing post slugs."
|
||||
msgstr "Cyr To Lat начал конвертацию существующих ярлыков записей."
|
||||
|
||||
#: src/php/Converter.php:236
|
||||
msgid "Post slugs conversion started."
|
||||
msgstr "Начата конвертация ярлыков записей."
|
||||
|
||||
#: src/php/Converter.php:134
|
||||
msgid "Cyr To Lat completed conversion of existing term slugs."
|
||||
msgstr "Cyr To Lat завершил конвертацию существующих ярлыков терминов."
|
||||
|
||||
#: src/php/Converter.php:127
|
||||
msgid "Cyr To Lat completed conversion of existing post slugs."
|
||||
msgstr "Cyr To Lat завершил конвертацию существующих ярлыков записей."
|
||||
|
||||
#: src/php/Converter.php:120
|
||||
msgid "Cyr To Lat converts existing term slugs in the background process."
|
||||
msgstr "Cyr To Lat конвертирует существующие ярлыки терминов в фоновом процессе."
|
||||
|
||||
#: src/php/Converter.php:113
|
||||
msgid "Cyr To Lat converts existing post slugs in the background process."
|
||||
msgstr "Cyr To Lat конвертирует существующие ярлыки записей в фоновом процессе."
|
||||
|
||||
#: src/php/BackgroundProcesses/PostConversionProcess.php:204
|
||||
msgid "Post slugs conversion completed."
|
||||
msgstr "Конвертация ярлыков записей завершена."
|
||||
|
||||
#: src/php/BackgroundProcesses/PostConversionProcess.php:74
|
||||
msgid "Post slug converted:"
|
||||
msgstr "Ярлык записи сконвертирован:"
|
||||
|
||||
#: src/php/BackgroundProcesses/TermConversionProcess.php:91
|
||||
msgid "Term slugs conversion completed."
|
||||
msgstr "Конвертация ярлыков терминов завершена."
|
||||
|
||||
#: src/php/BackgroundProcesses/TermConversionProcess.php:75
|
||||
msgid "Term slug converted:"
|
||||
msgstr "Ярлык термина сконвертирован:"
|
||||
|
||||
#: src/php/Settings/PluginSettingsBase.php:37
|
||||
#: src/php/Settings/PluginSettingsBase.php:158
|
||||
msgid "Cyr To Lat"
|
||||
msgstr "Cyr To Lat"
|
||||
|
||||
#: src/php/Settings/Converter.php:176
|
||||
msgid "Convert Existing Slugs"
|
||||
msgstr "Конвертировать существующие ярлыки"
|
||||
|
||||
#: src/php/Settings/PluginSettingsBase.php:118
|
||||
msgid "Settings"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: src/php/Settings/PluginSettingsBase.php:109
|
||||
msgid "View Cyr To Lat settings"
|
||||
msgstr "Посмотреть настройки Cyr To Lat"
|
||||
|
||||
#. Author URI of the plugin
|
||||
#: cyr-to-lat.php
|
||||
msgid "https://profiles.wordpress.org/sergeybiryukov/"
|
||||
msgstr "https://profiles.wordpress.org/sergeybiryukov/"
|
||||
|
||||
#. Author of the plugin
|
||||
#: cyr-to-lat.php
|
||||
msgid "Sergey Biryukov, Mikhail Kobzarev, Igor Gergel"
|
||||
msgstr "Сергей Бирюков, Михаил Кобзарёв, Игорь Гергель"
|
||||
|
||||
#. Description of the plugin
|
||||
#: cyr-to-lat.php
|
||||
msgid "Convert Non-Latin characters in post and term slugs to Latin characters. Useful for creating human-readable URLs. Based on the original plugin by Anton Skorobogatov."
|
||||
msgstr "Преобразует не-латинские символы в ярлыках записей, страниц и рубрик в латинские. Полезно для создания человекопонятных URL (ЧПУ). Основано на оригинальном плагине Rus-To-Lat от Антона Скоробогатова."
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
#: cyr-to-lat.php
|
||||
msgid "Cyr-To-Lat"
|
||||
msgstr "Cyr-To-Lat"
|
||||
50
wp-content/languages/plugins/duplicator-ru_RU.l10n.php
Normal file
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Class name is too long. Please keep it under 50 characters.":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0435. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0439\u0442\u0435 50 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432."],"Class name is too short. Use at least 2 characters.":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 2 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432."],"Class names can only use letters, numbers, dashes (-), and underscores (_).":["\u0412 \u0438\u043c\u0435\u043d\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043a\u0432\u044b, \u0446\u0438\u0444\u0440\u044b, \u0442\u0438\u0440\u0435 (-) \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f (_)."],"Class names can\u2019t contain spaces.":["\u0418\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432."],"Class names can\u2019t start with a hyphen followed by a number.":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u0435\u0444\u0438\u0441\u0430, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0446\u0438\u0444\u0440\u0430."],"Class names must start with a letter.":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u0431\u0443\u043a\u0432\u044b."],"Double hyphens are reserved for custom properties.":["\u0414\u0432\u043e\u0439\u043d\u044b\u0435 \u0434\u0435\u0444\u0438\u0441\u044b \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432."],"This class name already exists. Please choose a unique name.":["\u042d\u0442\u043e \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f."],"This name is reserved and can\u2019t be used. Try something more specific.":["\u042d\u0442\u043e \u0438\u043c\u044f \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435."]}},"comment":{"reference":"assets\/js\/packages\/editor-styles-repository\/editor-styles-repository.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Desktop":["\u041a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440"]}},"comment":{"reference":"assets\/js\/packages\/editor-responsive\/editor-responsive.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Notes":["\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f"],"With Notes, teamwork gets even better. Stay in sync with comments, feedback & more on your website.":["\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Notes \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435. \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u044c\u0442\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0443\u044e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432, \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435."],"Upgrade":["\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c"],"Connect & Activate":["\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c"]}},"comment":{"reference":"assets\/js\/notes.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Atomic Elements":["\u0410\u0442\u043e\u043c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b"],"Learn more":["\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435"]}},"comment":{"reference":"assets\/js\/editor-v4-opt-in-alphachip.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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 Feedback":["\u0412\u0430\u0448 \u043e\u0442\u0437\u044b\u0432"],"Help Center":["\u0426\u0435\u043d\u0442\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438"],"We\u2019ve fine-tuned the Top Bar to make navigation faster and smoother.":["\u041c\u044b \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0432\u0435\u0440\u0445\u043d\u044e\u044e \u043f\u0430\u043d\u0435\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u043f\u043b\u0430\u0432\u043d\u0435\u0435."],"Copy and Share":["\u041a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0438 \u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c"],"Exit to WordPress":["\u0412\u044b\u0445\u043e\u0434 \u0432 WordPress"],"%s (up to %dpx)":["%s (\u0434\u043e %dpx)"],"%s (%dpx and up)":["%s (%dpx \u0438 \u0432\u044b\u0448\u0435)"],"Switch Device":["\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e"],"Elementor Logo":["\u041b\u043e\u0433\u043e\u0442\u0438\u043f Elementor"],"Got it":["\u041f\u043e\u043d\u044f\u0442\u043d\u043e"],"My Elementor":["\u041c\u043e\u0439 Elementor"],"Save Changes":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f"],"Site Settings":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0430\u0439\u0442\u0430"],"User Preferences":["\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f"],"More":["\u0411\u043e\u043b\u044c\u0448\u0435"],"Add Element":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442"],"Theme Builder":["\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0442\u0435\u043c"],"Keyboard Shortcuts":["\u0413\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438"],"Connect to Elementor":["\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a Elementor"],"Finder":["\u041f\u043e\u0438\u0441\u043a"],"%s Settings":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 %s"],"Submit":["\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c"],"Save as Template":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u043a \u0448\u0430\u0431\u043b\u043e\u043d"],"Save Options":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438"],"Publish":["\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c"],"Preview Changes":["\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f"],"Document Settings":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430"],"Save Draft":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a"],"History":["\u0418\u0441\u0442\u043e\u0440\u0438\u044f"],"Integrations":["\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438"],"Widgets":["\u0412\u0438\u0434\u0436\u0435\u0442\u044b"],"Learn More":["\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435"],"Elements":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b"],"Structure":["\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430"],"View Page":["\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b"]}},"comment":{"reference":"assets\/js\/packages\/editor-app-bar\/editor-app-bar.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Name your page":["\u041d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 \u0441\u0432\u043e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443"],"or rename it later.":["\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0439\u0442\u0435 \u0435\u0433\u043e \u043f\u043e\u0437\u0436\u0435."],"To proceed, please name your first page,":["\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c, \u043d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443,"],"New Page":["\u041d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430"],"Save":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c"],"Cancel":["\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c"]}},"comment":{"reference":"assets\/js\/e-home-screen.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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 reverting the kit. Please try again.":["\u041f\u0440\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443."],"Try a different Website Template or build your site from scratch.":["\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u0441 \u043d\u0443\u043b\u044f."],"Are you sure?":["\u0423\u0432\u0435\u0440\u0435\u043d\u044b \u043b\u0438 \u0432\u044b?"],"OK":["Ok"],"Your Kit":["\u0412\u0430\u0448 \u043d\u0430\u0431\u043e\u0440"],"You're ready to apply a new Kit!":["\u0412\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u041d\u0430\u0431\u043e\u0440!"],"Continue to new Kit":["\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043d\u0430\u0431\u043e\u0440\u0443"],"%s was successfully deleted":["%s \u0431\u044b\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0434\u0430\u043b\u0451\u043d"],"Close":["\u0417\u0430\u043a\u0440\u044b\u0442\u044c"],"Library":["\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430"],"Delete":["\u0423\u0434\u0430\u043b\u0438\u0442\u044c"],"Cancel":["\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c"]}},"comment":{"reference":"assets\/js\/import-export-customization-admin.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"What's New":["\u0427\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e"]}},"comment":{"reference":"assets\/js\/editor-notifications.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Click the launch icon to continue setting up your site.":["\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0437\u043d\u0430\u0447\u043e\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441\u0430\u0439\u0442\u0430."],"Looking for your Launchpad Checklist?":["\u0418\u0449\u0435\u0442\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f Launchpad?"],"Unmark as done":["\u0421\u043d\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435"],"With these steps, you've got a great base for a robust website. Enjoy your web creation journey!":["\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u044d\u0442\u0438 \u0448\u0430\u0433\u0438, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u041d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0439\u0442\u0435\u0441\u044c \u0441\u0432\u043e\u0438\u043c \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435\u043c \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u0430\u0439\u0442\u043e\u0432!"],"You're on your way!":["\u0412\u044b \u0443\u0436\u0435 \u0432 \u043f\u0443\u0442\u0438!"],"Checklist":["\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a"],"Let's make a productivity boost":["\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0432\u044b\u0441\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c"],"Mark as done":["\u041e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u043a\u0430\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e\u0435"],"Upgrade Now":["\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441"],"Got it":["\u041f\u043e\u043d\u044f\u0442\u043d\u043e"]}},"comment":{"reference":"assets\/js\/checklist.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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 group":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443"],"Close panel":["\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c"],"Group Name":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b"],"You can wait for them to finish or reach out to coordinate your changes together.":["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0430\u0442, \u0438\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f."],"Edit Component":["\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442"],"Components":["\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b"],"Clear & try again":["\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0435 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430"],"Try something else.":["\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u043e\u0435."],"Sorry, nothing matched":["\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u043b\u043e"],"Rename":["\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c"],"Got it":["\u041f\u043e\u043d\u044f\u0442\u043d\u043e"],"Something went wrong":["\u0427\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a"],"Learn more":["\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435"],"Back":["\u041d\u0430\u0437\u0430\u0434"],"Create":["\u0421\u043e\u0437\u0434\u0430\u0442\u044c"],"Search":["\u041f\u043e\u0438\u0441\u043a"],"Update":["\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c"],"Edit %s":["\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c %s"],"Close":["\u0417\u0430\u043a\u0440\u044b\u0442\u044c"],"Delete":["\u0423\u0434\u0430\u043b\u0438\u0442\u044c"],"Default":["\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Name":["\u0418\u043c\u044f"],"Cancel":["\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c"]}},"comment":{"reference":"assets\/js\/packages\/editor-components\/editor-components.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Edit \"%s\" with Elementor":["\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \"%s\" \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Elementor"]}},"comment":{"reference":"assets\/js\/packages\/editor-documents\/editor-documents.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Class name is too long. Please keep it under 50 characters.":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0435. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0439\u0442\u0435 50 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432."],"Class name is too short. Use at least 2 characters.":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 2 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432."],"Class names can only use letters, numbers, dashes (-), and underscores (_).":["\u0412 \u0438\u043c\u0435\u043d\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043a\u0432\u044b, \u0446\u0438\u0444\u0440\u044b, \u0442\u0438\u0440\u0435 (-) \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f (_)."],"Class names can\u2019t contain spaces.":["\u0418\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432."],"Class names can\u2019t start with a hyphen followed by a number.":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u0435\u0444\u0438\u0441\u0430, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0446\u0438\u0444\u0440\u0430."],"Class names must start with a letter.":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u0431\u0443\u043a\u0432\u044b."],"Double hyphens are reserved for custom properties.":["\u0414\u0432\u043e\u0439\u043d\u044b\u0435 \u0434\u0435\u0444\u0438\u0441\u044b \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432."],"This class name already exists. Please choose a unique name.":["\u042d\u0442\u043e \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f."],"This name is reserved and can\u2019t be used. Try something more specific.":["\u042d\u0442\u043e \u0438\u043c\u044f \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435."]}},"comment":{"reference":"assets\/js\/packages\/editor-styles-repository\/editor-styles-repository.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"New Template":["\u041d\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d"]}},"comment":{"reference":"assets\/js\/new-template.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Save as a template":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u043a \u0448\u0430\u0431\u043b\u043e\u043d"],"Delete %s":["\u0423\u0434\u0430\u043b\u0438\u0442\u044c %s"],"New":["\u041d\u043e\u0432\u044b\u0435"],"Duplicate %s":["\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c %s"],"Edit %s":["\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c %s"],"Add %s":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c %s"]}},"comment":{"reference":"assets\/js\/atomic-widgets-editor.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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-ons":["\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f"],"What's New":["\u0427\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e"],"Search or do anything in Elementor":["\u0418\u0449\u0438\u0442\u0435 \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u0432 Elementor"],"My Elementor":["\u041c\u043e\u0439 Elementor"],"Connect Account":["\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c"],"Connect your account to get access to Elementor's Template Library & more.":["\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0441\u0432\u043e\u044e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Elementor \u0438 \u043c\u043d\u043e\u0433\u043e\u043c\u0443 \u0434\u0440\u0443\u0433\u043e\u043c\u0443."],"Finder":["\u041f\u043e\u0438\u0441\u043a"]}},"comment":{"reference":"assets\/js\/admin-top-bar.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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 edited":["%s \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d"],"To drag a link to this element, first remove the link from it's parent container.":["\u0427\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u044d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 \u0438\u0437 \u0435\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430."],"To paste a link to this element, first remove the link from it's parent container.":["\u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u0432 \u044d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 \u0438\u0437 \u0435\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430."],"Style Reset":["\u0421\u0442\u0438\u043b\u044c \u0441\u0431\u0440\u043e\u0448\u0435\u043d"],"Style Pasted":["\u0421\u0442\u0438\u043b\u044c \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d"],"Elements":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b"]}},"comment":{"reference":"assets\/js\/packages\/editor-canvas\/editor-canvas.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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 value inserted isn't in the breakpoint boundaries":["\u0412\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442\u0430"]}},"comment":{"reference":"assets\/js\/responsive-bar.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"New Floating Elements":["\u041d\u043e\u0432\u044b\u0435 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b"],"Importing...":["\u0418\u043c\u043f\u043e\u0440\u0442..."],"Migrate to v3.0":["\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044e 3.0"],"Please note that this process will revert all changes made to Global Colors and Fonts since upgrading to v3.x.":["\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u0435\u0440\u043d\u0435\u0442 \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0435 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0438 \u0448\u0440\u0438\u0444\u0442\u044b \u0434\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 3.x."],"Don't Show Again":["\u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c"],"Font Awesome 5 Migration":["\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043d\u0430 Font Awesome 5"],"I acknowledge that some changes may affect my website and that this action cannot be undone.":["\u042f \u043f\u0440\u0438\u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043c\u043e\u0439 \u0441\u0430\u0439\u0442 \u0438 \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u043e."],"I understand that by upgrading to Font Awesome 5,":["\u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e, \u043e\u0431\u043d\u043e\u0432\u0438\u0432\u0448\u0438\u0441\u044c \u0434\u043e Font Awesome 5,"],"Sign Up":["\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f"],"Continue":["\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c"],"Please note that you are switching to WordPress default editor. Your current layout, design and content might break.":["\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435\u0441\u044c \u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 WordPress \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0412\u0430\u0448\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0434\u0438\u0437\u0430\u0439\u043d \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u0442\u0435\u0440\u044f\u043d\u044b."],"Back to WordPress Editor":["\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 WordPress"],"New Template":["\u041d\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d"],"Are you sure you want to reinstall previous version?":["\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e?"],"Rollback to Previous Version":["\u041e\u0442\u043a\u0430\u0442 \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438"],"Submit & Deactivate":["\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438 \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c"],"Skip & Deactivate":["\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438 \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c"],"Cancel":["\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c"]}},"comment":{"reference":"assets\/js\/admin-modules.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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 edited":["%s \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d"],"To drag a link to this element, first remove the link from it's parent container.":["\u0427\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u044d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 \u0438\u0437 \u0435\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430."],"To paste a link to this element, first remove the link from it's parent container.":["\u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u0432 \u044d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 \u0438\u0437 \u0435\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430."],"Style Reset":["\u0421\u0442\u0438\u043b\u044c \u0441\u0431\u0440\u043e\u0448\u0435\u043d"],"Style Pasted":["\u0421\u0442\u0438\u043b\u044c \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d"],"Elements":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b"]}},"comment":{"reference":"assets\/js\/packages\/editor-canvas\/editor-canvas.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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 now have access to the beta of version 4, ready to use on production.":["\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0435\u0442\u0430-\u0432\u0435\u0440\u0441\u0438\u0438 4, \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u0435."],"Apply Variables and Classes site-wide for perfect consistency.":["\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443 \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438."],"Customize any style element per screen size by switching between responsive views.":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043b\u044e\u0431\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u0442\u0438\u043b\u044f \u043f\u043e\u0434 \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u043a\u0440\u0430\u043d\u0430, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u043c\u0438 \u0432\u0438\u0434\u0430\u043c\u0438."],"Let's Go":["\u041f\u043e\u0435\u0445\u0430\u043b\u0438"],"Need help getting started?":["\u0412\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443?"],"Say hello to a new experience!":["\u041f\u043e\u0437\u0434\u043e\u0440\u043e\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f\u043c\u0438!"],"Learn more":["\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435"]}},"comment":{"reference":"assets\/js\/editor-v4-welcome-opt-in.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Elements moved":["\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b"],"Item removed":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u0434\u0430\u043b\u0435\u043d"]}},"comment":{"reference":"assets\/js\/packages\/editor-elements\/editor-elements.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Unify with Elementor AI":["\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 Elementor AI"]}},"comment":{"reference":"assets\/js\/ai-unify-product-images.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Save as a template":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u043a \u0448\u0430\u0431\u043b\u043e\u043d"],"Delete %s":["\u0423\u0434\u0430\u043b\u0438\u0442\u044c %s"],"New":["\u041d\u043e\u0432\u044b\u0435"],"Duplicate %s":["\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c %s"],"Edit %s":["\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c %s"],"Add %s":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c %s"]}},"comment":{"reference":"assets\/js\/atomic-widgets-editor.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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 group":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443"],"Close panel":["\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c"],"Group Name":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b"],"You can wait for them to finish or reach out to coordinate your changes together.":["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0430\u0442, \u0438\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f."],"Edit Component":["\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442"],"Components":["\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b"],"Clear & try again":["\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0435 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430"],"Try something else.":["\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u043e\u0435."],"Sorry, nothing matched":["\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u043b\u043e"],"Rename":["\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c"],"Got it":["\u041f\u043e\u043d\u044f\u0442\u043d\u043e"],"Something went wrong":["\u0427\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a"],"Learn more":["\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435"],"Back":["\u041d\u0430\u0437\u0430\u0434"],"Create":["\u0421\u043e\u0437\u0434\u0430\u0442\u044c"],"Search":["\u041f\u043e\u0438\u0441\u043a"],"Update":["\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c"],"Edit %s":["\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c %s"],"Close":["\u0417\u0430\u043a\u0440\u044b\u0442\u044c"],"Delete":["\u0423\u0434\u0430\u043b\u0438\u0442\u044c"],"Default":["\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Name":["\u0418\u043c\u044f"],"Cancel":["\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c"]}},"comment":{"reference":"assets\/js\/packages\/editor-components\/editor-components.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Upgrade":["\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c"],"Connect & Activate":["\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c"],"Create more personalized and dynamic sites by populating data from various sources with dozens of dynamic tags to choose from.":["\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u044b\u0435 \u0441\u0430\u0439\u0442\u044b, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u043c\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0435\u0433\u043e\u0432 \u043d\u0430 \u0432\u044b\u0431\u043e\u0440."],"Dynamic Content":["\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435"]}},"comment":{"reference":"assets\/js\/styleguide.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Edit with Elementor":["\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 Elementor"]}},"comment":{"reference":"assets\/js\/e-wc-product-editor.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Delay":["\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430"],"To top":["\u0412\u0432\u0435\u0440\u0445"],"Trigger":["\u0422\u0440\u0438\u0433\u0433\u0435\u0440"],"You've reached the limit of 5 interactions for this element. Please remove an interaction before creating a new one.":["\u0412\u044b \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043b\u0438\u043c\u0438\u0442\u0430 \u0432 5 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u043e\u0434\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435."],"To bottom":["\u0412\u043d\u0438\u0437"],"Add entrance animations and effects triggered by user interactions such as page load or scroll.":["\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0432\u0445\u043e\u0434\u0430 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u044b, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430."],"Interactions":["\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f"],"Scale":["\u041c\u0430\u0441\u0448\u0442\u0430\u0431"],"Duration":["\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c"],"Out":["\u041e\u0442"],"In":["\u041a"],"Direction":["\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435"],"Effect":["\u042d\u0444\u0444\u0435\u043a\u0442"],"Fade":["\u0412\u044b\u0446\u0432\u0435\u0442\u0430\u043d\u0438\u0435"],"Type":["\u0422\u0438\u043f"],"No":["\u041d\u0435\u0442"],"Yes":["\u0414\u0430"],"Slide":["\u0421\u043a\u043e\u043b\u044c\u0436\u0435\u043d\u0438\u0435"],"Preview":["\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c"]}},"comment":{"reference":"assets\/js\/packages\/editor-interactions\/editor-interactions.strings.js"}}
|
||||
@@ -0,0 +1 @@
|
||||
{"translation-revision-date":"2026-02-02 10:19:51+0000","generator":"GlotPress\/4.0.3","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"},"Show global settings":["\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438"],"The five boxing wizards jump quickly.":["\u041f\u044f\u0442\u044c \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u0438\u043a\u043e\u0432 \u0431\u043e\u043a\u0441\u0430 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u044b\u0433\u0430\u044e\u0442."],"System Fonts":["\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0448\u0440\u0438\u0444\u0442\u044b"],"System Colors":["\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430"],"Global Colors":["\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430"],"Custom Fonts":["\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0448\u0440\u0438\u0444\u0442\u044b"],"Global Fonts":["\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0448\u0440\u0438\u0444\u0442\u044b"],"Custom Colors":["\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0446\u0432\u0435\u0442\u0430"],"Colors":["\u0426\u0432\u0435\u0442\u0430"],"Fonts":["\u0428\u0440\u0438\u0444\u0442\u044b"]}},"comment":{"reference":"assets\/js\/styleguide.strings.js"}}
|
||||