WordPress.WP.I18n.NonSingularStringLiteralContext
Non Singular String Literal Context
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 |
|---|---|---|---|---|---|---|---|---|
| #1 | Brizy – Page Builder | 20 | 585 | 726 | 60k+ | Output is not escaped | ||
| #2 | Better Messages – Chat Rooms, Group Chat, Private Messages & AI Chat Bots | 21 | 1,674 | 2,180 | 10k+ | Direct Query | ||
| #3 | GeoDirectory – WP Business Directory Plugin and Classified Listings Directory | 22 | 4,363 | 3,925 | 10k+ | Output is not escaped | ||
| #4 | LearnPress – WordPress LMS Plugin for Create and Sell Online Courses | 22 | 2,380 | 3,623 | 70k+ | Non-prefixed global variable | ||
| #5 | MotoPress Hotel Booking | 22 | 3,067 | 1,050 | 10k+ | Text Domain Mismatch | ||
| #6 | Seraphinite Accelerator | 22 | 587 | 243 | 50k+ | Output is not escaped | ||
| #7 | Master Accordion ( Former WP Awesome FAQ Plugin ) | 22 | 1,774 | 1,286 | 700 | Non-prefixed global variable | ||
| #8 | WPSSO Core – Complete Schema Markup and Meta Tags | 22 | 1,426 | 416 | 4k+ | Missing Translators Comment | ||
| #9 | Heureka | 23 | 534 | 237 | 400 | Exception output is not escaped | ||
| #10 | Locatoraid Store Locator | 23 | 314 | 653 | 1k+ | Non-prefixed global variable | ||
| #11 | Order Bump for WooCommerce | 23 | 1,720 | 1,562 | 700 | Output is not escaped | ||
| #12 | Seraphinite Post .DOCX Source | 23 | 1,156 | 110 | 800 | Output is not escaped | ||
| #13 | Travelpayouts | 23 | 761 | 114 | 6k+ | Output is not escaped | ||
| #14 | WP Webhooks – Automate repetitive tasks by creating powerful automation workflows directly within WordPress | 23 | 4,380 | 888 | 20k+ | Output is not escaped | ||
| #15 | Event Tickets and Registration | 24 | 3,156 | 4,207 | 90k+ | Non-prefixed global variable | ||
| #16 | My Agile Privacy® – CMP, Cookie Consent & Privacy Tools | 24 | 1,338 | 704 | 7k+ | Text Domain Mismatch | ||
| #17 | Podlove Podcast Publisher | 24 | 2,107 | 1,399 | 3k+ | Output is not escaped | ||
| #18 | ShiftController Employee Shift Scheduling | 24 | 358 | 196 | 600 | Output is not escaped | ||
| #19 | WP RSS Aggregator – RSS Import, Feed to Post, Autoblogging, AI Content | 24 | 1,773 | 399 | 40k+ | Text Domain Mismatch | ||
| #20 | xili-language | 24 | 1,501 | 523 | 600 | Output is not escaped | ||
| #21 | Conditional Payment Methods for WooCommerce | 25 | 548 | 1,398 | 1k+ | Non-prefixed global variable | ||
| #22 | PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes | 26 | 412 | 481 | 10k+ | Missing Translators Comment | ||
| #23 | XL NMI Gateway for WooCommerce | 26 | 695 | 436 | 1k+ | Text Domain Mismatch | ||
| #24 | Urvanov Syntax Highlighter | 30 | 221 | 87 | 3k+ | Output is not escaped | ||
| #25 | Dynamic Pricing With Discount Rules for WooCommerce | 32 | 130 | 78 | 5k+ | Output is not escaped | ||
| #26 | DEPRECATED – Shipmondo – A complete shipping solution for WooCommerce | 32 | 166 | 119 | 5k+ | Output is not escaped | ||
| #27 | Datafeedr Product Sets | 35 | 602 | 206 | 5k+ | Output is not escaped | ||
| #28 | Ultimate Post List | 35 | 186 | 84 | 2k+ | Missing Arg Domain | ||
| #29 | WP Mailto Links – Protect Email Addresses | 35 | 95 | 69 | 7k+ | Output is not escaped | ||
| #30 | Translate and boost SEO – Automatic AI translation – wpLingua | 35 | 90 | 171 | 2k+ | Nonce verification recommended | ||
| #31 | Product Labels For Woocommerce (Sale Badges) | 36 | 90 | 48 | 10k+ | Output is not escaped | ||
| #32 | Directorist – WPML Integration | 37 | 14 | 215 | 400 | Direct Query | ||
| #33 | Language Switcher | 37 | 81 | 105 | 1k+ | Missing Translators Comment | ||
| #34 | SuperCPT | 37 | 172 | 27 | 600 | Output is not escaped | ||
| #35 | Tracking Script Manager | 37 | 82 | 57 | 2k+ | Non Singular String Literal Domain | ||
| #36 | Datafeedr WooCommerce Importer | 38 | 112 | 56 | 5k+ | Text Domain Mismatch | ||
| #37 | Super Simple Slider | 38 | 55 | 55 | 1k+ | Non-prefixed global variable | ||
| #38 | You can quote me on that | 39 | 57 | 37 | 400 | Output is not escaped | ||
| #39 | Cache control by Cacholong | 41 | 87 | 30 | 500 | Non Singular String Literal Domain | ||
| #40 | Clio Grow Form | 91 | 179 | 19 | 1k+ | Text Domain Mismatch |