WordPress.WP.I18n.TextDomainMismatch
Text Domain Mismatch
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 |
|---|---|---|---|---|---|---|---|---|
| #2351 | Fan Page Widget by ThemeNcode | 40 | 108 | 3 | 1k+ | Output is not escaped | ||
| #2352 | FAQ Concertina | 40 | 43 | 16 | 700 | Output is not escaped | ||
| #2353 | Far Future Expiry Header | 40 | 25 | 36 | 7k+ | Request data is not unslashed | ||
| #2354 | FluentComments – Spam protection, AntiSpam, Ajax Enhanced Comments | 40 | 50 | 47 | 700 | Non-prefixed global variable | ||
| #2355 | FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel | 40 | 20 | 81 | 4k+ | Non-prefixed global variable | ||
| #2356 | Fusion Page Builder | 40 | 34 | 100 | 3k+ | Input is not validated | ||
| #2357 | GetPaid > Item Inventory | 40 | 112 | 52 | 400 | Text Domain Mismatch | ||
| #2358 | Product Enquiry for WooCommerce | 40 | 57 | 41 | 3k+ | Output is not escaped | ||
| #2359 | Gravity Forms Data Persistence Add-On Reloaded | 40 | 14 | 38 | 700 | Input is not sanitized | ||
| #2360 | Header Promo – Show Top Bar Message or Call to Action | 40 | 472 | 45 | 400 | Output is not escaped | ||
| #2361 | WP Armour – Honeypot Anti Spam | 40 | 55 | 66 | 400k+ | Missing nonce verification | ||
| #2362 | I Agree! Popups | 40 | 54 | 46 | 600 | Output is not escaped | ||
| #2363 | Interactive US Map | 40 | 136 | 54 | 400 | Text Domain Mismatch | ||
| #2364 | Internal Linking of Related Contents | 40 | 714 | 47 | 1k+ | Output is not escaped | ||
| #2365 | Quotes Addon for GetPaid | 40 | 191 | 21 | 700 | Text Domain Mismatch | ||
| #2366 | JSM Show Order Metadata for WooCommerce HPOS | 40 | 17 | 64 | 700 | Nonce verification recommended | ||
| #2367 | La Sentinelle antispam | 40 | 88 | 46 | 3k+ | Output is not escaped | ||
| #2368 | Listdomer Core | 40 | 45 | 92 | 400 | Non-prefixed global variable | ||
| #2369 | WP All Import – Listings Import for Listify | 40 | 34 | 27 | 400 | Output is not escaped | ||
| #2370 | Loan Comparison | 40 | 27 | 192 | 400 | Request data is not unslashed | ||
| #2371 | Manual Image Crop | 40 | 178 | 61 | 8k+ | Output is not escaped | ||
| #2372 | WP Mobile Redirect | 40 | 44 | 20 | 400 | Text Domain Mismatch | ||
| #2373 | Monri Payments Gateway for WooCommerce | 40 | 144 | 172 | 900 | Text Domain Mismatch | ||
| #2374 | My Social Feeds – Social Feeds Embedder Plugin for WP | 40 | 8 | 77 | 400 | Request data is not unslashed | ||
| #2375 | No CAPTCHA reCAPTCHA | 40 | 112 | 26 | 4k+ | Text Domain Mismatch | ||
| #2376 | One Click SSL | 40 | 136 | 62 | 10k+ | Unsafe printing function | ||
| #2377 | Owl Carousel WP | 40 | 62 | 19 | 1k+ | Output is not escaped | ||
| #2378 | Page As Subdomain Lite | 40 | 61 | 25 | 500 | Output is not escaped | ||
| #2379 | Give – Paystack Gateway | 40 | 96 | 10 | 1k+ | Text Domain Mismatch | ||
| #2380 | Paystack MemberPress | 40 | 71 | 76 | 400 | Output is not escaped | ||
| #2381 | List Petfinder Pets | 40 | 121 | 46 | 400 | Output is not escaped | ||
| #2382 | Plugin Load Filter | 40 | 76 | 112 | 7k+ | Text Domain Mismatch | ||
| #2383 | Popup addon for Ninja Forms | 40 | 121 | 25 | 1k+ | Output is not escaped | ||
| #2384 | Requirements Checklist | 40 | 200 | 22 | 900 | Output is not escaped | ||
| #2385 | Privilege Widget | 40 | 139 | 52 | 600 | Text Domain Mismatch | ||
| #2386 | Product Video Gallery for Woocommerce | 40 | 61 | 36 | 10k+ | Setting is missing a sanitization callback | ||
| #2387 | Quick Child Theme Generator | 40 | 22 | 74 | 900 | Request data is not unslashed | ||
| #2388 | Recent & Featured Posts Widget | 40 | 124 | 2 | 600 | Output is not escaped | ||
| #2389 | Rename default post Labels | 40 | 54 | 36 | 600 | Text Domain Mismatch | ||
| #2390 | Responsive Plus – Elementor Templates & Starter Sites | 40 | 46 | 305 | 10k+ | Non-prefixed global variable | ||
| #2391 | Responsive Full Width Background Slider | 40 | 131 | 22 | 2k+ | Unsafe printing function | ||
| #2392 | REST API Custom Fields | 40 | 44 | 16 | 800 | Text Domain Mismatch | ||
| #2393 | Risk Free Cash On Delivery (COD) – WooCommerce | 40 | 106 | 31 | 400 | Text Domain Mismatch | ||
| #2394 | Sales Tax Reports For WooCommerce | 40 | 50 | 65 | 900 | Output is not escaped | ||
| #2395 | Same Category Posts | 40 | 183 | 8 | 3k+ | Output is not escaped | ||
| #2396 | Schedule Posts Calendar | 40 | 74 | 36 | 1k+ | Output is not escaped | ||
| #2397 | Select All Categories and Taxonomies, Change Checkbox to Radio Buttons | 40 | 116 | 30 | 3k+ | Output is not escaped | ||
| #2398 | Select Post Export | 40 | 51 | 18 | 500 | Output is not escaped | ||
| #2399 | Sendy Widget | 40 | 46 | 17 | 700 | Output is not escaped | ||
| #2400 | Multipage | 40 | 72 | 28 | 900 | Unsafe printing function |