{"id":1260,"date":"2018-05-08T19:35:27","date_gmt":"2018-05-08T19:35:27","guid":{"rendered":"http:\/\/blog.mozilla.org\/l10n\/?p=1260"},"modified":"2018-05-08T19:36:32","modified_gmt":"2018-05-08T19:36:32","slug":"making-it-hard-to-break-firefox-from-pontoon","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/l10n\/2018\/05\/08\/making-it-hard-to-break-firefox-from-pontoon\/","title":{"rendered":"Making it hard to break Firefox from Pontoon"},"content":{"rendered":"<p>When submitting a translation, <a href=\"https:\/\/pontoon.mozilla.org\/\">Pontoon<\/a> runs automated quality checks. They identify issues with punctuation, capitalization, variables, etc. before translations are saved, which prevents localizers from submitting bad translations. We just launched several improvements to the way quality checks work, so let&#8217;s have a look.<\/p>\n<h3>Using compare-locales checks in Pontoon<\/h3>\n<p>In addition to internal Pontoon checks and <em><a href=\"http:\/\/docs.translatehouse.org\/projects\/translate-toolkit\/en\/latest\/\">Translate Toolkit<\/a><\/em> checks, Pontoon now also runs <em><a href=\"https:\/\/developer.mozilla.org\/docs\/Mozilla\/Projects\/compare-locales\">compare-locales<\/a><\/em> checks. They are used when building Firefox, so it&#8217;s much harder now for localizers to break Firefox builds by submitting a bad translation through Pontoon.<\/p>\n<h3>Errors and warnings<\/h3>\n<p>There are two types of quality check failures now: <a href=\"https:\/\/mozilla-l10n.github.io\/localizer-documentation\/tools\/pontoon\/translate.html#quality-checks\">errors and warnings<\/a>.<\/p>\n<p><strong>Errors<\/strong> cover issues that would cause the translation to be unused in product, for example removed from Firefox builds or mozilla.org. For this reason, errors cannot be bypassed by localizers &#8211; the button to submit a translation is removed and the error needs to be fixed before the translation can be saved.<\/p>\n<div id=\"attachment_1262\" style=\"width: 596px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-1262\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1262\" src=\"https:\/\/blog.mozilla.org\/l10n\/files\/2018\/05\/error.png\" alt=\"Errors are denoted with a red circled X\" width=\"586\" height=\"569\" srcset=\"https:\/\/blog.mozilla.org\/l10n\/files\/2018\/05\/error.png 586w, https:\/\/blog.mozilla.org\/l10n\/files\/2018\/05\/error-252x245.png 252w\" sizes=\"(max-width: 586px) 100vw, 586px\" \/><p id=\"caption-attachment-1262\" class=\"wp-caption-text\">Errors are denoted with a red circled X.<\/p><\/div>\n<p><strong>Warnings<\/strong>, unlike errors, are displayed when we&#8217;re not completely sure that the string contains critical issues (false positives). For that reason, warnings can be bypassed by localizers &#8211; they can save a translation anyway.<\/p>\n<p><strong>Note:<\/strong> since Translate Toolkit checks may result in many false positives in some scenarios, they can be <a href=\"https:\/\/mozilla-l10n.github.io\/localizer-documentation\/tools\/pontoon\/users.html#user-settings\">turned off<\/a> using the <em>Translate Toolkit Checks<\/em> toggle (previously called <em>Quality Checks<\/em>).<\/p>\n<h3>Next steps<\/h3>\n<p>Thumbs up to <a href=\"https:\/\/github.com\/jotes\/\">Jotes<\/a> for turning this long awaited feature into a reality! He&#8217;s already busy with the next step, which is storing information about the failed checks in a database. Once that&#8217;s in place, we&#8217;ll start performing quality checks during sync and finally present the information about errors and warnings on dashboards.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When submitting a translation, Pontoon runs automated quality checks. They identify issues with punctuation, capitalization, variables, etc. before translations are saved, which prevents localizers from submitting bad translations. We just &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/l10n\/2018\/05\/08\/making-it-hard-to-break-firefox-from-pontoon\/\">Read more<\/a><\/p>\n","protected":false},"author":451,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[199,286406,610,12675],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/posts\/1260"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/users\/451"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/comments?post=1260"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/posts\/1260\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/media?parent=1260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/categories?post=1260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/tags?post=1260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}