{"id":66832,"date":"2026-05-14T21:01:20","date_gmt":"2026-05-14T21:01:20","guid":{"rendered":"https:\/\/make.wordpress.org\/polyglots\/?p=66832"},"modified":"2026-05-15T19:58:06","modified_gmt":"2026-05-15T19:58:06","slug":"added-a-validation-top-bar-and-an-opt-out-in-the-translation-editor","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/polyglots\/2026\/05\/14\/added-a-validation-top-bar-and-an-opt-out-in-the-translation-editor\/","title":{"rendered":"Added a validation top bar (and an opt-out) in the translation editor"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Validators in the <span tabindex='0' class='glossary-item-container'>translation editor<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Translation Editor<\/span> <span class='glossary-item-description'>Translation editors can approve translations for projects. The GTE (General Translation Editor) and LM (Locale Manager) roles can add new users with the \"Project Translation Editor\" role that can approve translations for specific projects. There are two different Translation Editor roles: \r<a href=\"#general-translation-editor\">General Translation Editor<\/a> and <a href=\"#project-translation-editor\">Project Translation Editor<\/a><\/span><\/span><\/span> often jump to the <em>Discussion<\/em> or <em>Others<\/em> tab to check context before acting on a <span tabindex='0' class='glossary-item-container'>string<span class='glossary-item-hidden-content'><span class='glossary-item-header'>String<\/span> <span class='glossary-item-description'>A string is a translatable part of the software. A translation consists of a multitude of localized strings.<\/span><\/span><\/span>. The problem: the Approve, Reject, and Fuzzy buttons only live in the <span tabindex='0' class='glossary-item-container'>Meta<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Meta<\/span> <span class='glossary-item-description'>Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress.<\/span><\/span><\/span> panel, so the moment you leave that tab, the action buttons disappear. You have to switch back just to act on what you came to act on.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I have added a fixed top bar inside the translation editor that mirrors those buttons. It stays visible regardless of the tab you are on, so you can approve, reject, or mark a string as fuzzy without leaving <em>Discussion<\/em> or <em>Others<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-scaled.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"336\" data-attachment-id=\"66833\" data-permalink=\"https:\/\/make.wordpress.org\/polyglots\/2026\/05\/14\/added-a-validation-top-bar-and-an-opt-out-in-the-translation-editor\/image-69\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-scaled.png\" data-orig-size=\"2560,841\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\",\"alt\":\"\"}' data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1024x336.png\" src=\"https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1024x336.png\" alt=\"\" class=\"wp-image-66833\" srcset=\"https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1024x336.png 1024w, https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-300x99.png 300w, https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-768x252.png 768w, https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1536x505.png 1536w, https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-2048x673.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">How it works<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The bar appears when you open a translation row, and it disappears when you close it.<\/li>\n\n\n\n<li>Each button is a clone of the original in the Meta panel, so clicking it triggers the same action. The behavior is identical; only the position is different.<\/li>\n\n\n\n<li>The Reject and Fuzzy buttons keep their colored symbols, so the bar reads the same way the <em>Meta<\/em> panel does.<\/li>\n\n\n\n<li>The \u00d7 button on the right hides the bar until you reload the page or move to a new one.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Opt-out<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Not everyone wants the bar. If you prefer the old behavior, there is a per-user setting to disable it permanently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You will find it in your settings page, under \u201c<a href=\"https:\/\/translate.wordpress.org\/settings\/\">Translate settings<\/a>\u201c, as a checkbox labeled \u201cHide the validation top bar in the translation editor\u201d. Tick it, save, and the bar will stop loading on any translation page the next time you will reload the page.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"373\" data-attachment-id=\"66834\" data-permalink=\"https:\/\/make.wordpress.org\/polyglots\/2026\/05\/14\/added-a-validation-top-bar-and-an-opt-out-in-the-translation-editor\/image-70\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1.png\" data-orig-size=\"2220,808\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\",\"alt\":\"\"}' data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1-1024x373.png\" src=\"https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1-1024x373.png\" alt=\"\" class=\"wp-image-66834\" srcset=\"https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1-1024x373.png 1024w, https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1-300x109.png 300w, https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1-768x280.png 768w, https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1-1536x559.png 1536w, https:\/\/make.wordpress.org\/polyglots\/files\/2026\/05\/image-1-2048x745.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The setting only appears for users who are validators somewhere: global administrators, <span tabindex='0' class='glossary-item-container'>Locale<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Locale<\/span> <span class='glossary-item-description'>Locale = language version, often a combination of a language code and a region code, for instance es_MX denotes Spanish as it\u2019s used in Mexico. A list of all locales supported by WordPress in <a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/\">https:\/\/make.wordpress.org\/polyglots\/teams\/<\/a><\/span><\/span><\/span> Managers, GTEs, or PTEs. Regular translators do not see the bar in the first place, so they do not see the setting either.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Feedback<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If something does not work as you expect, or if you would like other actions mirrored in the bar, please leave a comment. Bug reports and ideas are welcome.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The relevant commits are\u00a0<a href=\"https:\/\/github.com\/WordPress\/wordpress.org\/commit\/5f27f29dc8c6a62eb52256d62faaaac68af3ce0a\">5f27f29<\/a>\u00a0(the top bar) and\u00a0<a href=\"https:\/\/github.com\/WordPress\/wordpress.org\/commit\/9e0ee247531705e649e19ffa300c730538681baa\">9e0ee24<\/a>\u00a0(the opt-out).<\/p>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/tag\/improvements\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>improvements<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fpolyglots%2F2026%2F05%2F14%2Fadded-a-validation-top-bar-and-an-opt-out-in-the-translation-editor%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><span class='o2-resolve-wrap'><a href=\"#\" title=\"To-do\"  class=\"o2-resolve-link o2-disabled-action genericon  genericon-dot\"  data-action=\"resolvedposts\"  data-actionstate=\"normal\" >To-do<\/a><ul><\/ul><\/span><\/li><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>Validators in the translation editorTranslation Editor Translation editors can approve translations for projects. The GTE (General Translation Editor) and LM (Locale Manager) roles can add new users with the &#8220;Project Translation Editor&#8221; role that can approve translations for specific projects. There are two different Translation Editor roles: General Translation Editor and Project Translation Editor often [&hellip;]<\/p>\n","protected":false},"author":131758,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[7322,8737],"tags":[8467],"class_list":["post-66832","post","type-post","status-publish","format-standard","hentry","category-highlight","category-improvements","tag-improvements","author-amieiro"],"revision_note":"","jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/posts\/66832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/users\/131758"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/comments?post=66832"}],"version-history":[{"count":1,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/posts\/66832\/revisions"}],"predecessor-version":[{"id":66835,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/posts\/66832\/revisions\/66835"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/media?parent=66832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/categories?post=66832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/tags?post=66832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}