WordPress.WP.I18n.NoEmptyStrings
No Empty Strings
A translation or text-domain pattern does not match WordPress internationalization expectations.
Why It Shows Up
Plugin Check found missing text domains, mismatched domains, missing translator comments, variable-only strings, placeholder issues, or deprecated translation loading patterns.
Why It Matters
Translation issues make the plugin harder to localize and can break strings for non-English WordPress users.
How to Fix
- Use the plugin slug as the text domain unless the plugin intentionally declares a different one.
- Keep translatable strings literal and move variables into placeholders.
- Add translator comments before strings with placeholders or ambiguous context.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #151 | WPFrank Companion | 26 | 2,356 | 865 | 1k+ | Text Domain Mismatch | ||
| #152 | Accordions – Responsive Accordion & FAQ Plugin for WordPress | 27 | 554 | 158 | 1k+ | Text Domain Mismatch | ||
| #153 | Addon Elements for Elementor (formerly Elementor Addon Elements) | 27 | 4,065 | 103 | 90k+ | Text Domain Mismatch | ||
| #154 | Food Menu – Restaurant Menu & Online Ordering for WooCommerce | 27 | 25 | 1,320 | 3k+ | Non-prefixed global variable | ||
| #155 | Under Construction, Coming Soon & Maintenance Mode | 27 | 401 | 148 | 10k+ | Output is not escaped | ||
| #156 | Tabbed Category Product Listing for Woocommerce | 27 | 423 | 111 | 1k+ | Text Domain Mismatch | ||
| #157 | WP Booking System – Booking Calendar | 27 | 502 | 550 | 20k+ | Output is not escaped | ||
| #158 | WP Hide & Security Enhancer | 27 | 124 | 375 | 50k+ | Input is not sanitized | ||
| #159 | Divi Torque Lite – Divi Modules for the Divi Builder & Theme | 28 | 132 | 256 | 50k+ | Non-prefixed global variable | ||
| #160 | AForms — Form Builder for Price Calculator & Cost Estimation | 28 | 564 | 95 | 3k+ | Text Domain Mismatch | ||
| #161 | BNE Testimonials | 28 | 522 | 102 | 1k+ | Output is not escaped | ||
| #162 | easy.jobs – AI powered Job Listing, Job Board, Career Page, Recruitment & Hiring Solution | 28 | 405 | 810 | 5k+ | Missing nonce verification | ||
| #163 | Notification for Telegram | 28 | 189 | 93 | 4k+ | Output is not escaped | ||
| #164 | Order Tracking – WordPress Status Tracking Plugin | 28 | 619 | 772 | 3k+ | Unsafe printing function | ||
| #165 | Autopay | 28 | 754 | 370 | 3k+ | Text Domain Mismatch | ||
| #166 | Responsive Lightbox & Gallery | 28 | 139 | 513 | 100k+ | Non-prefixed hook name | ||
| #167 | Thim Kit for Elementor – Pre-built Templates & Widgets for Elementor | 28 | 291 | 292 | 20k+ | Output is not escaped | ||
| #168 | Ultimate FAQ Accordion Plugin | 28 | 386 | 227 | 30k+ | Unsafe printing function | ||
| #169 | WC Fields Factory | 28 | 194 | 369 | 7k+ | Nonce verification recommended | ||
| #170 | Product Sort and Display for WooCommerce | 28 | 199 | 235 | 2k+ | Output is not escaped | ||
| #171 | Arile Extra | 29 | 538 | 566 | 10k+ | Non-prefixed global variable | ||
| #172 | Bitcoin Payments – Blockonomics | 29 | 208 | 227 | 3k+ | Output is not escaped | ||
| #173 | Countdown, Coming Soon, Maintenance – Countdown & Clock | 29 | 1,735 | 143 | 10k+ | Non Singular String Literal Domain | ||
| #174 | Recipe Card Blocks Lite | 29 | 151 | 408 | 10k+ | Non-prefixed global variable | ||
| #175 | SamedayCourier Shipping | 29 | 336 | 269 | 4k+ | Non Singular String Literal Domain | ||
| #176 | Tabs Responsive – With WooCommerce Product Tabs Extension | 29 | 577 | 255 | 20k+ | Non Singular String Literal Domain | ||
| #177 | Custom Post Types and Custom Fields creator – WCK | 29 | 1,300 | 143 | 10k+ | Text Domain Mismatch | ||
| #178 | weMail – Email Marketing, Newsletter Builder & Email Automations for WooCommerce | 29 | 276 | 68 | 10k+ | Missing direct file access protection | ||
| #179 | WP Magazine Modules Lite | 29 | 152 | 674 | 5k+ | Non-prefixed global variable | ||
| #180 | Analytics Insights – Google Analytics Dashboard for WordPress | 30 | 241 | 170 | 10k+ | Unsafe printing function | ||
| #181 | Private groups | 30 | 583 | 316 | 1k+ | Unsafe printing function | ||
| #182 | Classic Addons – WPBakery Page Builder | 30 | 1,245 | 263 | 3k+ | Text Domain Mismatch | ||
| #183 | GlobalPayments Gateway Provider for WooCommerce | 30 | 611 | 170 | 1k+ | Text Domain Mismatch | ||
| #184 | Midtrans-WooCommerce | 30 | 112 | 132 | 5k+ | Non-prefixed global variable | ||
| #185 | Travel Booking Toolkit | 30 | 245 | 324 | 3k+ | Non-prefixed global variable | ||
| #186 | YayPricing – WooCommerce Dynamic Pricing & Discounts | 30 | 174 | 186 | 3k+ | Non-prefixed global variable | ||
| #187 | Zoho CRM Lead Magnet | 30 | 101 | 1,025 | 3k+ | Request data is not unslashed | ||
| #188 | Advanced Woo Search – Product Search for WooCommerce | 31 | 228 | 377 | 70k+ | Nonce verification recommended | ||
| #189 | Apaczka.pl WooCommerce | 31 | 99 | 276 | 1k+ | Non-prefixed global variable | ||
| #190 | FraudLabs Pro for WooCommerce | 31 | 169 | 213 | 1k+ | Request data is not unslashed | ||
| #191 | LWS Tools | 31 | 104 | 134 | 10k+ | Request data is not unslashed | ||
| #192 | Openpay Cards Plugin | 31 | 166 | 105 | 3k+ | Text Domain Mismatch | ||
| #193 | Podamibe Simple Footer Widget Area | 31 | 596 | 57 | 2k+ | wp function not compatible with requires wp | ||
| #194 | Post Pay Counter | 31 | 639 | 238 | 2k+ | Output is not escaped | ||
| #195 | WP Simple Booking Calendar | 31 | 337 | 381 | 20k+ | Output is not escaped | ||
| #196 | Affiliate Coupons – Coupon Display Manager – Excellent Tool for Affiliate Marketers | 32 | 183 | 61 | 1k+ | Output is not escaped | ||
| #197 | Arile Super | 32 | 328 | 351 | 3k+ | Non-prefixed global variable | ||
| #198 | Addi – Cuotas que se adaptan a ti | 32 | 106 | 210 | 2k+ | Direct Query | ||
| #199 | GSheetConnector For WPForms – WPForms Google Sheets Integration (Real-Time Sync) | 32 | 120 | 145 | 8k+ | Non-prefixed global variable | ||
| #200 | Image Slider Slideshow | 32 | 409 | 171 | 2k+ | Text Domain Mismatch |