WordPress.WP.I18n.MissingTranslatorsComment
Missing Translators Comment
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 |
|---|---|---|---|---|---|---|---|---|
| #2001 | Debug Log Viewer | 37 | 26 | 83 | 1k+ | Missing nonce verification | ||
| #2002 | Easy Photo Album | 37 | 360 | 43 | 1k+ | Text Domain Mismatch | ||
| #2003 | EasyMe Connect | 37 | 130 | 45 | 500 | Text Domain Mismatch | ||
| #2004 | WP eBay Product Feeds | 37 | 136 | 31 | 700 | Output is not escaped | ||
| #2005 | Excerpt Editor | 37 | 170 | 142 | 500 | Unsafe printing function | ||
| #2006 | Gmail SMTP | 37 | 85 | 71 | 10k+ | Unsafe printing function | ||
| #2007 | GoCache | 37 | 273 | 43 | 900 | Non Singular String Literal Domain | ||
| #2008 | XML Sitemap Generator for Google | 37 | 43 | 79 | 1m+ | Input is not validated | ||
| #2009 | GS Portfolio for Envato | 37 | 155 | 75 | 4k+ | Text Domain Mismatch | ||
| #2010 | HT Builder – WordPress Theme Builder for Elementor | 37 | 142 | 41 | 1k+ | Output is not escaped | ||
| #2011 | Humans TXT | 37 | 159 | 86 | 400 | Output is not escaped | ||
| #2012 | Image Optimizer by 10web – Image Optimizer and Compression plugin | 37 | 244 | 45 | 3k+ | Text Domain Mismatch | ||
| #2013 | Images Optimize and Upload CF7 | 37 | 130 | 36 | 600 | Non Singular String Literal Domain | ||
| #2014 | Job Manager & Career – Manage job board listings, and recruitments | 37 | 112 | 205 | 2k+ | Missing nonce verification | ||
| #2015 | JS Help Desk – AI-Powered Support & Ticketing System | 37 | 17 | 406 | 7k+ | Missing nonce verification | ||
| #2016 | JVM Rich Text Icons | 37 | 87 | 34 | 3k+ | Output is not escaped | ||
| #2017 | Language Switcher | 37 | 81 | 105 | 1k+ | Missing Translators Comment | ||
| #2018 | LearnPress – Course Review | 37 | 67 | 43 | 20k+ | Output is not escaped | ||
| #2019 | LiveAgent – Omnichannel Help Desk & Live Chat Software | 37 | 125 | 142 | 400 | Non Singular String Literal Domain | ||
| #2020 | LiveJournal Importer | 37 | 86 | 67 | 8k+ | Output is not escaped | ||
| #2021 | Localendar Calendar for WordPress | 37 | 241 | 6 | 400 | Output is not escaped | ||
| #2022 | Maintenance Page | 37 | 62 | 33 | 3k+ | Output is not escaped | ||
| #2023 | Media Sweep – WordPress Media Cleaner | 37 | 56 | 137 | 1k+ | Interpolated SQL is not prepared | ||
| #2024 | Max Mega Menu | 37 | 249 | 174 | 300k+ | Output is not escaped | ||
| #2025 | Metorik – Reports & Email Automation for WooCommerce | 37 | 75 | 70 | 10k+ | Output is not escaped | ||
| #2026 | CrawlWP SEO – Instant Search Engine Indexing & SEO Performance Monitor | 37 | 47 | 90 | 40k+ | Dynamic hook name | ||
| #2027 | Monobank WP Payment | 37 | 78 | 41 | 1k+ | Text Domain Mismatch | ||
| #2028 | Ninja Van (MY) | 37 | 21 | 258 | 1k+ | Non-prefixed global variable | ||
| #2029 | Oliver POS – WooCommerce POS for iPhone, iPad & Android | 37 | 15 | 242 | 800 | Interpolated SQL is not prepared | ||
| #2030 | WP All Export – Order Export for WooCommerce | 37 | 109 | 111 | 4k+ | Text Domain Mismatch | ||
| #2031 | OSM – OpenStreetMap | 37 | 130 | 64 | 10k+ | Output is not escaped | ||
| #2032 | GoHero Store Customizer for WooCommerce | 37 | 75 | 53 | 600 | Unsafe printing function | ||
| #2033 | Phoenix Media Rename | 37 | 180 | 104 | 50k+ | Output is not escaped | ||
| #2034 | Plexx Elementor Extension | 37 | 582 | 14 | 400 | Text Domain Mismatch | ||
| #2035 | PNG to JPG | 37 | 130 | 173 | 10k+ | Interpolated SQL is not prepared | ||
| #2036 | POEditor | 37 | 78 | 140 | 500 | Output is not escaped | ||
| #2037 | Post Terms Order – per Post based | 37 | 70 | 36 | 2k+ | Output is not escaped | ||
| #2038 | PublishPress Statuses – Custom Post Status and Workflow | 37 | 231 | 78 | 1k+ | Missing Arg Domain | ||
| #2039 | Quantities and Units for WooCommerce | 37 | 133 | 118 | 1k+ | Output is not escaped | ||
| #2040 | Quick Restaurant Menu | 37 | 136 | 40 | 1k+ | Text Domain Mismatch | ||
| #2041 | Recent Posts Widget With Thumbnails | 37 | 222 | 46 | 100k+ | Output is not escaped | ||
| #2042 | Reusable Content Blocks | 37 | 349 | 14 | 4k+ | Text Domain Mismatch | ||
| #2043 | RSS for Yandex Zen | 37 | 240 | 100 | 4k+ | Unsafe printing function | ||
| #2044 | RSS Image Feed | 37 | 147 | 16 | 2k+ | Output is not escaped | ||
| #2045 | Send PDF for Contact Form 7 | 37 | 22 | 308 | 9k+ | Non-prefixed global variable | ||
| #2046 | SendWP | 37 | 47 | 42 | 10k+ | Output is not escaped | ||
| #2047 | Weaver Show Sliders | 37 | 177 | 132 | 900 | Text Domain Mismatch | ||
| #2048 | Simple Countdown Timer | 37 | 110 | 113 | 1k+ | Missing Arg Domain | ||
| #2049 | Skimlinks Affiliate Marketing Tool | 37 | 84 | 19 | 800 | wp function not compatible with requires wp | ||
| #2050 | Smart Send Logistics | 37 | 92 | 81 | 400 | Output is not escaped |