{"id":277672,"date":"2026-02-17T05:06:29","date_gmt":"2026-02-17T05:06:29","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/yt-consent-translations\/"},"modified":"2026-03-31T10:19:02","modified_gmt":"2026-03-31T10:19:02","slug":"cybokron-consent-manager-translations-yootheme","status":"publish","type":"plugin","link":"https:\/\/ms.wordpress.org\/plugins\/cybokron-consent-manager-translations-yootheme\/","author":10016074,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.5.0","stable_tag":"1.5.0","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Cybokron Consent Manager Translations for YOOtheme Pro","header_author":"Ercan ATAY","header_description":"Easily translate YOOtheme Pro 5 Consent Manager texts from the WordPress admin panel. Supports multiple languages including English, Turkish, Hindi, Korean, Arabic, and German.","assets_banners_color":"69a2af","last_updated":"2026-03-31 10:19:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/ercanatay\/cybokron-consent-manager-translations-yootheme","header_author_uri":"https:\/\/www.ercanatay.com\/en\/","rating":5,"author_block_rating":0,"active_installs":30,"downloads":426,"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.17":{"tag":"1.3.17","author":"cybokron","date":"2026-02-17 05:06:35"},"1.3.18":{"tag":"1.3.18","author":"cybokron","date":"2026-02-17 05:17:30"},"1.3.19":{"tag":"1.3.19","author":"cybokron","date":"2026-02-17 05:22:34"},"1.4.1":{"tag":"1.4.1","author":"cybokron","date":"2026-02-17 07:12:38"},"1.4.2":{"tag":"1.4.2","author":"cybokron","date":"2026-02-17 07:24:31"},"1.4.3":{"tag":"1.4.3","author":"cybokron","date":"2026-02-27 20:51:36"},"1.4.4":{"tag":"1.4.4","author":"cybokron","date":"2026-03-07 20:56:29"},"1.5.0":{"tag":"1.5.0","author":"cybokron","date":"2026-03-31 10:19:02"}},"upgrade_notice":{"1.5.0":"<p>New: 4 missing service consent strings added (OpenStreetMap, Google Maps, Vimeo, YouTube) \u2014 now fully translatable for all 36 language presets.<\/p>","1.4.4":"<p>Maintenance fix: language fallback defaults to &#039;auto&#039; for correct multilingual behavior on misconfigured installations.<\/p>","1.4.3":"<p>WPML\/Polylang bugfix: translations now auto-detect language from WordPress locale for seamless multilingual support.<\/p>","1.4.2":"<p>UI: White plugin icon for admin sidebar and settings page header.<\/p>","1.4.1":"<p>CI fix: corrected deploy validation for uninstall.php guard check.<\/p>","1.4.0":"<p>Feature release: custom plugin icon in admin sidebar and settings page header, top-level admin menu.<\/p>","1.3.19":"<p>CI: Added GitHub Actions workflow for automatic WordPress.org SVN deployment on release.<\/p>","1.3.18":"<p>Contributors field fix: use only valid WordPress.org username.<\/p>","1.3.17":"<p>Plugin Check compliance: removed discouraged load_plugin_textdomain() call.<\/p>","1.3.16":"<p>Security hardening and performance release: output sanitization for gettext filter, rate-limited health DB writes, safer snapshot IDs, and WordPress-native file reading.<\/p>","1.3.15":"<p>WordPress.org review compliance: corrected text domain to match plugin slug, removed development-only files (tests, scripts) from distribution.<\/p>","1.3.14":"<p>Maintenance release for Plugin Check text-domain expectations and hidden-file packaging warnings.<\/p>","1.3.13":"<p>WordPress.org review compliance release: fixes text-domain\/slug alignment, hardens global naming with unique <code>cybocoma<\/code> prefixes, and excludes development-only files from distribution packages.<\/p>","1.3.12":"<p>i18n hotfix release that standardized text domain usage in plugin modules.<\/p>","1.3.11":"<p>Naming-compliance release that updates plugin display name\/slug and synchronizes metadata to the new unique identifier.<\/p>","1.3.10":"<p>Maintenance bugfix release that localizes the admin statistics summary text in JavaScript and synchronizes release metadata.<\/p>","1.3.9":"<p>Security and maintenance release that hardens admin preview sanitization, reduces autoload overhead for internal options, improves uninstall cron cleanup coverage, and syncs release metadata.<\/p>","1.3.8":"<p>Accessibility-focused maintenance release that improves admin settings tab semantics\/keyboard support and removes a non-production development artifact from release packaging.<\/p>","1.3.7":"<p>Compliance and updater-flow alignment release: moves updater status tracking to WordPress.org metadata, fixes admin status labels, standardizes text domain usage, and removes deprecated updater\/sanitization paths.<\/p>","1.3.6":"<p>Security hardening release for reverse tabnabbing and admin AJAX response headers, with added regression tests and synchronized release metadata.<\/p>","1.3.5":"<p>Language completeness maintenance release for Romanian preset correction and release metadata sync.<\/p>","1.3.4":"<p>Feature release with GitHub stable auto-update channel, scheduled background checks, manual check action, and updater observability in admin settings.<\/p>","1.3.3":"<p>Maintenance verification release with full project re-check and synchronized version metadata.<\/p>","1.3.2":"<p>Plugin Check compliance release focused on admin request hardening, i18n placeholder\/domain fixes, and production package cleanup.<\/p>","1.3.1":"<p>Maintenance bugfix release with localized admin UI messages, multisite uninstall cleanup fix, and test bootstrap cleanup.<\/p>","1.3.0":"<p>Feature release with locale-scoped overrides, live preview, compatibility monitoring, rollback snapshots, and release gate tests.<\/p>","1.2.7":"<p>Maintenance release with performance optimizations, validation hardening, and documentation\/tooling updates.<\/p>","1.2.6":"<p>Behavioral bugfix release for auto mode preview, diff-based custom string storage, and placeholder safety validation.<\/p>","1.2.5":"<p>Code style improvement - tabs instead of spaces for WordPress Coding Standards compliance.<\/p>","1.2.4":"<p>Bugfix release - fixed missing strict comparison in has_placeholder() method.<\/p>","1.2.3":"<p>Security improvement: Export now uses POST method only.<\/p>","1.2.2":"<p>Code quality improvements for WordPress.org compliance.<\/p>","1.2.1":"<p>Bugfix release - fixes admin settings page not appearing issue.<\/p>","1.2.0":"<p>Major performance improvement with lazy loading translations from JSON files.<\/p>","1.1.0":"<p>Added 30 new language presets for a total of 36 languages.<\/p>","1.0.0":"<p>Initial release of Cybokron Consent Manager Translations for YOOtheme Pro.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3463158,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3463158,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3463158,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3463158,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.17","1.3.18","1.3.19","1.4.1","1.4.2","1.4.3","1.4.4","1.5.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3463158,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3463158,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3463158,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Main settings page with locale scope, update status, compatibility health panel, and translation tabs","2":"Banner strings translation with inline QA checks and field-level validation","3":"Live preview, action buttons, and snapshot rollback panel"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[168468,16626,131785,2333,62341],"plugin_category":[48],"plugin_contributors":[256003],"plugin_business_model":[],"class_list":["post-277672","plugin","type-plugin","status-publish","hentry","plugin_tags-consent-manager","plugin_tags-cookie-consent","plugin_tags-gdpr","plugin_tags-translation","plugin_tags-yootheme","plugin_category-language-tools","plugin_contributors-cybokron","plugin_committers-cybokron"],"banners":{"banner":"https:\/\/ps.w.org\/cybokron-consent-manager-translations-yootheme\/assets\/banner-772x250.png?rev=3463158","banner_2x":"https:\/\/ps.w.org\/cybokron-consent-manager-translations-yootheme\/assets\/banner-1544x500.png?rev=3463158","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/cybokron-consent-manager-translations-yootheme\/assets\/icon-128x128.png?rev=3463158","icon_2x":"https:\/\/ps.w.org\/cybokron-consent-manager-translations-yootheme\/assets\/icon-256x256.png?rev=3463158","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/cybokron-consent-manager-translations-yootheme\/assets\/screenshot-1.png?rev=3463158","caption":"Main settings page with locale scope, update status, compatibility health panel, and translation tabs"},{"src":"https:\/\/ps.w.org\/cybokron-consent-manager-translations-yootheme\/assets\/screenshot-2.png?rev=3463158","caption":"Banner strings translation with inline QA checks and field-level validation"},{"src":"https:\/\/ps.w.org\/cybokron-consent-manager-translations-yootheme\/assets\/screenshot-3.png?rev=3463158","caption":"Live preview, action buttons, and snapshot rollback panel"}],"raw_content":"<!--section=description-->\n<p>Cybokron Consent Manager Translations for YOOtheme Pro allows you to customize all text strings in the YOOtheme Pro 5 Consent Manager directly from your WordPress admin panel.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Translate all 25 Consent Manager strings<\/li>\n<li>36 pre-configured language presets<\/li>\n<li>Locale-scoped overrides for multilingual setups<\/li>\n<li>Easy-to-use tabbed interface<\/li>\n<li>Live preview, inline QA checks, and compatibility health panel<\/li>\n<li>Snapshot history with rollback support<\/li>\n<li>Import\/Export settings as JSON<\/li>\n<li>WordPress.org update status panel with site-wide periodic checks<\/li>\n<li>No coding required<\/li>\n<li>Compatible with WPML and Polylang<\/li>\n<\/ul>\n\n<p><strong>Supported Strings:<\/strong><\/p>\n\n<ul>\n<li>Banner text and buttons (Accept, Reject, Manage Settings)<\/li>\n<li>Privacy Settings modal content<\/li>\n<li>Category titles (Functional, Preferences, Statistics, Marketing)<\/li>\n<li>Category descriptions<\/li>\n<li>Modal buttons (Accept all, Reject all, Save)<\/li>\n<li>Show\/Hide Services toggles<\/li>\n<li>Service consent text (OpenStreetMap, Google Maps, Vimeo, YouTube)<\/li>\n<\/ul>\n\n<p><strong>Pre-configured Languages (36):<\/strong><\/p>\n\n<p>English, Chinese, Spanish, French, Portuguese, Russian, Japanese, Indonesian, Italian, Dutch, Polish, Vietnamese, Thai, Ukrainian, Czech, Greek, Romanian, Hungarian, Swedish, Danish, Finnish, Norwegian, Hebrew, Malay, Bengali, Persian, Tamil, Telugu, Marathi, Swahili, Filipino, Turkish, Hindi, Korean, Arabic, German<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>cybokron-consent-manager-translations-yootheme<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to Settings \u2192 Cybokron Consent Manager Translations for YOOtheme Pro to configure<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20yootheme%20pro%3F\"><h3>Does this plugin require YOOtheme Pro?<\/h3><\/dt>\n<dd><p>Yes, this plugin is designed specifically for translating the YOOtheme Pro 5 Consent Manager. It won't have any effect without YOOtheme Pro installed.<\/p><\/dd>\n<dt id=\"can%20i%20add%20my%20own%20custom%20language%3F\"><h3>Can I add my own custom language?<\/h3><\/dt>\n<dd><p>Yes! Simply select any language preset and modify the texts to your needs. Your custom translations will override the preset values.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20multilingual%20plugins%3F\"><h3>Does it work with multilingual plugins?<\/h3><\/dt>\n<dd><p>The plugin supports locale-scoped settings (for example <code>en_US<\/code>, <code>tr_TR<\/code>) so you can maintain different overrides per locale while still using shared language presets.<\/p><\/dd>\n<dt id=\"how%20do%20i%20backup%20my%20translations%3F\"><h3>How do I backup my translations?<\/h3><\/dt>\n<dd><p>Use the Export button to download a JSON file of your current settings. You can Import this file later to restore your translations.<\/p><\/dd>\n<dt id=\"how%20does%20the%20updater%20panel%20work%3F\"><h3>How does the updater panel work?<\/h3><\/dt>\n<dd><p>Enable periodic checks from plugin settings. The plugin reads WordPress core update metadata every 12 hours and shows current update status in the updater panel. Use \"Check Now\" for an immediate refresh.<\/p><\/dd>\n<dt id=\"my%20translations%20are%20not%20showing%20up\"><h3>My translations are not showing up<\/h3><\/dt>\n<dd><ol>\n<li>Make sure the plugin is enabled (check the toggle in settings)<\/li>\n<li>Clear any caching plugins<\/li>\n<li>Clear your browser cache<\/li>\n<li>Make sure you're using YOOtheme Pro 5 with the Consent Manager enabled<\/li>\n<\/ol><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>New: Added 4 missing service consent text strings \u2014 OpenStreetMap, Google Maps, Vimeo, and YouTube service descriptions are now translatable (fixes #34).<\/li>\n<li>New: New \"Services\" tab group in admin settings exposes these strings for all 36 language presets.<\/li>\n<\/ul>\n\n<h4>1.4.4<\/h4>\n\n<ul>\n<li>Fixed: Language fallback in sanitize_options now correctly defaults to 'auto' instead of 'en', consistent with the default introduced in 1.4.3.<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Fixed: WPML\/Polylang compatibility \u2014 translations now auto-detect from WordPress locale when no locale-specific settings exist, fixing missing translations on multilingual sites.<\/li>\n<li>Changed: Default language setting changed from 'en' to 'auto' for better out-of-the-box multilingual support.<\/li>\n<li>Packaging: Removed <code>.distignore<\/code> and <code>.github<\/code> from distribution to resolve Plugin Check errors.<\/li>\n<li>Tested up to WordPress 6.9.<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Changed: Admin sidebar and settings page header now use white plugin icon for better visibility on dark admin backgrounds.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>CI: Fixed ABSPATH guard validation to accept WP_UNINSTALL_PLUGIN as valid guard for uninstall.php.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>New: Plugin icon now displayed in WordPress admin sidebar menu.<\/li>\n<li>New: Plugin icon added to settings page header.<\/li>\n<li>Changed: Plugin menu moved to top-level admin menu with custom icon for better visibility.<\/li>\n<\/ul>\n\n<h4>1.3.19<\/h4>\n\n<ul>\n<li>CI: Added GitHub Actions workflow for automatic WordPress.org SVN deployment on release.<\/li>\n<\/ul>\n\n<h4>1.3.18<\/h4>\n\n<ul>\n<li>Fixed Contributors field: removed invalid WordPress.org username <code>ercanatay<\/code>, kept only valid <code>cybokron<\/code> account.<\/li>\n<\/ul>\n\n<h4>1.3.17<\/h4>\n\n<ul>\n<li>Removed discouraged load_plugin_textdomain() call per Plugin Check (WordPress 4.6+ loads translations automatically for WordPress.org hosted plugins).<\/li>\n<\/ul>\n\n<h4>1.3.16<\/h4>\n\n<ul>\n<li>Security: added wp_kses output sanitization to gettext filter for defense-in-depth against stored XSS in custom translation strings.<\/li>\n<li>Security: added type check after maybe_unserialize in locale option scan to prevent object injection.<\/li>\n<li>Performance: added rate-limiting (1-hour interval) to health report DB persistence to avoid writes on every frontend page load.<\/li>\n<li>Improvement: replaced uniqid() with wp_generate_uuid4() for snapshot IDs (cryptographically stronger, WordPress-native).<\/li>\n<li>Improvement: replaced file_get_contents with wp_json_file_decode (WP 5.9+) for language JSON loading with legacy fallback.<\/li>\n<li>Improvement: implemented load_plugin_textdomain() for proper i18n text domain loading.<\/li>\n<li>Cleanup: removed unnecessary flush_rewrite_rules() calls from activation\/deactivation hooks.<\/li>\n<\/ul>\n\n<h4>1.3.15<\/h4>\n\n<ul>\n<li>Text domain: corrected all gettext text domain values from <code>cybokron-consent-manager-translations-yootheme-main<\/code> to <code>cybokron-consent-manager-translations-yootheme<\/code> to match the plugin slug exactly.<\/li>\n<li>Packaging: removed <code>tests\/<\/code> and <code>scripts\/<\/code> directories from the distribution package entirely.<\/li>\n<li>Added <code>.distignore<\/code> to prevent development-only files from being included in future release archives.<\/li>\n<\/ul>\n\n<h4>1.3.14<\/h4>\n\n<ul>\n<li>Plugin Check compatibility: aligned plugin header and gettext text domain to <code>cybokron-consent-manager-translations-yootheme<\/code> matching the plugin slug.<\/li>\n<li>Packaging cleanup: removed hidden\/workflow root entries from plugin root (<code>.distignore<\/code>, <code>.github<\/code>) to avoid Plugin Check warnings.<\/li>\n<\/ul>\n\n<h4>1.3.13<\/h4>\n\n<ul>\n<li>WordPress.org review compliance: aligned all gettext text domains with plugin slug <code>cybokron-consent-manager-translations-yootheme<\/code>.<\/li>\n<li>Refactor: replaced generic identifiers with a unique plugin prefix (<code>cybocoma_<\/code> \/ <code>CYBOCOMA_<\/code>) across classes, constants, hooks, options, and AJAX actions.<\/li>\n<li>Packaging: added <code>.distignore<\/code> guidance and prepared release distribution to exclude non-production paths such as <code>tests\/<\/code> and <code>scripts\/<\/code>.<\/li>\n<li>Metadata: updated contributors list and synchronized plugin\/readme\/composer versions to <code>1.3.13<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.12<\/h4>\n\n<ul>\n<li>i18n fix: restored plugin text domain usage to <code>cybokron-consent-manager-translations-yootheme<\/code> across plugin\/admin\/health\/strings\/updater modules for Plugin Check compatibility.<\/li>\n<li>Updated plugin header <code>Text Domain<\/code> to <code>cybokron-consent-manager-translations-yootheme<\/code>.<\/li>\n<li>Synced plugin metadata\/versioning to <code>1.3.12<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.11<\/h4>\n\n<ul>\n<li>Renamed plugin display name and slug to <code>Cybokron Consent Manager Translations for YOOtheme Pro<\/code> \/ <code>cybokron-consent-manager-translations-yootheme<\/code> for WordPress.org naming compliance.<\/li>\n<li>Updated plugin metadata, admin settings page slug, text domain, and package file naming to align with the new slug.<\/li>\n<li>QA: reran tests, PHP syntax checks, and static scan with clean results.<\/li>\n<li>Synced plugin metadata\/versioning to <code>1.3.11<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.10<\/h4>\n\n<ul>\n<li>Bugfix (i18n): localized admin statistics summary text generated in JavaScript via <code>wp_localize_script<\/code>.<\/li>\n<li>QA: reran tests, PHP syntax checks, JSON validation, and static scan with clean results.<\/li>\n<li>Synced plugin metadata\/versioning to <code>1.3.10<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.9<\/h4>\n\n<ul>\n<li>Security: Sanitized admin live-preview link HTML to only preserve safe anchor output (<code>&lt;a href title&gt;<\/code>) and forced <code>rel=\"noopener noreferrer\"<\/code>.<\/li>\n<li>SQL safety: Removed redundant <code>esc_sql()<\/code> wrappers around <code>$wpdb-&gt;esc_like()<\/code> wildcard queries in scoped option scans and uninstall cleanup.<\/li>\n<li>Performance: Persisted snapshot\/health\/updater internal options with <code>autoload=false<\/code> to reduce autoload pressure.<\/li>\n<li>Uninstall hygiene: Added updater cron hook cleanup (<code>cybocoma_updater_cron_check<\/code>) for single-site and multisite uninstall paths, including WordPress pre-6.1 fallback logic.<\/li>\n<li>Cache consistency: Reset translator original-string map during cache clear and aligned test bootstrap <code>update_option()<\/code> signature with current core usage.<\/li>\n<li>Synced plugin metadata\/versioning to <code>1.3.9<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.8<\/h4>\n\n<ul>\n<li>Accessibility: added semantic ARIA roles\/attributes for admin translation tabs (<code>tablist<\/code>, <code>tab<\/code>, <code>tabpanel<\/code>) with deterministic roving <code>tabindex<\/code>.<\/li>\n<li>Keyboard UX: added Left\/Right plus Home\/End navigation support for tab controls.<\/li>\n<li>Accessibility state sync: tab panels now consistently toggle both <code>hidden<\/code> and <code>aria-hidden<\/code>.<\/li>\n<li>Packaging: removed accidental <code>.Jules<\/code> development artifact from release tree.<\/li>\n<li>Synced plugin metadata\/versioning to <code>1.3.8<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.7<\/h4>\n\n<ul>\n<li>WordPress.org compliance: removed custom updater hooks that altered core update routines.<\/li>\n<li>Updater refactor: switched updater state checks to WordPress core update metadata and human-readable admin status labels.<\/li>\n<li>i18n: standardized text domain usage to <code>cybokron-consent-manager-translations-yootheme<\/code> across plugin files.<\/li>\n<li>Compatibility: removed deprecated <code>wp_targeted_link_rel()<\/code> usage from admin sanitization flow.<\/li>\n<li>Tests: added direct file access guards and updated updater tests for the new metadata-driven flow.<\/li>\n<li>Synced plugin metadata\/versioning to <code>1.3.7<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.6<\/h4>\n\n<ul>\n<li>Security: Added reverse tabnabbing protection to sanitized consent links via <code>wp_targeted_link_rel()<\/code>.<\/li>\n<li>Security: Added admin AJAX security headers (<code>X-Content-Type-Options<\/code> and fallback <code>X-Frame-Options<\/code>) without overriding stricter pre-existing frame policies.<\/li>\n<li>Tests: Added admin AJAX header regression coverage (<code>tests\/test_admin_headers.php<\/code>) and bootstrap stubs for header helpers.<\/li>\n<li>Packaging: Removed non-production <code>.jules<\/code> artifact from release tree.<\/li>\n<li>Synced plugin metadata\/versioning and text-domain references to <code>1.3.6<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Completed Romanian preset translation gap: updated <code>button_accept<\/code> from <code>Accept<\/code> to <code>Accept\u0103<\/code>.<\/li>\n<li>Synced plugin metadata\/versioning and text-domain references to <code>1.3.5<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>Added GitHub stable auto-update channel using WordPress Upgrader with <code>releases\/latest<\/code> + <code>zipball_url<\/code> fallback.<\/li>\n<li>Added site-wide updater controls\/status panel and manual \"Check Now\" action in settings.<\/li>\n<li>Added 12-hour scheduled update checks (<code>twicedaily<\/code>) with retry-on-failure and persisted last-error reporting.<\/li>\n<li>Added updater-focused test coverage and uninstall cleanup for updater options.<\/li>\n<li>Synced plugin metadata\/versioning to <code>1.3.4<\/code>.<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>Full double-check release: reran syntax\/tests\/JSON\/security scans across the plugin and validated clean results.<\/li>\n<li>Maintenance: version\/text-domain sync for current release packaging.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Plugin Check hardening: added sanitized <code>filter_input()<\/code> request handling in admin flows and clarified nonce handling for upload endpoints.<\/li>\n<li>i18n: aligned all translatable strings with updated text domain and fixed ordered placeholder usage with translator guidance.<\/li>\n<li>Packaging: removed non-production root artifacts flagged by Plugin Check (<code>.github<\/code>, <code>.gitignore<\/code>, shell runner, and daily markdown report).<\/li>\n<li>Performance\/quality: added cache layer for locale option scan and documented one-time uninstall wildcard query usage.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fixed i18n coverage for snapshot\/quality-check admin messages by replacing hardcoded JavaScript text with localized strings<\/li>\n<li>Fixed uninstall script block structure for multisite cleanup flow<\/li>\n<li>Removed redundant <code>gmdate()<\/code> test bootstrap shim to avoid dead-code shadowing in PHP environments<\/li>\n<li>Docs: Clarified \"add new language\" workflow with explicit JSON-file requirements<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added locale-scoped settings storage for multilingual workflows (WPML\/Polylang friendly)<\/li>\n<li>Added compatibility health reporting for potential YOOtheme source string drift<\/li>\n<li>Implemented documented extension APIs: <code>cybocoma_translations<\/code> filter and <code>CYBOCOMA_DISABLED<\/code> constant behavior<\/li>\n<li>Added live preview panel, inline field validation, field-level reset actions, and unsaved-change protection<\/li>\n<li>Added settings snapshots with one-click rollback<\/li>\n<li>Added release-gate workflow and lightweight PHP tests<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Performance: Replaced repeated array scans with constant-time lookup maps (<code>isset<\/code>) in language\/placeholder validation paths<\/li>\n<li>Improved: Added <code>CYBOCOMA_Strings::is_valid_language()<\/code> helper and reused it in admin validation flow<\/li>\n<li>Quality: Minor internal cleanups and formatting consistency updates for admin\/settings rendering<\/li>\n<li>Tooling: Added security policy, daily review workflow, and maintenance scripts for code scanning\/reporting<\/li>\n<li>Docs: Updated contributor workflow and compatibility notes in repository documentation<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Fixed: Auto language preset now resolves to detected WordPress locale in admin preview\/load flows<\/li>\n<li>Improved: custom_strings are now stored as diff-only values against selected preset (save\/import normalization)<\/li>\n<li>Validation: Save and import now block invalid privacy link strings missing required %s or %1$s placeholders<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Code Style: Converted 4-space indentation to tabs in all PHP files<\/li>\n<li>WordPress Coding Standards compliance<\/li>\n<li>No functional changes, only whitespace formatting<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Bugfix: Fixed missing strict comparison in has_placeholder() method (class-strings.php:390)<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Security: Enforced POST method for settings export (removed GET support)<\/li>\n<li>Added JSON validation script for language files (scripts\/validate_json.py)<\/li>\n<li>Code quality: Added strict comparison to all in_array() calls<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Fixed: WordPress Plugin Check compliance - all warnings resolved<\/li>\n<li>Added cybocoma_ prefix to all template variables<\/li>\n<li>Improved input sanitization with wp_unslash()<\/li>\n<li>Enhanced $_FILES validation<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fixed: Admin settings page not appearing due to hook timing issue<\/li>\n<li>The admin_init hook was running after admin_menu, preventing menu registration<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Major refactoring: moved translations to external JSON files<\/li>\n<li>Each language now has its own JSON file (36 files)<\/li>\n<li>Implemented lazy loading - only requested language is loaded<\/li>\n<li>Reduced memory usage by ~95% on typical requests<\/li>\n<li>Better code organization and maintainability<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added 30 new language presets (36 total)<\/li>\n<li>Chinese, Spanish, French, Portuguese, Russian, Japanese<\/li>\n<li>Indonesian, Italian, Dutch, Polish, Vietnamese, Thai<\/li>\n<li>Ukrainian, Czech, Greek, Romanian, Hungarian, Swedish<\/li>\n<li>Danish, Finnish, Norwegian, Hebrew, Malay, Bengali<\/li>\n<li>Persian, Tamil, Telugu, Marathi, Swahili, Filipino<\/li>\n<li>Extended WordPress locale mapping for auto-detection<\/li>\n<li>Total translations: 900 (36 languages \u00d7 25 strings)<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>6 language presets included<\/li>\n<li>21 translatable strings<\/li>\n<li>Import\/Export functionality<\/li>\n<li>Tabbed admin interface<\/li>\n<\/ul>","raw_excerpt":"Easily translate YOOtheme Pro 5 Consent Manager texts from the WordPress admin panel. No coding required!","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/277672","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=277672"}],"author":[{"embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/cybokron"}],"wp:attachment":[{"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=277672"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=277672"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=277672"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=277672"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=277672"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=277672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}