From 0aaf188eac1a159d80d8efaef4ef1b35e16ca040 Mon Sep 17 00:00:00 2001
From: Paul Kaplan <pkaplan@media.mit.edu>
Date: Wed, 2 May 2018 08:47:55 -0400
Subject: [PATCH] Move remaining strings to using FormatMessage

---
 .../browser-modal/browser-modal.jsx           | 32 ++++++--
 .../crash-message/crash-message.jsx           |  6 ++
 src/components/menu-bar/menu-bar.jsx          | 79 ++++++++++++++++---
 src/components/prompt/prompt.jsx              | 12 ++-
 src/components/question/question.jsx          |  2 +-
 src/components/record-modal/playback-step.jsx |  8 +-
 .../stage-selector/stage-selector.jsx         |  8 +-
 7 files changed, 123 insertions(+), 24 deletions(-)

diff --git a/src/components/browser-modal/browser-modal.jsx b/src/components/browser-modal/browser-modal.jsx
index 94a9d8545..772ba6575 100644
--- a/src/components/browser-modal/browser-modal.jsx
+++ b/src/components/browser-modal/browser-modal.jsx
@@ -43,18 +43,34 @@ const BrowserModal = ({intl, ...props}) => (
                     className={styles.backButton}
                     onClick={props.onBack}
                 >
-                    Back
+                    <FormattedMessage
+                        defaultMessage="Back"
+                        description="Button to go back in unsupported browser modal"
+                        id="gui.unsupportedBrowser.back"
+                    />
                 </button>
 
             </Box>
             <div className={styles.faqLinkText}>
-                To learn more, go to the {' '}
-                <a
-                    className={styles.faqLink}
-                    href="//scratch.mit.edu/preview-faq"
-                >
-                    preview FAQ
-                </a>.
+                <FormattedMessage
+                    defaultMessage="To learn more, go to the {previewFaqLink}."
+                    description="Invitation to try 3.0 preview"
+                    id="gui.unsupportedBrowser.previewfaq"
+                    values={{
+                        previewFaqLink: (
+                            <a
+                                className={styles.faqLink}
+                                href="//scratch.mit.edu/preview-faq"
+                            >
+                                <FormattedMessage
+                                    defaultMessage="Preview FAQ"
+                                    description="link to Scratch 3.0 preview FAQ page"
+                                    id="gui.unsupportedBrowser.previewfaqlink"
+                                />
+                            </a>
+                        )
+                    }}
+                />
             </div>
         </Box>
     </ReactModal>
diff --git a/src/components/crash-message/crash-message.jsx b/src/components/crash-message/crash-message.jsx
index d5fc45d16..8ea444739 100644
--- a/src/components/crash-message/crash-message.jsx
+++ b/src/components/crash-message/crash-message.jsx
@@ -1,3 +1,9 @@
+/* eslint-disable react/jsx-no-literals */
+/*
+    @todo Rule is disabled because this component is rendered outside the
+    intl provider right now so cannot be translated.
+*/
+
 import PropTypes from 'prop-types';
 import React from 'react';
 import Box from '../box/box.jsx';
diff --git a/src/components/menu-bar/menu-bar.jsx b/src/components/menu-bar/menu-bar.jsx
index 7e098b65f..d5a4b9fa1 100644
--- a/src/components/menu-bar/menu-bar.jsx
+++ b/src/components/menu-bar/menu-bar.jsx
@@ -123,20 +123,43 @@ const MenuBar = props => (
                     })}
                     onMouseUp={props.onClickFile}
                 >
-                    <div className={classNames(styles.fileMenu)}>File</div>
+                    <div className={classNames(styles.fileMenu)}>
+                        <FormattedMessage
+                            defaultMessage="File"
+                            description="Text for file dropdown menu"
+                            id="gui.menuBar.file"
+                        />
+                    </div>
                     <MenuBarMenu
                         open={props.fileMenuOpen}
                         onRequestClose={props.onRequestCloseFile}
                     >
                         <MenuItemTooltip id="new">
-                            <MenuItem>New</MenuItem>
+                            <MenuItem>
+                                <FormattedMessage
+                                    defaultMessage="New"
+                                    description="Menu bar item for creating a new project"
+                                    id="gui.menuBar.new"
+                                />
+                            </MenuItem>
                         </MenuItemTooltip>
                         <MenuSection>
                             <MenuItemTooltip id="save">
-                                <MenuItem>Save now</MenuItem>
+                                <MenuItem>
+                                    <FormattedMessage
+                                        defaultMessage="Save now"
+                                        description="Menu bar item for saving now"
+                                        id="gui.menuBar.saveNow"
+                                    />
+                                </MenuItem>
                             </MenuItemTooltip>
                             <MenuItemTooltip id="copy">
-                                <MenuItem>Save as a copy</MenuItem>
+                                <MenuItem>
+                                    <FormattedMessage
+                                        defaultMessage="Save as a copy"
+                                        description="Menu bar item for saving as a copy"
+                                        id="gui.menuBar.saveAsCopy"
+                                    /></MenuItem>
                             </MenuItemTooltip>
                         </MenuSection>
                         <MenuSection>
@@ -145,7 +168,11 @@ const MenuBar = props => (
                                     onClick={loadProject}
                                     {...loadProps}
                                 >
-                                    Upload from your computer
+                                    <FormattedMessage
+                                        defaultMessage="Upload from your computer"
+                                        description="Menu bar item for uploading a project from your computer"
+                                        id="gui.menuBar.uploadFromComputer"
+                                    />
                                     {renderFileInput()}
                                 </MenuItem>
                             )}</ProjectLoader>
