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 | Updated | Top Issue |
|---|---|---|---|---|---|---|---|
| #251 | Britetechs Companion | 37 | 966 | 613 | 2k+ | Text Domain Mismatch | |
| #252 | Disclaimer Popup | 37 | 313 | 53 | 1k+ | Text Domain Mismatch | |
| #253 | GS Portfolio for Envato | 37 | 155 | 75 | 4k+ | Text Domain Mismatch | |
| #254 | Quick Restaurant Menu | 37 | 136 | 40 | 1k+ | Text Domain Mismatch | |
| #255 | Reusable Content Blocks | 37 | 349 | 14 | 4k+ | Text Domain Mismatch | |
| #256 | SB RSS feed plus | 37 | 172 | 24 | 1k+ | Output is not escaped | |
| #257 | Simple Countdown Timer | 37 | 110 | 113 | 1k+ | Missing Arg Domain | |
| #258 | Admin Bar Editor – Toolbar Customization with User Role based access & Custom menus | 38 | 56 | 46 | 3k+ | Output is not escaped | |
| #259 | Category Posts Widget | 38 | 153 | 26 | 40k+ | Output is not escaped | |
| #260 | Goal Tracker – Custom Event Tracking for GA4 | 38 | 541 | 25 | 2k+ | Output is not escaped | |
| #261 | LWS Cleaner | 38 | 81 | 129 | 20k+ | Direct Query | |
| #262 | Magical Posts Display – Elementor Advanced Posts widgets | 38 | 117 | 48 | 3k+ | Output is not escaped | |
| #263 | ShiftNav – Responsive Mobile Menu | 38 | 249 | 35 | 10k+ | Text Domain Mismatch | |
| #264 | Simple JWT Login – Allows you to use JWT on REST endpoints. | 38 | 712 | 95 | 4k+ | Output is not escaped | |
| #265 | Sticky Header Effects for Elementor | 38 | 243 | 71 | 300k+ | Text Domain Mismatch | |
| #266 | Twitter for WordPress | 38 | 47 | 24 | 1k+ | Output is not escaped | |
| #267 | White Label – WordPress Custom Admin, Custom Login Page, and Custom Dashboard | 38 | 205 | 31 | 10k+ | Output is not escaped | |
| #268 | WP Safe Mode | 38 | 95 | 55 | 2k+ | Output is not escaped | |
| #269 | AffiliateWP – Affiliate Area Tabs | 39 | 86 | 26 | 3k+ | Output is not escaped | |
| #270 | BST DSGVO Cookie | 39 | 61 | 7 | 5k+ | Unsafe printing function | |
| #271 | Graphina – Charts and Graphs For Elementor | 39 | 1,895 | 113 | 10k+ | Text Domain Mismatch | |
| #272 | Multilingual Contact Form 7 with Polylang | 39 | 50 | 30 | 9k+ | Text Domain Mismatch | |
| #273 | Designil PDPA Thailand | 39 | 131 | 36 | 3k+ | Output is not escaped | |
| #274 | Ultimate Client Dash | 39 | 697 | 12 | 2k+ | Text Domain Mismatch | |
| #275 | WooCommerce Product Dependencies | 39 | 44 | 60 | 3k+ | Missing nonce verification | |
| #276 | Bangladeshi Payment Gateways – Make Payment Using QR Code | 40 | 40 | 36 | 5k+ | Output is not escaped | |
| #277 | ElementsKit Elementor Addons – Advanced Widgets & Templates Addons for Elementor | 40 | 72 | 348 | 1m+ | Non-prefixed global variable | |
| #278 | Fast User Switching | 40 | 28 | 28 | 2k+ | Output is not escaped | |
| #279 | Responsive Slider | 40 | 28 | 15 | 3k+ | Output is not escaped | |
| #280 | Lazy Load Optimizer | 41 | 63 | 26 | 3k+ | Unsafe printing function | |
| #281 | Preload LCP Image | 41 | 110 | 31 | 4k+ | Unsafe printing function | |
| #282 | Variation Swatches for WooCommerce | 41 | 29 | 126 | 9k+ | Missing nonce verification | |
| #283 | Responsive Plus – Elementor Templates & Starter Sites | 41 | 46 | 307 | 10k+ | Non-prefixed global variable | |
| #284 | Responsive Lightbox | 41 | 68 | 10 | 10k+ | Output is not escaped | |
| #285 | WC Multiple Email Recipients | 41 | 85 | 3 | 4k+ | Text Domain Mismatch | |
| #286 | Bulk Change Media Author | 42 | 25 | 20 | 2k+ | Unsafe printing function | |
| #287 | Prismatic | 42 | 61 | 29 | 2k+ | Output is not escaped | |
| #288 | Auto Coupons for WooCommerce | 42 | 81 | 68 | 4k+ | Output is not escaped | |
| #289 | Admin Menu Tree Page View | 43 | 17 | 69 | 10k+ | Nonce verification recommended | |
| #290 | Checkout Field Manager (Checkout Manager) for WooCommerce | 43 | 162 | 154 | 90k+ | Non-prefixed global variable | |
| #291 | Simple Login Notification | 45 | 13 | 22 | 1k+ | Request data is not unslashed | |
| #292 | WP Global Site Tag | 45 | 48 | 9 | 7k+ | Output is not escaped | |
| #293 | Responsive Cookie Consent | 46 | 50 | 4 | 2k+ | Unsafe printing function | |
| #294 | Schedule Post Changes With PublishPress Future: Unpublish, Delete, Change Status, Trash, Change Categories | 48 | 63 | 273 | 100k+ | Non-prefixed global variable | |
| #295 | Advanced Custom Fields – Taxonomy Field add-on | 50 | 57 | 4 | 1k+ | Non Singular String Literal Domain | |
| #296 | Full Screen Background | 52 | 24 | 26 | 2k+ | Missing direct file access protection | |
| #297 | Products Per Page for WooCommerce | 52 | 22 | 28 | 10k+ | Output is not escaped | |
| #298 | FakerPress | 53 | 66 | 152 | 10k+ | Non-prefixed global variable | |
| #299 | Social Media Widget | 53 | 90 | 21 | 30k+ | Text Domain Mismatch | |
| #300 | Auto Image Alt Attribute | 55 | 26 | 7 | 6k+ | Unsafe printing function |