WordPress.WP.I18n.NonSingularStringLiteralText
Non Singular String Literal Text
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 |
|---|---|---|---|---|---|---|---|---|
| #1901 | SmartSMTP | 71 | 8 | 42 | 2k+ | Nonce verification recommended | ||
| #1902 | Webhook for Discord | 71 | 119 | 20 | 400 | Text Domain Mismatch | ||
| #1903 | WP IE Buster | 71 | 13 | 3 | 800 | Output is not escaped | ||
| #1904 | Multi-Step Checkout for WooCommerce | 71 | 38 | 104 | 8k+ | Non-prefixed global variable | ||
| #1905 | WP Widget in Navigation | 71 | 37 | 15 | 3k+ | Non Singular String Literal Domain | ||
| #1906 | jQuery Masonry Image Gallery | 72 | 17 | 6 | 1k+ | Unsafe printing function | ||
| #1907 | Non-Purchasable WooCommerce Products | 72 | 14 | 13 | 1k+ | Input is not validated | ||
| #1908 | Post Types Unlimited | 72 | 45 | 7 | 10k+ | Missing Translators Comment | ||
| #1909 | Responsive Owl Carousel for Elementor | 72 | 40 | 89 | 7k+ | Non-prefixed global variable | ||
| #1910 | Social Media Icons Widget | 72 | 181 | 10 | 1k+ | badly named files | ||
| #1911 | Place Order Without Payment for WooCommerce | 72 | 244 | 62 | 3k+ | Text Domain Mismatch | ||
| #1912 | Continue Shopping for WooCommerce | 73 | 9 | 20 | 5k+ | Input is not sanitized | ||
| #1913 | My Simple Space | 73 | 21 | 3 | 8k+ | Output is not escaped | ||
| #1914 | Simple Image Popup | 73 | 21 | 5 | 1k+ | Output is not escaped | ||
| #1915 | Custom Icons for Elementor and WPBakery | 74 | 35 | 38 | 10k+ | Non-prefixed global variable | ||
| #1916 | ELEX WooCommerce USPS Shipping Method | 74 | 139 | 45 | 800 | Text Domain Mismatch | ||
| #1917 | EmailKit – Email Customizer for WooCommerce & WP | 74 | 17 | 82 | 70k+ | slow db query meta query | ||
| #1918 | Google Web Fonts Customizer (GWFC) | 74 | 48 | 4 | 900 | Text Domain Mismatch | ||
| #1919 | Keon Toolset | 74 | 4 | 28 | 30k+ | Non-prefixed function | ||
| #1920 | Markup Markdown | 74 | 18 | 128 | 2k+ | Non-prefixed global variable | ||
| #1921 | Widgets in Menu for WordPress | 74 | 16 | 12 | 8k+ | Text Domain Mismatch | ||
| #1922 | Admin Locale | 75 | 12 | 10 | 6k+ | Missing Arg Domain | ||
| #1923 | Canvas Image Resize | 75 | 19 | 1 | 1k+ | Output is not escaped | ||
| #1924 | Order Delivery Date And Time | 75 | 26 | 28 | 1k+ | Text Domain Mismatch | ||
| #1925 | Custom Product Tabs Lite for WooCommerce | 75 | 3 | 11 | 4k+ | Input is not validated | ||
| #1926 | WP Change Custom Posts Slugs | 75 | 17 | 4 | 700 | Text Domain Mismatch | ||
| #1927 | WPSSO WP Sitemaps XML with News, Image, and Video Sitemap | 75 | 60 | 24 | 400 | Missing Translators Comment | ||
| #1928 | Add Link to Copied Text | 76 | 33 | 6 | 1k+ | Text Domain Mismatch | ||
| #1929 | ABC Crypto Checkout | 76 | 42 | 14 | 1k+ | Text Domain Mismatch | ||
| #1930 | Breadcrumbs for WooCommerce | 76 | 14 | 2 | 6k+ | Output is not escaped | ||
| #1931 | Custom User Profile Photo | 77 | 16 | 3 | 5k+ | Unsafe printing function | ||
| #1932 | Modern Footnotes | 77 | 18 | 6 | 6k+ | Output is not escaped | ||
| #1933 | Template Kit – Import | 77 | 41 | 60 | 400k+ | Non-prefixed global variable | ||
| #1934 | ELEX WooCommerce Address Validation & Google Address Autocomplete Plugin | 78 | 73 | 40 | 700 | Missing Arg Domain | ||
| #1935 | Code Block Syntax Highlighter for Elementor | 78 | 344 | 3 | 600 | Non Singular String Literal Domain | ||
| #1936 | Uptime Monitoring for WordPress – My Website is Online | 78 | 18 | 7 | 500 | Text Domain Mismatch | ||
| #1937 | Klaviyo | 79 | 26 | 86 | 100k+ | Non-prefixed function | ||
| #1938 | Oxyplug Preload | 79 | 7 | 9 | 500 | Output is not escaped | ||
| #1939 | Popupsmart | 79 | 28 | 2 | 600 | Output is not escaped | ||
| #1940 | WP Permastructure | 79 | 14 | 6 | 400 | Missing Arg Domain | ||
| #1941 | Panda Video | 80 | 29 | 17 | 3k+ | Non-prefixed global variable | ||
| #1942 | Auto Post Expiration | 81 | 12 | 4 | 800 | Text Domain Mismatch | ||
| #1943 | GSheetConnector for Elementor Forms – Sync Elementor Forms to Google Sheets | 81 | 11 | 12 | 9k+ | Non-prefixed global variable | ||
| #1944 | Pagebar2 | 81 | 19 | 37 | 900 | Non-prefixed global variable | ||
| #1945 | Add New Default Avatar | 82 | 21 | 0 | 500 | Output is not escaped | ||
| #1946 | Awin Publisher MasterTag | 82 | 6 | 6 | 1k+ | Non-prefixed global variable | ||
| #1947 | Storefront Homepage Contact Section | 82 | 26 | 2 | 1k+ | Output is not escaped | ||
| #1948 | Easy Booking – WooCommerce Booking & Reservation Plugin | 82 | 59 | 66 | 4k+ | Non-prefixed global variable | ||
| #1949 | Photospace Responsive Gallery | 83 | 115 | 14 | 900 | Text Domain Mismatch | ||
| #1950 | ClickShip | 84 | 13 | 5 | 1k+ | Output is not escaped |