diff --git a/src/containers/blocks.jsx b/src/containers/blocks.jsx
index 6ac3c7d31a47ac6b908f6f3aa09c905c57baae38..c0cb44d2bd83171c3700e1a8d46480e36227768c 100644
--- a/src/containers/blocks.jsx
+++ b/src/containers/blocks.jsx
@@ -94,6 +94,8 @@ class Blocks extends React.Component {
         addFunctionListener(this.workspace, 'zoom', this.onWorkspaceMetricsChange);
 
         this.attachVM();
+        // Only update blocks/vm locale when visible to avoid sizing issues
+        // If locale changes while not visible it will get handled in didUpdate
         if (this.props.isVisible) {
             this.setLocale();
         }
@@ -119,10 +121,6 @@ class Blocks extends React.Component {
             this.ScratchBlocks.hideChaff();
         }
 
-        // if (prevProps.locale !== this.props.locale) {
-        //     this.setLocale();
-        // }
-
         if (prevProps.toolboxXML !== this.props.toolboxXML) {
             // rather than update the toolbox "sync" -- update it in the next frame
             clearTimeout(this.toolboxUpdateTimeout);
@@ -140,9 +138,10 @@ class Blocks extends React.Component {
         // @todo hack to resize blockly manually in case resize happened while hidden
         // @todo hack to reload the workspace due to gui bug #413
         if (this.props.isVisible) { // Scripts tab
-
             this.workspace.setVisible(true);
             if (prevProps.locale !== this.props.locale || this.props.locale !== this.props.vm.getLocale()) {
+                // call setLocale if the locale has changed, or changed while the blocks were hidden.
+                // vm.getLocale() will be out of sync if locale was changed while not visible
                 this.setLocale();
             } else {
                 this.props.vm.refreshWorkspace();
@@ -150,7 +149,6 @@ class Blocks extends React.Component {
 
             // Re-enable toolbox refreshes without causing one. See #updateToolbox for more info.
             this.workspace.toolboxRefreshEnabled_ = true;
-            // this.workspace.setToolboxRefreshEnabled(true);
             window.dispatchEvent(new Event('resize'));
         } else {
             this.workspace.setVisible(false);