WordPress.WP.I18n.NonSingularStringLiteralDomain
Non Singular String Literal Domain
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 |
|---|---|---|---|---|---|---|---|---|
| #351 | Markup by Attribute for WooCommerce | 39 | 46 | 102 | 2k+ | Direct Query | ||
| #352 | Serial Number for Contact Form 7 | 39 | 105 | 53 | 2k+ | Non Singular String Literal Domain | ||
| #353 | Simple Staff List | 39 | 90 | 236 | 3k+ | Non-prefixed global variable | ||
| #354 | TinyMCE Custom Styles | 39 | 297 | 76 | 7k+ | Non Singular String Literal Domain | ||
| #355 | UserHeat Plugin | 39 | 121 | 20 | 6k+ | Non Singular String Literal Domain | ||
| #356 | Virusdie | One-click website security | 39 | 149 | 66 | 2k+ | Output is not escaped | ||
| #357 | Eurobank WooCommerce Payment Gateway | 39 | 62 | 63 | 2k+ | Non Singular String Literal Domain | ||
| #358 | Allow Multiple Accounts | 40 | 115 | 19 | 9k+ | Non Singular String Literal Domain | ||
| #359 | Contact form 7 TO API + Basic Auth | 40 | 73 | 30 | 1k+ | Non Singular String Literal Domain | ||
| #360 | Cron Logger | 40 | 49 | 36 | 1k+ | Output is not escaped | ||
| #361 | Export Media URLs | 40 | 71 | 35 | 7k+ | Output is not escaped | ||
| #362 | heatmap for WordPress – Realtime analytics | 40 | 94 | 15 | 1k+ | Non Singular String Literal Domain | ||
| #363 | Image Alt Text | 40 | 79 | 97 | 9k+ | Non Singular String Literal Domain | ||
| #364 | JSM Show Post Metadata | 40 | 15 | 66 | 10k+ | Nonce verification recommended | ||
| #365 | JSM Show User Metadata | 40 | 14 | 64 | 3k+ | Nonce verification recommended | ||
| #366 | WPO365 | Mail Integration for Office 365 / Outlook | 40 | 59 | 27 | 2k+ | Output is not escaped | ||
| #367 | Monkeyman Rewrite Analyzer | 40 | 89 | 10 | 2k+ | Non Singular String Literal Domain | ||
| #368 | No CAPTCHA reCAPTCHA | 40 | 112 | 26 | 4k+ | Text Domain Mismatch | ||
| #369 | Donations via PayPal | 40 | 143 | 17 | 20k+ | Output is not escaped | ||
| #370 | Multiple Shipping Addresses for WooCommerce (Address Book) | 40 | 21 | 208 | 2k+ | Non-prefixed global variable | ||
| #371 | TW Recent Posts Widget | 40 | 97 | 14 | 1k+ | Output is not escaped | ||
| #372 | WP Date and Time Shortcode | 40 | 90 | 12 | 10k+ | Output is not escaped | ||
| #373 | WP All Import – Job Listing Import for WP Job Manager | 40 | 35 | 27 | 2k+ | Output is not escaped | ||
| #374 | WP Meteor Website Speed Optimization Addon | 40 | 34 | 19 | 20k+ | Output is not escaped | ||
| #375 | WP Posts Carousel | 40 | 199 | 12 | 3k+ | Unsafe printing function | ||
| #376 | WP Theme Test | 40 | 21 | 39 | 7k+ | Input is not sanitized | ||
| #377 | WPFront Notification Bar | 40 | 222 | 44 | 50k+ | Output is not escaped | ||
| #378 | Authenticator | 41 | 59 | 44 | 1k+ | Output is not escaped | ||
| #379 | Buzzsprout Podcasting | 41 | 75 | 13 | 5k+ | Non Singular String Literal Domain | ||
| #380 | Comments Like Dislike | 41 | 172 | 20 | 5k+ | Non Singular String Literal Domain | ||
| #381 | Flexible Posts Widget | 41 | 136 | 33 | 8k+ | Output is not escaped | ||
| #382 | My Wp Brand – Hide menu & Hide Plugin | 41 | 74 | 50 | 2k+ | Non Singular String Literal Domain | ||
| #383 | Page Specific Menu Items | 41 | 78 | 19 | 2k+ | Output is not escaped | ||
| #384 | Posts 2 Posts | 41 | 42 | 73 | 10k+ | Non Singular String Literal Domain | ||
| #385 | Preload LCP Image | 41 | 110 | 31 | 4k+ | Unsafe printing function | ||
| #386 | Prevent Landscape Rotation | 41 | 31 | 27 | 1k+ | Output is not escaped | ||
| #387 | Simple CPT | 41 | 280 | 60 | 4k+ | Unsafe printing function | ||
| #388 | Enable Classic Editor & Widgets | 42 | 106 | 6 | 3k+ | Non Singular String Literal Domain | ||
| #389 | Exclude Pages | 42 | 31 | 14 | 30k+ | Non Singular String Literal Domain | ||
| #390 | FooTable | 42 | 86 | 7 | 1k+ | Output is not escaped | ||
| #391 | NS Remove Related Products for WooCommerce | 42 | 95 | 43 | 3k+ | Output is not escaped | ||
| #392 | OG Tags | 42 | 131 | 34 | 2k+ | Non Singular String Literal Domain | ||
| #393 | Polylang Theme Strings | 42 | 119 | 30 | 6k+ | Output is not escaped | ||
| #394 | Posts Like Dislike | 42 | 157 | 39 | 6k+ | Non Singular String Literal Domain | ||
| #395 | Prepare New Version | 42 | 53 | 24 | 6k+ | Output is not escaped | ||
| #396 | WP Required Taxonomies – Categories and Tags Mandatory | 42 | 43 | 36 | 1k+ | Non-prefixed global variable | ||
| #397 | Simple Googlebot Visit | 42 | 32 | 67 | 1k+ | Non Singular String Literal Domain | ||
| #398 | Weather Widget Pro | 42 | 294 | 5 | 1k+ | Output is not escaped | ||
| #399 | AdWords Conversion Tracking Code | 43 | 26 | 25 | 1k+ | Non Singular String Literal Domain | ||
| #400 | Live Copy Paste for Elementor – Cross Domain Copy Paste & Page Duplicator | 43 | 12 | 32 | 7k+ | Request data is not unslashed |