From 45032cc291539928ff5c7adb50c3212f941dbe10 Mon Sep 17 00:00:00 2001 From: chrisgarrity Date: Mon, 30 Apr 2018 10:39:45 -0400 Subject: [PATCH] Add translation to missing strings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Question, should ‘x’ and ‘y’ be localizable? --- .tx/config | 2 +- src/components/controls/controls.jsx | 20 +++++++- .../crash-message/crash-message.jsx | 18 +++++-- src/components/forms/label.jsx | 2 +- src/components/library/library.jsx | 13 ++++- src/components/modal/modal.jsx | 7 ++- src/components/record-modal/playback-step.jsx | 37 ++++++++++++-- src/components/record-modal/record-modal.jsx | 14 +++++- src/components/sprite-info/sprite-info.jsx | 50 ++++++++++++++++--- src/components/stage-header/stage-header.jsx | 25 ++++++---- src/containers/extension-library.jsx | 21 ++++++-- src/containers/recording-step.jsx | 14 +++++- test/unit/components/controls.test.jsx | 14 +++--- 13 files changed, 193 insertions(+), 44 deletions(-) diff --git a/.tx/config b/.tx/config index de8d6bb3d..9e6a74a68 100644 --- a/.tx/config +++ b/.tx/config @@ -1,7 +1,7 @@ [main] host = https://www.transifex.com -[experimental-scratch.scratch-gui] +[scratch-editor.interface] file_filter = translations/.json source_file = translations/en.json source_lang = en diff --git a/src/components/controls/controls.jsx b/src/components/controls/controls.jsx index 8fec705b0..84d7dbcfa 100644 --- a/src/components/controls/controls.jsx +++ b/src/components/controls/controls.jsx @@ -1,6 +1,7 @@ import classNames from 'classnames'; import PropTypes from 'prop-types'; import React from 'react'; +import {defineMessages, injectIntl, intlShape} from 'react-intl'; import GreenFlag from '../green-flag/green-flag.jsx'; import StopAll from '../stop-all/stop-all.jsx'; @@ -8,10 +9,24 @@ import TurboMode from '../turbo-mode/turbo-mode.jsx'; import styles from './controls.css'; +const messages = defineMessages({ + goTitle: { + id: 'gui.controls.go', + defaultMessage: 'Go', + description: 'Green flag button title' + }, + stopTitle: { + id: 'gui.controls.stop', + defaultMessage: 'Stop', + description: 'Stop button title' + } +}); + const Controls = function (props) { const { active, className, + intl, onGreenFlagClick, onStopAllClick, turbo, @@ -24,10 +39,12 @@ const Controls = function (props) { > {turbo ? ( @@ -40,6 +57,7 @@ const Controls = function (props) { Controls.propTypes = { active: PropTypes.bool, className: PropTypes.string, + intl: intlShape.isRequired, onGreenFlagClick: PropTypes.func.isRequired, onStopAllClick: PropTypes.func.isRequired, turbo: PropTypes.bool @@ -50,4 +68,4 @@ Controls.defaultProps = { turbo: false }; -export default Controls; +export default injectIntl(Controls); diff --git a/src/components/crash-message/crash-message.jsx b/src/components/crash-message/crash-message.jsx index d5fc45d16..8b749c793 100644 --- a/src/components/crash-message/crash-message.jsx +++ b/src/components/crash-message/crash-message.jsx @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; import React from 'react'; import Box from '../box/box.jsx'; +import {FormattedMessage} from 'react-intl'; import styles from './crash-message.css'; import reloadIcon from './reload.svg'; @@ -13,13 +14,20 @@ const CrashMessage = props => ( src={reloadIcon} />

- Oops! Something went wrong. +

- We are so sorry, but it looks like Scratch has crashed. This bug has been - automatically reported to the Scratch Team. Please refresh your page to try - again. - + { /* eslint-disable max-len */ } + + { /* eslint-enable max-len */ }

) : ( ( @@ -48,7 +72,10 @@ const PlaybackStep = props => ( />
- {props.playing ? 'Stop' : 'Play'} + {props.playing ? + props.intl.formatMessage(messages.stopMsg) : + props.intl.formatMessage(messages.playMsg) + }
@@ -68,7 +95,10 @@ const PlaybackStep = props => ( disabled={props.encoding} onClick={props.onSubmit} > - {props.encoding ? 'Loading...' : 'Save'} + {props.encoding ? + props.intl.formatMessage(messages.loadingMsg) : + props.intl.formatMessage(messages.saveMsg) + }
@@ -76,6 +106,7 @@ const PlaybackStep = props => ( PlaybackStep.propTypes = { encoding: PropTypes.bool.isRequired, + intl: intlShape.isRequired, levels: PropTypes.arrayOf(PropTypes.number).isRequired, onBack: PropTypes.func.isRequired, onPlay: PropTypes.func.isRequired, @@ -89,4 +120,4 @@ PlaybackStep.propTypes = { trimStart: PropTypes.number.isRequired }; -export default PlaybackStep; +export default injectIntl(PlaybackStep); diff --git a/src/components/record-modal/record-modal.jsx b/src/components/record-modal/record-modal.jsx index 675d3e887..2adc9c147 100644 --- a/src/components/record-modal/record-modal.jsx +++ b/src/components/record-modal/record-modal.jsx @@ -1,15 +1,24 @@ import PropTypes from 'prop-types'; import React from 'react'; import Box from '../box/box.jsx'; +import {defineMessages, injectIntl, intlShape} from 'react-intl'; import RecordingStep from '../../containers/recording-step.jsx'; import PlaybackStep from '../../containers/playback-step.jsx'; import Modal from '../modal/modal.jsx'; import styles from './record-modal.css'; +const messages = defineMessages({ + title: { + defaultMessage: 'Record Sound', + description: 'Recording modal title', + id: 'gui.recordModal.title' + } +}); + const RecordModal = props => ( @@ -44,6 +53,7 @@ const RecordModal = props => ( RecordModal.propTypes = { encoding: PropTypes.bool.isRequired, + intl: intlShape.isRequired, levels: PropTypes.arrayOf(PropTypes.number), onBack: PropTypes.func.isRequired, onCancel: PropTypes.func.isRequired, @@ -64,4 +74,4 @@ RecordModal.propTypes = { trimStart: PropTypes.number.isRequired }; -export default RecordModal; +export default injectIntl(RecordModal); diff --git a/src/components/sprite-info/sprite-info.jsx b/src/components/sprite-info/sprite-info.jsx index 7d0acf952..76c1548df 100644 --- a/src/components/sprite-info/sprite-info.jsx +++ b/src/components/sprite-info/sprite-info.jsx @@ -7,6 +7,7 @@ import Box from '../box/box.jsx'; import Label from '../forms/label.jsx'; import Input from '../forms/input.jsx'; import BufferedInputHOC from '../forms/buffered-input-hoc.jsx'; +import {FormattedMessage} from 'react-intl'; import layout from '../../lib/layout-constants.js'; import styles from './sprite-info.css'; @@ -31,17 +32,52 @@ class SpriteInfo extends React.Component { ); } render () { + const sprite = ( + + ); + const spritePlaceholder = ( + + ); + const showLabel = ( + + ); + const sizeLabel = ( + + ); + const directionLabel = ( + + ); return (
-