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 |
|---|---|---|---|---|---|---|---|---|
| #3051 | WP Post Branches | 67 | 16 | 12 | 4k+ | Nonce verification recommended | ||
| #3052 | Autoclear Autoptimize Cache | 68 | 16 | 3 | 8k+ | Output is not escaped | ||
| #3053 | Book Previewer for Woocommerce | 68 | 23 | 40 | 1k+ | Non-prefixed global variable | ||
| #3054 | Collapsing Categories | 68 | 29 | 8 | 4k+ | Missing direct file access protection | ||
| #3055 | Comment Approved | 68 | 6 | 14 | 500 | Input is not sanitized | ||
| #3056 | Desert Companion | 68 | 412 | 837 | 20k+ | Non-prefixed global variable | ||
| #3057 | WCAG 2.0 form fields for Gravity Forms | 68 | 11 | 13 | 5k+ | Output is not escaped | ||
| #3058 | Guestplan Booking Widget | 68 | 43 | 6 | 1k+ | Text Domain Mismatch | ||
| #3059 | Logo Switcher | 68 | 14 | 2 | 800 | Output is not escaped | ||
| #3060 | Mailster Contact Form 7 | 68 | 35 | 20 | 1k+ | Text Domain Mismatch | ||
| #3061 | News Magazine X Core | 68 | 63 | 30 | 5k+ | Missing Translators Comment | ||
| #3062 | One Stop Shop for WooCommerce | 68 | 23 | 83 | 10k+ | Input is not sanitized | ||
| #3063 | Russian Post and EMS for WooCommerce | 68 | 16 | 47 | 1k+ | Non-prefixed global variable | ||
| #3064 | SF Author Url Control | 68 | 29 | 4 | 1k+ | Output is not escaped | ||
| #3065 | Shiptastic Integration for DHL | 68 | 54 | 36 | 10k+ | Missing Translators Comment | ||
| #3066 | Smartarget – Chat Buttons & Engagement Apps | 68 | 31 | 11 | 1k+ | Non Singular String Literal Domain | ||
| #3067 | Title Toggle for Storefront Theme | 68 | 16 | 9 | 3k+ | Output is not escaped | ||
| #3068 | Thank You Page for WooCommerce | 68 | 6 | 27 | 10k+ | Non-prefixed global variable | ||
| #3069 | WiserReview Product Reviews for WooCommerce | 68 | 21 | 110 | 900 | Non-prefixed global variable | ||
| #3070 | WP and Divi Icons | 68 | 201 | 56 | 2k+ | wp function not compatible with requires wp | ||
| #3071 | WP Favicon | 68 | 25 | 9 | 500 | Non Singular String Literal Domain | ||
| #3072 | WP Smart Preloader | 68 | 27 | 10 | 5k+ | Output is not escaped | ||
| #3073 | WP Theme Changelogs | 68 | 13 | 18 | 900 | Nonce verification recommended | ||
| #3074 | WP Wand – Unlimited Content Generation using AI – for OpenAI, Claude, Openrouter and Deepseek | 69 | 452 | 25 | 1k+ | Text Domain Mismatch | ||
| #3075 | Automatic Domain Changer | 69 | 37 | 14 | 10k+ | Text Domain Mismatch | ||
| #3076 | Bulk menu creator | 69 | 27 | 4 | 1k+ | Text Domain Mismatch | ||
| #3077 | CallRail Phone Call Tracking | 69 | 11 | 12 | 10k+ | Input is not validated | ||
| #3078 | CDN Enabler | 69 | 14 | 7 | 10k+ | Output is not escaped | ||
| #3079 | Custom Archive Titles | 69 | 39 | 4 | 2k+ | Output is not escaped | ||
| #3080 | Debug Bar Rewrite Rules | 69 | 29 | 38 | 800 | Non-prefixed global variable | ||
| #3081 | Easy Auto Reload – Auto Refresh | 69 | 37 | 12 | 1k+ | Text Domain Mismatch | ||
| #3082 | Hand Talk | 69 | 34 | 4 | 400 | Output is not escaped | ||
| #3083 | Mailster WordPress Newsletter Plugin | 69 | 14 | 11 | 8k+ | Output is not escaped | ||
| #3084 | Media Slider for Photos Images Videos | 69 | 10 | 23 | 2k+ | Missing Version | ||
| #3085 | Payment Gateway for PhonePe and for Woocommerce | 69 | 15 | 14 | 900 | Non Singular String Literal Domain | ||
| #3086 | PrivacyBee – Datenschutz im Autopilot | 69 | 19 | 27 | 600 | Non-prefixed global variable | ||
| #3087 | Rename Taxonomies by WebMan | 69 | 32 | 7 | 1k+ | Missing Arg Domain | ||
| #3088 | Search & Filter | 69 | 21 | 28 | 50k+ | Input is not sanitized | ||
| #3089 | Simple YouTube Embed | 69 | 11 | 11 | 5k+ | Nonce verification recommended | ||
| #3090 | TJ Custom CSS | 69 | 18 | 10 | 8k+ | Output is not escaped | ||
| #3091 | WP Mapa Politico España | 69 | 32 | 12 | 400 | Output is not escaped | ||
| #3092 | WP Original Media Path | 69 | 35 | 3 | 6k+ | Non Singular String Literal Domain | ||
| #3093 | Animentor – Lottie & Bodymovin for Elementor | 70 | 18 | 8 | 4k+ | Output is not escaped | ||
| #3094 | AppScenic – Smart AI Dropshipping | 70 | 16 | 41 | 3k+ | Dynamic hook name | ||
| #3095 | BestPrice Analytics Integration | 70 | 35 | 10 | 1k+ | Text Domain Mismatch | ||
| #3096 | Custom Currency for WooCommerce | 70 | 63 | 5 | 2k+ | Missing direct file access protection | ||
| #3097 | Embed Code – Headers & Footers by DesignBombs | 70 | 19 | 5 | 4k+ | Output is not escaped | ||
| #3098 | Library | 70 | 14 | 3 | 700 | Output is not escaped | ||
| #3099 | PipraPay Gateway | 70 | 11 | 6 | 400 | Output is not escaped | ||
| #3100 | Portfolio Post Type | 70 | 7 | 11 | 50k+ | Nonce verification recommended |