@@ -154,7 +181,11 @@ const MenuBar = props => (
                                     onClick={saveProject}
                                     {...saveProps}
                                 >
-                                    Download to your computer
+                                    <FormattedMessage
+                                        defaultMessage="Download to your computer"
+                                        description="Menu bar item for downloading a project"
+                                        id="gui.menuBar.downloadToComputer"
+                                    />
                                 </MenuItem>
                             )}</ProjectSaver>
                         </MenuSection>
@@ -166,20 +197,44 @@ const MenuBar = props => (
                     })}
                     onMouseUp={props.onClickEdit}
                 >
-                    <div className={classNames(styles.editMenu)}>Edit</div>
+                    <div className={classNames(styles.editMenu)}>
+                        <FormattedMessage
+                            defaultMessage="Edit"
+                            description="Text for edit dropdown menu"
+                            id="gui.menuBar.edit"
+                        />
+                    </div>
                     <MenuBarMenu
                         open={props.editMenuOpen}
                         onRequestClose={props.onRequestCloseEdit}
                     >
                         <MenuItemTooltip id="undo">
-                            <MenuItem>Undo</MenuItem>
+                            <MenuItem>
+                                <FormattedMessage
+                                    defaultMessage="Undo"
+                                    description="Menu bar item for undoing"
+                                    id="gui.menuBar.undo"
+                                />
+                            </MenuItem>
                         </MenuItemTooltip>
                         <MenuItemTooltip id="redo">
-                            <MenuItem>Redo</MenuItem>
+                            <MenuItem>
+                                <FormattedMessage
+                                    defaultMessage="Redo"
+                                    description="Menu bar item for redoing"
+                                    id="gui.menuBar.redo"
+                                />
+                            </MenuItem>
                         </MenuItemTooltip>
                         <MenuSection>
                             <MenuItemTooltip id="turbo">
-                                <MenuItem>Turbo mode</MenuItem>
+                                <MenuItem>
+                                    <FormattedMessage
+                                        defaultMessage="Turbo mode"
+                                        description="Menu bar item for toggling turbo mode"
+                                        id="gui.menuBar.turboMode"
+                                    />
+                                </MenuItem>
                             </MenuItemTooltip>
                         </MenuSection>
                     </MenuBarMenu>
@@ -262,7 +317,9 @@ const MenuBar = props => (
                         className={styles.profileIcon}
                         src={profileIcon}
                     />
-                    <span>scratch-cat</span>
+                    <span>
+                        {'scratch-cat' /* @todo username */}
+                    </span>
                     <img
                         className={styles.dropdownCaretIcon}
                         src={dropdownCaret}
diff --git a/src/components/prompt/prompt.jsx b/src/components/prompt/prompt.jsx
index ec20aeb61..4feffeb0c 100644
--- a/src/components/prompt/prompt.jsx
+++ b/src/components/prompt/prompt.jsx
@@ -59,13 +59,21 @@ const PromptComponent = props => (
                     className={styles.cancelButton}
                     onClick={props.onCancel}
                 >
-                    Cancel
+                    <FormattedMessage
+                        defaultMessage="Cancel"
+                        description="Button in prompt for cancelling the dialog"
+                        id="gui.prompt.cancel"
+                    />
                 </button>
                 <button
                     className={styles.okButton}
                     onClick={props.onOk}
                 >
-                    OK
+                    <FormattedMessage
+                        defaultMessage="OK"
+                        description="Button in prompt for confirming the dialog"
+                        id="gui.prompt.ok"
+                    />
                 </button>
             </Box>
         </Box>
diff --git a/src/components/question/question.jsx b/src/components/question/question.jsx
index 11927bf96..2e8b9c9a5 100644
--- a/src/components/question/question.jsx
+++ b/src/components/question/question.jsx
@@ -28,7 +28,7 @@ const QuestionComponent = props => {
                         className={styles.questionSubmitButton}
                         onClick={onClick}
                     >
-                        ✔︎
+                        {'✔︎' /* @todo should this be an image? */}
                     </button>
                 </div>
             </div>
diff --git a/src/components/record-modal/playback-step.jsx b/src/components/record-modal/playback-step.jsx
index c233a3277..40167172d 100644
--- a/src/components/record-modal/playback-step.jsx
+++ b/src/components/record-modal/playback-step.jsx
@@ -31,6 +31,11 @@ const messages = defineMessages({
         defaultMessage: 'Save',
         description: 'Loading/Save button in recording playback',
         id: 'gui.playbackStep.saveMsg'
+    },
+    reRecordMsg: {
+        defaultMessage: 'Re-record',
+        description: 'Button to re-record sound in recording playback',
+        id: 'gui.playbackStep.reRecordMsg'
     }
 });
 
@@ -88,7 +93,8 @@ const PlaybackStep = props => (
                 <img
                     draggable={false}
                     src={backIcon}
-                /> Re-record
+                />
+                {props.intl.formatMessage(messages.reRecordMsg)}
             </button>
             <button
                 className={styles.okButton}
diff --git a/src/components/stage-selector/stage-selector.jsx b/src/components/stage-selector/stage-selector.jsx
index 66fbc1fe9..d08cf353f 100644
--- a/src/components/stage-selector/stage-selector.jsx
+++ b/src/components/stage-selector/stage-selector.jsx
@@ -60,7 +60,13 @@ const StageSelector = props => {
             {...componentProps}
         >
             <div className={styles.header}>
-                <div className={styles.headerTitle}>Stage</div>
+                <div className={styles.headerTitle}>
+                    <FormattedMessage
+                        defaultMessage="Stage"
+                        description="Label for the stage in the stage selector"
+                        id="gui.stageSelector.stage"
+                    />
+                </div>
             </div>
             {url ? (
                 <CostumeCanvas
-- 
GitLab